diff --git a/src/resources/wwwroot/dashboard.html b/src/resources/wwwroot/dashboard.html index 2ba8a2b..cea4531 100644 --- a/src/resources/wwwroot/dashboard.html +++ b/src/resources/wwwroot/dashboard.html @@ -4,35 +4,26 @@ WasteInformation Server + + + - - - - - - - + + - + - - - - - - - + @@ -444,36 +435,14 @@ - - - - - - - - - - - - - - - - - - - - - + - diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css deleted file mode 100644 index 40849d5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css +++ /dev/null @@ -1,5013 +0,0 @@ -/*! - * AdminLTE v3.0.0 - * Only Components - * Author: Colorlib - * Website: AdminLTE.io - * License: Open source - MIT - */ -.form-group.has-icon { - position: relative; -} - -.form-group.has-icon .form-control { - padding-right: 35px; -} - -.form-group.has-icon .form-icon { - background-color: transparent; - border: 0; - cursor: pointer; - font-size: 1rem; - padding: 0.375rem 0.75rem; - position: absolute; - right: 3px; - top: 0; -} - -.btn-group-vertical .btn.btn-flat:first-of-type, .btn-group-vertical .btn.btn-flat:last-of-type { - border-radius: 0; -} - -.form-control-feedback.fa, .form-control-feedback.fas, .form-control-feedback.far, .form-control-feedback.fab, .form-control-feedback.glyphicon, .form-control-feedback.ion { - line-height: calc(2.25rem + 2px); -} - -.input-lg + .form-control-feedback.fa, .input-lg + .form-control-feedback.fas, .input-lg + .form-control-feedback.far, .input-lg + .form-control-feedback.fab, .input-lg + .form-control-feedback.glyphicon, .input-lg + .form-control-feedback.ion, -.input-group-lg + .form-control-feedback.fa, -.input-group-lg + .form-control-feedback.fas, -.input-group-lg + .form-control-feedback.far, -.input-group-lg + .form-control-feedback.fab, -.input-group-lg + .form-control-feedback.glyphicon, -.input-group-lg + .form-control-feedback.ion { - line-height: calc(2.875rem + 2px); -} - -.form-group-lg .form-control + .form-control-feedback.fa, .form-group-lg .form-control + .form-control-feedback.fas, .form-group-lg .form-control + .form-control-feedback.far, .form-group-lg .form-control + .form-control-feedback.fab, .form-group-lg .form-control + .form-control-feedback.glyphicon, .form-group-lg .form-control + .form-control-feedback.ion { - line-height: calc(2.875rem + 2px); -} - -.input-sm + .form-control-feedback.fa, .input-sm + .form-control-feedback.fas, .input-sm + .form-control-feedback.far, .input-sm + .form-control-feedback.fab, .input-sm + .form-control-feedback.glyphicon, .input-sm + .form-control-feedback.ion, -.input-group-sm + .form-control-feedback.fa, -.input-group-sm + .form-control-feedback.fas, -.input-group-sm + .form-control-feedback.far, -.input-group-sm + .form-control-feedback.fab, -.input-group-sm + .form-control-feedback.glyphicon, -.input-group-sm + .form-control-feedback.ion { - line-height: calc(1.8125rem + 2px); -} - -.form-group-sm .form-control + .form-control-feedback.fa, .form-group-sm .form-control + .form-control-feedback.fas, .form-group-sm .form-control + .form-control-feedback.far, .form-group-sm .form-control + .form-control-feedback.fab, .form-group-sm .form-control + .form-control-feedback.glyphicon, .form-group-sm .form-control + .form-control-feedback.ion { - line-height: calc(1.8125rem + 2px); -} - -label:not(.form-check-label, .custom-file-label) { - font-weight: 700; -} - -.warning-feedback { - font-size: 80%; - color: #ffc107; - display: none; - margin-top: 0.25rem; - width: 100%; -} - -.warning-tooltip { - border-radius: 0.25rem; - font-size: 0.875rem; - background-color: rgba(255, 193, 7, 0.9); - color: #1F2D3D; - display: none; - line-height: 1.5; - margin-top: .1rem; - max-width: 100%; - padding: 0.25rem 0.5rem; - position: absolute; - top: 100%; - z-index: 5; -} - -.form-control.is-warning { - border-color: #ffc107; -} - -.form-control.is-warning:focus { - border-color: #ffc107; - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25); -} - -.form-control.is-warning ~ .warning-feedback, -.form-control.is-warning ~ .warning-tooltip { - display: block; -} - -textarea.form-control.is-warning { - padding-right: 2.25rem; - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.custom-select.is-warning { - border-color: #ffc107; -} - -.custom-select.is-warning:focus { - border-color: #ffc107; - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25); -} - -.custom-select.is-warning ~ .warning-feedback, -.custom-select.is-warning ~ .warning-tooltip { - display: block; -} - -.form-control-file.is-warning ~ .warning-feedback, -.form-control-file.is-warning ~ .warning-tooltip { - display: block; -} - -.form-check-input.is-warning ~ .form-check-label { - color: #ffc107; -} - -.form-check-input.is-warning ~ .warning-feedback, -.form-check-input.is-warning ~ .warning-tooltip { - display: block; -} - -.custom-control-input.is-warning ~ .custom-control-label { - color: #ffc107; -} - -.custom-control-input.is-warning ~ .custom-control-label::before { - border-color: #ffc107; -} - -.custom-control-input.is-warning ~ .warning-feedback, -.custom-control-input.is-warning ~ .warning-tooltip { - display: block; -} - -.custom-control-input.is-warning:checked ~ .custom-control-label::before { - background-color: #ffce3a; - border-color: #ffce3a; -} - -.custom-control-input.is-warning:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25); -} - -.custom-control-input.is-warning:focus:not(:checked) ~ .custom-control-label::before { - border-color: #ffc107; -} - -.custom-file-input.is-warning ~ .custom-file-label { - border-color: #ffc107; -} - -.custom-file-input.is-warning ~ .warning-feedback, -.custom-file-input.is-warning ~ .warning-tooltip { - display: block; -} - -.custom-file-input.is-warning:focus ~ .custom-file-label { - border-color: #ffc107; - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.25); -} - -.custom-switch.custom-switch-off-primary .custom-control-input ~ .custom-control-label::before { - background: #007bff; - border-color: #004a99; -} - -.custom-switch.custom-switch-off-primary .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-switch.custom-switch-off-primary .custom-control-input ~ .custom-control-label::after { - background: #003e80; -} - -.custom-switch.custom-switch-on-primary .custom-control-input:checked ~ .custom-control-label::before { - background: #007bff; - border-color: #004a99; -} - -.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-switch.custom-switch-on-primary .custom-control-input:checked ~ .custom-control-label::after { - background: #99caff; -} - -.custom-switch.custom-switch-off-secondary .custom-control-input ~ .custom-control-label::before { - background: #6c757d; - border-color: #3d4246; -} - -.custom-switch.custom-switch-off-secondary .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-switch.custom-switch-off-secondary .custom-control-input ~ .custom-control-label::after { - background: #313539; -} - -.custom-switch.custom-switch-on-secondary .custom-control-input:checked ~ .custom-control-label::before { - background: #6c757d; - border-color: #3d4246; -} - -.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-switch.custom-switch-on-secondary .custom-control-input:checked ~ .custom-control-label::after { - background: #bcc1c6; -} - -.custom-switch.custom-switch-off-success .custom-control-input ~ .custom-control-label::before { - background: #28a745; - border-color: #145523; -} - -.custom-switch.custom-switch-off-success .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-switch.custom-switch-off-success .custom-control-input ~ .custom-control-label::after { - background: #0f401b; -} - -.custom-switch.custom-switch-on-success .custom-control-input:checked ~ .custom-control-label::before { - background: #28a745; - border-color: #145523; -} - -.custom-switch.custom-switch-on-success .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-switch.custom-switch-on-success .custom-control-input:checked ~ .custom-control-label::after { - background: #86e29b; -} - -.custom-switch.custom-switch-off-info .custom-control-input ~ .custom-control-label::before { - background: #17a2b8; - border-color: #0c525d; -} - -.custom-switch.custom-switch-off-info .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-switch.custom-switch-off-info .custom-control-input ~ .custom-control-label::after { - background: #093e47; -} - -.custom-switch.custom-switch-on-info .custom-control-input:checked ~ .custom-control-label::before { - background: #17a2b8; - border-color: #0c525d; -} - -.custom-switch.custom-switch-on-info .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-switch.custom-switch-on-info .custom-control-input:checked ~ .custom-control-label::after { - background: #7adeee; -} - -.custom-switch.custom-switch-off-warning .custom-control-input ~ .custom-control-label::before { - background: #ffc107; - border-color: #a07800; -} - -.custom-switch.custom-switch-off-warning .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-switch.custom-switch-off-warning .custom-control-input ~ .custom-control-label::after { - background: #876500; -} - -.custom-switch.custom-switch-on-warning .custom-control-input:checked ~ .custom-control-label::before { - background: #ffc107; - border-color: #a07800; -} - -.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-switch.custom-switch-on-warning .custom-control-input:checked ~ .custom-control-label::after { - background: #ffe7a0; -} - -.custom-switch.custom-switch-off-danger .custom-control-input ~ .custom-control-label::before { - background: #dc3545; - border-color: #921925; -} - -.custom-switch.custom-switch-off-danger .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-switch.custom-switch-off-danger .custom-control-input ~ .custom-control-label::after { - background: #7c151f; -} - -.custom-switch.custom-switch-on-danger .custom-control-input:checked ~ .custom-control-label::before { - background: #dc3545; - border-color: #921925; -} - -.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-switch.custom-switch-on-danger .custom-control-input:checked ~ .custom-control-label::after { - background: #f3b7bd; -} - -.custom-switch.custom-switch-off-light .custom-control-input ~ .custom-control-label::before { - background: #f8f9fa; - border-color: #bdc6d0; -} - -.custom-switch.custom-switch-off-light .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25); -} - -.custom-switch.custom-switch-off-light .custom-control-input ~ .custom-control-label::after { - background: #aeb9c5; -} - -.custom-switch.custom-switch-on-light .custom-control-input:checked ~ .custom-control-label::before { - background: #f8f9fa; - border-color: #bdc6d0; -} - -.custom-switch.custom-switch-on-light .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25); -} - -.custom-switch.custom-switch-on-light .custom-control-input:checked ~ .custom-control-label::after { - background: white; -} - -.custom-switch.custom-switch-off-dark .custom-control-input ~ .custom-control-label::before { - background: #343a40; - border-color: #060708; -} - -.custom-switch.custom-switch-off-dark .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-switch.custom-switch-off-dark .custom-control-input ~ .custom-control-label::after { - background: black; -} - -.custom-switch.custom-switch-on-dark .custom-control-input:checked ~ .custom-control-label::before { - background: #343a40; - border-color: #060708; -} - -.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-switch.custom-switch-on-dark .custom-control-input:checked ~ .custom-control-label::after { - background: #7a8793; -} - -.custom-switch.custom-switch-off-navy .custom-control-input ~ .custom-control-label::before { - background: #001f3f; - border-color: black; -} - -.custom-switch.custom-switch-off-navy .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25); -} - -.custom-switch.custom-switch-off-navy .custom-control-input ~ .custom-control-label::after { - background: black; -} - -.custom-switch.custom-switch-on-navy .custom-control-input:checked ~ .custom-control-label::before { - background: #001f3f; - border-color: black; -} - -.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25); -} - -.custom-switch.custom-switch-on-navy .custom-control-input:checked ~ .custom-control-label::after { - background: #006ad8; -} - -.custom-switch.custom-switch-off-olive .custom-control-input ~ .custom-control-label::before { - background: #3d9970; - border-color: #20503b; -} - -.custom-switch.custom-switch-off-olive .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25); -} - -.custom-switch.custom-switch-off-olive .custom-control-input ~ .custom-control-label::after { - background: #193e2d; -} - -.custom-switch.custom-switch-on-olive .custom-control-input:checked ~ .custom-control-label::before { - background: #3d9970; - border-color: #20503b; -} - -.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25); -} - -.custom-switch.custom-switch-on-olive .custom-control-input:checked ~ .custom-control-label::after { - background: #99d6bb; -} - -.custom-switch.custom-switch-off-lime .custom-control-input ~ .custom-control-label::before { - background: #01ff70; - border-color: #009a43; -} - -.custom-switch.custom-switch-off-lime .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25); -} - -.custom-switch.custom-switch-off-lime .custom-control-input ~ .custom-control-label::after { - background: #008138; -} - -.custom-switch.custom-switch-on-lime .custom-control-input:checked ~ .custom-control-label::before { - background: #01ff70; - border-color: #009a43; -} - -.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25); -} - -.custom-switch.custom-switch-on-lime .custom-control-input:checked ~ .custom-control-label::after { - background: #9affc6; -} - -.custom-switch.custom-switch-off-fuchsia .custom-control-input ~ .custom-control-label::before { - background: #f012be; - border-color: #930974; -} - -.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25); -} - -.custom-switch.custom-switch-off-fuchsia .custom-control-input ~ .custom-control-label::after { - background: #7b0861; -} - -.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked ~ .custom-control-label::before { - background: #f012be; - border-color: #930974; -} - -.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25); -} - -.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked ~ .custom-control-label::after { - background: #f9a2e5; -} - -.custom-switch.custom-switch-off-maroon .custom-control-input ~ .custom-control-label::before { - background: #d81b60; - border-color: #7d1038; -} - -.custom-switch.custom-switch-off-maroon .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25); -} - -.custom-switch.custom-switch-off-maroon .custom-control-input ~ .custom-control-label::after { - background: #670d2e; -} - -.custom-switch.custom-switch-on-maroon .custom-control-input:checked ~ .custom-control-label::before { - background: #d81b60; - border-color: #7d1038; -} - -.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25); -} - -.custom-switch.custom-switch-on-maroon .custom-control-input:checked ~ .custom-control-label::after { - background: #f29aba; -} - -.custom-switch.custom-switch-off-blue .custom-control-input ~ .custom-control-label::before { - background: #007bff; - border-color: #004a99; -} - -.custom-switch.custom-switch-off-blue .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-switch.custom-switch-off-blue .custom-control-input ~ .custom-control-label::after { - background: #003e80; -} - -.custom-switch.custom-switch-on-blue .custom-control-input:checked ~ .custom-control-label::before { - background: #007bff; - border-color: #004a99; -} - -.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-switch.custom-switch-on-blue .custom-control-input:checked ~ .custom-control-label::after { - background: #99caff; -} - -.custom-switch.custom-switch-off-indigo .custom-control-input ~ .custom-control-label::before { - background: #6610f2; - border-color: #3d0894; -} - -.custom-switch.custom-switch-off-indigo .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25); -} - -.custom-switch.custom-switch-off-indigo .custom-control-input ~ .custom-control-label::after { - background: #33077c; -} - -.custom-switch.custom-switch-on-indigo .custom-control-input:checked ~ .custom-control-label::before { - background: #6610f2; - border-color: #3d0894; -} - -.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25); -} - -.custom-switch.custom-switch-on-indigo .custom-control-input:checked ~ .custom-control-label::after { - background: #c3a1fa; -} - -.custom-switch.custom-switch-off-purple .custom-control-input ~ .custom-control-label::before { - background: #6f42c1; - border-color: #432776; -} - -.custom-switch.custom-switch-off-purple .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25); -} - -.custom-switch.custom-switch-off-purple .custom-control-input ~ .custom-control-label::after { - background: #382063; -} - -.custom-switch.custom-switch-on-purple .custom-control-input:checked ~ .custom-control-label::before { - background: #6f42c1; - border-color: #432776; -} - -.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25); -} - -.custom-switch.custom-switch-on-purple .custom-control-input:checked ~ .custom-control-label::after { - background: #c7b5e7; -} - -.custom-switch.custom-switch-off-pink .custom-control-input ~ .custom-control-label::before { - background: #e83e8c; - border-color: #ac145a; -} - -.custom-switch.custom-switch-off-pink .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25); -} - -.custom-switch.custom-switch-off-pink .custom-control-input ~ .custom-control-label::after { - background: #95124e; -} - -.custom-switch.custom-switch-on-pink .custom-control-input:checked ~ .custom-control-label::before { - background: #e83e8c; - border-color: #ac145a; -} - -.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25); -} - -.custom-switch.custom-switch-on-pink .custom-control-input:checked ~ .custom-control-label::after { - background: #f8c7dd; -} - -.custom-switch.custom-switch-off-red .custom-control-input ~ .custom-control-label::before { - background: #dc3545; - border-color: #921925; -} - -.custom-switch.custom-switch-off-red .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-switch.custom-switch-off-red .custom-control-input ~ .custom-control-label::after { - background: #7c151f; -} - -.custom-switch.custom-switch-on-red .custom-control-input:checked ~ .custom-control-label::before { - background: #dc3545; - border-color: #921925; -} - -.custom-switch.custom-switch-on-red .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-switch.custom-switch-on-red .custom-control-input:checked ~ .custom-control-label::after { - background: #f3b7bd; -} - -.custom-switch.custom-switch-off-orange .custom-control-input ~ .custom-control-label::before { - background: #fd7e14; - border-color: #aa4e01; -} - -.custom-switch.custom-switch-off-orange .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25); -} - -.custom-switch.custom-switch-off-orange .custom-control-input ~ .custom-control-label::after { - background: #904201; -} - -.custom-switch.custom-switch-on-orange .custom-control-input:checked ~ .custom-control-label::before { - background: #fd7e14; - border-color: #aa4e01; -} - -.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25); -} - -.custom-switch.custom-switch-on-orange .custom-control-input:checked ~ .custom-control-label::after { - background: #fed1ac; -} - -.custom-switch.custom-switch-off-yellow .custom-control-input ~ .custom-control-label::before { - background: #ffc107; - border-color: #a07800; -} - -.custom-switch.custom-switch-off-yellow .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-switch.custom-switch-off-yellow .custom-control-input ~ .custom-control-label::after { - background: #876500; -} - -.custom-switch.custom-switch-on-yellow .custom-control-input:checked ~ .custom-control-label::before { - background: #ffc107; - border-color: #a07800; -} - -.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-switch.custom-switch-on-yellow .custom-control-input:checked ~ .custom-control-label::after { - background: #ffe7a0; -} - -.custom-switch.custom-switch-off-green .custom-control-input ~ .custom-control-label::before { - background: #28a745; - border-color: #145523; -} - -.custom-switch.custom-switch-off-green .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-switch.custom-switch-off-green .custom-control-input ~ .custom-control-label::after { - background: #0f401b; -} - -.custom-switch.custom-switch-on-green .custom-control-input:checked ~ .custom-control-label::before { - background: #28a745; - border-color: #145523; -} - -.custom-switch.custom-switch-on-green .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-switch.custom-switch-on-green .custom-control-input:checked ~ .custom-control-label::after { - background: #86e29b; -} - -.custom-switch.custom-switch-off-teal .custom-control-input ~ .custom-control-label::before { - background: #20c997; - border-color: #127155; -} - -.custom-switch.custom-switch-off-teal .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25); -} - -.custom-switch.custom-switch-off-teal .custom-control-input ~ .custom-control-label::after { - background: #0e5b44; -} - -.custom-switch.custom-switch-on-teal .custom-control-input:checked ~ .custom-control-label::before { - background: #20c997; - border-color: #127155; -} - -.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25); -} - -.custom-switch.custom-switch-on-teal .custom-control-input:checked ~ .custom-control-label::after { - background: #94eed3; -} - -.custom-switch.custom-switch-off-cyan .custom-control-input ~ .custom-control-label::before { - background: #17a2b8; - border-color: #0c525d; -} - -.custom-switch.custom-switch-off-cyan .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-switch.custom-switch-off-cyan .custom-control-input ~ .custom-control-label::after { - background: #093e47; -} - -.custom-switch.custom-switch-on-cyan .custom-control-input:checked ~ .custom-control-label::before { - background: #17a2b8; - border-color: #0c525d; -} - -.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-switch.custom-switch-on-cyan .custom-control-input:checked ~ .custom-control-label::after { - background: #7adeee; -} - -.custom-switch.custom-switch-off-white .custom-control-input ~ .custom-control-label::before { - background: #ffffff; - border-color: #cccccc; -} - -.custom-switch.custom-switch-off-white .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25); -} - -.custom-switch.custom-switch-off-white .custom-control-input ~ .custom-control-label::after { - background: #bfbfbf; -} - -.custom-switch.custom-switch-on-white .custom-control-input:checked ~ .custom-control-label::before { - background: #ffffff; - border-color: #cccccc; -} - -.custom-switch.custom-switch-on-white .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25); -} - -.custom-switch.custom-switch-on-white .custom-control-input:checked ~ .custom-control-label::after { - background: white; -} - -.custom-switch.custom-switch-off-gray .custom-control-input ~ .custom-control-label::before { - background: #6c757d; - border-color: #3d4246; -} - -.custom-switch.custom-switch-off-gray .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-switch.custom-switch-off-gray .custom-control-input ~ .custom-control-label::after { - background: #313539; -} - -.custom-switch.custom-switch-on-gray .custom-control-input:checked ~ .custom-control-label::before { - background: #6c757d; - border-color: #3d4246; -} - -.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-switch.custom-switch-on-gray .custom-control-input:checked ~ .custom-control-label::after { - background: #bcc1c6; -} - -.custom-switch.custom-switch-off-gray-dark .custom-control-input ~ .custom-control-label::before { - background: #343a40; - border-color: #060708; -} - -.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-switch.custom-switch-off-gray-dark .custom-control-input ~ .custom-control-label::after { - background: black; -} - -.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked ~ .custom-control-label::before { - background: #343a40; - border-color: #060708; -} - -.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked ~ .custom-control-label::after { - background: #7a8793; -} - -.custom-range.custom-range-primary:focus { - outline: none; -} - -.custom-range.custom-range-primary:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-primary:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-primary:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-primary::-webkit-slider-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-primary::-webkit-slider-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-primary::-moz-range-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-primary::-moz-range-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-primary::-ms-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-primary::-ms-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-secondary:focus { - outline: none; -} - -.custom-range.custom-range-secondary:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-secondary:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-secondary:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-secondary::-webkit-slider-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-secondary::-webkit-slider-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-secondary::-moz-range-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-secondary::-moz-range-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-secondary::-ms-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-secondary::-ms-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-success:focus { - outline: none; -} - -.custom-range.custom-range-success:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-success:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-success:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-success::-webkit-slider-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-success::-webkit-slider-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-success::-moz-range-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-success::-moz-range-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-success::-ms-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-success::-ms-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-info:focus { - outline: none; -} - -.custom-range.custom-range-info:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-info:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-info:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-info::-webkit-slider-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-info::-webkit-slider-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-info::-moz-range-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-info::-moz-range-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-info::-ms-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-info::-ms-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-warning:focus { - outline: none; -} - -.custom-range.custom-range-warning:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-warning:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-warning:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-warning::-webkit-slider-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-warning::-webkit-slider-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-warning::-moz-range-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-warning::-moz-range-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-warning::-ms-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-warning::-ms-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-danger:focus { - outline: none; -} - -.custom-range.custom-range-danger:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-danger:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-danger:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-danger::-webkit-slider-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-danger::-webkit-slider-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-danger::-moz-range-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-danger::-moz-range-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-danger::-ms-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-danger::-ms-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-light:focus { - outline: none; -} - -.custom-range.custom-range-light:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25); -} - -.custom-range.custom-range-light:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25); -} - -.custom-range.custom-range-light:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(248, 249, 250, 0.25); -} - -.custom-range.custom-range-light::-webkit-slider-thumb { - background-color: #f8f9fa; -} - -.custom-range.custom-range-light::-webkit-slider-thumb:active { - background-color: white; -} - -.custom-range.custom-range-light::-moz-range-thumb { - background-color: #f8f9fa; -} - -.custom-range.custom-range-light::-moz-range-thumb:active { - background-color: white; -} - -.custom-range.custom-range-light::-ms-thumb { - background-color: #f8f9fa; -} - -.custom-range.custom-range-light::-ms-thumb:active { - background-color: white; -} - -.custom-range.custom-range-dark:focus { - outline: none; -} - -.custom-range.custom-range-dark:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-dark:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-dark:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-dark::-webkit-slider-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-dark::-webkit-slider-thumb:active { - background-color: #88939e; -} - -.custom-range.custom-range-dark::-moz-range-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-dark::-moz-range-thumb:active { - background-color: #88939e; -} - -.custom-range.custom-range-dark::-ms-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-dark::-ms-thumb:active { - background-color: #88939e; -} - -.custom-range.custom-range-navy:focus { - outline: none; -} - -.custom-range.custom-range-navy:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25); -} - -.custom-range.custom-range-navy:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25); -} - -.custom-range.custom-range-navy:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 31, 63, 0.25); -} - -.custom-range.custom-range-navy::-webkit-slider-thumb { - background-color: #001f3f; -} - -.custom-range.custom-range-navy::-webkit-slider-thumb:active { - background-color: #0077f2; -} - -.custom-range.custom-range-navy::-moz-range-thumb { - background-color: #001f3f; -} - -.custom-range.custom-range-navy::-moz-range-thumb:active { - background-color: #0077f2; -} - -.custom-range.custom-range-navy::-ms-thumb { - background-color: #001f3f; -} - -.custom-range.custom-range-navy::-ms-thumb:active { - background-color: #0077f2; -} - -.custom-range.custom-range-olive:focus { - outline: none; -} - -.custom-range.custom-range-olive:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25); -} - -.custom-range.custom-range-olive:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25); -} - -.custom-range.custom-range-olive:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(61, 153, 112, 0.25); -} - -.custom-range.custom-range-olive::-webkit-slider-thumb { - background-color: #3d9970; -} - -.custom-range.custom-range-olive::-webkit-slider-thumb:active { - background-color: #abdec7; -} - -.custom-range.custom-range-olive::-moz-range-thumb { - background-color: #3d9970; -} - -.custom-range.custom-range-olive::-moz-range-thumb:active { - background-color: #abdec7; -} - -.custom-range.custom-range-olive::-ms-thumb { - background-color: #3d9970; -} - -.custom-range.custom-range-olive::-ms-thumb:active { - background-color: #abdec7; -} - -.custom-range.custom-range-lime:focus { - outline: none; -} - -.custom-range.custom-range-lime:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25); -} - -.custom-range.custom-range-lime:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25); -} - -.custom-range.custom-range-lime:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(1, 255, 112, 0.25); -} - -.custom-range.custom-range-lime::-webkit-slider-thumb { - background-color: #01ff70; -} - -.custom-range.custom-range-lime::-webkit-slider-thumb:active { - background-color: #b4ffd4; -} - -.custom-range.custom-range-lime::-moz-range-thumb { - background-color: #01ff70; -} - -.custom-range.custom-range-lime::-moz-range-thumb:active { - background-color: #b4ffd4; -} - -.custom-range.custom-range-lime::-ms-thumb { - background-color: #01ff70; -} - -.custom-range.custom-range-lime::-ms-thumb:active { - background-color: #b4ffd4; -} - -.custom-range.custom-range-fuchsia:focus { - outline: none; -} - -.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25); -} - -.custom-range.custom-range-fuchsia:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25); -} - -.custom-range.custom-range-fuchsia:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(240, 18, 190, 0.25); -} - -.custom-range.custom-range-fuchsia::-webkit-slider-thumb { - background-color: #f012be; -} - -.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active { - background-color: #fbbaec; -} - -.custom-range.custom-range-fuchsia::-moz-range-thumb { - background-color: #f012be; -} - -.custom-range.custom-range-fuchsia::-moz-range-thumb:active { - background-color: #fbbaec; -} - -.custom-range.custom-range-fuchsia::-ms-thumb { - background-color: #f012be; -} - -.custom-range.custom-range-fuchsia::-ms-thumb:active { - background-color: #fbbaec; -} - -.custom-range.custom-range-maroon:focus { - outline: none; -} - -.custom-range.custom-range-maroon:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25); -} - -.custom-range.custom-range-maroon:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25); -} - -.custom-range.custom-range-maroon:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(216, 27, 96, 0.25); -} - -.custom-range.custom-range-maroon::-webkit-slider-thumb { - background-color: #d81b60; -} - -.custom-range.custom-range-maroon::-webkit-slider-thumb:active { - background-color: #f5b0c9; -} - -.custom-range.custom-range-maroon::-moz-range-thumb { - background-color: #d81b60; -} - -.custom-range.custom-range-maroon::-moz-range-thumb:active { - background-color: #f5b0c9; -} - -.custom-range.custom-range-maroon::-ms-thumb { - background-color: #d81b60; -} - -.custom-range.custom-range-maroon::-ms-thumb:active { - background-color: #f5b0c9; -} - -.custom-range.custom-range-blue:focus { - outline: none; -} - -.custom-range.custom-range-blue:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-blue:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-blue:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(0, 123, 255, 0.25); -} - -.custom-range.custom-range-blue::-webkit-slider-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-blue::-webkit-slider-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-blue::-moz-range-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-blue::-moz-range-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-blue::-ms-thumb { - background-color: #007bff; -} - -.custom-range.custom-range-blue::-ms-thumb:active { - background-color: #b3d7ff; -} - -.custom-range.custom-range-indigo:focus { - outline: none; -} - -.custom-range.custom-range-indigo:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25); -} - -.custom-range.custom-range-indigo:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25); -} - -.custom-range.custom-range-indigo:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(102, 16, 242, 0.25); -} - -.custom-range.custom-range-indigo::-webkit-slider-thumb { - background-color: #6610f2; -} - -.custom-range.custom-range-indigo::-webkit-slider-thumb:active { - background-color: #d2b9fb; -} - -.custom-range.custom-range-indigo::-moz-range-thumb { - background-color: #6610f2; -} - -.custom-range.custom-range-indigo::-moz-range-thumb:active { - background-color: #d2b9fb; -} - -.custom-range.custom-range-indigo::-ms-thumb { - background-color: #6610f2; -} - -.custom-range.custom-range-indigo::-ms-thumb:active { - background-color: #d2b9fb; -} - -.custom-range.custom-range-purple:focus { - outline: none; -} - -.custom-range.custom-range-purple:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25); -} - -.custom-range.custom-range-purple:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25); -} - -.custom-range.custom-range-purple:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(111, 66, 193, 0.25); -} - -.custom-range.custom-range-purple::-webkit-slider-thumb { - background-color: #6f42c1; -} - -.custom-range.custom-range-purple::-webkit-slider-thumb:active { - background-color: #d5c8ed; -} - -.custom-range.custom-range-purple::-moz-range-thumb { - background-color: #6f42c1; -} - -.custom-range.custom-range-purple::-moz-range-thumb:active { - background-color: #d5c8ed; -} - -.custom-range.custom-range-purple::-ms-thumb { - background-color: #6f42c1; -} - -.custom-range.custom-range-purple::-ms-thumb:active { - background-color: #d5c8ed; -} - -.custom-range.custom-range-pink:focus { - outline: none; -} - -.custom-range.custom-range-pink:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25); -} - -.custom-range.custom-range-pink:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25); -} - -.custom-range.custom-range-pink:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(232, 62, 140, 0.25); -} - -.custom-range.custom-range-pink::-webkit-slider-thumb { - background-color: #e83e8c; -} - -.custom-range.custom-range-pink::-webkit-slider-thumb:active { - background-color: #fbddeb; -} - -.custom-range.custom-range-pink::-moz-range-thumb { - background-color: #e83e8c; -} - -.custom-range.custom-range-pink::-moz-range-thumb:active { - background-color: #fbddeb; -} - -.custom-range.custom-range-pink::-ms-thumb { - background-color: #e83e8c; -} - -.custom-range.custom-range-pink::-ms-thumb:active { - background-color: #fbddeb; -} - -.custom-range.custom-range-red:focus { - outline: none; -} - -.custom-range.custom-range-red:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-red:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-red:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(220, 53, 69, 0.25); -} - -.custom-range.custom-range-red::-webkit-slider-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-red::-webkit-slider-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-red::-moz-range-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-red::-moz-range-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-red::-ms-thumb { - background-color: #dc3545; -} - -.custom-range.custom-range-red::-ms-thumb:active { - background-color: #f6cdd1; -} - -.custom-range.custom-range-orange:focus { - outline: none; -} - -.custom-range.custom-range-orange:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25); -} - -.custom-range.custom-range-orange:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25); -} - -.custom-range.custom-range-orange:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(253, 126, 20, 0.25); -} - -.custom-range.custom-range-orange::-webkit-slider-thumb { - background-color: #fd7e14; -} - -.custom-range.custom-range-orange::-webkit-slider-thumb:active { - background-color: #ffdfc5; -} - -.custom-range.custom-range-orange::-moz-range-thumb { - background-color: #fd7e14; -} - -.custom-range.custom-range-orange::-moz-range-thumb:active { - background-color: #ffdfc5; -} - -.custom-range.custom-range-orange::-ms-thumb { - background-color: #fd7e14; -} - -.custom-range.custom-range-orange::-ms-thumb:active { - background-color: #ffdfc5; -} - -.custom-range.custom-range-yellow:focus { - outline: none; -} - -.custom-range.custom-range-yellow:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-yellow:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-yellow:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 193, 7, 0.25); -} - -.custom-range.custom-range-yellow::-webkit-slider-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-yellow::-webkit-slider-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-yellow::-moz-range-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-yellow::-moz-range-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-yellow::-ms-thumb { - background-color: #ffc107; -} - -.custom-range.custom-range-yellow::-ms-thumb:active { - background-color: #ffeeba; -} - -.custom-range.custom-range-green:focus { - outline: none; -} - -.custom-range.custom-range-green:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-green:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-green:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(40, 167, 69, 0.25); -} - -.custom-range.custom-range-green::-webkit-slider-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-green::-webkit-slider-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-green::-moz-range-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-green::-moz-range-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-green::-ms-thumb { - background-color: #28a745; -} - -.custom-range.custom-range-green::-ms-thumb:active { - background-color: #9be7ac; -} - -.custom-range.custom-range-teal:focus { - outline: none; -} - -.custom-range.custom-range-teal:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25); -} - -.custom-range.custom-range-teal:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25); -} - -.custom-range.custom-range-teal:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(32, 201, 151, 0.25); -} - -.custom-range.custom-range-teal::-webkit-slider-thumb { - background-color: #20c997; -} - -.custom-range.custom-range-teal::-webkit-slider-thumb:active { - background-color: #aaf1dc; -} - -.custom-range.custom-range-teal::-moz-range-thumb { - background-color: #20c997; -} - -.custom-range.custom-range-teal::-moz-range-thumb:active { - background-color: #aaf1dc; -} - -.custom-range.custom-range-teal::-ms-thumb { - background-color: #20c997; -} - -.custom-range.custom-range-teal::-ms-thumb:active { - background-color: #aaf1dc; -} - -.custom-range.custom-range-cyan:focus { - outline: none; -} - -.custom-range.custom-range-cyan:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-cyan:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-cyan:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(23, 162, 184, 0.25); -} - -.custom-range.custom-range-cyan::-webkit-slider-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-cyan::-webkit-slider-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-cyan::-moz-range-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-cyan::-moz-range-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-cyan::-ms-thumb { - background-color: #17a2b8; -} - -.custom-range.custom-range-cyan::-ms-thumb:active { - background-color: #90e4f1; -} - -.custom-range.custom-range-white:focus { - outline: none; -} - -.custom-range.custom-range-white:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25); -} - -.custom-range.custom-range-white:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25); -} - -.custom-range.custom-range-white:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(255, 255, 255, 0.25); -} - -.custom-range.custom-range-white::-webkit-slider-thumb { - background-color: #ffffff; -} - -.custom-range.custom-range-white::-webkit-slider-thumb:active { - background-color: white; -} - -.custom-range.custom-range-white::-moz-range-thumb { - background-color: #ffffff; -} - -.custom-range.custom-range-white::-moz-range-thumb:active { - background-color: white; -} - -.custom-range.custom-range-white::-ms-thumb { - background-color: #ffffff; -} - -.custom-range.custom-range-white::-ms-thumb:active { - background-color: white; -} - -.custom-range.custom-range-gray:focus { - outline: none; -} - -.custom-range.custom-range-gray:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-gray:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-gray:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(108, 117, 125, 0.25); -} - -.custom-range.custom-range-gray::-webkit-slider-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-gray::-webkit-slider-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-gray::-moz-range-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-gray::-moz-range-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-gray::-ms-thumb { - background-color: #6c757d; -} - -.custom-range.custom-range-gray::-ms-thumb:active { - background-color: #caced1; -} - -.custom-range.custom-range-gray-dark:focus { - outline: none; -} - -.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-gray-dark:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-gray-dark:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 2px rgba(52, 58, 64, 0.25); -} - -.custom-range.custom-range-gray-dark::-webkit-slider-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active { - background-color: #88939e; -} - -.custom-range.custom-range-gray-dark::-moz-range-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-gray-dark::-moz-range-thumb:active { - background-color: #88939e; -} - -.custom-range.custom-range-gray-dark::-ms-thumb { - background-color: #343a40; -} - -.custom-range.custom-range-gray-dark::-ms-thumb:active { - background-color: #88939e; -} - -.progress { - box-shadow: none; - border-radius: 1px; -} - -.progress.vertical { - display: inline-block; - height: 200px; - margin-right: 10px; - position: relative; - width: 30px; -} - -.progress.vertical > .progress-bar { - bottom: 0; - position: absolute; - width: 100%; -} - -.progress.vertical.sm, .progress.vertical.progress-sm { - width: 20px; -} - -.progress.vertical.xs, .progress.vertical.progress-xs { - width: 10px; -} - -.progress.vertical.xxs, .progress.vertical.progress-xxs { - width: 3px; -} - -.progress-group { - margin-bottom: 0.5rem; -} - -.progress-sm { - height: 10px; -} - -.progress-xs { - height: 7px; -} - -.progress-xxs { - height: 3px; -} - -.table tr > td .progress { - margin: 0; -} - -.card { - box-shadow: 0 0 1px rgba(0, 0, 0, 0.125), 0 1px 3px rgba(0, 0, 0, 0.2); - margin-bottom: 1rem; -} - -.card.bg-dark .card-header { - border-color: #383f45; -} - -.card.bg-dark, -.card.bg-dark .card-body { - color: #ffffff; -} - -.card.maximized-card { - height: 100% !important; - left: 0; - max-height: 100% !important; - max-width: 100% !important; - position: fixed; - top: 0; - width: 100% !important; - z-index: 9999; -} - -.card.maximized-card.was-collapsed .card-body { - display: block !important; -} - -.card.maximized-card [data-widget='collapse'] { - display: none; -} - -.card.maximized-card .card-header, -.card.maximized-card .card-footer { - border-radius: 0 !important; -} - -.card.collapsed-card .card-body, -.card.collapsed-card .card-footer { - display: none; -} - -.card .nav.flex-column > li { - border-bottom: 1px solid rgba(0, 0, 0, 0.125); - margin: 0; -} - -.card .nav.flex-column > li:last-of-type { - border-bottom: 0; -} - -.card.height-control .card-body { - max-height: 300px; - overflow: auto; -} - -.card .border-right { - border-right: 1px solid rgba(0, 0, 0, 0.125); -} - -.card .border-left { - border-left: 1px solid rgba(0, 0, 0, 0.125); -} - -.card.card-tabs:not(.card-outline) .card-header { - border-bottom: 0; -} - -.card.card-tabs:not(.card-outline) .card-header .nav-item:first-child .nav-link { - margin-left: -1px; -} - -.card.card-tabs.card-outline .nav-item { - border-bottom: 0; -} - -.card.card-tabs.card-outline .nav-item:first-child .nav-link { - border-left: 0; - margin-left: 0; -} - -.card.card-outline-tabs { - border-top: 0; -} - -.card.card-outline-tabs .card-header .nav-item:first-child .nav-link { - border-left: 0; - margin-left: 0; -} - -.card.card-outline-tabs .card-header a { - border-top: 3px solid transparent; -} - -.card.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card.card-outline-tabs .card-header a.active:hover { - margin-top: 0; -} - -html.maximized-card { - overflow: hidden; -} - -.card-header::after, -.card-body::after, -.card-footer::after { - display: block; - clear: both; - content: ""; -} - -.card-header { - background-color: transparent; - border-bottom: 1px solid rgba(0, 0, 0, 0.125); - padding: 0.75rem 1.25rem; - position: relative; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.collapsed-card .card-header { - border-bottom: 0; -} - -.card-header > .card-tools { - float: right; - margin-right: -0.625rem; -} - -.card-header > .card-tools .input-group, -.card-header > .card-tools .nav, -.card-header > .card-tools .pagination { - margin-bottom: -0.3rem; - margin-top: -0.3rem; -} - -.card-header > .card-tools [data-toggle='tooltip'] { - position: relative; -} - -.card-title { - float: left; - font-size: 1.1rem; - font-weight: 400; - margin: 0; -} - -.card-text { - clear: both; -} - -.btn-tool { - background: transparent; - color: #adb5bd; - font-size: 0.875rem; - margin: -0.75rem 0; - padding: .25rem .5rem; -} - -.btn-group.show .btn-tool, .btn-tool:hover { - color: #495057; -} - -.show .btn-tool, .btn-tool:focus { - box-shadow: none !important; -} - -.text-sm .card-title { - font-size: 1rem; -} - -.text-sm .nav-link { - padding: 0.4rem 0.8rem; -} - -.card-body > .table { - margin-bottom: 0; -} - -.card-body > .table > thead > tr > th, -.card-body > .table > thead > tr > td { - border-top-width: 0; -} - -.card-body .fc { - margin-top: 5px; -} - -.card-body .full-width-chart { - margin: -19px; -} - -.card-body.p-0 .full-width-chart { - margin: -9px; -} - -.chart-legend { - padding-left: 0; - list-style: none; - margin: 10px 0; -} - -@media (max-width: 576px) { - .chart-legend > li { - float: left; - margin-right: 10px; - } -} - -.card-comments { - background: #f8f9fa; -} - -.card-comments .card-comment { - border-bottom: 1px solid #e9ecef; - padding: 8px 0; -} - -.card-comments .card-comment::after { - display: block; - clear: both; - content: ""; -} - -.card-comments .card-comment:last-of-type { - border-bottom: 0; -} - -.card-comments .card-comment:first-of-type { - padding-top: 0; -} - -.card-comments .card-comment img { - height: 1.875rem; - width: 1.875rem; - float: left; -} - -.card-comments .comment-text { - color: #78838e; - margin-left: 40px; -} - -.card-comments .username { - color: #495057; - display: block; - font-weight: 600; -} - -.card-comments .text-muted { - font-size: 12px; - font-weight: 400; -} - -.todo-list { - list-style: none; - margin: 0; - overflow: auto; - padding: 0; -} - -.todo-list > li { - border-radius: 2px; - background: #f8f9fa; - border-left: 2px solid #e9ecef; - color: #495057; - margin-bottom: 2px; - padding: 10px; -} - -.todo-list > li:last-of-type { - margin-bottom: 0; -} - -.todo-list > li > input[type='checkbox'] { - margin: 0 10px 0 5px; -} - -.todo-list > li .text { - display: inline-block; - font-weight: 600; - margin-left: 5px; -} - -.todo-list > li .badge { - font-size: .7rem; - margin-left: 10px; -} - -.todo-list > li .tools { - color: #dc3545; - display: none; - float: right; -} - -.todo-list > li .tools > .fa, -.todo-list > li .tools > .fas, -.todo-list > li .tools > .far, -.todo-list > li .tools > .fab, -.todo-list > li .tools > .glyphicon, -.todo-list > li .tools > .ion { - cursor: pointer; - margin-right: 5px; -} - -.todo-list > li:hover .tools { - display: inline-block; -} - -.todo-list > li.done { - color: #697582; -} - -.todo-list > li.done .text { - font-weight: 500; - text-decoration: line-through; -} - -.todo-list > li.done .badge { - background: #adb5bd !important; -} - -.todo-list .primary { - border-left-color: #007bff; -} - -.todo-list .secondary { - border-left-color: #6c757d; -} - -.todo-list .success { - border-left-color: #28a745; -} - -.todo-list .info { - border-left-color: #17a2b8; -} - -.todo-list .warning { - border-left-color: #ffc107; -} - -.todo-list .danger { - border-left-color: #dc3545; -} - -.todo-list .light { - border-left-color: #f8f9fa; -} - -.todo-list .dark { - border-left-color: #343a40; -} - -.todo-list .navy { - border-left-color: #001f3f; -} - -.todo-list .olive { - border-left-color: #3d9970; -} - -.todo-list .lime { - border-left-color: #01ff70; -} - -.todo-list .fuchsia { - border-left-color: #f012be; -} - -.todo-list .maroon { - border-left-color: #d81b60; -} - -.todo-list .blue { - border-left-color: #007bff; -} - -.todo-list .indigo { - border-left-color: #6610f2; -} - -.todo-list .purple { - border-left-color: #6f42c1; -} - -.todo-list .pink { - border-left-color: #e83e8c; -} - -.todo-list .red { - border-left-color: #dc3545; -} - -.todo-list .orange { - border-left-color: #fd7e14; -} - -.todo-list .yellow { - border-left-color: #ffc107; -} - -.todo-list .green { - border-left-color: #28a745; -} - -.todo-list .teal { - border-left-color: #20c997; -} - -.todo-list .cyan { - border-left-color: #17a2b8; -} - -.todo-list .white { - border-left-color: #ffffff; -} - -.todo-list .gray { - border-left-color: #6c757d; -} - -.todo-list .gray-dark { - border-left-color: #343a40; -} - -.todo-list .handle { - cursor: move; - display: inline-block; - margin: 0 5px; -} - -.card-input { - max-width: 200px; -} - -.card-primary.card-tabs:not(.card-outline) .card-header { - background-color: #007bff; -} - -.card-primary.card-tabs:not(.card-outline) .card-header, -.card-primary.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-primary.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-primary.card-tabs.card-outline { - border-top: 3px solid #007bff; -} - -.card-primary.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-primary.card-outline-tabs .card-header a.active { - border-top: 3px solid #007bff; -} - -.bg-primary .btn-tool, -.bg-gradient-primary .btn-tool, -.card-primary:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-primary .btn-tool:hover, -.bg-gradient-primary .btn-tool:hover, -.card-primary:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-primary .bootstrap-datetimepicker-widget .table td, -.card.bg-primary .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover { - background: #0067d6; - color: #ffffff; -} - -.card.bg-primary .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-primary .bootstrap-datetimepicker-widget table td.active, -.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover { - background: #3395ff; - color: #ffffff; -} - -.card-secondary.card-tabs:not(.card-outline) .card-header { - background-color: #6c757d; -} - -.card-secondary.card-tabs:not(.card-outline) .card-header, -.card-secondary.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-secondary.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-secondary.card-tabs.card-outline { - border-top: 3px solid #6c757d; -} - -.card-secondary.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-secondary.card-outline-tabs .card-header a.active { - border-top: 3px solid #6c757d; -} - -.bg-secondary .btn-tool, -.bg-gradient-secondary .btn-tool, -.card-secondary:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-secondary .btn-tool:hover, -.bg-gradient-secondary .btn-tool:hover, -.card-secondary:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-secondary .bootstrap-datetimepicker-widget .table td, -.card.bg-secondary .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover { - background: #596167; - color: #ffffff; -} - -.card.bg-secondary .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-secondary .bootstrap-datetimepicker-widget table td.active, -.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover { - background: #868e96; - color: #ffffff; -} - -.card-success.card-tabs:not(.card-outline) .card-header { - background-color: #28a745; -} - -.card-success.card-tabs:not(.card-outline) .card-header, -.card-success.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-success.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-success.card-tabs.card-outline { - border-top: 3px solid #28a745; -} - -.card-success.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-success.card-outline-tabs .card-header a.active { - border-top: 3px solid #28a745; -} - -.bg-success .btn-tool, -.bg-gradient-success .btn-tool, -.card-success:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-success .btn-tool:hover, -.bg-gradient-success .btn-tool:hover, -.card-success:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-success .bootstrap-datetimepicker-widget .table td, -.card.bg-success .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover { - background: #208637; - color: #ffffff; -} - -.card.bg-success .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-success .bootstrap-datetimepicker-widget table td.active, -.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover { - background: #34ce57; - color: #ffffff; -} - -.card-info.card-tabs:not(.card-outline) .card-header { - background-color: #17a2b8; -} - -.card-info.card-tabs:not(.card-outline) .card-header, -.card-info.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-info.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-info.card-tabs.card-outline { - border-top: 3px solid #17a2b8; -} - -.card-info.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-info.card-outline-tabs .card-header a.active { - border-top: 3px solid #17a2b8; -} - -.bg-info .btn-tool, -.bg-gradient-info .btn-tool, -.card-info:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-info .btn-tool:hover, -.bg-gradient-info .btn-tool:hover, -.card-info:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-info .bootstrap-datetimepicker-widget .table td, -.card.bg-info .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover { - background: #128294; - color: #ffffff; -} - -.card.bg-info .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-info .bootstrap-datetimepicker-widget table td.active, -.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover { - background: #1fc8e3; - color: #ffffff; -} - -.card-warning.card-tabs:not(.card-outline) .card-header { - background-color: #ffc107; -} - -.card-warning.card-tabs:not(.card-outline) .card-header, -.card-warning.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-warning.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-warning.card-tabs.card-outline { - border-top: 3px solid #ffc107; -} - -.card-warning.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-warning.card-outline-tabs .card-header a.active { - border-top: 3px solid #ffc107; -} - -.bg-warning .btn-tool, -.bg-gradient-warning .btn-tool, -.card-warning:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-warning .btn-tool:hover, -.bg-gradient-warning .btn-tool:hover, -.card-warning:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-warning .bootstrap-datetimepicker-widget .table td, -.card.bg-warning .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover { - background: #dda600; - color: #1F2D3D; -} - -.card.bg-warning .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-warning .bootstrap-datetimepicker-widget table td.active, -.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover { - background: #ffce3a; - color: #1F2D3D; -} - -.card-danger.card-tabs:not(.card-outline) .card-header { - background-color: #dc3545; -} - -.card-danger.card-tabs:not(.card-outline) .card-header, -.card-danger.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-danger.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-danger.card-tabs.card-outline { - border-top: 3px solid #dc3545; -} - -.card-danger.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-danger.card-outline-tabs .card-header a.active { - border-top: 3px solid #dc3545; -} - -.bg-danger .btn-tool, -.bg-gradient-danger .btn-tool, -.card-danger:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-danger .btn-tool:hover, -.bg-gradient-danger .btn-tool:hover, -.card-danger:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-danger .bootstrap-datetimepicker-widget .table td, -.card.bg-danger .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover { - background: #c62232; - color: #ffffff; -} - -.card.bg-danger .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-danger .bootstrap-datetimepicker-widget table td.active, -.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover { - background: #e4606d; - color: #ffffff; -} - -.card-light.card-tabs:not(.card-outline) .card-header { - background-color: #f8f9fa; -} - -.card-light.card-tabs:not(.card-outline) .card-header, -.card-light.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-light.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-light.card-tabs.card-outline { - border-top: 3px solid #f8f9fa; -} - -.card-light.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-light.card-outline-tabs .card-header a.active { - border-top: 3px solid #f8f9fa; -} - -.bg-light .btn-tool, -.bg-gradient-light .btn-tool, -.card-light:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-light .btn-tool:hover, -.bg-gradient-light .btn-tool:hover, -.card-light:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-light .bootstrap-datetimepicker-widget .table td, -.card.bg-light .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover { - background: #e0e5e9; - color: #1F2D3D; -} - -.card.bg-light .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-light .bootstrap-datetimepicker-widget table td.active, -.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover { - background: white; - color: #1F2D3D; -} - -.card-dark.card-tabs:not(.card-outline) .card-header { - background-color: #343a40; -} - -.card-dark.card-tabs:not(.card-outline) .card-header, -.card-dark.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-dark.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-dark.card-tabs.card-outline { - border-top: 3px solid #343a40; -} - -.card-dark.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-dark.card-outline-tabs .card-header a.active { - border-top: 3px solid #343a40; -} - -.bg-dark .btn-tool, -.bg-gradient-dark .btn-tool, -.card-dark:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-dark .btn-tool:hover, -.bg-gradient-dark .btn-tool:hover, -.card-dark:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-dark .bootstrap-datetimepicker-widget .table td, -.card.bg-dark .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover { - background: #222629; - color: #ffffff; -} - -.card.bg-dark .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-dark .bootstrap-datetimepicker-widget table td.active, -.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover { - background: #4b545c; - color: #ffffff; -} - -.card-navy.card-tabs:not(.card-outline) .card-header { - background-color: #001f3f; -} - -.card-navy.card-tabs:not(.card-outline) .card-header, -.card-navy.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-navy.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-navy.card-tabs.card-outline { - border-top: 3px solid #001f3f; -} - -.card-navy.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-navy.card-outline-tabs .card-header a.active { - border-top: 3px solid #001f3f; -} - -.bg-navy .btn-tool, -.bg-gradient-navy .btn-tool, -.card-navy:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-navy .btn-tool:hover, -.bg-gradient-navy .btn-tool:hover, -.card-navy:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-navy .bootstrap-datetimepicker-widget .table td, -.card.bg-navy .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover { - background: #000b16; - color: #ffffff; -} - -.card.bg-navy .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-navy .bootstrap-datetimepicker-widget table td.active, -.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover { - background: #003872; - color: #ffffff; -} - -.card-olive.card-tabs:not(.card-outline) .card-header { - background-color: #3d9970; -} - -.card-olive.card-tabs:not(.card-outline) .card-header, -.card-olive.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-olive.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-olive.card-tabs.card-outline { - border-top: 3px solid #3d9970; -} - -.card-olive.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-olive.card-outline-tabs .card-header a.active { - border-top: 3px solid #3d9970; -} - -.bg-olive .btn-tool, -.bg-gradient-olive .btn-tool, -.card-olive:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-olive .btn-tool:hover, -.bg-gradient-olive .btn-tool:hover, -.card-olive:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-olive .bootstrap-datetimepicker-widget .table td, -.card.bg-olive .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover { - background: #317c5b; - color: #ffffff; -} - -.card.bg-olive .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-olive .bootstrap-datetimepicker-widget table td.active, -.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover { - background: #50b98a; - color: #ffffff; -} - -.card-lime.card-tabs:not(.card-outline) .card-header { - background-color: #01ff70; -} - -.card-lime.card-tabs:not(.card-outline) .card-header, -.card-lime.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-lime.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-lime.card-tabs.card-outline { - border-top: 3px solid #01ff70; -} - -.card-lime.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-lime.card-outline-tabs .card-header a.active { - border-top: 3px solid #01ff70; -} - -.bg-lime .btn-tool, -.bg-gradient-lime .btn-tool, -.card-lime:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-lime .btn-tool:hover, -.bg-gradient-lime .btn-tool:hover, -.card-lime:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-lime .bootstrap-datetimepicker-widget .table td, -.card.bg-lime .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover { - background: #00d75e; - color: #1F2D3D; -} - -.card.bg-lime .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-lime .bootstrap-datetimepicker-widget table td.active, -.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover { - background: #34ff8d; - color: #1F2D3D; -} - -.card-fuchsia.card-tabs:not(.card-outline) .card-header { - background-color: #f012be; -} - -.card-fuchsia.card-tabs:not(.card-outline) .card-header, -.card-fuchsia.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-fuchsia.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-fuchsia.card-tabs.card-outline { - border-top: 3px solid #f012be; -} - -.card-fuchsia.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-fuchsia.card-outline-tabs .card-header a.active { - border-top: 3px solid #f012be; -} - -.bg-fuchsia .btn-tool, -.bg-gradient-fuchsia .btn-tool, -.card-fuchsia:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-fuchsia .btn-tool:hover, -.bg-gradient-fuchsia .btn-tool:hover, -.card-fuchsia:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td, -.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover { - background: #cc0da1; - color: #ffffff; -} - -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active, -.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover { - background: #f342cb; - color: #ffffff; -} - -.card-maroon.card-tabs:not(.card-outline) .card-header { - background-color: #d81b60; -} - -.card-maroon.card-tabs:not(.card-outline) .card-header, -.card-maroon.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-maroon.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-maroon.card-tabs.card-outline { - border-top: 3px solid #d81b60; -} - -.card-maroon.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-maroon.card-outline-tabs .card-header a.active { - border-top: 3px solid #d81b60; -} - -.bg-maroon .btn-tool, -.bg-gradient-maroon .btn-tool, -.card-maroon:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-maroon .btn-tool:hover, -.bg-gradient-maroon .btn-tool:hover, -.card-maroon:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-maroon .bootstrap-datetimepicker-widget .table td, -.card.bg-maroon .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover { - background: #b41650; - color: #ffffff; -} - -.card.bg-maroon .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-maroon .bootstrap-datetimepicker-widget table td.active, -.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover { - background: #e73f7c; - color: #ffffff; -} - -.card-blue.card-tabs:not(.card-outline) .card-header { - background-color: #007bff; -} - -.card-blue.card-tabs:not(.card-outline) .card-header, -.card-blue.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-blue.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-blue.card-tabs.card-outline { - border-top: 3px solid #007bff; -} - -.card-blue.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-blue.card-outline-tabs .card-header a.active { - border-top: 3px solid #007bff; -} - -.bg-blue .btn-tool, -.bg-gradient-blue .btn-tool, -.card-blue:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-blue .btn-tool:hover, -.bg-gradient-blue .btn-tool:hover, -.card-blue:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-blue .bootstrap-datetimepicker-widget .table td, -.card.bg-blue .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover { - background: #0067d6; - color: #ffffff; -} - -.card.bg-blue .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-blue .bootstrap-datetimepicker-widget table td.active, -.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover { - background: #3395ff; - color: #ffffff; -} - -.card-indigo.card-tabs:not(.card-outline) .card-header { - background-color: #6610f2; -} - -.card-indigo.card-tabs:not(.card-outline) .card-header, -.card-indigo.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-indigo.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-indigo.card-tabs.card-outline { - border-top: 3px solid #6610f2; -} - -.card-indigo.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-indigo.card-outline-tabs .card-header a.active { - border-top: 3px solid #6610f2; -} - -.bg-indigo .btn-tool, -.bg-gradient-indigo .btn-tool, -.card-indigo:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-indigo .btn-tool:hover, -.bg-gradient-indigo .btn-tool:hover, -.card-indigo:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-indigo .bootstrap-datetimepicker-widget .table td, -.card.bg-indigo .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover { - background: #550bce; - color: #ffffff; -} - -.card.bg-indigo .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-indigo .bootstrap-datetimepicker-widget table td.active, -.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover { - background: #8540f5; - color: #ffffff; -} - -.card-purple.card-tabs:not(.card-outline) .card-header { - background-color: #6f42c1; -} - -.card-purple.card-tabs:not(.card-outline) .card-header, -.card-purple.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-purple.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-purple.card-tabs.card-outline { - border-top: 3px solid #6f42c1; -} - -.card-purple.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-purple.card-outline-tabs .card-header a.active { - border-top: 3px solid #6f42c1; -} - -.bg-purple .btn-tool, -.bg-gradient-purple .btn-tool, -.card-purple:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-purple .btn-tool:hover, -.bg-gradient-purple .btn-tool:hover, -.card-purple:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-purple .bootstrap-datetimepicker-widget .table td, -.card.bg-purple .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover { - background: #5d36a4; - color: #ffffff; -} - -.card.bg-purple .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-purple .bootstrap-datetimepicker-widget table td.active, -.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover { - background: #8c68ce; - color: #ffffff; -} - -.card-pink.card-tabs:not(.card-outline) .card-header { - background-color: #e83e8c; -} - -.card-pink.card-tabs:not(.card-outline) .card-header, -.card-pink.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-pink.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-pink.card-tabs.card-outline { - border-top: 3px solid #e83e8c; -} - -.card-pink.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-pink.card-outline-tabs .card-header a.active { - border-top: 3px solid #e83e8c; -} - -.bg-pink .btn-tool, -.bg-gradient-pink .btn-tool, -.card-pink:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-pink .btn-tool:hover, -.bg-gradient-pink .btn-tool:hover, -.card-pink:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-pink .bootstrap-datetimepicker-widget .table td, -.card.bg-pink .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover { - background: #e21b76; - color: #ffffff; -} - -.card.bg-pink .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-pink .bootstrap-datetimepicker-widget table td.active, -.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover { - background: #ed6ca7; - color: #ffffff; -} - -.card-red.card-tabs:not(.card-outline) .card-header { - background-color: #dc3545; -} - -.card-red.card-tabs:not(.card-outline) .card-header, -.card-red.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-red.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-red.card-tabs.card-outline { - border-top: 3px solid #dc3545; -} - -.card-red.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-red.card-outline-tabs .card-header a.active { - border-top: 3px solid #dc3545; -} - -.bg-red .btn-tool, -.bg-gradient-red .btn-tool, -.card-red:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-red .btn-tool:hover, -.bg-gradient-red .btn-tool:hover, -.card-red:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-red .bootstrap-datetimepicker-widget .table td, -.card.bg-red .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover { - background: #c62232; - color: #ffffff; -} - -.card.bg-red .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-red .bootstrap-datetimepicker-widget table td.active, -.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover { - background: #e4606d; - color: #ffffff; -} - -.card-orange.card-tabs:not(.card-outline) .card-header { - background-color: #fd7e14; -} - -.card-orange.card-tabs:not(.card-outline) .card-header, -.card-orange.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-orange.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-orange.card-tabs.card-outline { - border-top: 3px solid #fd7e14; -} - -.card-orange.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-orange.card-outline-tabs .card-header a.active { - border-top: 3px solid #fd7e14; -} - -.bg-orange .btn-tool, -.bg-gradient-orange .btn-tool, -.card-orange:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-orange .btn-tool:hover, -.bg-gradient-orange .btn-tool:hover, -.card-orange:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-orange .bootstrap-datetimepicker-widget .table td, -.card.bg-orange .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover { - background: #e66a02; - color: #1F2D3D; -} - -.card.bg-orange .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-orange .bootstrap-datetimepicker-widget table td.active, -.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover { - background: #fd9a47; - color: #1F2D3D; -} - -.card-yellow.card-tabs:not(.card-outline) .card-header { - background-color: #ffc107; -} - -.card-yellow.card-tabs:not(.card-outline) .card-header, -.card-yellow.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-yellow.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-yellow.card-tabs.card-outline { - border-top: 3px solid #ffc107; -} - -.card-yellow.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-yellow.card-outline-tabs .card-header a.active { - border-top: 3px solid #ffc107; -} - -.bg-yellow .btn-tool, -.bg-gradient-yellow .btn-tool, -.card-yellow:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-yellow .btn-tool:hover, -.bg-gradient-yellow .btn-tool:hover, -.card-yellow:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-yellow .bootstrap-datetimepicker-widget .table td, -.card.bg-yellow .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover { - background: #dda600; - color: #1F2D3D; -} - -.card.bg-yellow .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-yellow .bootstrap-datetimepicker-widget table td.active, -.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover { - background: #ffce3a; - color: #1F2D3D; -} - -.card-green.card-tabs:not(.card-outline) .card-header { - background-color: #28a745; -} - -.card-green.card-tabs:not(.card-outline) .card-header, -.card-green.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-green.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-green.card-tabs.card-outline { - border-top: 3px solid #28a745; -} - -.card-green.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-green.card-outline-tabs .card-header a.active { - border-top: 3px solid #28a745; -} - -.bg-green .btn-tool, -.bg-gradient-green .btn-tool, -.card-green:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-green .btn-tool:hover, -.bg-gradient-green .btn-tool:hover, -.card-green:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-green .bootstrap-datetimepicker-widget .table td, -.card.bg-green .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover { - background: #208637; - color: #ffffff; -} - -.card.bg-green .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-green .bootstrap-datetimepicker-widget table td.active, -.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover { - background: #34ce57; - color: #ffffff; -} - -.card-teal.card-tabs:not(.card-outline) .card-header { - background-color: #20c997; -} - -.card-teal.card-tabs:not(.card-outline) .card-header, -.card-teal.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-teal.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-teal.card-tabs.card-outline { - border-top: 3px solid #20c997; -} - -.card-teal.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-teal.card-outline-tabs .card-header a.active { - border-top: 3px solid #20c997; -} - -.bg-teal .btn-tool, -.bg-gradient-teal .btn-tool, -.card-teal:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-teal .btn-tool:hover, -.bg-gradient-teal .btn-tool:hover, -.card-teal:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-teal .bootstrap-datetimepicker-widget .table td, -.card.bg-teal .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover { - background: #1aa67d; - color: #ffffff; -} - -.card.bg-teal .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-teal .bootstrap-datetimepicker-widget table td.active, -.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover { - background: #3ce0af; - color: #ffffff; -} - -.card-cyan.card-tabs:not(.card-outline) .card-header { - background-color: #17a2b8; -} - -.card-cyan.card-tabs:not(.card-outline) .card-header, -.card-cyan.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-cyan.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-cyan.card-tabs.card-outline { - border-top: 3px solid #17a2b8; -} - -.card-cyan.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-cyan.card-outline-tabs .card-header a.active { - border-top: 3px solid #17a2b8; -} - -.bg-cyan .btn-tool, -.bg-gradient-cyan .btn-tool, -.card-cyan:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-cyan .btn-tool:hover, -.bg-gradient-cyan .btn-tool:hover, -.card-cyan:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-cyan .bootstrap-datetimepicker-widget .table td, -.card.bg-cyan .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover { - background: #128294; - color: #ffffff; -} - -.card.bg-cyan .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-cyan .bootstrap-datetimepicker-widget table td.active, -.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover { - background: #1fc8e3; - color: #ffffff; -} - -.card-white.card-tabs:not(.card-outline) .card-header { - background-color: #ffffff; -} - -.card-white.card-tabs:not(.card-outline) .card-header, -.card-white.card-tabs:not(.card-outline) .card-header a { - color: #1F2D3D; -} - -.card-white.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-white.card-tabs.card-outline { - border-top: 3px solid #ffffff; -} - -.card-white.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-white.card-outline-tabs .card-header a.active { - border-top: 3px solid #ffffff; -} - -.bg-white .btn-tool, -.bg-gradient-white .btn-tool, -.card-white:not(.card-outline) .btn-tool { - color: rgba(31, 45, 61, 0.8); -} - -.bg-white .btn-tool:hover, -.bg-gradient-white .btn-tool:hover, -.card-white:not(.card-outline) .btn-tool:hover { - color: #1F2D3D; -} - -.card.bg-white .bootstrap-datetimepicker-widget .table td, -.card.bg-white .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover { - background: #ebebeb; - color: #1F2D3D; -} - -.card.bg-white .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #1F2D3D; -} - -.card.bg-white .bootstrap-datetimepicker-widget table td.active, -.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover { - background: white; - color: #1F2D3D; -} - -.card-gray.card-tabs:not(.card-outline) .card-header { - background-color: #6c757d; -} - -.card-gray.card-tabs:not(.card-outline) .card-header, -.card-gray.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-gray.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-gray.card-tabs.card-outline { - border-top: 3px solid #6c757d; -} - -.card-gray.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-gray.card-outline-tabs .card-header a.active { - border-top: 3px solid #6c757d; -} - -.bg-gray .btn-tool, -.bg-gradient-gray .btn-tool, -.card-gray:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-gray .btn-tool:hover, -.bg-gradient-gray .btn-tool:hover, -.card-gray:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-gray .bootstrap-datetimepicker-widget .table td, -.card.bg-gray .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover { - background: #596167; - color: #ffffff; -} - -.card.bg-gray .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-gray .bootstrap-datetimepicker-widget table td.active, -.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover { - background: #868e96; - color: #ffffff; -} - -.card-gray-dark.card-tabs:not(.card-outline) .card-header { - background-color: #343a40; -} - -.card-gray-dark.card-tabs:not(.card-outline) .card-header, -.card-gray-dark.card-tabs:not(.card-outline) .card-header a { - color: #ffffff; -} - -.card-gray-dark.card-tabs:not(.card-outline) .card-header a.active { - color: #1F2D3D; -} - -.card-gray-dark.card-tabs.card-outline { - border-top: 3px solid #343a40; -} - -.card-gray-dark.card-outline-tabs .card-header a:hover { - border-top: 3px solid #dee2e6; -} - -.card-gray-dark.card-outline-tabs .card-header a.active { - border-top: 3px solid #343a40; -} - -.bg-gray-dark .btn-tool, -.bg-gradient-gray-dark .btn-tool, -.card-gray-dark:not(.card-outline) .btn-tool { - color: rgba(255, 255, 255, 0.8); -} - -.bg-gray-dark .btn-tool:hover, -.bg-gradient-gray-dark .btn-tool:hover, -.card-gray-dark:not(.card-outline) .btn-tool:hover { - color: #ffffff; -} - -.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td, -.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th { - border: none; -} - -.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover { - background: #222629; - color: #ffffff; -} - -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today::before, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today::before { - border-bottom-color: #ffffff; -} - -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active, -.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active, -.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover { - background: #4b545c; - color: #ffffff; -} - -.card-default .nav-item:first-child .nav-link { - border-left: 0; -} - -.modal-dialog .overlay { - background-color: #000; - display: block; - height: 100%; - left: 0; - opacity: .7; - position: absolute; - top: 0; - width: 100%; - z-index: 1052; -} - -.modal-content.bg-warning .modal-header, -.modal-content.bg-warning .modal-footer { - border-color: #343a40; -} - -.modal-content.bg-primary .close, .modal-content.bg-secondary .close, .modal-content.bg-info .close, .modal-content.bg-danger .close, .modal-content.bg-success .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toasts-top-right { - position: absolute; - right: 0; - top: 0; - z-index: 1040; -} - -.toasts-top-right.fixed { - position: fixed; -} - -.toasts-top-left { - left: 0; - position: absolute; - top: 0; - z-index: 1040; -} - -.toasts-top-left.fixed { - position: fixed; -} - -.toasts-bottom-right { - bottom: 0; - position: absolute; - right: 0; - z-index: 1040; -} - -.toasts-bottom-right.fixed { - position: fixed; -} - -.toasts-bottom-left { - bottom: 0; - left: 0; - position: absolute; - z-index: 1040; -} - -.toasts-bottom-left.fixed { - position: fixed; -} - -.toast.bg-primary { - background: rgba(0, 123, 255, 0.9) !important; -} - -.toast.bg-primary .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-primary .toast-header { - background: rgba(0, 123, 255, 0.85); - color: #ffffff; -} - -.toast.bg-secondary { - background: rgba(108, 117, 125, 0.9) !important; -} - -.toast.bg-secondary .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-secondary .toast-header { - background: rgba(108, 117, 125, 0.85); - color: #ffffff; -} - -.toast.bg-success { - background: rgba(40, 167, 69, 0.9) !important; -} - -.toast.bg-success .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-success .toast-header { - background: rgba(40, 167, 69, 0.85); - color: #ffffff; -} - -.toast.bg-info { - background: rgba(23, 162, 184, 0.9) !important; -} - -.toast.bg-info .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-info .toast-header { - background: rgba(23, 162, 184, 0.85); - color: #ffffff; -} - -.toast.bg-warning { - background: rgba(255, 193, 7, 0.9) !important; -} - -.toast.bg-warning .toast-header { - background: rgba(255, 193, 7, 0.85); - color: #1F2D3D; -} - -.toast.bg-danger { - background: rgba(220, 53, 69, 0.9) !important; -} - -.toast.bg-danger .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-danger .toast-header { - background: rgba(220, 53, 69, 0.85); - color: #ffffff; -} - -.toast.bg-light { - background: rgba(248, 249, 250, 0.9) !important; -} - -.toast.bg-light .toast-header { - background: rgba(248, 249, 250, 0.85); - color: #1F2D3D; -} - -.toast.bg-dark { - background: rgba(52, 58, 64, 0.9) !important; -} - -.toast.bg-dark .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-dark .toast-header { - background: rgba(52, 58, 64, 0.85); - color: #ffffff; -} - -.toast.bg-navy { - background: rgba(0, 31, 63, 0.9) !important; -} - -.toast.bg-navy .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-navy .toast-header { - background: rgba(0, 31, 63, 0.85); - color: #ffffff; -} - -.toast.bg-olive { - background: rgba(61, 153, 112, 0.9) !important; -} - -.toast.bg-olive .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-olive .toast-header { - background: rgba(61, 153, 112, 0.85); - color: #ffffff; -} - -.toast.bg-lime { - background: rgba(1, 255, 112, 0.9) !important; -} - -.toast.bg-lime .toast-header { - background: rgba(1, 255, 112, 0.85); - color: #1F2D3D; -} - -.toast.bg-fuchsia { - background: rgba(240, 18, 190, 0.9) !important; -} - -.toast.bg-fuchsia .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-fuchsia .toast-header { - background: rgba(240, 18, 190, 0.85); - color: #ffffff; -} - -.toast.bg-maroon { - background: rgba(216, 27, 96, 0.9) !important; -} - -.toast.bg-maroon .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-maroon .toast-header { - background: rgba(216, 27, 96, 0.85); - color: #ffffff; -} - -.toast.bg-blue { - background: rgba(0, 123, 255, 0.9) !important; -} - -.toast.bg-blue .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-blue .toast-header { - background: rgba(0, 123, 255, 0.85); - color: #ffffff; -} - -.toast.bg-indigo { - background: rgba(102, 16, 242, 0.9) !important; -} - -.toast.bg-indigo .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-indigo .toast-header { - background: rgba(102, 16, 242, 0.85); - color: #ffffff; -} - -.toast.bg-purple { - background: rgba(111, 66, 193, 0.9) !important; -} - -.toast.bg-purple .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-purple .toast-header { - background: rgba(111, 66, 193, 0.85); - color: #ffffff; -} - -.toast.bg-pink { - background: rgba(232, 62, 140, 0.9) !important; -} - -.toast.bg-pink .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-pink .toast-header { - background: rgba(232, 62, 140, 0.85); - color: #ffffff; -} - -.toast.bg-red { - background: rgba(220, 53, 69, 0.9) !important; -} - -.toast.bg-red .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-red .toast-header { - background: rgba(220, 53, 69, 0.85); - color: #ffffff; -} - -.toast.bg-orange { - background: rgba(253, 126, 20, 0.9) !important; -} - -.toast.bg-orange .toast-header { - background: rgba(253, 126, 20, 0.85); - color: #1F2D3D; -} - -.toast.bg-yellow { - background: rgba(255, 193, 7, 0.9) !important; -} - -.toast.bg-yellow .toast-header { - background: rgba(255, 193, 7, 0.85); - color: #1F2D3D; -} - -.toast.bg-green { - background: rgba(40, 167, 69, 0.9) !important; -} - -.toast.bg-green .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-green .toast-header { - background: rgba(40, 167, 69, 0.85); - color: #ffffff; -} - -.toast.bg-teal { - background: rgba(32, 201, 151, 0.9) !important; -} - -.toast.bg-teal .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-teal .toast-header { - background: rgba(32, 201, 151, 0.85); - color: #ffffff; -} - -.toast.bg-cyan { - background: rgba(23, 162, 184, 0.9) !important; -} - -.toast.bg-cyan .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-cyan .toast-header { - background: rgba(23, 162, 184, 0.85); - color: #ffffff; -} - -.toast.bg-white { - background: rgba(255, 255, 255, 0.9) !important; -} - -.toast.bg-white .toast-header { - background: rgba(255, 255, 255, 0.85); - color: #1F2D3D; -} - -.toast.bg-gray { - background: rgba(108, 117, 125, 0.9) !important; -} - -.toast.bg-gray .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-gray .toast-header { - background: rgba(108, 117, 125, 0.85); - color: #ffffff; -} - -.toast.bg-gray-dark { - background: rgba(52, 58, 64, 0.9) !important; -} - -.toast.bg-gray-dark .close { - color: #ffffff; - text-shadow: 0 1px 0 #000; -} - -.toast.bg-gray-dark .toast-header { - background: rgba(52, 58, 64, 0.85); - color: #ffffff; -} - -.btn.disabled, .btn:disabled { - cursor: not-allowed; -} - -.btn.btn-flat { - border-radius: 0; - border-width: 1px; - box-shadow: none; -} - -.btn.btn-file { - overflow: hidden; - position: relative; -} - -.btn.btn-file > input[type='file'] { - background: #ffffff; - cursor: inherit; - display: block; - font-size: 100px; - min-height: 100%; - min-width: 100%; - opacity: 0; - outline: none; - position: absolute; - right: 0; - text-align: right; - top: 0; -} - -.text-sm .btn { - font-size: 0.875rem !important; -} - -.btn-default { - background-color: #f8f9fa; - border-color: #ddd; - color: #444; -} - -.btn-default:hover, .btn-default:active, .btn-default.hover { - background-color: #e9ecef; - color: #2b2b2b; -} - -.btn-app { - border-radius: 3px; - background-color: #f8f9fa; - border: 1px solid #ddd; - color: #6c757d; - font-size: 12px; - height: 60px; - margin: 0 0 10px 10px; - min-width: 80px; - padding: 15px 5px; - position: relative; - text-align: center; -} - -.btn-app > .fa, -.btn-app > .fas, -.btn-app > .far, -.btn-app > .fab, -.btn-app > .glyphicon, -.btn-app > .ion { - display: block; - font-size: 20px; -} - -.btn-app:hover { - background: #f8f9fa; - border-color: #aaaaaa; - color: #444; -} - -.btn-app:active, .btn-app:focus { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.btn-app > .badge { - font-size: 10px; - font-weight: 400; - position: absolute; - right: -10px; - top: -3px; -} - -.btn-xs { - padding: 0.125rem 0.25rem; - font-size: 0.75rem; - line-height: 1.5; - border-radius: 0.15rem; -} - -.callout { - border-radius: 0.25rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); - background-color: #ffffff; - border-left: 5px solid #e9ecef; - margin-bottom: 1rem; - padding: 1rem; -} - -.callout a { - color: #495057; - text-decoration: underline; -} - -.callout a:hover { - color: #e9ecef; -} - -.callout p:last-child { - margin-bottom: 0; -} - -.callout.callout-danger { - border-left-color: #bd2130; -} - -.callout.callout-warning { - border-left-color: #d39e00; -} - -.callout.callout-info { - border-left-color: #117a8b; -} - -.callout.callout-success { - border-left-color: #1e7e34; -} - -.alert .icon { - margin-right: 10px; -} - -.alert .close { - color: #000; - opacity: .2; -} - -.alert .close:hover { - opacity: .5; -} - -.alert a { - color: #ffffff; - text-decoration: underline; -} - -.alert-primary { - color: #ffffff; - background: #007bff; - border-color: #006fe6; -} - -.alert-default-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; -} - -.alert-default-primary hr { - border-top-color: #9fcdff; -} - -.alert-default-primary .alert-link { - color: #002752; -} - -.alert-secondary { - color: #ffffff; - background: #6c757d; - border-color: #60686f; -} - -.alert-default-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; -} - -.alert-default-secondary hr { - border-top-color: #c8cbcf; -} - -.alert-default-secondary .alert-link { - color: #202326; -} - -.alert-success { - color: #ffffff; - background: #28a745; - border-color: #23923d; -} - -.alert-default-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; -} - -.alert-default-success hr { - border-top-color: #b1dfbb; -} - -.alert-default-success .alert-link { - color: #0b2e13; -} - -.alert-info { - color: #ffffff; - background: #17a2b8; - border-color: #148ea1; -} - -.alert-default-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; -} - -.alert-default-info hr { - border-top-color: #abdde5; -} - -.alert-default-info .alert-link { - color: #062c33; -} - -.alert-warning { - color: #1F2D3D; - background: #ffc107; - border-color: #edb100; -} - -.alert-default-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; -} - -.alert-default-warning hr { - border-top-color: #ffe8a1; -} - -.alert-default-warning .alert-link { - color: #533f03; -} - -.alert-danger { - color: #ffffff; - background: #dc3545; - border-color: #d32535; -} - -.alert-default-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; -} - -.alert-default-danger hr { - border-top-color: #f1b0b7; -} - -.alert-default-danger .alert-link { - color: #491217; -} - -.alert-light { - color: #1F2D3D; - background: #f8f9fa; - border-color: #e9ecef; -} - -.alert-default-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; -} - -.alert-default-light hr { - border-top-color: #ececf6; -} - -.alert-default-light .alert-link { - color: #686868; -} - -.alert-dark { - color: #ffffff; - background: #343a40; - border-color: #292d32; -} - -.alert-default-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; -} - -.alert-default-dark hr { - border-top-color: #b9bbbe; -} - -.alert-default-dark .alert-link { - color: #040505; -} - -.table:not(.table-dark) { - color: inherit; -} - -.table.table-head-fixed thead tr:nth-child(1) th { - background-color: #ffffff; - border-bottom: 0; - box-shadow: inset 0 1px 0 #dee2e6, inset 0 -1px 0 #dee2e6; - position: sticky; - top: 0; - z-index: 10; -} - -.table.table-head-fixed.table-dark thead tr:nth-child(1) th { - background-color: #212529; - box-shadow: inset 0 1px 0 #383f45, inset 0 -1px 0 #383f45; -} - -.table.no-border, -.table.no-border td, -.table.no-border th { - border: 0; -} - -.table.text-center, -.table.text-center td, -.table.text-center th { - text-align: center; -} - -.table.table-valign-middle thead > tr > th, -.table.table-valign-middle thead > tr > td, -.table.table-valign-middle tbody > tr > th, -.table.table-valign-middle tbody > tr > td { - vertical-align: middle; -} - -.card-body.p-0 .table thead > tr > th:first-of-type, -.card-body.p-0 .table thead > tr > td:first-of-type, -.card-body.p-0 .table tbody > tr > th:first-of-type, -.card-body.p-0 .table tbody > tr > td:first-of-type { - padding-left: 1.5rem; -} - -.card-body.p-0 .table thead > tr > th:last-of-type, -.card-body.p-0 .table thead > tr > td:last-of-type, -.card-body.p-0 .table tbody > tr > th:last-of-type, -.card-body.p-0 .table tbody > tr > td:last-of-type { - padding-right: 1.5rem; -} - -.carousel-control.left, .carousel-control.right { - background-image: none; -} - -.carousel-control > .fa, -.carousel-control > .fas, -.carousel-control > .far, -.carousel-control > .fab, -.carousel-control > .glyphicon, -.carousel-control > .ion { - display: inline-block; - font-size: 40px; - margin-top: -20px; - position: absolute; - top: 50%; - z-index: 5; -} - -/*# sourceMappingURL=adminlte.components.css.map */ \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css.map b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css.map deleted file mode 100644 index ed1a086..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.css.map +++ /dev/null @@ -1,126 +0,0 @@ -{ - "version": 3, - "file": "adminlte.components.css", - "sources": [ - "../../../build/scss/AdminLTE-components.scss", - "../../../node_modules/bootstrap/scss/_functions.scss", - "../../../build/scss/_bootstrap-variables.scss", - "../../../node_modules/bootstrap/scss/_mixins.scss", - "../../../node_modules/bootstrap/scss/vendor/_rfs.scss", - "../../../node_modules/bootstrap/scss/mixins/_deprecate.scss", - "../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss", - "../../../node_modules/bootstrap/scss/mixins/_hover.scss", - "../../../node_modules/bootstrap/scss/mixins/_image.scss", - "../../../node_modules/bootstrap/scss/mixins/_badge.scss", - "../../../node_modules/bootstrap/scss/mixins/_resize.scss", - "../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss", - "../../../node_modules/bootstrap/scss/mixins/_size.scss", - "../../../node_modules/bootstrap/scss/mixins/_reset-text.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-hide.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss", - "../../../node_modules/bootstrap/scss/mixins/_visibility.scss", - "../../../node_modules/bootstrap/scss/mixins/_alert.scss", - "../../../node_modules/bootstrap/scss/mixins/_buttons.scss", - "../../../node_modules/bootstrap/scss/mixins/_caret.scss", - "../../../node_modules/bootstrap/scss/mixins/_pagination.scss", - "../../../node_modules/bootstrap/scss/mixins/_lists.scss", - "../../../node_modules/bootstrap/scss/mixins/_list-group.scss", - "../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss", - "../../../node_modules/bootstrap/scss/mixins/_forms.scss", - "../../../node_modules/bootstrap/scss/mixins/_table-row.scss", - "../../../node_modules/bootstrap/scss/mixins/_background-variant.scss", - "../../../node_modules/bootstrap/scss/mixins/_border-radius.scss", - "../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss", - "../../../node_modules/bootstrap/scss/mixins/_gradients.scss", - "../../../node_modules/bootstrap/scss/mixins/_transition.scss", - "../../../node_modules/bootstrap/scss/mixins/_clearfix.scss", - "../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss", - "../../../node_modules/bootstrap/scss/mixins/_grid.scss", - "../../../node_modules/bootstrap/scss/mixins/_float.scss", - "../../../build/scss/_variables.scss", - "../../../build/scss/_mixins.scss", - "../../../build/scss/mixins/_cards.scss", - "../../../build/scss/mixins/_sidebar.scss", - "../../../build/scss/mixins/_navbar.scss", - "../../../build/scss/mixins/_accent.scss", - "../../../build/scss/mixins/_custom-forms.scss", - "../../../build/scss/mixins/_backgrounds.scss", - "../../../build/scss/mixins/_direct-chat.scss", - "../../../build/scss/mixins/_toasts.scss", - "../../../build/scss/mixins/_miscellaneous.scss", - "../../../build/scss/parts/_components.scss", - "../../../build/scss/_forms.scss", - "../../../build/scss/_progress-bars.scss", - "../../../build/scss/_cards.scss", - "../../../build/scss/_modals.scss", - "../../../build/scss/_toasts.scss", - "../../../build/scss/_buttons.scss", - "../../../build/scss/_callout.scss", - "../../../build/scss/_alerts.scss", - "../../../build/scss/_table.scss", - "../../../build/scss/_carousel.scss" - ], - "sourcesContent": [ - "/*!\n * AdminLTE v3.0.0\n * Only Components\n * Author: Colorlib\n *\t Website: AdminLTE.io \n * License: Open source - MIT \n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n// @import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/components';\n", - "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n", - "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 15px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 10%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: none !default;\n$btn-focus-width: 0 !default;\n$btn-focus-box-shadow: none !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: none !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 0 0 rgba($black, 0) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: 0 !default;\n$input-focus-box-shadow: none !default;\n\n$input-placeholder-color: lighten($gray-600, 15%) !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;\n$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;\n\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: none !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $custom-select-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $custom-select-focus-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: ($spacer / 2) !default;\n\n$navbar-nav-link-padding-x: 1rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .75) !default;\n$navbar-dark-hover-color: rgba($white, 1) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 0 !default; //$border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n", - "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n", - "// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n", - "// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n", - "// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n", - "// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n", - "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n", - "// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n", - "// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n", - "// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n", - "// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n", - "// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n", - "// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n", - "// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n", - "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n", - "@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n", - "// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n", - "// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n", - "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n", - "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n", - "// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n", - "// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n", - "// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n", - "// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n", - "@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n", - "// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n", - "// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n", - "@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n", - "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n", - "/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n", - "// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n", - "//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\n$sidebar-light-hover-color: $gray-900 !default;\n$sidebar-light-active-color: $black !default;\n$sidebar-light-submenu-bg: transparent !default;\n$sidebar-light-submenu-color: #777 !default;\n$sidebar-light-submenu-hover-color: #000 !default;\n$sidebar-light-submenu-hover-bg: $sidebar-light-hover-bg !default;\n$sidebar-light-submenu-active-color: $sidebar-light-hover-color !default;\n$sidebar-light-submenu-active-bg: $sidebar-light-submenu-hover-bg !default;\n$sidebar-light-header-color: $gray-800 !default;\n\n// SIDEBAR MINI\n// --------------------------------------------------------\n$sidebar-mini-width: ($nav-link-padding-x + $sidebar-padding-x + .8rem) * 2 !default;\n$sidebar-nav-icon-width: $sidebar-mini-width - (($sidebar-padding-x + $nav-link-padding-x) * 2) !default;\n$sidebar-user-image-width: $sidebar-nav-icon-width + ($nav-link-padding-x / 2) !default;\n\n// CONTROL SIDEBAR\n// --------------------------------------------------------\n$control-sidebar-width: $sidebar-width !default;\n\n// Cards\n// --------------------------------------------------------\n$card-border-color: $gray-100 !default;\n$card-dark-border-color: lighten($gray-900, 10%) !default;\n$card-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2) !default;\n$card-title-font-size: 1.1rem !default;\n$card-title-font-size-sm: 1rem !default;\n$card-title-font-weight: $font-weight-normal !default;\n$card-nav-link-padding-sm-y: .4rem !default;\n$card-nav-link-padding-sm-x: .8rem !default;\n$card-img-size: $img-size-sm !default;\n\n// PROGRESS BARS\n// --------------------------------------------------------\n$progress-bar-border-radius: 1px !default;\n$progress-bar-sm-border-radius: 1px !default;\n$progress-bar-xs-border-radius: 1px !default;\n\n// DIRECT CHAT\n// --------------------------------------------------------\n$direct-chat-height: 250px !default;\n$direct-chat-default-msg-bg: $gray-x-light !default;\n$direct-chat-default-font-color: #444 !default;\n$direct-chat-default-msg-border-color: $gray-x-light !default;\n\n// CHAT WIDGET\n// --------------------------------------------------------\n$attachment-border-radius: 3px !default;\n\n// Z-INDEX\n// --------------------------------------------------------\n$zindex-main-header: $zindex-fixed + 4 !default;\n$zindex-main-sidebar: $zindex-fixed + 8 !default;\n$zindex-main-footer: $zindex-fixed + 2 !default;\n$zindex-control-sidebar: $zindex-fixed + 1 !default;\n$zindex-sidebar-mini-links: 010 !default;\n$zindex-toasts: $zindex-main-sidebar + 2 !default;\n\n// TRANSITIONS SETTINGS\n// --------------------------------------------------------\n\n// Transition global options\n$transition-speed: 0.3s !default;\n$transition-fn: ease-in-out !default;\n\n// TEXT\n// --------------------------------------------------------\n$font-size-xs: ($font-size-base * .75) !default;\n$font-size-xl: ($font-size-base * 2) !default;\n\n\n// BUTTON\n// --------------------------------------------------------\n$button-default-background-color: $gray-100 !default;\n$button-default-color: #444 !default;\n$button-default-border-color: #ddd !default;\n\n$button-padding-y-xs: .125rem !default;\n$button-padding-x-xs: .25rem !default;\n$button-line-height-xs: $line-height-sm !default;\n$button-font-size-xs: ($font-size-base * .75) !default;\n$button-border-radius-xs: .15rem !default;\n\n \n// ELEVATION\n// --------------------------------------------------------\n$elevations: ();\n$elevations: map-merge((\n 1: unquote('0 1px 3px ' + rgba($black, 0.12) + ', 0 1px 2px ' + rgba($black, 0.24)),\n 2: unquote('0 3px 6px ' + rgba($black, 0.16) + ', 0 3px 6px ' + rgba($black, 0.23)),\n 3: unquote('0 10px 20px ' + rgba($black, 0.19) + ', 0 6px 6px ' + rgba($black, 0.23)),\n 4: unquote('0 14px 28px ' + rgba($black, 0.25) + ', 0 10px 10px ' + rgba($black, 0.22)),\n 5: unquote('0 19px 38px ' + rgba($black, 0.30) + ', 0 15px 12px ' + rgba($black, 0.22)),\n), $elevations);\n \n// RIBBON\n// --------------------------------------------------------\n$ribbon-border-size: 3px !default;\n$ribbon-line-height: 100% !default;\n$ribbon-padding: .375rem 0 !default;\n$ribbon-font-size: .8rem !default;\n$ribbon-width: 90px !default;\n$ribbon-wrapper-size: 70px !default;\n$ribbon-top: 10px !default;\n$ribbon-right: -2px !default;\n$ribbon-lg-wrapper-size: 120px !default;\n$ribbon-lg-width: 160px !default;\n$ribbon-lg-top: 26px !default;\n$ribbon-lg-right: 0px !default;\n$ribbon-xl-wrapper-size: 180px !default;\n$ribbon-xl-width: 240px !default;\n$ribbon-xl-top: 47px !default;\n$ribbon-xl-right: 4px !default;\n", - "//\n// General: Mixins\n//\n\n@import 'mixins/cards';\n@import 'mixins/sidebar';\n@import 'mixins/navbar';\n@import 'mixins/accent';\n@import 'mixins/custom-forms';\n@import 'mixins/backgrounds';\n@import 'mixins/direct-chat';\n@import 'mixins/toasts';\n@import 'mixins/miscellaneous';\n", - "//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n", - "//\n// Mixins: Sidebar\n//\n\n// Sidebar Color\n@mixin sidebar-color($color) {\n .nav-sidebar > .nav-item {\n & > .nav-link.active {\n background-color: $color;\n color: color-yiq($color);\n }\n }\n\n .nav-sidebar.nav-legacy > .nav-item {\n & > .nav-link.active {\n border-color: $color;\n }\n }\n}\n\n// Sidebar Mini Breakpoints\n@mixin sidebar-mini-breakpoint() {\n // A fix for text overflow while transitioning from sidebar mini to full sidebar\n .nav-sidebar,\n .nav-sidebar > .nav-header,\n .nav-sidebar .nav-link {\n white-space: nowrap;\n overflow: hidden;\n }\n\n // When the sidebar is collapsed...\n &.sidebar-collapse {\n .d-hidden-mini {\n display: none;\n }\n\n // Apply the new margins to the main content and footer\n .content-wrapper,\n .main-footer,\n .main-header {\n margin-left: $sidebar-mini-width !important;\n }\n\n // Make the sidebar headers\n .nav-sidebar .nav-header {\n display: none;\n }\n\n .nav-sidebar .nav-link p {\n width: 0;\n }\n\n .sidebar .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text {\n margin-left: -10px;\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xl {\n opacity: 0;\n visibility: hidden;\n }\n\n .logo-xs {\n display: inline-block;\n opacity: 1;\n visibility: visible;\n }\n\n // Modify the sidebar to shrink instead of disappearing\n .main-sidebar {\n overflow-x: hidden;\n\n &,\n &::before {\n // Don't go away! Just shrink\n margin-left: 0;\n width: $sidebar-mini-width;\n }\n\n .user-panel {\n .image {\n float: none;\n }\n }\n\n &:hover,\n &.sidebar-focused {\n width: $sidebar-width;\n\n .nav-sidebar.nav-child-indent .nav-treeview {\n padding-left: 1rem;\n }\n\n .brand-link {\n width: $sidebar-width;\n }\n\n .user-panel {\n text-align: left;\n\n .image {\n float: left;\n }\n }\n\n .user-panel > .info,\n .nav-sidebar .nav-link p,\n .brand-text,\n .logo-xl {\n display: inline-block;\n margin-left: 0;\n opacity: 1;\n visibility: visible;\n }\n\n .nav-flat {\n .nav-icon {\n margin-left: 0;\n }\n\n .nav-treeview {\n .nav-icon {\n margin-left: -.2rem;\n }\n }\n }\n\n .logo-xs {\n opacity: 0;\n visibility: hidden;\n }\n\n .brand-image {\n margin-right: .5rem;\n }\n\n // Make the sidebar links, menus, labels, badges\n // and angle icons disappear\n .sidebar-form,\n .user-panel > .info {\n display: block !important;\n -webkit-transform: translateZ(0);\n }\n\n .nav-sidebar > .nav-item > .nav-link > span {\n display: inline-block !important;\n }\n }\n }\n\n // Make an element visible only when sidebar mini is active\n .visible-sidebar-mini {\n display: block !important;\n }\n\n &.layout-fixed {\n .main-sidebar:hover {\n .brand-link {\n width: $sidebar-width;\n }\n }\n\n .brand-link {\n width: $sidebar-mini-width;\n }\n }\n }\n}\n", - "//\n// Mixins: Navbar\n//\n\n// Navbar Variant\n@mixin navbar-variant($color, $font-color: rgba(255, 255, 255, 0.8), $hover-color: #f6f6f6, $hover-bg: rgba(0, 0, 0, 0.1)) {\n background-color: $color;\n\n .nav > li > a {\n color: $font-color;\n }\n\n .nav > li > a:hover,\n .nav > li > a:active,\n .nav > li > a:focus,\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus,\n .nav > .active > a {\n background: $hover-bg;\n color: $hover-color;\n }\n\n // Add color to the sidebar toggle button\n .sidebar-toggle {\n color: $font-color;\n\n &:hover,\n &:focus {\n background: $hover-bg;\n color: $hover-color;\n }\n }\n}\n", - "//\n// Mixins: Accent\n//\n\n// Accent Variant\n@mixin accent-variant($name, $color) {\n .accent-#{$name} {\n $link-color: $color;\n $link-hover-color: darken($color, 15%);\n $pagination-active-bg: $color;\n $pagination-active-border-color: $color;\n\n a {\n color: $link-color;\n\n @include hover {\n color: $link-hover-color;\n }\n }\n\n .page-item {\n &.active .page-link {\n background-color: $pagination-active-bg;\n border-color: $pagination-active-border-color;\n }\n\n &.disabled .page-link {\n background-color: $pagination-disabled-bg;\n border-color: $pagination-disabled-border-color;\n }\n }\n }\n}\n\n", - "//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n", - "//\n// Mixins: Backgrounds\n//\n\n// Background Variant\n@mixin background-variant($name, $color) {\n .bg-#{$name} {\n background-color: #{$color} !important;\n\n &,\n > a {\n color: color-yiq($color) !important;\n }\n\n &.btn {\n &:hover {\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n background-color: darken($color, 10%) !important;\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n\n// Background Gradient Variant\n@mixin background-gradient-variant($name, $color) {\n .bg-gradient-#{$name} {\n @include bg-gradient-variant('&', $color);\n color: color-yiq($color);\n\n &.btn {\n &.disabled,\n &:disabled,\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n background-image: none !important;\n }\n\n &:hover {\n @include bg-gradient-variant('&', darken($color, 7.5%));\n border-color: darken($color, 10%);\n color: darken(color-yiq($color), 7.5%);\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n &:active,\n &.active {\n @include bg-gradient-variant('&', darken($color, 10%));\n border-color: darken($color, 12.5%);\n color: color-yiq(darken($color, 10%));\n }\n }\n }\n}\n", - "//\n// Mixins: Direct Chat\n//\n\n// Direct Chat Variant\n@mixin direct-chat-variant($bg-color, $color: #fff) {\n .right > .direct-chat-text {\n background: $bg-color;\n border-color: $bg-color;\n color: color-yiq($bg-color);\n\n &::after,\n &::before {\n border-left-color: $bg-color;\n }\n }\n}\n", - "//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n", - "//\n// Mixins: Miscellaneous\n//\n\n// ETC\n@mixin translate($x, $y) {\n transform: translate($x, $y);\n}\n\n// Different radius each side\n@mixin border-radius-sides($top-left, $top-right, $bottom-left, $bottom-right) {\n border-radius: $top-left $top-right $bottom-left $bottom-right;\n}\n\n@mixin calc($property, $expression) {\n #{$property}: calc(#{$expression});\n}\n\n@mixin rotate($value) {\n transform: rotate($value);\n}\n\n@mixin animation($animation) {\n animation: $animation;\n}\n\n// Gradient background\n@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0, $start), color-stop(1, $stop));\n background: -ms-linear-gradient(bottom, $start, $stop);\n background: -moz-linear-gradient(center bottom, $start 0%, $stop 100%);\n background: -o-linear-gradient($stop, $start);\n}\n\n", - "//\n// Part: Components\n//\n\n@import '../forms';\n@import '../progress-bars';\n@import '../cards';\n@import '../modals';\n@import '../toasts';\n@import '../buttons';\n@import '../callout';\n@import '../alerts';\n@import '../table';\n@import '../carousel';\n", - "//\n// Component: Forms\n//\n \n.form-group {\n &.has-icon {\n position: relative;\n\n .form-control {\n padding-right: 35px;\n }\n\n .form-icon {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n font-size: 1rem;\n // margin-top: -3px;\n padding: $input-btn-padding-y $input-btn-padding-x;\n position: absolute;\n right: 3px;\n top: 0;\n }\n }\n}\n\n// Button groups\n.btn-group-vertical {\n .btn {\n &.btn-flat:first-of-type,\n &.btn-flat:last-of-type {\n @include border-radius(0);\n }\n }\n}\n\n// Support icons in form-control\n.form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height;\n }\n}\n\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n}\n\n.form-group-lg {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n }\n}\n\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n}\n\n.form-group-sm {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n }\n}\n\nlabel:not(.form-check-label, .custom-file-label) {\n font-weight: $font-weight-bold;\n}\n\n.warning-feedback {\n @include font-size($form-feedback-font-size);\n color: theme-color('warning');\n display: none;\n margin-top: $form-feedback-margin-top;\n width: 100%;\n}\n\n.warning-tooltip {\n @include border-radius($form-feedback-tooltip-border-radius);\n @include font-size($form-feedback-tooltip-font-size);\n background-color: rgba(theme-color('warning'), $form-feedback-tooltip-opacity);\n color: color-yiq(theme-color('warning'));\n display: none;\n line-height: $form-feedback-tooltip-line-height;\n margin-top: .1rem;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n position: absolute;\n top: 100%;\n z-index: 5;\n}\n\n.form-control {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $input-height-inner;\n // background-image: none;\n // background-repeat: no-repeat;\n // background-position: center right $input-height-inner-quarter;\n // background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n// stylelint-disable-next-line selector-no-qualifying-type\ntextarea.form-control {\n &.is-warning {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n}\n\n.custom-select {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $custom-select-feedback-icon-padding-right;\n // background: $custom-select-background, none $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n\n.form-control-file {\n &.is-warning {\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.form-check-input {\n &.is-warning {\n ~ .form-check-label {\n color: theme-color('warning');\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.custom-control-input.is-warning {\n ~ .custom-control-label {\n color: theme-color('warning');\n\n &::before {\n border-color: theme-color('warning');\n }\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n @include gradient-bg(lighten(theme-color('warning'), 10%));\n border-color: lighten(theme-color('warning'), 10%);\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: theme-color('warning');\n }\n }\n}\n\n// custom file\n.custom-file-input {\n &.is-warning {\n ~ .custom-file-label {\n border-color: theme-color('warning');\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n }\n }\n}\n\n// custom switch color variations\n.custom-switch {\n @each $name, $color in $theme-colors {\n @include custom-switch-variant($name, $color);\n }\n\n @each $name, $color in $colors {\n @include custom-switch-variant($name, $color);\n }\n}\n\n// custom range color variations\n.custom-range {\n @each $name, $color in $theme-colors {\n @include custom-range-variant($name, $color);\n }\n\n @each $name, $color in $colors {\n @include custom-range-variant($name, $color);\n }\n}\n", - "//\n// Component: Progress Bar\n//\n\n//General CSS\n.progress {\n @include box-shadow(none);\n @include border-radius($progress-bar-border-radius);\n\n // Vertical bars\n &.vertical {\n display: inline-block;\n height: 200px;\n margin-right: 10px;\n position: relative;\n width: 30px;\n\n > .progress-bar {\n bottom: 0;\n position: absolute;\n width: 100%;\n }\n\n //Sizes\n &.sm,\n &.progress-sm {\n width: 20px;\n }\n\n &.xs,\n &.progress-xs {\n width: 10px;\n }\n\n &.xxs,\n &.progress-xxs {\n width: 3px;\n }\n }\n}\n\n.progress-group {\n margin-bottom: map-get($spacers, 2);\n}\n\n// size variation\n.progress-sm {\n height: 10px;\n}\n\n.progress-xs {\n height: 7px;\n}\n\n.progress-xxs {\n height: 3px;\n}\n\n// Remove margins from progress bars when put in a table\n.table {\n tr > td {\n .progress {\n margin: 0;\n }\n }\n}\n", - "//\n// Component: Cards\n//\n\n.card {\n @include box-shadow($card-shadow);\n margin-bottom: map-get($spacers, 3);\n\n &.bg-dark {\n .card-header {\n border-color: $card-dark-border-color;\n }\n\n &,\n .card-body {\n color: $white;\n }\n }\n\n &.maximized-card {\n height: 100% !important;\n left: 0;\n max-height: 100% !important;\n max-width: 100% !important;\n position: fixed;\n top: 0;\n width: 100% !important;\n z-index: 9999;\n\n &.was-collapsed .card-body {\n display: block !important;\n }\n\n [data-widget='collapse'] {\n display: none;\n }\n\n .card-header,\n .card-footer {\n @include border-radius(0 !important);\n }\n }\n\n // collapsed mode\n &.collapsed-card {\n .card-body,\n .card-footer {\n display: none;\n }\n }\n\n .nav.flex-column {\n > li {\n border-bottom: 1px solid $card-border-color;\n margin: 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n }\n }\n\n // fixed height to 300px\n &.height-control {\n .card-body {\n max-height: 300px;\n overflow: auto;\n }\n }\n\n .border-right {\n border-right: 1px solid $card-border-color;\n }\n\n .border-left {\n border-left: 1px solid $card-border-color;\n }\n\n &.card-tabs {\n &:not(.card-outline) {\n & .card-header {\n border-bottom: 0;\n\n .nav-item {\n &:first-child .nav-link {\n margin-left: -1px;\n }\n }\n }\n }\n\n &.card-outline {\n .nav-item {\n border-bottom: 0;\n\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n }\n }\n\n &.card-outline-tabs {\n border-top: 0;\n\n .card-header {\n .nav-item {\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n\n a {\n border-top: 3px solid transparent;\n\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n &:hover {\n margin-top: 0;\n }\n }\n }\n }\n }\n\n}\n\n// Maximized Card Body Scroll fix\nhtml.maximized-card {\n overflow: hidden;\n}\n\n// Add clearfix to header, body and footer\n.card-header,\n.card-body,\n.card-footer {\n @include clearfix;\n}\n\n// Box header\n.card-header {\n background-color: transparent;\n border-bottom: 1px solid $card-border-color;\n padding: (($card-spacer-y / 2) * 2) $card-spacer-x;\n position: relative;\n\n @if $enable-rounded {\n @include border-top-radius($border-radius);\n }\n\n .collapsed-card & {\n border-bottom: 0;\n }\n\n > .card-tools {\n float: right;\n margin-right: -$card-spacer-x / 2;\n\n .input-group,\n .nav,\n .pagination {\n margin-bottom: -$card-spacer-y / 2.5;\n margin-top: -$card-spacer-y / 2.5;\n }\n\n [data-toggle='tooltip'] {\n position: relative;\n }\n }\n}\n\n.card-title {\n float: left;\n font-size: $card-title-font-size;\n font-weight: $card-title-font-weight;\n margin: 0;\n}\n\n.card-text {\n clear: both;\n}\n\n\n// Box Tools Buttons\n.btn-tool {\n background: transparent;\n color: $gray-500;\n font-size: $font-size-sm;\n margin: -(($card-spacer-y / 2) * 2) 0;\n padding: .25rem .5rem;\n\n .btn-group.show &,\n &:hover {\n color: $gray-700;\n }\n\n .show &,\n &:focus {\n box-shadow: none !important;\n }\n}\n\n.text-sm {\n .card-title {\n font-size: $card-title-font-size-sm;\n }\n\n .nav-link {\n padding: $card-nav-link-padding-sm-y $card-nav-link-padding-sm-x; \n }\n}\n\n// Box Body\n.card-body {\n // @include border-radius-sides(0, 0, $border-radius, $border-radius);\n // .no-header & {\n // @include border-top-radius($border-radius);\n // }\n\n // Tables within the box body\n > .table {\n margin-bottom: 0;\n\n > thead > tr > th,\n > thead > tr > td {\n border-top-width: 0;\n }\n }\n\n // Calendar within the box body\n .fc {\n margin-top: 5px;\n }\n\n .full-width-chart {\n margin: -19px;\n }\n\n &.p-0 .full-width-chart {\n margin: -9px;\n }\n}\n\n.chart-legend {\n @include list-unstyled;\n margin: 10px 0;\n\n > li {\n @media (max-width: map-get($grid-breakpoints, sm)) {\n float: left;\n margin-right: 10px;\n }\n }\n}\n\n// Comment Box\n.card-comments {\n background: $gray-100;\n\n .card-comment {\n @include clearfix;\n border-bottom: 1px solid $gray-200;\n padding: 8px 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n\n &:first-of-type {\n padding-top: 0;\n }\n\n img {\n height: $card-img-size;\n width: $card-img-size;\n float: left;\n }\n }\n\n .comment-text {\n color: lighten($gray-700, 20%);\n margin-left: 40px;\n }\n\n .username {\n color: $gray-700;\n display: block;\n font-weight: 600;\n }\n\n .text-muted {\n font-size: 12px;\n font-weight: 400;\n }\n}\n\n// Widgets\n//-----------\n\n// Widget: TODO LIST\n.todo-list {\n list-style: none;\n margin: 0;\n overflow: auto;\n padding: 0;\n\n // Todo list element\n > li {\n @include border-radius(2px);\n background: $gray-100;\n border-left: 2px solid $gray-200;\n color: $gray-700;\n margin-bottom: 2px;\n padding: 10px;\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n > input[type='checkbox'] {\n margin: 0 10px 0 5px;\n }\n\n .text {\n display: inline-block;\n font-weight: 600;\n margin-left: 5px;\n }\n\n // Time labels\n .badge {\n font-size: .7rem;\n margin-left: 10px;\n }\n\n // Tools and options box\n .tools {\n color: theme-color('danger');\n display: none;\n float: right;\n\n // icons\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n cursor: pointer;\n margin-right: 5px;\n }\n }\n\n &:hover .tools {\n display: inline-block;\n }\n\n &.done {\n color: darken($gray-500, 25%);\n\n .text {\n font-weight: 500;\n text-decoration: line-through;\n }\n\n .badge {\n background: $gray-500 !important;\n }\n }\n }\n\n // Color variants\n @each $name, $color in $theme-colors {\n .#{$name} {\n border-left-color: $color;\n }\n }\n\n @each $name, $color in $colors {\n .#{$name} {\n border-left-color: $color;\n }\n }\n\n .handle {\n cursor: move;\n display: inline-block;\n margin: 0 5px;\n }\n}\n\n// END TODO WIDGET\n\n// Input in box\n.card-input {\n max-width: 200px;\n}\n\n// Color variants\n@each $name, $color in $theme-colors {\n @include cards-variant($name, $color);\n}\n\n@each $name, $color in $colors {\n @include cards-variant($name, $color);\n}\n\n\n// Nav Tabs override\n.card-default {\n .nav-item {\n &:first-child .nav-link {\n border-left: 0;\n }\n }\n}\n", - "//\n// Component: Modals\n//\n\n// Overlay\n.modal-dialog {\n .overlay {\n background-color: $black;\n display: block;\n height: 100%;\n left: 0;\n opacity: .7;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ($zindex-modal + 2);\n }\n}\n\n\n// BG Color Variations Fixes\n.modal-content {\n &.bg-warning {\n .modal-header,\n .modal-footer {\n border-color: $gray-800;\n }\n }\n\n &.bg-primary,\n &.bg-secondary,\n &.bg-info,\n &.bg-danger,\n &.bg-success, {\n .close {\n color: $white;\n text-shadow: 0 1px 0 #000;\n }\n }\n}\n", - "//\n// Component: Toasts\n//\n\n.toasts-top-right {\n position: absolute;\n right: 0;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-top-left {\n left: 0;\n position: absolute;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-right {\n bottom: 0;\n position: absolute;\n right: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-left {\n bottom: 0;\n left: 0;\n position: absolute;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toast {\n @each $name, $color in $theme-colors {\n @include toast-variant($name, $color);\n }\n @each $name, $color in $colors {\n @include toast-variant($name, $color);\n }\n}\n", - "//\n// Component: Button\n//\n\n.btn {\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n }\n\n // Flat buttons\n &.btn-flat {\n @include border-radius(0);\n border-width: 1px;\n box-shadow: none;\n }\n\n // input file btn\n &.btn-file {\n overflow: hidden;\n position: relative;\n\n > input[type='file'] {\n background: $white;\n cursor: inherit;\n display: block;\n font-size: 100px;\n min-height: 100%;\n min-width: 100%;\n opacity: 0;\n outline: none;\n position: absolute;\n right: 0;\n text-align: right;\n top: 0;\n }\n }\n\n .text-sm & {\n font-size: $font-size-sm !important;\n }\n}\n\n// Button color variations\n.btn-default {\n background-color: $button-default-background-color;\n border-color: $button-default-border-color;\n color: $button-default-color;\n\n &:hover,\n &:active,\n &.hover {\n background-color: darken($button-default-background-color, 5%);\n color: darken($button-default-color, 10%);\n }\n}\n\n// Application buttons\n.btn-app {\n @include border-radius(3px);\n background-color: $button-default-background-color;\n border: 1px solid $button-default-border-color;\n color: $gray-600;\n font-size: 12px;\n height: 60px;\n margin: 0 0 10px 10px;\n min-width: 80px;\n padding: 15px 5px;\n position: relative;\n text-align: center;\n\n // Icons within the btn\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: block;\n font-size: 20px;\n }\n\n &:hover {\n background: $button-default-background-color;\n border-color: darken($button-default-border-color, 20%);\n color: $button-default-color;\n }\n\n &:active,\n &:focus {\n @include box-shadow(inset 0 3px 5px rgba($black, 0.125));\n }\n\n // The badge\n > .badge {\n font-size: 10px;\n font-weight: 400;\n position: absolute;\n right: -10px;\n top: -3px;\n }\n}\n\n// Extra Button Size\n\n.btn-xs {\n @include button-size($button-padding-y-xs, $button-padding-x-xs, $button-font-size-xs, $button-line-height-xs, $button-border-radius-xs);\n}\n", - "//\n// Component: Callout\n//\n\n// Base styles (regardless of theme)\n.callout {\n @if $enable-rounded {\n @include border-radius($border-radius);\n }\n\n @if $enable-shadows {\n box-shadow: map-get($elevations, 1);\n } @else {\n border: 1px solid $gray-300;\n }\n\n background-color: $white;\n border-left: 5px solid $gray-200;\n margin-bottom: map-get($spacers, 3);\n padding: 1rem;\n\n a {\n color: $gray-700;\n text-decoration: underline;\n\n &:hover {\n color: $gray-200;\n }\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n // Themes for different contexts\n &.callout-danger {\n border-left-color: darken(theme-color('danger'), 10%);\n }\n\n &.callout-warning {\n border-left-color: darken(theme-color('warning'), 10%);\n }\n\n &.callout-info {\n border-left-color: darken(theme-color('info'), 10%);\n }\n\n &.callout-success {\n border-left-color: darken(theme-color('success'), 10%);\n }\n}\n", - "//\n// Component: Alert\n//\n\n.alert {\n .icon {\n margin-right: 10px;\n }\n\n .close {\n color: $black;\n opacity: .2;\n\n &:hover {\n opacity: .5;\n }\n }\n\n a {\n color: $white;\n text-decoration: underline;\n }\n}\n\n//Alert Variants\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n color: color-yiq($value);\n background: $value;\n border-color: darken($value, 5%);\n }\n\n .alert-default-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n", - "//\n// Component: Table\n//\n\n.table {\n &:not(.table-dark) {\n color: inherit;\n }\n\n // fixed table head\n &.table-head-fixed {\n thead tr:nth-child(1) th {\n background-color: $white;\n border-bottom: 0;\n box-shadow: inset 0 1px 0 $table-border-color,\n inset 0 -1px 0 $table-border-color;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n\n &.table-dark {\n thead tr {\n &:nth-child(1) th {\n background-color: $table-dark-bg;\n box-shadow: inset 0 1px 0 $table-dark-border-color,\n inset 0 -1px 0 $table-dark-border-color;\n }\n }\n }\n }\n\n // no border\n &.no-border {\n &,\n td,\n th {\n border: 0;\n }\n }\n\n // .text-center in tables\n &.text-center {\n &,\n td,\n th {\n text-align: center;\n }\n }\n\n &.table-valign-middle {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n vertical-align: middle;\n }\n }\n\n .card-body.p-0 & {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n &:first-of-type {\n padding-left: map-get($spacers, 4);\n }\n\n &:last-of-type {\n padding-right: map-get($spacers, 4);\n }\n }\n }\n}\n", - "//\n// Component: Carousel\n//\n\n.carousel-control {\n &.left,\n &.right {\n background-image: none;\n }\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: inline-block;\n font-size: 40px;\n margin-top: -20px;\n position: absolute;\n top: 50%;\n z-index: 5;\n }\n}\n" - ], - "names": [], - "mappings": "AAAA;;;;;;GAMG;AgDFH,AACE,WADS,AACR,SAAS,CAAC;EACT,QAAQ,EAAE,QAAQ;CAiBnB;;AAnBH,AAII,WAJO,AACR,SAAS,CAGR,aAAa,CAAC;EACZ,aAAa,EAAE,IAAI;CACpB;;AANL,AAQI,WARO,AACR,SAAS,CAOR,UAAU,CAAC;EACT,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,OAAO;EACf,SAAS,EAAE,IAAI;EAEf,OAAO,E9CsTiB,QAAO,CACP,OAAM;E8CtT9B,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG;EACV,GAAG,EAAE,CAAC;CACP;;AAKL,AAEI,mBAFe,CACjB,IAAI,AACD,SAAS,AAAA,cAAc,EAF5B,mBAAmB,CACjB,IAAI,AAED,SAAS,AAAA,aAAa,CAAC;EpBzBxB,aAAa,EoB0BY,CAAC;CACzB;;AAKL,AACE,sBADoB,AACnB,GAAG,EADN,sBAAsB,AAEnB,IAAI,EAFP,sBAAsB,AAGnB,IAAI,EAHP,sBAAsB,AAInB,IAAI,EAJP,sBAAsB,AAKnB,UAAU,EALb,sBAAsB,AAMnB,IAAI,CAAC;EACJ,WAAW,E9C4XyB,mBAAsD;C8C3X3F;;AAGH,AAEE,SAFO,GAAI,sBAAsB,AAEhC,GAAG,EAFN,SAAS,GAAI,sBAAsB,AAGhC,IAAI,EAHP,SAAS,GAAI,sBAAsB,AAIhC,IAAI,EAJP,SAAS,GAAI,sBAAsB,AAKhC,IAAI,EALP,SAAS,GAAI,sBAAsB,AAMhC,UAAU,EANb,SAAS,GAAI,sBAAsB,AAOhC,IAAI;AANP,eAAe,GAAG,sBAAsB,AACrC,GAAG;AADN,eAAe,GAAG,sBAAsB,AAErC,IAAI;AAFP,eAAe,GAAG,sBAAsB,AAGrC,IAAI;AAHP,eAAe,GAAG,sBAAsB,AAIrC,IAAI;AAJP,eAAe,GAAG,sBAAsB,AAKrC,UAAU;AALb,eAAe,GAAG,sBAAsB,AAMrC,IAAI,CAAC;EACJ,WAAW,E9CsXyB,oBAAyD;C8CrX9F;;AAGH,AAEI,cAFU,CACZ,aAAa,GAAG,sBAAsB,AACnC,GAAG,EAFR,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAEnC,IAAI,EAHT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAGnC,IAAI,EAJT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAInC,IAAI,EALT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAKnC,UAAU,EANf,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAMnC,IAAI,CAAC;EACJ,WAAW,E9C0WuB,oBAAyD;C8CzW5F;;AAIL,AAEE,SAFO,GAAI,sBAAsB,AAEhC,GAAG,EAFN,SAAS,GAAI,sBAAsB,AAGhC,IAAI,EAHP,SAAS,GAAI,sBAAsB,AAIhC,IAAI,EAJP,SAAS,GAAI,sBAAsB,AAKhC,IAAI,EALP,SAAS,GAAI,sBAAsB,AAMhC,UAAU,EANb,SAAS,GAAI,sBAAsB,AAOhC,IAAI;AANP,eAAe,GAAG,sBAAsB,AACrC,GAAG;AADN,eAAe,GAAG,sBAAsB,AAErC,IAAI;AAFP,eAAe,GAAG,sBAAsB,AAGrC,IAAI;AAHP,eAAe,GAAG,sBAAsB,AAIrC,IAAI;AAJP,eAAe,GAAG,sBAAsB,AAKrC,UAAU;AALb,eAAe,GAAG,sBAAsB,AAMrC,IAAI,CAAC;EACJ,WAAW,E9C0VyB,qBAAyD;C8CzV9F;;AAGH,AAEI,cAFU,CACZ,aAAa,GAAG,sBAAsB,AACnC,GAAG,EAFR,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAEnC,IAAI,EAHT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAGnC,IAAI,EAJT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAInC,IAAI,EALT,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAKnC,UAAU,EANf,cAAc,CACZ,aAAa,GAAG,sBAAsB,AAMnC,IAAI,CAAC;EACJ,WAAW,E9C8UuB,qBAAyD;C8C7U5F;;AAIL,AAAA,KAAK,AAAA,IAAK,CAAA,iBAAiB,EAAE,kBAAkB,EAAE;EAC/C,WAAW,E9CgJiB,GAAG;C8C/IhC;;AAED,AAAA,iBAAiB,CAAC;E5C9Bd,SAAS,EAAC,GAAC;E4CgCb,KAAK,E9C9DG,OAAO;E8C+Df,OAAO,EAAE,IAAI;EACb,UAAU,E9CwU4B,OAAM;E8CvU5C,KAAK,EAAE,IAAI;CACZ;;AAED,AAAA,gBAAgB,CAAC;EpBzGb,aAAa,E1BgNa,OAAM;EEtF9B,SAAS,EAtCE,QAAC;E4CwBhB,gBAAgB,E9CvER,sBAAO;E8CwEf,KAAK,E9CrBS,OAAO;E8CsBrB,OAAO,EAAE,IAAI;EACb,WAAW,E9CkIiB,GAAG;E8CjI/B,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,IAAI;EACf,OAAO,E9C8jBqB,OAAM,CACN,MAAK;E8C9jBjC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,OAAO,EAAE,CAAC;CACX;;AAED,AACE,aADW,AACV,WAAW,CAAC;EACX,YAAY,E9CrFN,OAAO;C8CwGd;;AArBH,AAYI,aAZS,AACV,WAAW,AAWT,MAAM,CAAC;EACN,YAAY,E9ChGR,OAAO;E8CiGX,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,C9CkRiB,CAAC,CAnX/B,uBAAO;C8CkGZ;;AAfL,AAiBI,aAjBS,AACV,WAAW,GAgBR,iBAAiB;AAjBvB,aAAa,AACV,WAAW,GAiBR,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AAKL,AACE,QADM,AAAA,aAAa,AAClB,WAAW,CAAC;EAET,aAAa,E9C2QqB,OAAuE;E8C1QzG,mBAAmB,EAAE,GAAG,C9C4QU,yBAA6D,C8C5Q1C,KAAK,C9C4QxB,yBAA6D;C8C1QlG;;AAGH,AACE,cADY,AACX,WAAW,CAAC;EACX,YAAY,E9CvHN,OAAO;C8CuId;;AAlBH,AASI,cATU,AACX,WAAW,AAQT,MAAM,CAAC;EACN,YAAY,E9C/HR,OAAO;E8CgIX,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,C9CmPiB,CAAC,CAnX/B,uBAAO;C8CiIZ;;AAZL,AAcI,cAdU,AACX,WAAW,GAaR,iBAAiB;AAdvB,cAAc,AACX,WAAW,GAcR,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AAKL,AAEI,kBAFc,AACf,WAAW,GACR,iBAAiB;AAFvB,kBAAkB,AACf,WAAW,GAER,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AAIL,AAEI,iBAFa,AACd,WAAW,GACR,iBAAiB,CAAC;EAClB,KAAK,E9CvJD,OAAO;C8CwJZ;;AAJL,AAMI,iBANa,AACd,WAAW,GAKR,iBAAiB;AANvB,iBAAiB,AACd,WAAW,GAMR,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AAIL,AACE,qBADmB,AAAA,WAAW,GAC5B,qBAAqB,CAAC;EACtB,KAAK,E9CnKC,OAAO;C8CwKd;;AAPH,AAII,qBAJiB,AAAA,WAAW,GAC5B,qBAAqB,AAGpB,QAAQ,CAAC;EACR,YAAY,E9CtKR,OAAO;C8CuKZ;;AANL,AASE,qBATmB,AAAA,WAAW,GAS5B,iBAAiB;AATrB,qBAAqB,AAAA,WAAW,GAU5B,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AAZH,AAeI,qBAfiB,AAAA,WAAW,AAc7B,QAAQ,GACL,qBAAqB,AAAA,QAAQ,CAAC;ElBpNhC,gBAAgB,EkBqNO,OAAoC;EACzD,YAAY,EAAE,OAAoC;CACnD;;AAlBL,AAsBI,qBAtBiB,AAAA,WAAW,AAqB7B,MAAM,GACH,qBAAqB,AAAA,QAAQ,CAAC;EAC9B,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,C9C2LiB,CAAC,CAnX/B,uBAAO;C8CyLZ;;AAxBL,AA0BI,qBA1BiB,AAAA,WAAW,AAqB7B,MAAM,AAKJ,IAAK,CAAA,QAAQ,IAAI,qBAAqB,AAAA,QAAQ,CAAC;EAC9C,YAAY,E9C5LR,OAAO;C8C6LZ;;AAKL,AAEI,kBAFc,AACf,WAAW,GACR,kBAAkB,CAAC;EACnB,YAAY,E9CrMR,OAAO;C8CsMZ;;AAJL,AAMI,kBANc,AACf,WAAW,GAKR,iBAAiB;AANvB,kBAAkB,AACf,WAAW,GAMR,gBAAgB,CAAC;EACjB,OAAO,EAAE,KAAK;CACf;;AATL,AAYM,kBAZY,AACf,WAAW,AAUT,MAAM,GACH,kBAAkB,CAAC;EACnB,YAAY,E9C/MV,OAAO;E8CgNT,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,C9CmKe,CAAC,CAnX/B,uBAAO;C8CiNV;;AAMP,AN1PI,cM0PU,AN3PX,0BAA0B,CACvB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,0BAA0B,CAMvB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCuBrC,uBAAO;CwCtBZ;;AMmPL,ANjPI,cMiPU,AN3PX,0BAA0B,CAUvB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,yBAAyB,CACtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,yBAAyB,CAMtB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCQrC,uBAAO;CwCPZ;;AMoOL,ANlOI,cMkOU,AN5OX,yBAAyB,CAUtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,4BAA4B,CACzB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,4BAA4B,CAMzB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCIpC,yBAAO;CwCHb;;AMmPL,ANjPI,cMiPU,AN3PX,4BAA4B,CAUzB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,2BAA2B,CACxB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,2BAA2B,CAMxB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCXpC,yBAAO;CwCYb;;AMoOL,ANlOI,cMkOU,AN5OX,2BAA2B,CAUxB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,0BAA0B,CACvB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,0BAA0B,CAMvB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC8BrC,uBAAO;CwC7BZ;;AMmPL,ANjPI,cMiPU,AN3PX,0BAA0B,CAUvB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,yBAAyB,CACtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,yBAAyB,CAMtB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCerC,uBAAO;CwCdZ;;AMoOL,ANlOI,cMkOU,AN5OX,yBAAyB,CAUtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCgCrC,wBAAO;CwC/BZ;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCiBrC,wBAAO;CwChBZ;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,0BAA0B,CACvB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,0BAA0B,CAMvB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC6BrC,uBAAO;CwC5BZ;;AMmPL,ANjPI,cMiPU,AN3PX,0BAA0B,CAUvB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,yBAAyB,CACtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,yBAAyB,CAMtB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCcrC,uBAAO;CwCbZ;;AMoOL,ANlOI,cMkOU,AN5OX,yBAAyB,CAUtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC2BrC,uBAAO;CwC1BZ;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCYrC,uBAAO;CwCXZ;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,wBAAwB,CACrB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,wBAAwB,CAMrB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCDpC,yBAAO;CwCEb;;AMmPL,ANjPI,cMiPU,AN3PX,wBAAwB,CAUrB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,uBAAuB,CACpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,uBAAuB,CAMpB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxChBpC,yBAAO;CwCiBb;;AMoOL,ANlOI,cMkOU,AN5OX,uBAAuB,CAUpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,KAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCMpC,sBAAO;CwCLb;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,KAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCTpC,sBAAO;CwCUb;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,KAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNNxC,qBAAO;CMOT;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,KAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,KAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNrBxC,qBAAO;CMsBT;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,wBAAwB,CACrB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,wBAAwB,CAMrB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNJvC,wBAAO;CMKV;;AMmPL,ANjPI,cMiPU,AN3PX,wBAAwB,CAUrB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,uBAAuB,CACpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,uBAAuB,CAMpB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNnBvC,wBAAO;CMoBV;;AMoOL,ANlOI,cMkOU,AN5OX,uBAAuB,CAUpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNHxC,uBAAO;CMIT;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNlBxC,uBAAO;CMmBT;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,0BAA0B,CACvB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,0BAA0B,CAMvB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNDrC,wBAAO;CMEZ;;AMmPL,ANjPI,cMiPU,AN3PX,0BAA0B,CAUvB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,yBAAyB,CACtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,yBAAyB,CAMtB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNhBrC,wBAAO;CMiBZ;;AMoOL,ANlOI,cMkOU,AN5OX,yBAAyB,CAUtB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNCtC,uBAAO;CMAX;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNdtC,uBAAO;CMeX;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCuBrC,uBAAO;CwCtBZ;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCQrC,uBAAO;CwCPZ;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCwBrC,wBAAO;CwCvBZ;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCSrC,wBAAO;CwCRZ;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCyBrC,wBAAO;CwCxBZ;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCUrC,wBAAO;CwCTZ;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC0BrC,wBAAO;CwCzBZ;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCWrC,wBAAO;CwCVZ;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,sBAAsB,CACnB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,sBAAsB,CAMnB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC2BrC,uBAAO;CwC1BZ;;AMmPL,ANjPI,cMiPU,AN3PX,sBAAsB,CAUnB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,qBAAqB,CAClB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,qBAAqB,CAMlB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCYrC,uBAAO;CwCXZ;;AMoOL,ANlOI,cMkOU,AN5OX,qBAAqB,CAUlB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC4BrC,wBAAO;CwC3BZ;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCarC,wBAAO;CwCZZ;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,yBAAyB,CACtB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,yBAAyB,CAMtB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC6BrC,uBAAO;CwC5BZ;;AMmPL,ANjPI,cMiPU,AN3PX,yBAAyB,CAUtB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,wBAAwB,CACrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,wBAAwB,CAMrB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCcrC,uBAAO;CwCbZ;;AMoOL,ANlOI,cMkOU,AN5OX,wBAAwB,CAUrB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,wBAAwB,CACrB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,wBAAwB,CAMrB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC8BrC,uBAAO;CwC7BZ;;AMmPL,ANjPI,cMiPU,AN3PX,wBAAwB,CAUrB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,uBAAuB,CACpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,uBAAuB,CAMpB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCerC,uBAAO;CwCdZ;;AMoOL,ANlOI,cMkOU,AN5OX,uBAAuB,CAUpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC+BrC,wBAAO;CwC9BZ;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCgBrC,wBAAO;CwCfZ;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCgCrC,wBAAO;CwC/BZ;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCiBrC,wBAAO;CwChBZ;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,wBAAwB,CACrB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,wBAAwB,CAMrB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFpC,yBAAO;CwCGb;;AMmPL,ANjPI,cMiPU,AN3PX,wBAAwB,CAUrB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,uBAAuB,CACpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,uBAAuB,CAMpB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBpC,yBAAO;CwCkBb;;AMoOL,ANlOI,cMkOU,AN5OX,uBAAuB,CAUpB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,KAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,uBAAuB,CACpB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,uBAAuB,CAMpB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCIpC,yBAAO;CwCHb;;AMmPL,ANjPI,cMiPU,AN3PX,uBAAuB,CAUpB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,OAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,sBAAsB,CACnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,sBAAsB,CAMnB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCXpC,yBAAO;CwCYb;;AMoOL,ANlOI,cMkOU,AN5OX,sBAAsB,CAUnB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AMgOL,AN1PI,cM0PU,AN3PX,4BAA4B,CACzB,qBAAqB,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACtD,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMuPL,ANrPI,cMqPU,AN3PX,4BAA4B,CAMzB,qBAAqB,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFhB,OAAO,EwCEoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCMpC,sBAAO;CwCLb;;AMmPL,ANjPI,cMiPU,AN3PX,4BAA4B,CAUzB,qBAAqB,GAAG,qBAAqB,AAAA,OAAO,CAAC;EACrD,UAAU,EAAE,KAAmB;CAChC;;AM+OL,AN3OI,cM2OU,AN5OX,2BAA2B,CACxB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EAC9D,UAAU,EAAC,OAAC;EACZ,YAAY,EAAE,OAAmB;CAClC;;AMwOL,ANtOI,cMsOU,AN5OX,2BAA2B,CAMxB,qBAAqB,AAAA,QAAQ,AAAA,MAAM,GAAG,qBAAqB,AAAA,QAAQ,CAAC;EACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjBhB,OAAO,EwCiBoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCTpC,sBAAO;CwCUb;;AMoOL,ANlOI,cMkOU,AN5OX,2BAA2B,CAUxB,qBAAqB,AAAA,QAAQ,GAAG,qBAAqB,AAAA,OAAO,CAAC;EAC7D,UAAU,EAAE,OAAoB;CACjC;;AM2OL,ANpOI,aMoOS,ANrOV,qBAAqB,AACnB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,qBAAqB,AACnB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCRvC,uBAAO;CwCSV;;AM+NP,AN7NM,aM6NO,ANrOV,qBAAqB,AACnB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCZvC,uBAAO;CwCaV;;AM2NP,ANzNM,aMyNO,ANrOV,qBAAqB,AACnB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxChBvC,uBAAO;CwCiBV;;AMuNP,ANpNI,aMoNS,ANrOV,qBAAqB,AAiBnB,sBAAsB,CAAC;EACtB,gBAAgB,ExCrBZ,OAAO;CwC0BZ;;AM8ML,ANjNM,aMiNO,ANrOV,qBAAqB,AAiBnB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,qBAAqB,AAyBnB,kBAAkB,CAAC;EAClB,gBAAgB,ExC7BZ,OAAO;CwCkCZ;;AMsML,ANzMM,aMyMO,ANrOV,qBAAqB,AAyBnB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,qBAAqB,AAiCnB,WAAW,CAAC;EACX,gBAAgB,ExCrCZ,OAAO;CwC0CZ;;AM8LL,ANjMM,aMiMO,ANrOV,qBAAqB,AAiCnB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,uBAAuB,AACrB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,uBAAuB,AACrB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC3BtC,yBAAO;CwC4BX;;AM+NP,AN7NM,aM6NO,ANrOV,uBAAuB,AACrB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC/BtC,yBAAO;CwCgCX;;AM2NP,ANzNM,aMyNO,ANrOV,uBAAuB,AACrB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCnCtC,yBAAO;CwCoCX;;AMuNP,ANpNI,aMoNS,ANrOV,uBAAuB,AAiBrB,sBAAsB,CAAC;EACtB,gBAAgB,ExCxCX,OAAO;CwC6Cb;;AM8ML,ANjNM,aMiNO,ANrOV,uBAAuB,AAiBrB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,uBAAuB,AAyBrB,kBAAkB,CAAC;EAClB,gBAAgB,ExChDX,OAAO;CwCqDb;;AMsML,ANzMM,aMyMO,ANrOV,uBAAuB,AAyBrB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,uBAAuB,AAiCrB,WAAW,CAAC;EACX,gBAAgB,ExCxDX,OAAO;CwC6Db;;AM8LL,ANjMM,aMiMO,ANrOV,uBAAuB,AAiCrB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,qBAAqB,AACnB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,qBAAqB,AACnB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCDvC,uBAAO;CwCEV;;AM+NP,AN7NM,aM6NO,ANrOV,qBAAqB,AACnB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCLvC,uBAAO;CwCMV;;AM2NP,ANzNM,aMyNO,ANrOV,qBAAqB,AACnB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCTvC,uBAAO;CwCUV;;AMuNP,ANpNI,aMoNS,ANrOV,qBAAqB,AAiBnB,sBAAsB,CAAC;EACtB,gBAAgB,ExCdZ,OAAO;CwCmBZ;;AM8ML,ANjNM,aMiNO,ANrOV,qBAAqB,AAiBnB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,qBAAqB,AAyBnB,kBAAkB,CAAC;EAClB,gBAAgB,ExCtBZ,OAAO;CwC2BZ;;AMsML,ANzMM,aMyMO,ANrOV,qBAAqB,AAyBnB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,qBAAqB,AAiCnB,WAAW,CAAC;EACX,gBAAgB,ExC9BZ,OAAO;CwCmCZ;;AM8LL,ANjMM,aMiMO,ANrOV,qBAAqB,AAiCnB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCCvC,wBAAO;CwCAV;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCHvC,wBAAO;CwCIV;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCPvC,wBAAO;CwCQV;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCZZ,OAAO;CwCiBZ;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExCpBZ,OAAO;CwCyBZ;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExC5BZ,OAAO;CwCiCZ;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,qBAAqB,AACnB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,qBAAqB,AACnB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFvC,uBAAO;CwCGV;;AM+NP,AN7NM,aM6NO,ANrOV,qBAAqB,AACnB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCNvC,uBAAO;CwCOV;;AM2NP,ANzNM,aMyNO,ANrOV,qBAAqB,AACnB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCVvC,uBAAO;CwCWV;;AMuNP,ANpNI,aMoNS,ANrOV,qBAAqB,AAiBnB,sBAAsB,CAAC;EACtB,gBAAgB,ExCfZ,OAAO;CwCoBZ;;AM8ML,ANjNM,aMiNO,ANrOV,qBAAqB,AAiBnB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,qBAAqB,AAyBnB,kBAAkB,CAAC;EAClB,gBAAgB,ExCvBZ,OAAO;CwC4BZ;;AMsML,ANzMM,aMyMO,ANrOV,qBAAqB,AAyBnB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,qBAAqB,AAiCnB,WAAW,CAAC;EACX,gBAAgB,ExC/BZ,OAAO;CwCoCZ;;AM8LL,ANjMM,aMiMO,ANrOV,qBAAqB,AAiCnB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCJvC,uBAAO;CwCKV;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCRvC,uBAAO;CwCSV;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCZvC,uBAAO;CwCaV;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,ExCjBZ,OAAO;CwCsBZ;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ExCzBZ,OAAO;CwC8BZ;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,ExCjCZ,OAAO;CwCsCZ;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,mBAAmB,AACjB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,mBAAmB,AACjB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxChCtC,yBAAO;CwCiCX;;AM+NP,AN7NM,aM6NO,ANrOV,mBAAmB,AACjB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCpCtC,yBAAO;CwCqCX;;AM2NP,ANzNM,aMyNO,ANrOV,mBAAmB,AACjB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCxCtC,yBAAO;CwCyCX;;AMuNP,ANpNI,aMoNS,ANrOV,mBAAmB,AAiBjB,sBAAsB,CAAC;EACtB,gBAAgB,ExC7CX,OAAO;CwCkDb;;AM8ML,ANjNM,aMiNO,ANrOV,mBAAmB,AAiBjB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,mBAAmB,AAyBjB,kBAAkB,CAAC;EAClB,gBAAgB,ExCrDX,OAAO;CwC0Db;;AMsML,ANzMM,aMyMO,ANrOV,mBAAmB,AAyBjB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,mBAAmB,AAiCjB,WAAW,CAAC;EACX,gBAAgB,ExC7DX,OAAO;CwCkEb;;AM8LL,ANjMM,aMiMO,ANrOV,mBAAmB,AAiCjB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzBtC,sBAAO;CwC0BX;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC7BtC,sBAAO;CwC8BX;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjCtC,sBAAO;CwCkCX;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCtCX,OAAO;CwC2Cb;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExC9CX,OAAO;CwCmDb;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExCtDX,OAAO;CwC2Db;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNrC1C,qBAAO;CMsCP;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNzC1C,qBAAO;CM0CP;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CN7C1C,qBAAO;CM8CP;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ENlDf,OAAO;CMuDT;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,EN1Df,OAAO;CM+DT;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ENlEf,OAAO;CMuET;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,mBAAmB,AACjB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,mBAAmB,AACjB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNnCzC,wBAAO;CMoCR;;AM+NP,AN7NM,aM6NO,ANrOV,mBAAmB,AACjB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNvCzC,wBAAO;CMwCR;;AM2NP,ANzNM,aMyNO,ANrOV,mBAAmB,AACjB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CN3CzC,wBAAO;CM4CR;;AMuNP,ANpNI,aMoNS,ANrOV,mBAAmB,AAiBjB,sBAAsB,CAAC;EACtB,gBAAgB,ENhDd,OAAO;CMqDV;;AM8ML,ANjNM,aMiNO,ANrOV,mBAAmB,AAiBjB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,mBAAmB,AAyBjB,kBAAkB,CAAC;EAClB,gBAAgB,ENxDd,OAAO;CM6DV;;AMsML,ANzMM,aMyMO,ANrOV,mBAAmB,AAyBjB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,mBAAmB,AAiCjB,WAAW,CAAC;EACX,gBAAgB,ENhEd,OAAO;CMqEV;;AM8LL,ANjMM,aMiMO,ANrOV,mBAAmB,AAiCjB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNlC1C,uBAAO;CMmCP;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNtC1C,uBAAO;CMuCP;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CN1C1C,uBAAO;CM2CP;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,EN/Cf,OAAO;CMoDT;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ENvDf,OAAO;CM4DT;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,EN/Df,OAAO;CMoET;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,qBAAqB,AACnB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,qBAAqB,AACnB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNhCvC,wBAAO;CMiCV;;AM+NP,AN7NM,aM6NO,ANrOV,qBAAqB,AACnB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNpCvC,wBAAO;CMqCV;;AM2NP,ANzNM,aMyNO,ANrOV,qBAAqB,AACnB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNxCvC,wBAAO;CMyCV;;AMuNP,ANpNI,aMoNS,ANrOV,qBAAqB,AAiBnB,sBAAsB,CAAC;EACtB,gBAAgB,EN7CZ,OAAO;CMkDZ;;AM8ML,ANjNM,aMiNO,ANrOV,qBAAqB,AAiBnB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,qBAAqB,AAyBnB,kBAAkB,CAAC;EAClB,gBAAgB,ENrDZ,OAAO;CM0DZ;;AMsML,ANzMM,aMyMO,ANrOV,qBAAqB,AAyBnB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,qBAAqB,AAiCnB,WAAW,CAAC;EACX,gBAAgB,EN7DZ,OAAO;CMkEZ;;AM8LL,ANjMM,aMiMO,ANrOV,qBAAqB,AAiCnB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CN9BxC,uBAAO;CM+BT;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNlCxC,uBAAO;CMmCT;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CNtCxC,uBAAO;CMuCT;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,EN3Cb,OAAO;CMgDX;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ENnDb,OAAO;CMwDX;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,EN3Db,OAAO;CMgEX;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCRvC,uBAAO;CwCSV;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCZvC,uBAAO;CwCaV;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxChBvC,uBAAO;CwCiBV;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCrBZ,OAAO;CwC0BZ;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExC7BZ,OAAO;CwCkCZ;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExCrCZ,OAAO;CwC0CZ;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCPvC,wBAAO;CwCQV;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCXvC,wBAAO;CwCYV;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCfvC,wBAAO;CwCgBV;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,ExCpBZ,OAAO;CwCyBZ;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ExC5BZ,OAAO;CwCiCZ;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,ExCpCZ,OAAO;CwCyCZ;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCNvC,wBAAO;CwCOV;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCVvC,wBAAO;CwCWV;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCdvC,wBAAO;CwCeV;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,ExCnBZ,OAAO;CwCwBZ;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ExC3BZ,OAAO;CwCgCZ;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,ExCnCZ,OAAO;CwCwCZ;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCLvC,wBAAO;CwCMV;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCTvC,wBAAO;CwCUV;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCbvC,wBAAO;CwCcV;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExClBZ,OAAO;CwCuBZ;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExC1BZ,OAAO;CwC+BZ;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExClCZ,OAAO;CwCuCZ;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,iBAAiB,AACf,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,iBAAiB,AACf,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCJvC,uBAAO;CwCKV;;AM+NP,AN7NM,aM6NO,ANrOV,iBAAiB,AACf,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCRvC,uBAAO;CwCSV;;AM2NP,ANzNM,aMyNO,ANrOV,iBAAiB,AACf,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCZvC,uBAAO;CwCaV;;AMuNP,ANpNI,aMoNS,ANrOV,iBAAiB,AAiBf,sBAAsB,CAAC;EACtB,gBAAgB,ExCjBZ,OAAO;CwCsBZ;;AM8ML,ANjNM,aMiNO,ANrOV,iBAAiB,AAiBf,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,iBAAiB,AAyBf,kBAAkB,CAAC;EAClB,gBAAgB,ExCzBZ,OAAO;CwC8BZ;;AMsML,ANzMM,aMyMO,ANrOV,iBAAiB,AAyBf,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,iBAAiB,AAiCf,WAAW,CAAC;EACX,gBAAgB,ExCjCZ,OAAO;CwCsCZ;;AM8LL,ANjMM,aMiMO,ANrOV,iBAAiB,AAiCf,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCHvC,wBAAO;CwCIV;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCPvC,wBAAO;CwCQV;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCXvC,wBAAO;CwCYV;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,ExChBZ,OAAO;CwCqBZ;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ExCxBZ,OAAO;CwC6BZ;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,ExChCZ,OAAO;CwCqCZ;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,oBAAoB,AAClB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,oBAAoB,AAClB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCFvC,uBAAO;CwCGV;;AM+NP,AN7NM,aM6NO,ANrOV,oBAAoB,AAClB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCNvC,uBAAO;CwCOV;;AM2NP,ANzNM,aMyNO,ANrOV,oBAAoB,AAClB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCVvC,uBAAO;CwCWV;;AMuNP,ANpNI,aMoNS,ANrOV,oBAAoB,AAiBlB,sBAAsB,CAAC;EACtB,gBAAgB,ExCfZ,OAAO;CwCoBZ;;AM8ML,ANjNM,aMiNO,ANrOV,oBAAoB,AAiBlB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,oBAAoB,AAyBlB,kBAAkB,CAAC;EAClB,gBAAgB,ExCvBZ,OAAO;CwC4BZ;;AMsML,ANzMM,aMyMO,ANrOV,oBAAoB,AAyBlB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,oBAAoB,AAiClB,WAAW,CAAC;EACX,gBAAgB,ExC/BZ,OAAO;CwCoCZ;;AM8LL,ANjMM,aMiMO,ANrOV,oBAAoB,AAiClB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,mBAAmB,AACjB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,mBAAmB,AACjB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCDvC,uBAAO;CwCEV;;AM+NP,AN7NM,aM6NO,ANrOV,mBAAmB,AACjB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCLvC,uBAAO;CwCMV;;AM2NP,ANzNM,aMyNO,ANrOV,mBAAmB,AACjB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCTvC,uBAAO;CwCUV;;AMuNP,ANpNI,aMoNS,ANrOV,mBAAmB,AAiBjB,sBAAsB,CAAC;EACtB,gBAAgB,ExCdZ,OAAO;CwCmBZ;;AM8ML,ANjNM,aMiNO,ANrOV,mBAAmB,AAiBjB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,mBAAmB,AAyBjB,kBAAkB,CAAC;EAClB,gBAAgB,ExCtBZ,OAAO;CwC2BZ;;AMsML,ANzMM,aMyMO,ANrOV,mBAAmB,AAyBjB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,mBAAmB,AAiCjB,WAAW,CAAC;EACX,gBAAgB,ExC9BZ,OAAO;CwCmCZ;;AM8LL,ANjMM,aMiMO,ANrOV,mBAAmB,AAiCjB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCAvC,wBAAO;CwCCV;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCJvC,wBAAO;CwCKV;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCRvC,wBAAO;CwCSV;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCbZ,OAAO;CwCkBZ;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExCrBZ,OAAO;CwC0BZ;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExC7BZ,OAAO;CwCkCZ;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCCvC,wBAAO;CwCAV;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCHvC,wBAAO;CwCIV;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCPvC,wBAAO;CwCQV;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCZZ,OAAO;CwCiBZ;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExCpBZ,OAAO;CwCyBZ;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExC5BZ,OAAO;CwCiCZ;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,mBAAmB,AACjB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,mBAAmB,AACjB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjCtC,yBAAO;CwCkCX;;AM+NP,AN7NM,aM6NO,ANrOV,mBAAmB,AACjB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrCtC,yBAAO;CwCsCX;;AM2NP,ANzNM,aMyNO,ANrOV,mBAAmB,AACjB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzCtC,yBAAO;CwC0CX;;AMuNP,ANpNI,aMoNS,ANrOV,mBAAmB,AAiBjB,sBAAsB,CAAC;EACtB,gBAAgB,ExC9CX,OAAO;CwCmDb;;AM8ML,ANjNM,aMiNO,ANrOV,mBAAmB,AAiBjB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,mBAAmB,AAyBjB,kBAAkB,CAAC;EAClB,gBAAgB,ExCtDX,OAAO;CwC2Db;;AMsML,ANzMM,aMyMO,ANrOV,mBAAmB,AAyBjB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,mBAAmB,AAiCjB,WAAW,CAAC;EACX,gBAAgB,ExC9DX,OAAO;CwCmEb;;AM8LL,ANjMM,aMiMO,ANrOV,mBAAmB,AAiCjB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,KAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,kBAAkB,AAChB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,kBAAkB,AAChB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC3BtC,yBAAO;CwC4BX;;AM+NP,AN7NM,aM6NO,ANrOV,kBAAkB,AAChB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC/BtC,yBAAO;CwCgCX;;AM2NP,ANzNM,aMyNO,ANrOV,kBAAkB,AAChB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCnCtC,yBAAO;CwCoCX;;AMuNP,ANpNI,aMoNS,ANrOV,kBAAkB,AAiBhB,sBAAsB,CAAC;EACtB,gBAAgB,ExCxCX,OAAO;CwC6Cb;;AM8ML,ANjNM,aMiNO,ANrOV,kBAAkB,AAiBhB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,kBAAkB,AAyBhB,kBAAkB,CAAC;EAClB,gBAAgB,ExChDX,OAAO;CwCqDb;;AMsML,ANzMM,aMyMO,ANrOV,kBAAkB,AAyBhB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,kBAAkB,AAiChB,WAAW,CAAC;EACX,gBAAgB,ExCxDX,OAAO;CwC6Db;;AM8LL,ANjMM,aMiMO,ANrOV,kBAAkB,AAiChB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+LP,ANpOI,aMoOS,ANrOV,uBAAuB,AACrB,MAAM,CAAC;EACN,OAAO,EAAE,IAAI;CAad;;AMsNL,ANjOM,aMiOO,ANrOV,uBAAuB,AACrB,MAAM,AAGJ,sBAAsB,CAAC;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjClB,OAAO,EwCiCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzBtC,sBAAO;CwC0BX;;AM+NP,AN7NM,aM6NO,ANrOV,uBAAuB,AACrB,MAAM,AAOJ,kBAAkB,CAAK;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCrClB,OAAO,EwCqCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxC7BtC,sBAAO;CwC8BX;;AM2NP,ANzNM,aMyNO,ANrOV,uBAAuB,AACrB,MAAM,AAWJ,WAAW,CAAY;EACtB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCzClB,OAAO,EwCyCsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CxCjCtC,sBAAO;CwCkCX;;AMuNP,ANpNI,aMoNS,ANrOV,uBAAuB,AAiBrB,sBAAsB,CAAC;EACtB,gBAAgB,ExCtCX,OAAO;CwC2Cb;;AM8ML,ANjNM,aMiNO,ANrOV,uBAAuB,AAiBrB,sBAAsB,AAGpB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AM+MP,AN5MI,aM4MS,ANrOV,uBAAuB,AAyBrB,kBAAkB,CAAC;EAClB,gBAAgB,ExC9CX,OAAO;CwCmDb;;AMsML,ANzMM,aMyMO,ANrOV,uBAAuB,AAyBrB,kBAAkB,AAGhB,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AMuMP,ANpMI,aMoMS,ANrOV,uBAAuB,AAiCrB,WAAW,CAAC;EACX,gBAAgB,ExCtDX,OAAO;CwC2Db;;AM8LL,ANjMM,aMiMO,ANrOV,uBAAuB,AAiCrB,WAAW,AAGT,OAAO,CAAC;EACP,gBAAgB,EAAE,OAAoB;CACvC;;AOxEP,AAAA,SAAS,CAAC;EpBWJ,UAAU,EoBVM,IAAI;ErBDtB,aAAa,EQuJY,GAAG;CarH/B;;AAlCD,AAKE,SALO,AAKN,SAAS,CAAC;EACT,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,KAAK;EACb,YAAY,EAAE,IAAI;EAClB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;CAuBZ;;AAjCH,AAYI,SAZK,AAKN,SAAS,GAON,aAAa,CAAC;EACd,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;CACZ;;AAhBL,AAmBI,SAnBK,AAKN,SAAS,AAcP,GAAG,EAnBR,SAAS,AAKN,SAAS,AAeP,YAAY,CAAC;EACZ,KAAK,EAAE,IAAI;CACZ;;AAtBL,AAwBI,SAxBK,AAKN,SAAS,AAmBP,GAAG,EAxBR,SAAS,AAKN,SAAS,AAoBP,YAAY,CAAC;EACZ,KAAK,EAAE,IAAI;CACZ;;AA3BL,AA6BI,SA7BK,AAKN,SAAS,AAwBP,IAAI,EA7BT,SAAS,AAKN,SAAS,AAyBP,aAAa,CAAC;EACb,KAAK,EAAE,GAAG;CACX;;AAIL,AAAA,eAAe,CAAC;EACd,aAAa,E/CoFJ,MAAc;C+CnFxB;;AAGD,AAAA,YAAY,CAAC;EACX,MAAM,EAAE,IAAI;CACb;;AAED,AAAA,YAAY,CAAC;EACX,MAAM,EAAE,GAAG;CACZ;;AAED,AAAA,aAAa,CAAC;EACZ,MAAM,EAAE,GAAG;CACZ;;AAGD,AAEI,MAFE,CACJ,EAAE,GAAG,EAAE,CACL,SAAS,CAAC;EACR,MAAM,EAAE,CAAC;CACV;;AC3DL,AAAA,KAAK,CAAC;ErBYA,UAAU,EOkIF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAiB;Ec5IpE,aAAa,EhDmHN,IAAI;CgDSZ;;AA9HD,AAKI,KALC,AAIF,QAAQ,CACP,YAAY,CAAC;EACX,YAAY,EduIO,OAAuB;CctI3C;;AAPL,AASI,KATC,AAIF,QAAQ;AAJX,KAAK,AAIF,QAAQ,CAMP,UAAU,CAAC;EACT,KAAK,EhDJA,OAAO;CgDKb;;AAZL,AAeE,KAfG,AAeF,eAAe,CAAC;EACf,MAAM,EAAE,eAAe;EACvB,IAAI,EAAE,CAAC;EACP,UAAU,EAAE,eAAe;EAC3B,SAAS,EAAE,eAAe;EAC1B,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,eAAe;EACtB,OAAO,EAAE,IAAI;CAcd;;AArCH,AAyBI,KAzBC,AAeF,eAAe,AAUb,cAAc,CAAC,UAAU,CAAC;EACzB,OAAO,EAAE,gBAAgB;CAC1B;;AA3BL,AA6BI,KA7BC,AAeF,eAAe,EAcd,AAAA,WAAC,CAAY,UAAU,AAAtB,EAAwB;EACvB,OAAO,EAAE,IAAI;CACd;;AA/BL,AAiCI,KAjCC,AAeF,eAAe,CAkBd,YAAY;AAjChB,KAAK,AAeF,eAAe,CAmBd,YAAY,CAAC;EtBjCb,aAAa,EsBkCY,CAAC,CAAC,UAAU;CACpC;;AApCL,AAyCI,KAzCC,AAwCF,eAAe,CACd,UAAU;AAzCd,KAAK,AAwCF,eAAe,CAEd,YAAY,CAAC;EACX,OAAO,EAAE,IAAI;CACd;;AA5CL,AAgDI,KAhDC,CA+CH,IAAI,AAAA,YAAY,GACZ,EAAE,CAAC;EACH,aAAa,EAAE,GAAG,CAAC,KAAK,ChDhCnB,oBAAI;EgDiCT,MAAM,EAAE,CAAC;CAKV;;AAvDL,AAoDM,KApDD,CA+CH,IAAI,AAAA,YAAY,GACZ,EAAE,AAID,aAAa,CAAC;EACb,aAAa,EAAE,CAAC;CACjB;;AAtDP,AA4DI,KA5DC,AA2DF,eAAe,CACd,UAAU,CAAC;EACT,UAAU,EAAE,KAAK;EACjB,QAAQ,EAAE,IAAI;CACf;;AA/DL,AAkEE,KAlEG,CAkEH,aAAa,CAAC;EACZ,YAAY,EAAE,GAAG,CAAC,KAAK,ChDlDhB,oBAAI;CgDmDZ;;AApEH,AAsEE,KAtEG,CAsEH,YAAY,CAAC;EACX,WAAW,EAAE,GAAG,CAAC,KAAK,ChDtDf,oBAAI;CgDuDZ;;AAxEH,AA4EM,KA5ED,AA0EF,UAAU,AACR,IAAK,CAAA,aAAa,EACf,YAAY,CAAC;EACb,aAAa,EAAE,CAAC;CAOjB;;AApFP,AAgFU,KAhFL,AA0EF,UAAU,AACR,IAAK,CAAA,aAAa,EACf,YAAY,CAGZ,SAAS,AACN,YAAY,CAAC,SAAS,CAAC;EACtB,WAAW,EAAE,IAAI;CAClB;;AAlFX,AAwFM,KAxFD,AA0EF,UAAU,AAaR,aAAa,CACZ,SAAS,CAAC;EACR,aAAa,EAAE,CAAC;CAMjB;;AA/FP,AA2FQ,KA3FH,AA0EF,UAAU,AAaR,aAAa,CACZ,SAAS,AAGN,YAAY,CAAC,SAAS,CAAC;EACtB,WAAW,EAAE,CAAC;EACd,WAAW,EAAE,CAAC;CACf;;AA9FT,AAmGE,KAnGG,AAmGF,kBAAkB,CAAC;EAClB,UAAU,EAAE,CAAC;CAwBd;;AA5HH,AAwGQ,KAxGH,AAmGF,kBAAkB,CAGjB,YAAY,CACV,SAAS,AACN,YAAY,CAAC,SAAS,CAAC;EACtB,WAAW,EAAE,CAAC;EACd,WAAW,EAAE,CAAC;CACf;;AA3GT,AA8GM,KA9GD,AAmGF,kBAAkB,CAGjB,YAAY,CAQV,CAAC,CAAC;EACA,UAAU,EAAE,qBAAqB;CAWlC;;AA1HP,AAiHQ,KAjHH,AAmGF,kBAAkB,CAGjB,YAAY,CAQV,CAAC,AAGE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,ChDxGpB,OAAO;CgDyGT;;AAnHT,AAsHU,KAtHL,AAmGF,kBAAkB,CAGjB,YAAY,CAQV,CAAC,AAOE,OAAO,AACL,MAAM,CAAC;EACN,UAAU,EAAE,CAAC;CACd;;AASX,AAAA,IAAI,AAAA,eAAe,CAAC;EAClB,QAAQ,EAAE,MAAM;CACjB;;AAGD,AlBzIE,YkByIU,AlBzIT,OAAO;AkB0IV,UAAU,AlB1IP,OAAO;AkB2IV,YAAY,AlB3IT,OAAO,CAAC;EACP,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,EAAE;CACZ;;AkB4IH,AAAA,YAAY,CAAC;EACX,gBAAgB,EAAE,WAAW;EAC7B,aAAa,EAAE,GAAG,CAAC,KAAK,ChD9Hf,oBAAI;EgD+Hb,OAAO,EAAE,OAA0B,ChDugBD,OAAO;EgDtgBzC,QAAQ,EAAE,QAAQ;EtBvIhB,sBAAsB,E1BuMI,OAAM;E0BtMhC,uBAAuB,E1BsMG,OAAM;CgDvCnC;;AAnBC,AAAA,eAAe,CAVjB,YAAY,CAUQ;EAChB,aAAa,EAAE,CAAC;CACjB;;AAZH,AAcE,YAdU,GAcR,WAAW,CAAC;EACZ,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,SAAmB;CAYlC;;AA5BH,AAkBI,YAlBQ,GAcR,WAAW,CAIX,YAAY;AAlBhB,YAAY,GAcR,WAAW,CAKX,IAAI;AAnBR,YAAY,GAcR,WAAW,CAMX,WAAW,CAAC;EACV,aAAa,EAAE,OAAqB;EACpC,UAAU,EAAE,OAAqB;CAClC;;AAvBL,AAyBI,YAzBQ,GAcR,WAAW,EAWX,AAAA,WAAC,CAAY,SAAS,AAArB,EAAuB;EACtB,QAAQ,EAAE,QAAQ;CACnB;;AAIL,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,IAAI;EACX,SAAS,Ed/BY,MAAM;EcgC3B,WAAW,EhD+DiB,GAAG;EgD9D/B,MAAM,EAAE,CAAC;CACV;;AAED,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,IAAI;CACZ;;AAID,AAAA,SAAS,CAAC;EACR,UAAU,EAAE,WAAW;EACvB,KAAK,EhD/KI,OAAO;EgDgLhB,SAAS,EhD+CmB,QAAwB;EgD9CpD,MAAM,EAAI,QAAwB,CAAE,CAAC;EACrC,OAAO,EAAE,YAAY;CAWtB;;AATC,AAAA,UAAU,AAAA,KAAK,CAPjB,SAAS,EAAT,SAAS,AAQN,MAAM,CAAC;EACN,KAAK,EhDpLE,OAAO;CgDqLf;;AAED,AAAA,KAAK,CAZP,SAAS,EAAT,SAAS,AAaN,MAAM,CAAC;EACN,UAAU,EAAE,eAAe;CAC5B;;AAGH,AACE,QADM,CACN,WAAW,CAAC;EACV,SAAS,Ed7Da,IAAI;Cc8D3B;;AAHH,AAKE,QALM,CAKN,SAAS,CAAC;EACR,OAAO,Ed/DkB,MAAK,CACL,MAAK;Cc+D/B;;AAIH,AAOE,UAPQ,GAON,MAAM,CAAC;EACP,aAAa,EAAE,CAAC;CAMjB;;AAdH,AAUI,UAVM,GAON,MAAM,GAGJ,KAAK,GAAG,EAAE,GAAG,EAAE;AAVrB,UAAU,GAON,MAAM,GAIJ,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EAChB,gBAAgB,EAAE,CAAC;CACpB;;AAbL,AAiBE,UAjBQ,CAiBR,GAAG,CAAC;EACF,UAAU,EAAE,GAAG;CAChB;;AAnBH,AAqBE,UArBQ,CAqBR,iBAAiB,CAAC;EAChB,MAAM,EAAE,KAAK;CACd;;AAvBH,AAyBE,UAzBQ,AAyBP,IAAI,CAAC,iBAAiB,CAAC;EACtB,MAAM,EAAE,IAAI;CACb;;AAGH,AAAA,aAAa,CAAC;E5BpPZ,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;E4BqPhB,MAAM,EAAE,MAAM;CAQf;;AALG,MAAM,EAAE,SAAS,EAAE,KAAK;EAL5B,AAIE,aAJW,GAIT,EAAE,CAAC;IAED,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,IAAI;GAErB;;;AAIH,AAAA,cAAc,CAAC;EACb,UAAU,EhD1PD,OAAO;CgD+RjB;;AAtCD,AAGE,cAHY,CAGZ,aAAa,CAAC;EAEZ,aAAa,EAAE,GAAG,CAAC,KAAK,ChD7PjB,OAAO;EgD8Pd,OAAO,EAAE,KAAK;CAef;;AArBH,AlBpQE,ckBoQY,CAGZ,aAAa,AlBvQZ,OAAO,CAAC;EACP,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,EAAE;CACZ;;AkBgQH,AAQI,cARU,CAGZ,aAAa,AAKV,aAAa,CAAC;EACb,aAAa,EAAE,CAAC;CACjB;;AAVL,AAYI,cAZU,CAGZ,aAAa,AASV,cAAc,CAAC;EACd,WAAW,EAAE,CAAC;CACf;;AAdL,AAgBI,cAhBU,CAGZ,aAAa,CAaX,GAAG,CAAC;EACF,MAAM,EdnOE,QAAQ;EcoOhB,KAAK,EdpOG,QAAQ;EcqOhB,KAAK,EAAE,IAAI;CACZ;;AApBL,AAuBE,cAvBY,CAuBZ,aAAa,CAAC;EACZ,KAAK,EAAE,OAAuB;EAC9B,WAAW,EAAE,IAAI;CAClB;;AA1BH,AA4BE,cA5BY,CA4BZ,SAAS,CAAC;EACR,KAAK,EhDhRE,OAAO;EgDiRd,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAAG;CACjB;;AAhCH,AAkCE,cAlCY,CAkCZ,WAAW,CAAC;EACV,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;CACjB;;AAOH,AAAA,UAAU,CAAC;EACT,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,IAAI;EACd,OAAO,EAAE,CAAC;CAqFX;;AAzFD,AAOE,UAPQ,GAON,EAAE,CAAC;EtBnTH,aAAa,EsBoTU,GAAG;EAC1B,UAAU,EhD9SH,OAAO;EgD+Sd,WAAW,EAAE,GAAG,CAAC,KAAK,ChD9Sf,OAAO;EgD+Sd,KAAK,EhD1SE,OAAO;EgD2Sd,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;CAwDd;;AArEH,AAeI,UAfM,GAON,EAAE,AAQD,aAAa,CAAC;EACb,aAAa,EAAE,CAAC;CACjB;;AAjBL,AAmBI,UAnBM,GAON,EAAE,GAYA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACvB,MAAM,EAAE,YAAY;CACrB;;AArBL,AAuBI,UAvBM,GAON,EAAE,CAgBF,KAAK,CAAC;EACJ,OAAO,EAAE,YAAY;EACrB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG;CACjB;;AA3BL,AA8BI,UA9BM,GAON,EAAE,CAuBF,MAAM,CAAC;EACL,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,IAAI;CAClB;;AAjCL,AAoCI,UApCM,GAON,EAAE,CA6BF,MAAM,CAAC;EACL,KAAK,EhD9SD,OAAO;EgD+SX,OAAO,EAAE,IAAI;EACb,KAAK,EAAE,KAAK;CAYb;;AAnDL,AA0CM,UA1CI,GAON,EAAE,CA6BF,MAAM,GAMF,GAAG;AA1CX,UAAU,GAON,EAAE,CA6BF,MAAM,GAOF,IAAI;AA3CZ,UAAU,GAON,EAAE,CA6BF,MAAM,GAQF,IAAI;AA5CZ,UAAU,GAON,EAAE,CA6BF,MAAM,GASF,IAAI;AA7CZ,UAAU,GAON,EAAE,CA6BF,MAAM,GAUF,UAAU;AA9ClB,UAAU,GAON,EAAE,CA6BF,MAAM,GAWF,IAAI,CAAC;EACL,MAAM,EAAE,OAAO;EACf,YAAY,EAAE,GAAG;CAClB;;AAlDP,AAqDI,UArDM,GAON,EAAE,AA8CD,MAAM,CAAC,MAAM,CAAC;EACb,OAAO,EAAE,YAAY;CACtB;;AAvDL,AAyDI,UAzDM,GAON,EAAE,AAkDD,KAAK,CAAC;EACL,KAAK,EAAE,OAAsB;CAU9B;;AApEL,AA4DM,UA5DI,GAON,EAAE,AAkDD,KAAK,CAGJ,KAAK,CAAC;EACJ,WAAW,EAAE,GAAG;EAChB,eAAe,EAAE,YAAY;CAC9B;;AA/DP,AAiEM,UAjEI,GAON,EAAE,AAkDD,KAAK,CAQJ,MAAM,CAAC;EACL,UAAU,EhDnWP,OAAO,CgDmWY,UAAU;CACjC;;AAnEP,AAyEI,UAzEM,CAyEN,QAAQ,CAAE;EACR,iBAAiB,EhDvVb,OAAO;CgDwVZ;;AA3EL,AAyEI,UAzEM,CAyEN,UAAU,CAAA;EACR,iBAAiB,EhD1WZ,OAAO;CgD2Wb;;AA3EL,AAyEI,UAzEM,CAyEN,QAAQ,CAAE;EACR,iBAAiB,EhDhVb,OAAO;CgDiVZ;;AA3EL,AAyEI,UAzEM,CAyEN,KAAK,CAAK;EACR,iBAAiB,EhD9Ub,OAAO;CgD+UZ;;AA3EL,AAyEI,UAzEM,CAyEN,QAAQ,CAAE;EACR,iBAAiB,EhDjVb,OAAO;CgDkVZ;;AA3EL,AAyEI,UAzEM,CAyEN,OAAO,CAAG;EACR,iBAAiB,EhDnVb,OAAO;CgDoVZ;;AA3EL,AAyEI,UAzEM,CAyEN,MAAM,CAAI;EACR,iBAAiB,EhD/WZ,OAAO;CgDgXb;;AA3EL,AAyEI,UAzEM,CAyEN,KAAK,CAAK;EACR,iBAAiB,EhDxWZ,OAAO;CgDyWb;;AA3EL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,Ed1XhB,OAAO;Cc2XT;;AAjFL,AA+EI,UA/EM,CA+EN,MAAM,CAAI;EACR,iBAAiB,EdxXf,OAAO;CcyXV;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EdvXhB,OAAO;CcwXT;;AAjFL,AA+EI,UA/EM,CA+EN,QAAQ,CAAE;EACR,iBAAiB,EdrXb,OAAO;CcsXZ;;AAjFL,AA+EI,UA/EM,CA+EN,OAAO,CAAG;EACR,iBAAiB,EdnXd,OAAO;CcoXX;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EhD7Vb,OAAO;CgD8VZ;;AAjFL,AA+EI,UA/EM,CA+EN,OAAO,CAAG;EACR,iBAAiB,EhD5Vb,OAAO;CgD6VZ;;AAjFL,AA+EI,UA/EM,CA+EN,OAAO,CAAG;EACR,iBAAiB,EhD3Vb,OAAO;CgD4VZ;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EhD1Vb,OAAO;CgD2VZ;;AAjFL,AA+EI,UA/EM,CA+EN,IAAI,CAAM;EACR,iBAAiB,EhDzVb,OAAO;CgD0VZ;;AAjFL,AA+EI,UA/EM,CA+EN,OAAO,CAAG;EACR,iBAAiB,EhDxVb,OAAO;CgDyVZ;;AAjFL,AA+EI,UA/EM,CA+EN,OAAO,CAAG;EACR,iBAAiB,EhDvVb,OAAO;CgDwVZ;;AAjFL,AA+EI,UA/EM,CA+EN,MAAM,CAAI;EACR,iBAAiB,EhDtVb,OAAO;CgDuVZ;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EhDrVb,OAAO;CgDsVZ;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EhDpVb,OAAO;CgDqVZ;;AAjFL,AA+EI,UA/EM,CA+EN,MAAM,CAAI;EACR,iBAAiB,EhDtXZ,OAAO;CgDuXb;;AAjFL,AA+EI,UA/EM,CA+EN,KAAK,CAAK;EACR,iBAAiB,EhDhXZ,OAAO;CgDiXb;;AAjFL,AA+EI,UA/EM,CA+EN,UAAU,CAAA;EACR,iBAAiB,EhD9WZ,OAAO;CgD+Wb;;AAjFL,AAoFE,UApFQ,CAoFR,OAAO,CAAC;EACN,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,KAAK;CACd;;AAMH,AAAA,WAAW,CAAC;EACV,SAAS,EAAE,KAAK;CACjB;;AZ5YC,AAGM,aAHO,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC2BhB,OAAO;CoCjBR;;AAdP,AAMQ,aANK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,aAAa,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,aAXK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,aAjBS,AACV,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCanB,OAAO;CoCZV;;AAnBL,AAyBQ,aAzBK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,aA7BK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCCvB,OAAO;CoCAN;;AAMT,AAGE,WAHS,CAGT,SAAS;AAFX,oBAAoB,CAElB,SAAS;AADX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,WANO,CAGT,SAAS,AAGN,MAAM;AALX,oBAAoB,CAElB,SAAS,AAGN,MAAM;AAJX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,WAAW,CAEd,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,WAAW,CAEd,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,WAAW,CAEd,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,WAAW,CAEd,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,eAHS,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCQf,OAAO;CoCET;;AAdP,AAMQ,eANO,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,eAAe,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,eAXO,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,eAjBW,AACZ,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCNlB,OAAO;CoCOX;;AAnBL,AAyBQ,eAzBO,AAsBZ,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,eA7BO,AAsBZ,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpClBtB,OAAO;CoCmBP;;AAMT,AAGE,aAHW,CAGX,SAAS;AAFX,sBAAsB,CAEpB,SAAS;AADX,eAAe,AAAA,IAAK,CAAA,aAAa,EAC/B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,aANS,CAGX,SAAS,AAGN,MAAM;AALX,sBAAsB,CAEpB,SAAS,AAGN,MAAM;AAJX,eAAe,AAAA,IAAK,CAAA,aAAa,EAC/B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,aAAa,CAEhB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,aAAa,CAEhB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,aAAa,CAEhB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,aAAa,CAEhB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,aAHO,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCkChB,OAAO;CoCxBR;;AAdP,AAMQ,aANK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,aAAa,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,aAXK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,aAjBS,AACV,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCoBnB,OAAO;CoCnBV;;AAnBL,AAyBQ,aAzBK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,aA7BK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCQvB,OAAO;CoCPN;;AAMT,AAGE,WAHS,CAGT,SAAS;AAFX,oBAAoB,CAElB,SAAS;AADX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,WANO,CAGT,SAAS,AAGN,MAAM;AALX,oBAAoB,CAElB,SAAS,AAGN,MAAM;AAJX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,WAAW,CAEd,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,WAAW,CAEd,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,WAAW,CAEd,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,WAAW,CAEd,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCoChB,OAAO;CoC1BR;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCsBnB,OAAO;CoCrBV;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCUvB,OAAO;CoCTN;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,aAHO,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCiChB,OAAO;CoCvBR;;AAdP,AAMQ,aANK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,aAAa,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,aAXK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,aAjBS,AACV,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCmBnB,OAAO;CoClBV;;AAnBL,AAyBQ,aAzBK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,aA7BK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCOvB,OAAO;CoCNN;;AAMT,AAGE,WAHS,CAGT,SAAS;AAFX,oBAAoB,CAElB,SAAS;AADX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,WANO,CAGT,SAAS,AAGN,MAAM;AALX,oBAAoB,CAElB,SAAS,AAGN,MAAM;AAJX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,WAAW,CAEd,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,WAAW,CAEd,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,WAAW,CAEd,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,WAAW,CAEd,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC+BhB,OAAO;CoCrBR;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCiBnB,OAAO;CoChBV;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCKvB,OAAO;CoCJN;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,WAHK,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCGf,OAAO;CoCOT;;AAdP,AAMQ,WANG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,WAAW,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,WAXG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,WAjBO,AACR,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCXlB,OAAO;CoCYX;;AAnBL,AAyBQ,WAzBG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,WA7BG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCvBtB,OAAO;CoCwBP;;AAMT,AAGE,SAHO,CAGP,SAAS;AAFX,kBAAkB,CAEhB,SAAS;AADX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,SANK,CAGP,SAAS,AAGN,MAAM;AALX,kBAAkB,CAEhB,SAAS,AAGN,MAAM;AAJX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,SAAS,CAEZ,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,SAAS,CAEZ,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,SAAS,CAEZ,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,SAAS,CAEZ,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,KAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCUf,OAAO;CoCAT;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCJlB,OAAO;CoCKX;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpChBtB,OAAO;CoCiBP;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EFFnB,OAAO;CEYL;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CFhBtB,OAAO;CEiBP;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CF5B1B,OAAO;CE6BH;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,WAHK,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EFAlB,OAAO;CEUN;;AAdP,AAMQ,WANG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,WAAW,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,WAXG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,WAjBO,AACR,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CFdrB,OAAO;CEeR;;AAnBL,AAyBQ,WAzBG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,WA7BG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CF1BzB,OAAO;CE2BJ;;AAMT,AAGE,SAHO,CAGP,SAAS;AAFX,kBAAkB,CAEhB,SAAS;AADX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,SANK,CAGP,SAAS,AAGN,MAAM;AALX,kBAAkB,CAEhB,SAAS,AAGN,MAAM;AAJX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,SAAS,CAEZ,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,SAAS,CAEZ,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,SAAS,CAEZ,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,SAAS,CAEZ,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EFCnB,OAAO;CESL;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CFbtB,OAAO;CEcP;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CFzB1B,OAAO;CE0BH;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,aAHO,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EFGhB,OAAO;CEOR;;AAdP,AAMQ,aANK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,aAAa,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,aAXK,AACV,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,aAjBS,AACV,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CFXnB,OAAO;CEYV;;AAnBL,AAyBQ,aAzBK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,aA7BK,AAsBV,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CFvBvB,OAAO;CEwBN;;AAMT,AAGE,WAHS,CAGT,SAAS;AAFX,oBAAoB,CAElB,SAAS;AADX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,WANO,CAGT,SAAS,AAGN,MAAM;AALX,oBAAoB,CAElB,SAAS,AAGN,MAAM;AAJX,aAAa,AAAA,IAAK,CAAA,aAAa,EAC7B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,WAAW,CAEd,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,WAAW,CAEd,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,WAAW,CAEd,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,WAAW,CAEd,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,WAAW,CAEd,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,oBAAoB,CACvB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EFKjB,OAAO;CEKP;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CFTpB,OAAO;CEUT;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CFrBxB,OAAO;CEsBL;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC2BhB,OAAO;CoCjBR;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCanB,OAAO;CoCZV;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCCvB,OAAO;CoCAN;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC4BhB,OAAO;CoClBR;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCcnB,OAAO;CoCbV;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCEvB,OAAO;CoCDN;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC6BhB,OAAO;CoCnBR;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCenB,OAAO;CoCdV;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCGvB,OAAO;CoCFN;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC8BhB,OAAO;CoCpBR;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCgBnB,OAAO;CoCfV;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCIvB,OAAO;CoCHN;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,SAHG,AACN,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpC+BhB,OAAO;CoCrBR;;AAdP,AAMQ,SANC,AACN,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,SAAS,AACN,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,SAXC,AACN,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,SAjBK,AACN,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCiBnB,OAAO;CoChBV;;AAnBL,AAyBQ,SAzBC,AAsBN,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,SA7BC,AAsBN,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCKvB,OAAO;CoCJN;;AAMT,AAGE,OAHK,CAGL,SAAS;AAFX,gBAAgB,CAEd,SAAS;AADX,SAAS,AAAA,IAAK,CAAA,aAAa,EACzB,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,OANG,CAGL,SAAS,AAGN,MAAM;AALX,gBAAgB,CAEd,SAAS,AAGN,MAAM;AAJX,SAAS,AAAA,IAAK,CAAA,aAAa,EACzB,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,OAAO,CAEV,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,OAAO,CAEV,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,OAAO,CAEV,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,OAAO,CAEV,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,OAAO,CAEV,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,gBAAgB,CACnB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCgChB,OAAO;CoCtBR;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCkBnB,OAAO;CoCjBV;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCMvB,OAAO;CoCLN;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,YAHM,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCiChB,OAAO;CoCvBR;;AAdP,AAMQ,YANI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,YAAY,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,YAXI,AACT,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,YAjBQ,AACT,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCmBnB,OAAO;CoClBV;;AAnBL,AAyBQ,YAzBI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,YA7BI,AAsBT,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCOvB,OAAO;CoCNN;;AAMT,AAGE,UAHQ,CAGR,SAAS;AAFX,mBAAmB,CAEjB,SAAS;AADX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,UANM,CAGR,SAAS,AAGN,MAAM;AALX,mBAAmB,CAEjB,SAAS,AAGN,MAAM;AAJX,YAAY,AAAA,IAAK,CAAA,aAAa,EAC5B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,UAAU,CAEb,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,UAAU,CAEb,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,UAAU,CAEb,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,UAAU,CAEb,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,UAAU,CAEb,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,mBAAmB,CACtB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,WAHK,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCkChB,OAAO;CoCxBR;;AAdP,AAMQ,WANG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,WAAW,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,WAXG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,WAjBO,AACR,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCoBnB,OAAO;CoCnBV;;AAnBL,AAyBQ,WAzBG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,WA7BG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCQvB,OAAO;CoCPN;;AAMT,AAGE,SAHO,CAGP,SAAS;AAFX,kBAAkB,CAEhB,SAAS;AADX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,SANK,CAGP,SAAS,AAGN,MAAM;AALX,kBAAkB,CAEhB,SAAS,AAGN,MAAM;AAJX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,SAAS,CAEZ,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,SAAS,CAEZ,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,SAAS,CAEZ,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,SAAS,CAEZ,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCmChB,OAAO;CoCzBR;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCqBnB,OAAO;CoCpBV;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCSvB,OAAO;CoCRN;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCoChB,OAAO;CoC1BR;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCsBnB,OAAO;CoCrBV;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCUvB,OAAO;CoCTN;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,WAHK,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCEf,OAAO;CoCQT;;AAdP,AAMQ,WANG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,WAAW,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCgFD,OAAO;CoC/EZ;;AATT,AAWQ,WAXG,AACR,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,WAjBO,AACR,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCZlB,OAAO;CoCaX;;AAnBL,AAyBQ,WAzBG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,WA7BG,AAsBR,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpCxBtB,OAAO;CoCyBP;;AAMT,AAGE,SAHO,CAGP,SAAS;AAFX,kBAAkB,CAEhB,SAAS;AADX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,CAAC;EACR,KAAK,EpC+CK,qBAAO;CoC1ClB;;AATH,AAMI,SANK,CAGP,SAAS,AAGN,MAAM;AALX,kBAAkB,CAEhB,SAAS,AAGN,MAAM;AAJX,WAAW,AAAA,IAAK,CAAA,aAAa,EAC3B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpC4CG,OAAO;CoC3ChB;;AAIL,AAGI,KAHC,AAAA,SAAS,CAEZ,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,SAAS,CAEZ,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCyBG,OAAO;CoCxBhB;;AAfL,AAiBI,KAjBC,AAAA,SAAS,CAEZ,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpCqBX,OAAO;CoCpBhB;;AAnBL,AAqBI,KArBC,AAAA,SAAS,CAEZ,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,SAAS,CAEZ,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,kBAAkB,CACrB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,KAAoB;EAChC,KAAK,EpCeG,OAAO;CoCdhB;;AA1EL,AAGM,UAHI,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCQf,OAAO;CoCET;;AAdP,AAMQ,UANE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,UAAU,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,UAXE,AACP,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,UAjBM,AACP,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCNlB,OAAO;CoCOX;;AAnBL,AAyBQ,UAzBE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,UA7BE,AAsBP,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpClBtB,OAAO;CoCmBP;;AAMT,AAGE,QAHM,CAGN,SAAS;AAFX,iBAAiB,CAEf,SAAS;AADX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,QANI,CAGN,SAAS,AAGN,MAAM;AALX,iBAAiB,CAEf,SAAS,AAGN,MAAM;AAJX,UAAU,AAAA,IAAK,CAAA,aAAa,EAC1B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,QAAQ,CAEX,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,QAAQ,CAEX,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,QAAQ,CAEX,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,QAAQ,CAEX,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,QAAQ,CAEX,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,iBAAiB,CACpB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AA1EL,AAGM,eAHS,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAAC;EACX,gBAAgB,EpCUf,OAAO;CoCAT;;AAdP,AAMQ,eANO,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY;AAHlB,eAAe,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAIV,CAAC,CAAC;EACA,KAAK,EpCFN,OAAO;CoCGP;;AATT,AAWQ,eAXO,AACZ,UAAU,AACR,IAAK,CAAA,aAAa,EACjB,YAAY,CAQV,CAAC,AAAA,OAAO,CAAC;EACP,KAAK,EpC4ED,OAAO;CoC3EZ;;AAbT,AAiBI,eAjBW,AACZ,UAAU,AAgBR,aAAa,CAAC;EACb,UAAU,EAAE,GAAG,CAAC,KAAK,CpCJlB,OAAO;CoCKX;;AAnBL,AAyBQ,eAzBO,AAsBZ,kBAAkB,CACjB,YAAY,CACV,CAAC,AACE,MAAM,CAAC;EACN,UAAU,EAAE,GAAG,CAAC,KAAK,CpCjBtB,OAAO;CoCkBP;;AA3BT,AA6BQ,eA7BO,AAsBZ,kBAAkB,CACjB,YAAY,CACV,CAAC,AAKE,OAAO,CAAC;EACP,UAAU,EAAE,GAAG,CAAC,KAAK,CpChBtB,OAAO;CoCiBP;;AAMT,AAGE,aAHW,CAGX,SAAS;AAFX,sBAAsB,CAEpB,SAAS;AADX,eAAe,AAAA,IAAK,CAAA,aAAa,EAC/B,SAAS,CAAC;EACR,KAAK,EpCnCA,wBAAO;CoCwCb;;AATH,AAMI,aANS,CAGX,SAAS,AAGN,MAAM;AALX,sBAAsB,CAEpB,SAAS,AAGN,MAAM;AAJX,eAAe,AAAA,IAAK,CAAA,aAAa,EAC/B,SAAS,AAGN,MAAM,CAAC;EACN,KAAK,EpCtCF,OAAO;CoCuCX;;AAIL,AAGI,KAHC,AAAA,aAAa,CAEhB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAE9B,MAAM,CAAC,EAAE;AAHb,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAC9B,MAAM,CAAC,EAAE;AAFb,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAE9B,MAAM,CAAC,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;CACb;;AANL,AAQI,KARC,AAAA,aAAa,CAEhB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AARvC,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AATtB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AAVvB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAXzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAM9B,KAAK,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,MAAM;AAPvC,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAO9B,KAAK,CAAC,EAAE,AAAA,IAAI,AAAA,MAAM;AARtB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAQ9B,KAAK,CAAC,EAAE,AAAA,KAAK,AAAA,MAAM;AATvB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAS9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AAVzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAU9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAkB;EAC9B,KAAK,EpCzDF,OAAO;CoC0DX;;AAfL,AAiBI,KAjBC,AAAA,aAAa,CAEhB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ;AAhB1B,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAe9B,KAAK,CAAC,EAAE,AAAA,MAAM,AAAA,QAAQ,CAAC;EACrB,mBAAmB,EpC7DhB,OAAO;CoC8DX;;AAnBL,AAqBI,KArBC,AAAA,aAAa,CAEhB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AArBnB,KAAK,AAAA,aAAa,CAEhB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM;AArBzB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAmB9B,KAAK,CAAC,EAAE,AAAA,OAAO;AApBnB,KAAK,AAAA,sBAAsB,CACzB,gCAAgC,CAoB9B,KAAK,CAAC,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACpB,UAAU,EAAE,OAAoB;EAChC,KAAK,EpCnEF,OAAO;CoCoEX;;AY+UP,AAEI,aAFS,CACX,SAAS,AACN,YAAY,CAAC,SAAS,CAAC;EACtB,WAAW,EAAE,CAAC;CACf;;AC7ZL,AACE,aADW,CACX,QAAQ,CAAC;EACP,gBAAgB,EjDcT,IAAI;EiDbX,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EjD+iByB,IAAI;CiD9iBrC;;AAKH,AAEI,cAFU,AACX,WAAW,CACV,aAAa;AAFjB,cAAc,AACX,WAAW,CAEV,aAAa,CAAC;EACZ,YAAY,EjDNP,OAAO;CiDOb;;AALL,AAaI,cAbU,AAQX,WAAW,CAKV,MAAM,EAbV,cAAc,AASX,aAAa,CAIZ,MAAM,EAbV,cAAc,AAUX,QAAQ,CAGP,MAAM,EAbV,cAAc,AAWX,UAAU,CAET,MAAM,EAbV,cAAc,AAYX,WAAW,CACV,MAAM,CAAC;EACL,KAAK,EjDxBA,OAAO;EiDyBZ,WAAW,EAAE,YAAY;CAC1B;;ACjCL,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,ElDojB2B,IAAI;CkD/iBvC;;AATD,AAME,iBANe,AAMd,MAAM,CAAC;EACN,QAAQ,EAAE,KAAK;CAChB;;AAGH,AAAA,gBAAgB,CAAC;EACf,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,OAAO,ElDyiB2B,IAAI;CkDpiBvC;;AATD,AAME,gBANc,AAMb,MAAM,CAAC;EACN,QAAQ,EAAE,KAAK;CAChB;;AAGH,AAAA,oBAAoB,CAAC;EACnB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,OAAO,ElD8hB2B,IAAI;CkDzhBvC;;AATD,AAME,oBANkB,AAMjB,MAAM,CAAC;EACN,QAAQ,EAAE,KAAK;CAChB;;AAGH,AAAA,mBAAmB,CAAC;EAClB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,OAAO,ElDmhB2B,IAAI;CkD9gBvC;;AATD,AAME,mBANiB,AAMhB,MAAM,CAAC;EACN,QAAQ,EAAE,KAAK;CAChB;;AAGH,AP1CE,MO0CI,AP1CH,WAAW,CAAE;EACZ,UAAU,E3C6BJ,sBAAO,C2C7BgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,WAAW,CAIR,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,WAAW,CAUV,aAAa,CAAC;EACZ,UAAU,E3CmBN,uBAAO;E2ClBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,aAAa,CAAA;EACZ,UAAU,E3CUH,wBAAO,C2CVe,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,aAAa,CAIV,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,aAAa,CAUZ,aAAa,CAAC;EACZ,UAAU,E3CAL,yBAAO;E2CCZ,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,WAAW,CAAE;EACZ,UAAU,E3CoCJ,sBAAO,C2CpCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,WAAW,CAIR,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,WAAW,CAUV,aAAa,CAAC;EACZ,UAAU,E3C0BN,uBAAO;E2CzBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CsCJ,uBAAO,C2CtCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3C4BN,wBAAO;E2C3BX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,WAAW,CAAE;EACZ,UAAU,E3CmCJ,sBAAO,C2CnCgB,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,WAAW,CAUV,aAAa,CAAC;EACZ,UAAU,E3CyBN,uBAAO;E2CxBX,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,E3CiCJ,sBAAO,C2CjCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,UAAU,CAIP,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,E3CuBN,uBAAO;E2CtBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,SAAS,CAAI;EACZ,UAAU,E3CKH,wBAAO,C2CLe,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,SAAS,CAUR,aAAa,CAAC;EACZ,UAAU,E3CLL,yBAAO;E2CMZ,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CYH,qBAAO,C2CZe,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3CEL,sBAAO;E2CDZ,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,ETAP,oBAAO,CSAmB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,ETVT,qBAAO;ESWR,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,SAAS,CAAI;EACZ,UAAU,ETEN,uBAAO,CSFkB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,SAAS,CAIN,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,SAAS,CAUR,aAAa,CAAC;EACZ,UAAU,ETRR,wBAAO;ESST,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,ETGP,sBAAO,CSHmB,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,ETPT,uBAAO;ESQR,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,WAAW,CAAE;EACZ,UAAU,ETKJ,uBAAO,CSLgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,WAAW,CAIR,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,WAAW,CAUV,aAAa,CAAC;EACZ,UAAU,ETLN,wBAAO;ESMX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,ETOL,sBAAO,CSPiB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,UAAU,CAIP,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,ETHP,uBAAO;ESIV,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3C6BJ,sBAAO,C2C7BgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3CmBN,uBAAO;E2ClBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,E3C8BJ,uBAAO,C2C9BgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,UAAU,CAIP,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,E3CoBN,wBAAO;E2CnBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,E3C+BJ,uBAAO,C2C/BgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,UAAU,CAIP,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,E3CqBN,wBAAO;E2CpBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CgCJ,uBAAO,C2ChCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3CsBN,wBAAO;E2CrBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,OAAO,CAAM;EACZ,UAAU,E3CiCJ,sBAAO,C2CjCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,OAAO,CAIJ,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,OAAO,CAUN,aAAa,CAAC;EACZ,UAAU,E3CuBN,uBAAO;E2CtBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,E3CkCJ,uBAAO,C2ClCgB,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,E3CwBN,wBAAO;E2CvBX,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,UAAU,CAAG;EACZ,UAAU,E3CmCJ,sBAAO,C2CnCgB,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,UAAU,CAUT,aAAa,CAAC;EACZ,UAAU,E3CyBN,uBAAO;E2CxBX,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,SAAS,CAAI;EACZ,UAAU,E3CoCJ,sBAAO,C2CpCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,SAAS,CAIN,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,SAAS,CAUR,aAAa,CAAC;EACZ,UAAU,E3C0BN,uBAAO;E2CzBX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CqCJ,uBAAO,C2CrCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3C2BN,wBAAO;E2C1BX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CsCJ,uBAAO,C2CtCgB,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3C4BN,wBAAO;E2C3BX,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,SAAS,CAAI;EACZ,UAAU,E3CIH,wBAAO,C2CJe,UAAU;CAaxC;;AO4BH,APhCI,MOgCE,AP1CH,SAAS,CAUR,aAAa,CAAC;EACZ,UAAU,E3CNL,yBAAO;E2COZ,KAAK,E3C2EK,OAAO;C2C1ElB;;AO6BL,AP1CE,MO0CI,AP1CH,QAAQ,CAAK;EACZ,UAAU,E3CUH,wBAAO,C2CVe,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,QAAQ,CAIL,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,QAAQ,CAUP,aAAa,CAAC;EACZ,UAAU,E3CAL,yBAAO;E2CCZ,KAAK,E3CPA,OAAO;C2CQb;;AO6BL,AP1CE,MO0CI,AP1CH,aAAa,CAAA;EACZ,UAAU,E3CYH,qBAAO,C2CZe,UAAU;CAaxC;;AO4BH,APtCM,MOsCA,AP1CH,aAAa,CAIV,MAAM,CAAC;EACL,KAAK,E3CAF,OAAO;E2CCV,WAAW,EAAE,YAAY;CAC1B;;AOmCP,APhCI,MOgCE,AP1CH,aAAa,CAUZ,aAAa,CAAC;EACZ,UAAU,E3CEL,sBAAO;E2CDZ,KAAK,E3CPA,OAAO;C2CQb;;AQfL,AACE,IADE,AACD,SAAS,EADZ,IAAI,AAED,SAAS,CAAC;EACT,MAAM,EAAE,WAAW;CACpB;;AAJH,AAOE,IAPE,AAOD,SAAS,CAAC;EzBNT,aAAa,EyBOU,CAAC;EACxB,YAAY,EAAE,GAAG;EACjB,UAAU,EAAE,IAAI;CACjB;;AAXH,AAcE,IAdE,AAcD,SAAS,CAAC;EACT,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;CAgBnB;;AAhCH,AAkBI,IAlBA,AAcD,SAAS,GAIN,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EAAa;EACnB,UAAU,EnDZL,OAAO;EmDaZ,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,UAAU,EAAE,KAAK;EACjB,GAAG,EAAE,CAAC;CACP;;AAGH,AAAA,QAAQ,CAlCV,IAAI,CAkCS;EACT,SAAS,EnDwMiB,QAAwB,CmDxMzB,UAAU;CACpC;;AAIH,AAAA,YAAY,CAAC;EACX,gBAAgB,EnDjCP,OAAO;EmDkChB,YAAY,EjBuJgB,IAAI;EiBtJhC,KAAK,EjBqJgB,IAAI;CiB7I1B;;AAXD,AAKE,YALU,AAKT,MAAM,EALT,YAAY,AAMT,OAAO,EANV,YAAY,AAOT,MAAM,CAAC;EACN,gBAAgB,EAAE,OAA4C;EAC9D,KAAK,EAAE,OAAkC;CAC1C;;AAIH,AAAA,QAAQ,CAAC;EzBrDL,aAAa,EyBsDQ,GAAG;EAC1B,gBAAgB,EnDhDP,OAAO;EmDiDhB,MAAM,EAAE,GAAG,CAAC,KAAK,CjBwIW,IAAI;EiBvIhC,KAAK,EnD7CI,OAAO;EmD8ChB,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,aAAa;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,QAAQ;EACjB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;CAgCnB;;AA3CD,AAcE,QAdM,GAcJ,GAAG;AAdP,QAAQ,GAeJ,IAAI;AAfR,QAAQ,GAgBJ,IAAI;AAhBR,QAAQ,GAiBJ,IAAI;AAjBR,QAAQ,GAkBJ,UAAU;AAlBd,QAAQ,GAmBJ,IAAI,CAAC;EACL,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,IAAI;CAChB;;AAtBH,AAwBE,QAxBM,AAwBL,MAAM,CAAC;EACN,UAAU,EnDvEH,OAAO;EmDwEd,YAAY,EAAE,OAAyC;EACvD,KAAK,EjB+Gc,IAAI;CiB9GxB;;AA5BH,AA8BE,QA9BM,AA8BL,OAAO,EA9BV,QAAQ,AA+BL,MAAM,CAAC;ExBzEJ,UAAU,EwB0EQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CnDrE5B,oBAAI;CmDsEZ;;AAjCH,AAoCE,QApCM,GAoCJ,MAAM,CAAC;EACP,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,KAAK;EACZ,GAAG,EAAE,IAAI;CACV;;AAKH,AAAA,OAAO,CAAC;ElCJN,OAAO,EiBkGa,QAAO,CACP,OAAM;EhCzEtB,SAAS,EAtCE,OAAC;EechB,WAAW,EjByGiB,GAAG;E0B3M7B,aAAa,EQsMS,OAAM;CiBhG/B;;ACtGD,AAAA,QAAQ,CAAC;E1BAL,aAAa,E1BgNa,OAAM;EoD1MhC,UAAU,ElBuMP,4DAAgF;EkBlMrF,gBAAgB,EpDLP,OAAO;EoDMhB,WAAW,EAAE,GAAG,CAAC,KAAK,CpDJb,OAAO;EoDKhB,aAAa,EpDuGN,IAAI;EoDtGX,OAAO,EAAE,IAAI;CA+Bd;;AA7CD,AAgBE,QAhBM,CAgBN,CAAC,CAAC;EACA,KAAK,EpDJE,OAAO;EoDKd,eAAe,EAAE,SAAS;CAK3B;;AAvBH,AAoBI,QApBI,CAgBN,CAAC,AAIE,MAAM,CAAC;EACN,KAAK,EpDbA,OAAO;CoDcb;;AAtBL,AAyBE,QAzBM,CAyBN,CAAC,AAAA,WAAW,CAAC;EACX,aAAa,EAAE,CAAC;CACjB;;AA3BH,AA8BE,QA9BM,AA8BL,eAAe,CAAC;EACf,iBAAiB,EAAE,OAAkC;CACtD;;AAhCH,AAkCE,QAlCM,AAkCL,gBAAgB,CAAC;EAChB,iBAAiB,EAAE,OAAmC;CACvD;;AApCH,AAsCE,QAtCM,AAsCL,aAAa,CAAC;EACb,iBAAiB,EAAE,OAAgC;CACpD;;AAxCH,AA0CE,QA1CM,AA0CL,gBAAgB,CAAC;EAChB,iBAAiB,EAAE,OAAmC;CACvD;;AC7CH,AACE,MADI,CACJ,KAAK,CAAC;EACJ,YAAY,EAAE,IAAI;CACnB;;AAHH,AAKE,MALI,CAKJ,MAAM,CAAC;EACL,KAAK,ErDWE,IAAI;EqDVX,OAAO,EAAE,EAAE;CAKZ;;AAZH,AASI,MATE,CAKJ,MAAM,AAIH,MAAM,CAAC;EACN,OAAO,EAAE,EAAE;CACZ;;AAXL,AAcE,MAdI,CAcJ,CAAC,CAAC;EACA,KAAK,ErDRE,OAAO;EqDSd,eAAe,EAAE,SAAS;CAC3B;;AAKD,AAAA,cAAc,CAAG;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDQJ,OAAO;EqDPb,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,sBAAsB,CAAG;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,sBqC2BsB,CrC3BtB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,sBqCuBsB,CrCvBtB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,gBAAgB,CAAC;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDXH,OAAO;EqDYd,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,wBAAwB,CAAC;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,wBqC2BwB,CrC3BxB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,wBqCuBwB,CrCvBxB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,cAAc,CAAG;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDeJ,OAAO;EqDdb,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,sBAAsB,CAAG;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,sBqC2BsB,CrC3BtB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,sBqCuBsB,CrCvBtB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,WAAW,CAAM;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDiBJ,OAAO;EqDhBb,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,mBAAmB,CAAM;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,mBqC2BmB,CrC3BnB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,mBqCuBmB,CrCvBnB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,cAAc,CAAG;EACf,KAAK,ErDkEO,OAAO;EqDjEnB,UAAU,ErDcJ,OAAO;EqDbb,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,sBAAsB,CAAG;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,sBqC2BsB,CrC3BtB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,sBqCuBsB,CrCvBtB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,aAAa,CAAI;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDYJ,OAAO;EqDXb,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,qBAAqB,CAAI;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,qBqC2BqB,CrC3BrB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,qBqCuBqB,CrCvBrB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,YAAY,CAAK;EACf,KAAK,ErDkEO,OAAO;EqDjEnB,UAAU,ErDhBH,OAAO;EqDiBd,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,oBAAoB,CAAK;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,oBqC2BoB,CrC3BpB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,oBqCuBoB,CrCvBpB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AqCeD,AAAA,WAAW,CAAM;EACf,KAAK,ErDhBE,OAAO;EqDiBd,UAAU,ErDTH,OAAO;EqDUd,YAAY,EAAE,OAAkB;CACjC;;AAED,AAAA,mBAAmB,CAAM;ErC/BzB,KAAK,EjBmFG,OAAwD;E6B9E9D,gBAAgB,E7B8EV,OAAwD;EiBjFhE,YAAY,EjBiFJ,OAAwD;CsDlD/D;;AAFD,ArC3BA,mBqC2BmB,CrC3BnB,EAAE,CAAC;EACD,gBAAgB,EAAE,OAAmB;CACtC;;AqCyBD,ArCvBA,mBqCuBmB,CrCvBnB,WAAW,CAAC;EACV,KAAK,EAAE,OAAmB;CAC3B;;AsCPH,AACE,MADI,AACH,IAAK,CAAA,WAAW,EAAE;EACjB,KAAK,EAAE,OAAO;CACf;;AAHH,AAOI,MAPE,AAMH,iBAAiB,CAChB,KAAK,CAAC,EAAE,AAAA,UAAW,CAAA,CAAC,EAAE,EAAE,CAAC;EACvB,gBAAgB,EtDDX,OAAO;EsDEZ,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CtDApB,OAAO,EsDCA,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CtDDrB,OAAO;EsDEZ,QAAQ,EAAE,MAAM;EAChB,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,EAAE;CACZ;;AAfL,AAmBQ,MAnBF,AAMH,iBAAiB,AAWf,WAAW,CACV,KAAK,CAAC,EAAE,AACL,UAAW,CAAA,CAAC,EAAE,EAAE,CAAC;EAChB,gBAAgB,EtDJf,OAAO;EsDKR,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CtDuSL,OAAuB,EsDtS/B,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CtDsSN,OAAuB;CsDrS5C;;AAvBT,AA8BI,MA9BE,AA6BH,UAAU;AA7Bb,MAAM,AA6BH,UAAU,CAET,EAAE;AA/BN,MAAM,AA6BH,UAAU,CAGT,EAAE,CAAC;EACD,MAAM,EAAE,CAAC;CACV;;AAlCL,AAuCI,MAvCE,AAsCH,YAAY;AAtCf,MAAM,AAsCH,YAAY,CAEX,EAAE;AAxCN,MAAM,AAsCH,YAAY,CAGX,EAAE,CAAC;EACD,UAAU,EAAE,MAAM;CACnB;;AA3CL,AA+CI,MA/CE,AA8CH,oBAAoB,CACnB,KAAK,GAAG,EAAE,GAAG,EAAE;AA/CnB,MAAM,AA8CH,oBAAoB,CAEnB,KAAK,GAAG,EAAE,GAAG,EAAE;AAhDnB,MAAM,AA8CH,oBAAoB,CAGnB,KAAK,GAAG,EAAE,GAAG,EAAE;AAjDnB,MAAM,AA8CH,oBAAoB,CAInB,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACd,cAAc,EAAE,MAAM;CACvB;;AAGH,AAKI,UALM,AAAA,IAAI,CAvDhB,MAAM,CAwDF,KAAK,GAAG,EAAE,GAAG,EAAE,AAIZ,cAAc;AALnB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CAyDF,KAAK,GAAG,EAAE,GAAG,EAAE,AAGZ,cAAc;AALnB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CA0DF,KAAK,GAAG,EAAE,GAAG,EAAE,AAEZ,cAAc;AALnB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CA2DF,KAAK,GAAG,EAAE,GAAG,EAAE,AACZ,cAAc,CAAC;EACd,YAAY,EtD+DT,MAAe;CsD9DnB;;AAPL,AASI,UATM,AAAA,IAAI,CAvDhB,MAAM,CAwDF,KAAK,GAAG,EAAE,GAAG,EAAE,AAQZ,aAAa;AATlB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CAyDF,KAAK,GAAG,EAAE,GAAG,EAAE,AAOZ,aAAa;AATlB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CA0DF,KAAK,GAAG,EAAE,GAAG,EAAE,AAMZ,aAAa;AATlB,UAAU,AAAA,IAAI,CAvDhB,MAAM,CA2DF,KAAK,GAAG,EAAE,GAAG,EAAE,AAKZ,aAAa,CAAC;EACb,aAAa,EtD2DV,MAAe;CsD1DnB;;AClEP,AACE,iBADe,AACd,KAAK,EADR,iBAAiB,AAEd,MAAM,CAAC;EACN,gBAAgB,EAAE,IAAI;CACvB;;AAJH,AAME,iBANe,GAMb,GAAG;AANP,iBAAiB,GAOb,IAAI;AAPR,iBAAiB,GAQb,IAAI;AARR,iBAAiB,GASb,IAAI;AATR,iBAAiB,GAUb,UAAU;AAVd,iBAAiB,GAWb,IAAI,CAAC;EACL,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,KAAK;EACjB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,OAAO,EAAE,CAAC;CACX" -} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css deleted file mode 100644 index da3880b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * AdminLTE v3.0.0 - * Only Components - * Author: Colorlib - * Website: AdminLTE.io - * License: Open source - MIT - */.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.375rem .75rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:calc(2.25rem + 2px)}.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(2.875rem + 2px)}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion{line-height:calc(2.875rem + 2px)}.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:calc(1.8125rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion{line-height:calc(1.8125rem + 2px)}label:not(.form-check-label,.custom-file-label){font-weight:700}.warning-feedback{font-size:80%;color:#ffc107;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.25rem;font-size:.875rem;background-color:rgba(255,193,7,.9);color:#1f2d3d;display:none;line-height:1.5;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#ffc107}.form-control.is-warning:focus{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:2.25rem;background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-warning{border-color:#ffc107}.custom-select.is-warning:focus{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip{display:block}.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#ffc107}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#ffc107}.custom-control-input.is-warning~.custom-control-label::before{border-color:#ffc107}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label::before{background-color:#ffce3a;border-color:#ffce3a}.custom-control-input.is-warning:focus~.custom-control-label::before{box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label::before{border-color:#ffc107}.custom-file-input.is-warning~.custom-file-label{border-color:#ffc107}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#ffc107;box-shadow:0 0 0 0 rgba(255,193,7,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label::before{background:#007bff;border-color:#004a99}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label::after{background:#003e80}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label::before{background:#007bff;border-color:#004a99}.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label::after{background:#99caff}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label::before{background:#6c757d;border-color:#3d4246}.custom-switch.custom-switch-off-secondary .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label::after{background:#313539}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label::before{background:#6c757d;border-color:#3d4246}.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label::after{background:#bcc1c6}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label::before{background:#28a745;border-color:#145523}.custom-switch.custom-switch-off-success .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label::after{background:#0f401b}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label::before{background:#28a745;border-color:#145523}.custom-switch.custom-switch-on-success .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label::after{background:#86e29b}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label::before{background:#17a2b8;border-color:#0c525d}.custom-switch.custom-switch-off-info .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label::after{background:#093e47}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label::before{background:#17a2b8;border-color:#0c525d}.custom-switch.custom-switch-on-info .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label::after{background:#7adeee}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label::before{background:#ffc107;border-color:#a07800}.custom-switch.custom-switch-off-warning .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label::after{background:#876500}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label::before{background:#ffc107;border-color:#a07800}.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label::after{background:#ffe7a0}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label::before{background:#dc3545;border-color:#921925}.custom-switch.custom-switch-off-danger .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label::after{background:#7c151f}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label::before{background:#dc3545;border-color:#921925}.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label::after{background:#f3b7bd}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label::before{background:#f8f9fa;border-color:#bdc6d0}.custom-switch.custom-switch-off-light .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(248,249,250,.25)}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label::after{background:#aeb9c5}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label::before{background:#f8f9fa;border-color:#bdc6d0}.custom-switch.custom-switch-on-light .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(248,249,250,.25)}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label::after{background:#fff}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label::before{background:#343a40;border-color:#060708}.custom-switch.custom-switch-off-dark .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label::after{background:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label::before{background:#343a40;border-color:#060708}.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label::after{background:#7a8793}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label::before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-off-navy .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label::after{background:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label::before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label::after{background:#006ad8}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label::before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-off-olive .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label::after{background:#193e2d}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label::before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label::after{background:#99d6bb}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label::before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-off-lime .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label::after{background:#008138}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label::before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label::after{background:#9affc6}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label::before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label::after{background:#7b0861}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label::before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label::after{background:#f9a2e5}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label::before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-off-maroon .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label::after{background:#670d2e}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label::before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label::after{background:#f29aba}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label::before{background:#007bff;border-color:#004a99}.custom-switch.custom-switch-off-blue .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label::after{background:#003e80}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label::before{background:#007bff;border-color:#004a99}.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label::after{background:#99caff}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label::before{background:#6610f2;border-color:#3d0894}.custom-switch.custom-switch-off-indigo .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(102,16,242,.25)}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label::after{background:#33077c}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label::before{background:#6610f2;border-color:#3d0894}.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(102,16,242,.25)}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label::after{background:#c3a1fa}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label::before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-off-purple .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label::after{background:#382063}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label::before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label::after{background:#c7b5e7}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label::before{background:#e83e8c;border-color:#ac145a}.custom-switch.custom-switch-off-pink .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(232,62,140,.25)}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label::after{background:#95124e}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label::before{background:#e83e8c;border-color:#ac145a}.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(232,62,140,.25)}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label::after{background:#f8c7dd}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label::before{background:#dc3545;border-color:#921925}.custom-switch.custom-switch-off-red .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label::after{background:#7c151f}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label::before{background:#dc3545;border-color:#921925}.custom-switch.custom-switch-on-red .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label::after{background:#f3b7bd}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label::before{background:#fd7e14;border-color:#aa4e01}.custom-switch.custom-switch-off-orange .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(253,126,20,.25)}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label::after{background:#904201}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label::before{background:#fd7e14;border-color:#aa4e01}.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(253,126,20,.25)}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label::after{background:#fed1ac}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label::before{background:#ffc107;border-color:#a07800}.custom-switch.custom-switch-off-yellow .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label::after{background:#876500}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label::before{background:#ffc107;border-color:#a07800}.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label::after{background:#ffe7a0}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label::before{background:#28a745;border-color:#145523}.custom-switch.custom-switch-off-green .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label::after{background:#0f401b}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label::before{background:#28a745;border-color:#145523}.custom-switch.custom-switch-on-green .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label::after{background:#86e29b}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label::before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-off-teal .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label::after{background:#0e5b44}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label::before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label::after{background:#94eed3}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label::before{background:#17a2b8;border-color:#0c525d}.custom-switch.custom-switch-off-cyan .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label::after{background:#093e47}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label::before{background:#17a2b8;border-color:#0c525d}.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label::after{background:#7adeee}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label::before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-off-white .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,255,255,.25)}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label::after{background:#bfbfbf}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label::before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-on-white .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,255,255,.25)}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label::after{background:#fff}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label::before{background:#6c757d;border-color:#3d4246}.custom-switch.custom-switch-off-gray .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label::after{background:#313539}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label::before{background:#6c757d;border-color:#3d4246}.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label::after{background:#bcc1c6}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label::before{background:#343a40;border-color:#060708}.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label::after{background:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label::before{background:#343a40;border-color:#060708}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label::after{background:#7a8793}.custom-range.custom-range-primary:focus{outline:0}.custom-range.custom-range-primary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-primary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-primary:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-primary::-webkit-slider-thumb{background-color:#007bff}.custom-range.custom-range-primary::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-primary::-moz-range-thumb{background-color:#007bff}.custom-range.custom-range-primary::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-primary::-ms-thumb{background-color:#007bff}.custom-range.custom-range-primary::-ms-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-secondary:focus{outline:0}.custom-range.custom-range-secondary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-secondary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-secondary:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-secondary::-webkit-slider-thumb{background-color:#6c757d}.custom-range.custom-range-secondary::-webkit-slider-thumb:active{background-color:#caced1}.custom-range.custom-range-secondary::-moz-range-thumb{background-color:#6c757d}.custom-range.custom-range-secondary::-moz-range-thumb:active{background-color:#caced1}.custom-range.custom-range-secondary::-ms-thumb{background-color:#6c757d}.custom-range.custom-range-secondary::-ms-thumb:active{background-color:#caced1}.custom-range.custom-range-success:focus{outline:0}.custom-range.custom-range-success:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-success:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-success:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-success::-webkit-slider-thumb{background-color:#28a745}.custom-range.custom-range-success::-webkit-slider-thumb:active{background-color:#9be7ac}.custom-range.custom-range-success::-moz-range-thumb{background-color:#28a745}.custom-range.custom-range-success::-moz-range-thumb:active{background-color:#9be7ac}.custom-range.custom-range-success::-ms-thumb{background-color:#28a745}.custom-range.custom-range-success::-ms-thumb:active{background-color:#9be7ac}.custom-range.custom-range-info:focus{outline:0}.custom-range.custom-range-info:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-info:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-info:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-info::-webkit-slider-thumb{background-color:#17a2b8}.custom-range.custom-range-info::-webkit-slider-thumb:active{background-color:#90e4f1}.custom-range.custom-range-info::-moz-range-thumb{background-color:#17a2b8}.custom-range.custom-range-info::-moz-range-thumb:active{background-color:#90e4f1}.custom-range.custom-range-info::-ms-thumb{background-color:#17a2b8}.custom-range.custom-range-info::-ms-thumb:active{background-color:#90e4f1}.custom-range.custom-range-warning:focus{outline:0}.custom-range.custom-range-warning:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-warning:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-warning:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-warning::-webkit-slider-thumb{background-color:#ffc107}.custom-range.custom-range-warning::-webkit-slider-thumb:active{background-color:#ffeeba}.custom-range.custom-range-warning::-moz-range-thumb{background-color:#ffc107}.custom-range.custom-range-warning::-moz-range-thumb:active{background-color:#ffeeba}.custom-range.custom-range-warning::-ms-thumb{background-color:#ffc107}.custom-range.custom-range-warning::-ms-thumb:active{background-color:#ffeeba}.custom-range.custom-range-danger:focus{outline:0}.custom-range.custom-range-danger:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-danger:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-danger:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-danger::-webkit-slider-thumb{background-color:#dc3545}.custom-range.custom-range-danger::-webkit-slider-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-danger::-moz-range-thumb{background-color:#dc3545}.custom-range.custom-range-danger::-moz-range-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-danger::-ms-thumb{background-color:#dc3545}.custom-range.custom-range-danger::-ms-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-light:focus{outline:0}.custom-range.custom-range-light:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(248,249,250,.25)}.custom-range.custom-range-light:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(248,249,250,.25)}.custom-range.custom-range-light:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(248,249,250,.25)}.custom-range.custom-range-light::-webkit-slider-thumb{background-color:#f8f9fa}.custom-range.custom-range-light::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-light::-moz-range-thumb{background-color:#f8f9fa}.custom-range.custom-range-light::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-light::-ms-thumb{background-color:#f8f9fa}.custom-range.custom-range-light::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-dark:focus{outline:0}.custom-range.custom-range-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-dark::-webkit-slider-thumb{background-color:#343a40}.custom-range.custom-range-dark::-webkit-slider-thumb:active{background-color:#88939e}.custom-range.custom-range-dark::-moz-range-thumb{background-color:#343a40}.custom-range.custom-range-dark::-moz-range-thumb:active{background-color:#88939e}.custom-range.custom-range-dark::-ms-thumb{background-color:#343a40}.custom-range.custom-range-dark::-ms-thumb:active{background-color:#88939e}.custom-range.custom-range-navy:focus{outline:0}.custom-range.custom-range-navy:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy::-webkit-slider-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-webkit-slider-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-moz-range-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-moz-range-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-ms-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-ms-thumb:active{background-color:#0077f2}.custom-range.custom-range-olive:focus{outline:0}.custom-range.custom-range-olive:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive::-webkit-slider-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-webkit-slider-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-moz-range-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-moz-range-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-ms-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-ms-thumb:active{background-color:#abdec7}.custom-range.custom-range-lime:focus{outline:0}.custom-range.custom-range-lime:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime::-webkit-slider-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-webkit-slider-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-moz-range-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-moz-range-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-ms-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-ms-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-fuchsia:focus{outline:0}.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia::-webkit-slider-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-moz-range-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-moz-range-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-ms-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-ms-thumb:active{background-color:#fbbaec}.custom-range.custom-range-maroon:focus{outline:0}.custom-range.custom-range-maroon:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon::-webkit-slider-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-webkit-slider-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-moz-range-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-moz-range-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-ms-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-ms-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-blue:focus{outline:0}.custom-range.custom-range-blue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-blue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-blue:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,123,255,.25)}.custom-range.custom-range-blue::-webkit-slider-thumb{background-color:#007bff}.custom-range.custom-range-blue::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-blue::-moz-range-thumb{background-color:#007bff}.custom-range.custom-range-blue::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-blue::-ms-thumb{background-color:#007bff}.custom-range.custom-range-blue::-ms-thumb:active{background-color:#b3d7ff}.custom-range.custom-range-indigo:focus{outline:0}.custom-range.custom-range-indigo:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(102,16,242,.25)}.custom-range.custom-range-indigo:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(102,16,242,.25)}.custom-range.custom-range-indigo:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(102,16,242,.25)}.custom-range.custom-range-indigo::-webkit-slider-thumb{background-color:#6610f2}.custom-range.custom-range-indigo::-webkit-slider-thumb:active{background-color:#d2b9fb}.custom-range.custom-range-indigo::-moz-range-thumb{background-color:#6610f2}.custom-range.custom-range-indigo::-moz-range-thumb:active{background-color:#d2b9fb}.custom-range.custom-range-indigo::-ms-thumb{background-color:#6610f2}.custom-range.custom-range-indigo::-ms-thumb:active{background-color:#d2b9fb}.custom-range.custom-range-purple:focus{outline:0}.custom-range.custom-range-purple:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple::-webkit-slider-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-webkit-slider-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-moz-range-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-moz-range-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-ms-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-ms-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-pink:focus{outline:0}.custom-range.custom-range-pink:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(232,62,140,.25)}.custom-range.custom-range-pink:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(232,62,140,.25)}.custom-range.custom-range-pink:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(232,62,140,.25)}.custom-range.custom-range-pink::-webkit-slider-thumb{background-color:#e83e8c}.custom-range.custom-range-pink::-webkit-slider-thumb:active{background-color:#fbddeb}.custom-range.custom-range-pink::-moz-range-thumb{background-color:#e83e8c}.custom-range.custom-range-pink::-moz-range-thumb:active{background-color:#fbddeb}.custom-range.custom-range-pink::-ms-thumb{background-color:#e83e8c}.custom-range.custom-range-pink::-ms-thumb:active{background-color:#fbddeb}.custom-range.custom-range-red:focus{outline:0}.custom-range.custom-range-red:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-red:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-red:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(220,53,69,.25)}.custom-range.custom-range-red::-webkit-slider-thumb{background-color:#dc3545}.custom-range.custom-range-red::-webkit-slider-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-red::-moz-range-thumb{background-color:#dc3545}.custom-range.custom-range-red::-moz-range-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-red::-ms-thumb{background-color:#dc3545}.custom-range.custom-range-red::-ms-thumb:active{background-color:#f6cdd1}.custom-range.custom-range-orange:focus{outline:0}.custom-range.custom-range-orange:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(253,126,20,.25)}.custom-range.custom-range-orange:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(253,126,20,.25)}.custom-range.custom-range-orange:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(253,126,20,.25)}.custom-range.custom-range-orange::-webkit-slider-thumb{background-color:#fd7e14}.custom-range.custom-range-orange::-webkit-slider-thumb:active{background-color:#ffdfc5}.custom-range.custom-range-orange::-moz-range-thumb{background-color:#fd7e14}.custom-range.custom-range-orange::-moz-range-thumb:active{background-color:#ffdfc5}.custom-range.custom-range-orange::-ms-thumb{background-color:#fd7e14}.custom-range.custom-range-orange::-ms-thumb:active{background-color:#ffdfc5}.custom-range.custom-range-yellow:focus{outline:0}.custom-range.custom-range-yellow:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-yellow:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-yellow:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,193,7,.25)}.custom-range.custom-range-yellow::-webkit-slider-thumb{background-color:#ffc107}.custom-range.custom-range-yellow::-webkit-slider-thumb:active{background-color:#ffeeba}.custom-range.custom-range-yellow::-moz-range-thumb{background-color:#ffc107}.custom-range.custom-range-yellow::-moz-range-thumb:active{background-color:#ffeeba}.custom-range.custom-range-yellow::-ms-thumb{background-color:#ffc107}.custom-range.custom-range-yellow::-ms-thumb:active{background-color:#ffeeba}.custom-range.custom-range-green:focus{outline:0}.custom-range.custom-range-green:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-green:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-green:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(40,167,69,.25)}.custom-range.custom-range-green::-webkit-slider-thumb{background-color:#28a745}.custom-range.custom-range-green::-webkit-slider-thumb:active{background-color:#9be7ac}.custom-range.custom-range-green::-moz-range-thumb{background-color:#28a745}.custom-range.custom-range-green::-moz-range-thumb:active{background-color:#9be7ac}.custom-range.custom-range-green::-ms-thumb{background-color:#28a745}.custom-range.custom-range-green::-ms-thumb:active{background-color:#9be7ac}.custom-range.custom-range-teal:focus{outline:0}.custom-range.custom-range-teal:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal::-webkit-slider-thumb{background-color:#20c997}.custom-range.custom-range-teal::-webkit-slider-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-moz-range-thumb{background-color:#20c997}.custom-range.custom-range-teal::-moz-range-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-ms-thumb{background-color:#20c997}.custom-range.custom-range-teal::-ms-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-cyan:focus{outline:0}.custom-range.custom-range-cyan:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-cyan:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-cyan:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(23,162,184,.25)}.custom-range.custom-range-cyan::-webkit-slider-thumb{background-color:#17a2b8}.custom-range.custom-range-cyan::-webkit-slider-thumb:active{background-color:#90e4f1}.custom-range.custom-range-cyan::-moz-range-thumb{background-color:#17a2b8}.custom-range.custom-range-cyan::-moz-range-thumb:active{background-color:#90e4f1}.custom-range.custom-range-cyan::-ms-thumb{background-color:#17a2b8}.custom-range.custom-range-cyan::-ms-thumb:active{background-color:#90e4f1}.custom-range.custom-range-white:focus{outline:0}.custom-range.custom-range-white:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,255,255,.25)}.custom-range.custom-range-white:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,255,255,.25)}.custom-range.custom-range-white:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(255,255,255,.25)}.custom-range.custom-range-white::-webkit-slider-thumb{background-color:#fff}.custom-range.custom-range-white::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-white::-ms-thumb{background-color:#fff}.custom-range.custom-range-white::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray:focus{outline:0}.custom-range.custom-range-gray:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-gray:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-gray:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(108,117,125,.25)}.custom-range.custom-range-gray::-webkit-slider-thumb{background-color:#6c757d}.custom-range.custom-range-gray::-webkit-slider-thumb:active{background-color:#caced1}.custom-range.custom-range-gray::-moz-range-thumb{background-color:#6c757d}.custom-range.custom-range-gray::-moz-range-thumb:active{background-color:#caced1}.custom-range.custom-range-gray::-ms-thumb{background-color:#6c757d}.custom-range.custom-range-gray::-ms-thumb:active{background-color:#caced1}.custom-range.custom-range-gray-dark:focus{outline:0}.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-gray-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-gray-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(52,58,64,.25)}.custom-range.custom-range-gray-dark::-webkit-slider-thumb{background-color:#343a40}.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active{background-color:#88939e}.custom-range.custom-range-gray-dark::-moz-range-thumb{background-color:#343a40}.custom-range.custom-range-gray-dark::-moz-range-thumb:active{background-color:#88939e}.custom-range.custom-range-gray-dark::-ms-thumb{background-color:#343a40}.custom-range.custom-range-gray-dark::-ms-thumb:active{background-color:#88939e}.progress{box-shadow:none;border-radius:1px}.progress.vertical{display:inline-block;height:200px;margin-right:10px;position:relative;width:30px}.progress.vertical>.progress-bar{bottom:0;position:absolute;width:100%}.progress.vertical.progress-sm,.progress.vertical.sm{width:20px}.progress.vertical.progress-xs,.progress.vertical.xs{width:10px}.progress.vertical.progress-xxs,.progress.vertical.xxs{width:3px}.progress-group{margin-bottom:.5rem}.progress-sm{height:10px}.progress-xs{height:7px}.progress-xxs{height:3px}.table tr>td .progress{margin:0}.card{box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);margin-bottom:1rem}.card.bg-dark .card-header{border-color:#383f45}.card.bg-dark,.card.bg-dark .card-body{color:#fff}.card.maximized-card{height:100%!important;left:0;max-height:100%!important;max-width:100%!important;position:fixed;top:0;width:100%!important;z-index:9999}.card.maximized-card.was-collapsed .card-body{display:block!important}.card.maximized-card [data-widget=collapse]{display:none}.card.maximized-card .card-footer,.card.maximized-card .card-header{border-radius:0!important}.card.collapsed-card .card-body,.card.collapsed-card .card-footer{display:none}.card .nav.flex-column>li{border-bottom:1px solid rgba(0,0,0,.125);margin:0}.card .nav.flex-column>li:last-of-type{border-bottom:0}.card.height-control .card-body{max-height:300px;overflow:auto}.card .border-right{border-right:1px solid rgba(0,0,0,.125)}.card .border-left{border-left:1px solid rgba(0,0,0,.125)}.card.card-tabs:not(.card-outline) .card-header{border-bottom:0}.card.card-tabs:not(.card-outline) .card-header .nav-item:first-child .nav-link{margin-left:-1px}.card.card-tabs.card-outline .nav-item{border-bottom:0}.card.card-tabs.card-outline .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs{border-top:0}.card.card-outline-tabs .card-header .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs .card-header a{border-top:3px solid transparent}.card.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card.card-outline-tabs .card-header a.active:hover{margin-top:0}html.maximized-card{overflow:hidden}.card-body::after,.card-footer::after,.card-header::after{display:block;clear:both;content:""}.card-header{background-color:transparent;border-bottom:1px solid rgba(0,0,0,.125);padding:.75rem 1.25rem;position:relative;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.collapsed-card .card-header{border-bottom:0}.card-header>.card-tools{float:right;margin-right:-.625rem}.card-header>.card-tools .input-group,.card-header>.card-tools .nav,.card-header>.card-tools .pagination{margin-bottom:-.3rem;margin-top:-.3rem}.card-header>.card-tools [data-toggle=tooltip]{position:relative}.card-title{float:left;font-size:1.1rem;font-weight:400;margin:0}.card-text{clear:both}.btn-tool{background:0 0;color:#adb5bd;font-size:.875rem;margin:-.75rem 0;padding:.25rem .5rem}.btn-group.show .btn-tool,.btn-tool:hover{color:#495057}.btn-tool:focus,.show .btn-tool{box-shadow:none!important}.text-sm .card-title{font-size:1rem}.text-sm .nav-link{padding:.4rem .8rem}.card-body>.table{margin-bottom:0}.card-body>.table>thead>tr>td,.card-body>.table>thead>tr>th{border-top-width:0}.card-body .fc{margin-top:5px}.card-body .full-width-chart{margin:-19px}.card-body.p-0 .full-width-chart{margin:-9px}.chart-legend{padding-left:0;list-style:none;margin:10px 0}@media (max-width:576px){.chart-legend>li{float:left;margin-right:10px}}.card-comments{background:#f8f9fa}.card-comments .card-comment{border-bottom:1px solid #e9ecef;padding:8px 0}.card-comments .card-comment::after{display:block;clear:both;content:""}.card-comments .card-comment:last-of-type{border-bottom:0}.card-comments .card-comment:first-of-type{padding-top:0}.card-comments .card-comment img{height:1.875rem;width:1.875rem;float:left}.card-comments .comment-text{color:#78838e;margin-left:40px}.card-comments .username{color:#495057;display:block;font-weight:600}.card-comments .text-muted{font-size:12px;font-weight:400}.todo-list{list-style:none;margin:0;overflow:auto;padding:0}.todo-list>li{border-radius:2px;background:#f8f9fa;border-left:2px solid #e9ecef;color:#495057;margin-bottom:2px;padding:10px}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type=checkbox]{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;font-weight:600;margin-left:5px}.todo-list>li .badge{font-size:.7rem;margin-left:10px}.todo-list>li .tools{color:#dc3545;display:none;float:right}.todo-list>li .tools>.fa,.todo-list>li .tools>.fab,.todo-list>li .tools>.far,.todo-list>li .tools>.fas,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{cursor:pointer;margin-right:5px}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#697582}.todo-list>li.done .text{font-weight:500;text-decoration:line-through}.todo-list>li.done .badge{background:#adb5bd!important}.todo-list .primary{border-left-color:#007bff}.todo-list .secondary{border-left-color:#6c757d}.todo-list .success{border-left-color:#28a745}.todo-list .info{border-left-color:#17a2b8}.todo-list .warning{border-left-color:#ffc107}.todo-list .danger{border-left-color:#dc3545}.todo-list .light{border-left-color:#f8f9fa}.todo-list .dark{border-left-color:#343a40}.todo-list .navy{border-left-color:#001f3f}.todo-list .olive{border-left-color:#3d9970}.todo-list .lime{border-left-color:#01ff70}.todo-list .fuchsia{border-left-color:#f012be}.todo-list .maroon{border-left-color:#d81b60}.todo-list .blue{border-left-color:#007bff}.todo-list .indigo{border-left-color:#6610f2}.todo-list .purple{border-left-color:#6f42c1}.todo-list .pink{border-left-color:#e83e8c}.todo-list .red{border-left-color:#dc3545}.todo-list .orange{border-left-color:#fd7e14}.todo-list .yellow{border-left-color:#ffc107}.todo-list .green{border-left-color:#28a745}.todo-list .teal{border-left-color:#20c997}.todo-list .cyan{border-left-color:#17a2b8}.todo-list .white{border-left-color:#fff}.todo-list .gray{border-left-color:#6c757d}.todo-list .gray-dark{border-left-color:#343a40}.todo-list .handle{cursor:move;display:inline-block;margin:0 5px}.card-input{max-width:200px}.card-primary.card-tabs:not(.card-outline) .card-header{background-color:#007bff}.card-primary.card-tabs:not(.card-outline) .card-header,.card-primary.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-primary.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-primary.card-tabs.card-outline{border-top:3px solid #007bff}.card-primary.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-primary.card-outline-tabs .card-header a.active{border-top:3px solid #007bff}.bg-gradient-primary .btn-tool,.bg-primary .btn-tool,.card-primary:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-primary .btn-tool:hover,.bg-primary .btn-tool:hover,.card-primary:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th,.card.bg-primary .bootstrap-datetimepicker-widget .table td,.card.bg-primary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0067d6;color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today::before,.card.bg-primary .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover{background:#3395ff;color:#fff}.card-secondary.card-tabs:not(.card-outline) .card-header{background-color:#6c757d}.card-secondary.card-tabs:not(.card-outline) .card-header,.card-secondary.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-secondary.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-secondary.card-tabs.card-outline{border-top:3px solid #6c757d}.card-secondary.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-secondary.card-outline-tabs .card-header a.active{border-top:3px solid #6c757d}.bg-gradient-secondary .btn-tool,.bg-secondary .btn-tool,.card-secondary:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-secondary .btn-tool:hover,.bg-secondary .btn-tool:hover,.card-secondary:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th,.card.bg-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-secondary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#596167;color:#fff}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today::before,.card.bg-secondary .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover{background:#868e96;color:#fff}.card-success.card-tabs:not(.card-outline) .card-header{background-color:#28a745}.card-success.card-tabs:not(.card-outline) .card-header,.card-success.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-success.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-success.card-tabs.card-outline{border-top:3px solid #28a745}.card-success.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-success.card-outline-tabs .card-header a.active{border-top:3px solid #28a745}.bg-gradient-success .btn-tool,.bg-success .btn-tool,.card-success:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-success .btn-tool:hover,.bg-success .btn-tool:hover,.card-success:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th,.card.bg-success .bootstrap-datetimepicker-widget .table td,.card.bg-success .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#208637;color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today::before,.card.bg-success .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.active,.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover{background:#34ce57;color:#fff}.card-info.card-tabs:not(.card-outline) .card-header{background-color:#17a2b8}.card-info.card-tabs:not(.card-outline) .card-header,.card-info.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-info.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-info.card-tabs.card-outline{border-top:3px solid #17a2b8}.card-info.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-info.card-outline-tabs .card-header a.active{border-top:3px solid #17a2b8}.bg-gradient-info .btn-tool,.bg-info .btn-tool,.card-info:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-info .btn-tool:hover,.bg-info .btn-tool:hover,.card-info:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th,.card.bg-info .bootstrap-datetimepicker-widget .table td,.card.bg-info .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#128294;color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today::before,.card.bg-info .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.active,.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover{background:#1fc8e3;color:#fff}.card-warning.card-tabs:not(.card-outline) .card-header{background-color:#ffc107}.card-warning.card-tabs:not(.card-outline) .card-header,.card-warning.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-warning.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-warning.card-tabs.card-outline{border-top:3px solid #ffc107}.card-warning.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-warning.card-outline-tabs .card-header a.active{border-top:3px solid #ffc107}.bg-gradient-warning .btn-tool,.bg-warning .btn-tool,.card-warning:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-warning .btn-tool:hover,.bg-warning .btn-tool:hover,.card-warning:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th,.card.bg-warning .bootstrap-datetimepicker-widget .table td,.card.bg-warning .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#dda600;color:#1f2d3d}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today::before,.card.bg-warning .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover{background:#ffce3a;color:#1f2d3d}.card-danger.card-tabs:not(.card-outline) .card-header{background-color:#dc3545}.card-danger.card-tabs:not(.card-outline) .card-header,.card-danger.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-danger.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-danger.card-tabs.card-outline{border-top:3px solid #dc3545}.card-danger.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-danger.card-outline-tabs .card-header a.active{border-top:3px solid #dc3545}.bg-danger .btn-tool,.bg-gradient-danger .btn-tool,.card-danger:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-danger .btn-tool:hover,.bg-gradient-danger .btn-tool:hover,.card-danger:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget .table td,.card.bg-danger .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c62232;color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover{background:#e4606d;color:#fff}.card-light.card-tabs:not(.card-outline) .card-header{background-color:#f8f9fa}.card-light.card-tabs:not(.card-outline) .card-header,.card-light.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-light.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-light.card-tabs.card-outline{border-top:3px solid #f8f9fa}.card-light.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-light.card-outline-tabs .card-header a.active{border-top:3px solid #f8f9fa}.bg-gradient-light .btn-tool,.bg-light .btn-tool,.card-light:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-light .btn-tool:hover,.bg-light .btn-tool:hover,.card-light:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th,.card.bg-light .bootstrap-datetimepicker-widget .table td,.card.bg-light .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e0e5e9;color:#1f2d3d}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today::before,.card.bg-light .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.active,.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#1f2d3d}.card-dark.card-tabs:not(.card-outline) .card-header{background-color:#343a40}.card-dark.card-tabs:not(.card-outline) .card-header,.card-dark.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-dark.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-dark.card-tabs.card-outline{border-top:3px solid #343a40}.card-dark.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-dark.card-outline-tabs .card-header a.active{border-top:3px solid #343a40}.bg-dark .btn-tool,.bg-gradient-dark .btn-tool,.card-dark:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-dark .btn-tool:hover,.bg-gradient-dark .btn-tool:hover,.card-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget .table td,.card.bg-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#222629;color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#4b545c;color:#fff}.card-navy.card-tabs:not(.card-outline) .card-header{background-color:#001f3f}.card-navy.card-tabs:not(.card-outline) .card-header,.card-navy.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-navy.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-navy.card-tabs.card-outline{border-top:3px solid #001f3f}.card-navy.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-navy.card-outline-tabs .card-header a.active{border-top:3px solid #001f3f}.bg-gradient-navy .btn-tool,.bg-navy .btn-tool,.card-navy:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-navy .btn-tool:hover,.bg-navy .btn-tool:hover,.card-navy:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th,.card.bg-navy .bootstrap-datetimepicker-widget .table td,.card.bg-navy .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#000b16;color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today::before,.card.bg-navy .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover{background:#003872;color:#fff}.card-olive.card-tabs:not(.card-outline) .card-header{background-color:#3d9970}.card-olive.card-tabs:not(.card-outline) .card-header,.card-olive.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-olive.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-olive.card-tabs.card-outline{border-top:3px solid #3d9970}.card-olive.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-olive.card-outline-tabs .card-header a.active{border-top:3px solid #3d9970}.bg-gradient-olive .btn-tool,.bg-olive .btn-tool,.card-olive:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-olive .btn-tool:hover,.bg-olive .btn-tool:hover,.card-olive:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th,.card.bg-olive .bootstrap-datetimepicker-widget .table td,.card.bg-olive .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#317c5b;color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today::before,.card.bg-olive .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover{background:#50b98a;color:#fff}.card-lime.card-tabs:not(.card-outline) .card-header{background-color:#01ff70}.card-lime.card-tabs:not(.card-outline) .card-header,.card-lime.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-lime.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-lime.card-tabs.card-outline{border-top:3px solid #01ff70}.card-lime.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-lime.card-outline-tabs .card-header a.active{border-top:3px solid #01ff70}.bg-gradient-lime .btn-tool,.bg-lime .btn-tool,.card-lime:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-lime .btn-tool:hover,.bg-lime .btn-tool:hover,.card-lime:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th,.card.bg-lime .bootstrap-datetimepicker-widget .table td,.card.bg-lime .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#00d75e;color:#1f2d3d}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today::before,.card.bg-lime .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover{background:#34ff8d;color:#1f2d3d}.card-fuchsia.card-tabs:not(.card-outline) .card-header{background-color:#f012be}.card-fuchsia.card-tabs:not(.card-outline) .card-header,.card-fuchsia.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-fuchsia.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-fuchsia.card-tabs.card-outline{border-top:3px solid #f012be}.card-fuchsia.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-fuchsia.card-outline-tabs .card-header a.active{border-top:3px solid #f012be}.bg-fuchsia .btn-tool,.bg-gradient-fuchsia .btn-tool,.card-fuchsia:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-fuchsia .btn-tool:hover,.bg-gradient-fuchsia .btn-tool:hover,.card-fuchsia:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#cc0da1;color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover{background:#f342cb;color:#fff}.card-maroon.card-tabs:not(.card-outline) .card-header{background-color:#d81b60}.card-maroon.card-tabs:not(.card-outline) .card-header,.card-maroon.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-maroon.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-maroon.card-tabs.card-outline{border-top:3px solid #d81b60}.card-maroon.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-maroon.card-outline-tabs .card-header a.active{border-top:3px solid #d81b60}.bg-gradient-maroon .btn-tool,.bg-maroon .btn-tool,.card-maroon:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-maroon .btn-tool:hover,.bg-maroon .btn-tool:hover,.card-maroon:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th,.card.bg-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-maroon .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#b41650;color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today::before,.card.bg-maroon .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover{background:#e73f7c;color:#fff}.card-blue.card-tabs:not(.card-outline) .card-header{background-color:#007bff}.card-blue.card-tabs:not(.card-outline) .card-header,.card-blue.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-blue.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-blue.card-tabs.card-outline{border-top:3px solid #007bff}.card-blue.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-blue.card-outline-tabs .card-header a.active{border-top:3px solid #007bff}.bg-blue .btn-tool,.bg-gradient-blue .btn-tool,.card-blue:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-blue .btn-tool:hover,.bg-gradient-blue .btn-tool:hover,.card-blue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget .table td,.card.bg-blue .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0067d6;color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover{background:#3395ff;color:#fff}.card-indigo.card-tabs:not(.card-outline) .card-header{background-color:#6610f2}.card-indigo.card-tabs:not(.card-outline) .card-header,.card-indigo.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-indigo.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-indigo.card-tabs.card-outline{border-top:3px solid #6610f2}.card-indigo.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-indigo.card-outline-tabs .card-header a.active{border-top:3px solid #6610f2}.bg-gradient-indigo .btn-tool,.bg-indigo .btn-tool,.card-indigo:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-indigo .btn-tool:hover,.bg-indigo .btn-tool:hover,.card-indigo:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th,.card.bg-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-indigo .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#550bce;color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today::before,.card.bg-indigo .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover{background:#8540f5;color:#fff}.card-purple.card-tabs:not(.card-outline) .card-header{background-color:#6f42c1}.card-purple.card-tabs:not(.card-outline) .card-header,.card-purple.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-purple.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-purple.card-tabs.card-outline{border-top:3px solid #6f42c1}.card-purple.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-purple.card-outline-tabs .card-header a.active{border-top:3px solid #6f42c1}.bg-gradient-purple .btn-tool,.bg-purple .btn-tool,.card-purple:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-purple .btn-tool:hover,.bg-purple .btn-tool:hover,.card-purple:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th,.card.bg-purple .bootstrap-datetimepicker-widget .table td,.card.bg-purple .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5d36a4;color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today::before,.card.bg-purple .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover{background:#8c68ce;color:#fff}.card-pink.card-tabs:not(.card-outline) .card-header{background-color:#e83e8c}.card-pink.card-tabs:not(.card-outline) .card-header,.card-pink.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-pink.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-pink.card-tabs.card-outline{border-top:3px solid #e83e8c}.card-pink.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-pink.card-outline-tabs .card-header a.active{border-top:3px solid #e83e8c}.bg-gradient-pink .btn-tool,.bg-pink .btn-tool,.card-pink:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-pink .btn-tool:hover,.bg-pink .btn-tool:hover,.card-pink:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th,.card.bg-pink .bootstrap-datetimepicker-widget .table td,.card.bg-pink .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e21b76;color:#fff}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today::before,.card.bg-pink .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover{background:#ed6ca7;color:#fff}.card-red.card-tabs:not(.card-outline) .card-header{background-color:#dc3545}.card-red.card-tabs:not(.card-outline) .card-header,.card-red.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-red.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-red.card-tabs.card-outline{border-top:3px solid #dc3545}.card-red.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-red.card-outline-tabs .card-header a.active{border-top:3px solid #dc3545}.bg-gradient-red .btn-tool,.bg-red .btn-tool,.card-red:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-red .btn-tool:hover,.bg-red .btn-tool:hover,.card-red:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th,.card.bg-red .bootstrap-datetimepicker-widget .table td,.card.bg-red .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c62232;color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today::before,.card.bg-red .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.active,.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover{background:#e4606d;color:#fff}.card-orange.card-tabs:not(.card-outline) .card-header{background-color:#fd7e14}.card-orange.card-tabs:not(.card-outline) .card-header,.card-orange.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-orange.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-orange.card-tabs.card-outline{border-top:3px solid #fd7e14}.card-orange.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-orange.card-outline-tabs .card-header a.active{border-top:3px solid #fd7e14}.bg-gradient-orange .btn-tool,.bg-orange .btn-tool,.card-orange:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-orange .btn-tool:hover,.bg-orange .btn-tool:hover,.card-orange:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th,.card.bg-orange .bootstrap-datetimepicker-widget .table td,.card.bg-orange .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e66a02;color:#1f2d3d}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today::before,.card.bg-orange .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover{background:#fd9a47;color:#1f2d3d}.card-yellow.card-tabs:not(.card-outline) .card-header{background-color:#ffc107}.card-yellow.card-tabs:not(.card-outline) .card-header,.card-yellow.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-yellow.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-yellow.card-tabs.card-outline{border-top:3px solid #ffc107}.card-yellow.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-yellow.card-outline-tabs .card-header a.active{border-top:3px solid #ffc107}.bg-gradient-yellow .btn-tool,.bg-yellow .btn-tool,.card-yellow:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-yellow .btn-tool:hover,.bg-yellow .btn-tool:hover,.card-yellow:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th,.card.bg-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-yellow .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#dda600;color:#1f2d3d}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today::before,.card.bg-yellow .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover{background:#ffce3a;color:#1f2d3d}.card-green.card-tabs:not(.card-outline) .card-header{background-color:#28a745}.card-green.card-tabs:not(.card-outline) .card-header,.card-green.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-green.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-green.card-tabs.card-outline{border-top:3px solid #28a745}.card-green.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-green.card-outline-tabs .card-header a.active{border-top:3px solid #28a745}.bg-gradient-green .btn-tool,.bg-green .btn-tool,.card-green:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-green .btn-tool:hover,.bg-green .btn-tool:hover,.card-green:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th,.card.bg-green .bootstrap-datetimepicker-widget .table td,.card.bg-green .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#208637;color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today::before,.card.bg-green .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.active,.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover{background:#34ce57;color:#fff}.card-teal.card-tabs:not(.card-outline) .card-header{background-color:#20c997}.card-teal.card-tabs:not(.card-outline) .card-header,.card-teal.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-teal.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-teal.card-tabs.card-outline{border-top:3px solid #20c997}.card-teal.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-teal.card-outline-tabs .card-header a.active{border-top:3px solid #20c997}.bg-gradient-teal .btn-tool,.bg-teal .btn-tool,.card-teal:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-teal .btn-tool:hover,.bg-teal .btn-tool:hover,.card-teal:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th,.card.bg-teal .bootstrap-datetimepicker-widget .table td,.card.bg-teal .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1aa67d;color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today::before,.card.bg-teal .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover{background:#3ce0af;color:#fff}.card-cyan.card-tabs:not(.card-outline) .card-header{background-color:#17a2b8}.card-cyan.card-tabs:not(.card-outline) .card-header,.card-cyan.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-cyan.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-cyan.card-tabs.card-outline{border-top:3px solid #17a2b8}.card-cyan.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-cyan.card-outline-tabs .card-header a.active{border-top:3px solid #17a2b8}.bg-cyan .btn-tool,.bg-gradient-cyan .btn-tool,.card-cyan:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-cyan .btn-tool:hover,.bg-gradient-cyan .btn-tool:hover,.card-cyan:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-cyan .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#128294;color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover{background:#1fc8e3;color:#fff}.card-white.card-tabs:not(.card-outline) .card-header{background-color:#fff}.card-white.card-tabs:not(.card-outline) .card-header,.card-white.card-tabs:not(.card-outline) .card-header a{color:#1f2d3d}.card-white.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-white.card-tabs.card-outline{border-top:3px solid #fff}.card-white.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-white.card-outline-tabs .card-header a.active{border-top:3px solid #fff}.bg-gradient-white .btn-tool,.bg-white .btn-tool,.card-white:not(.card-outline) .btn-tool{color:rgba(31,45,61,.8)}.bg-gradient-white .btn-tool:hover,.bg-white .btn-tool:hover,.card-white:not(.card-outline) .btn-tool:hover{color:#1f2d3d}.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th,.card.bg-white .bootstrap-datetimepicker-widget .table td,.card.bg-white .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ebebeb;color:#1f2d3d}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today::before,.card.bg-white .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#1f2d3d}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.active,.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#1f2d3d}.card-gray.card-tabs:not(.card-outline) .card-header{background-color:#6c757d}.card-gray.card-tabs:not(.card-outline) .card-header,.card-gray.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-gray.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-gray.card-tabs.card-outline{border-top:3px solid #6c757d}.card-gray.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-gray.card-outline-tabs .card-header a.active{border-top:3px solid #6c757d}.bg-gradient-gray .btn-tool,.bg-gray .btn-tool,.card-gray:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-gray .btn-tool:hover,.bg-gray .btn-tool:hover,.card-gray:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th,.card.bg-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gray .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#596167;color:#fff}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gray .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover{background:#868e96;color:#fff}.card-gray-dark.card-tabs:not(.card-outline) .card-header{background-color:#343a40}.card-gray-dark.card-tabs:not(.card-outline) .card-header,.card-gray-dark.card-tabs:not(.card-outline) .card-header a{color:#fff}.card-gray-dark.card-tabs:not(.card-outline) .card-header a.active{color:#1f2d3d}.card-gray-dark.card-tabs.card-outline{border-top:3px solid #343a40}.card-gray-dark.card-outline-tabs .card-header a:hover{border-top:3px solid #dee2e6}.card-gray-dark.card-outline-tabs .card-header a.active{border-top:3px solid #343a40}.bg-gradient-gray-dark .btn-tool,.bg-gray-dark .btn-tool,.card-gray-dark:not(.card-outline) .btn-tool{color:rgba(255,255,255,.8)}.bg-gradient-gray-dark .btn-tool:hover,.bg-gray-dark .btn-tool:hover,.card-gray-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#222629;color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today::before,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today::before{border-bottom-color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#4b545c;color:#fff}.card-default .nav-item:first-child .nav-link{border-left:0}.modal-dialog .overlay{background-color:#000;display:block;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%;z-index:1052}.modal-content.bg-warning .modal-footer,.modal-content.bg-warning .modal-header{border-color:#343a40}.modal-content.bg-danger .close,.modal-content.bg-info .close,.modal-content.bg-primary .close,.modal-content.bg-secondary .close,.modal-content.bg-success .close{color:#fff;text-shadow:0 1px 0 #000}.toasts-top-right{position:absolute;right:0;top:0;z-index:1040}.toasts-top-right.fixed{position:fixed}.toasts-top-left{left:0;position:absolute;top:0;z-index:1040}.toasts-top-left.fixed{position:fixed}.toasts-bottom-right{bottom:0;position:absolute;right:0;z-index:1040}.toasts-bottom-right.fixed{position:fixed}.toasts-bottom-left{bottom:0;left:0;position:absolute;z-index:1040}.toasts-bottom-left.fixed{position:fixed}.toast.bg-primary{background:rgba(0,123,255,.9)!important}.toast.bg-primary .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-primary .toast-header{background:rgba(0,123,255,.85);color:#fff}.toast.bg-secondary{background:rgba(108,117,125,.9)!important}.toast.bg-secondary .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-secondary .toast-header{background:rgba(108,117,125,.85);color:#fff}.toast.bg-success{background:rgba(40,167,69,.9)!important}.toast.bg-success .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-success .toast-header{background:rgba(40,167,69,.85);color:#fff}.toast.bg-info{background:rgba(23,162,184,.9)!important}.toast.bg-info .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-info .toast-header{background:rgba(23,162,184,.85);color:#fff}.toast.bg-warning{background:rgba(255,193,7,.9)!important}.toast.bg-warning .toast-header{background:rgba(255,193,7,.85);color:#1f2d3d}.toast.bg-danger{background:rgba(220,53,69,.9)!important}.toast.bg-danger .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-danger .toast-header{background:rgba(220,53,69,.85);color:#fff}.toast.bg-light{background:rgba(248,249,250,.9)!important}.toast.bg-light .toast-header{background:rgba(248,249,250,.85);color:#1f2d3d}.toast.bg-dark{background:rgba(52,58,64,.9)!important}.toast.bg-dark .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-dark .toast-header{background:rgba(52,58,64,.85);color:#fff}.toast.bg-navy{background:rgba(0,31,63,.9)!important}.toast.bg-navy .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-navy .toast-header{background:rgba(0,31,63,.85);color:#fff}.toast.bg-olive{background:rgba(61,153,112,.9)!important}.toast.bg-olive .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-olive .toast-header{background:rgba(61,153,112,.85);color:#fff}.toast.bg-lime{background:rgba(1,255,112,.9)!important}.toast.bg-lime .toast-header{background:rgba(1,255,112,.85);color:#1f2d3d}.toast.bg-fuchsia{background:rgba(240,18,190,.9)!important}.toast.bg-fuchsia .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-fuchsia .toast-header{background:rgba(240,18,190,.85);color:#fff}.toast.bg-maroon{background:rgba(216,27,96,.9)!important}.toast.bg-maroon .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-maroon .toast-header{background:rgba(216,27,96,.85);color:#fff}.toast.bg-blue{background:rgba(0,123,255,.9)!important}.toast.bg-blue .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-blue .toast-header{background:rgba(0,123,255,.85);color:#fff}.toast.bg-indigo{background:rgba(102,16,242,.9)!important}.toast.bg-indigo .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-indigo .toast-header{background:rgba(102,16,242,.85);color:#fff}.toast.bg-purple{background:rgba(111,66,193,.9)!important}.toast.bg-purple .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-purple .toast-header{background:rgba(111,66,193,.85);color:#fff}.toast.bg-pink{background:rgba(232,62,140,.9)!important}.toast.bg-pink .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-pink .toast-header{background:rgba(232,62,140,.85);color:#fff}.toast.bg-red{background:rgba(220,53,69,.9)!important}.toast.bg-red .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-red .toast-header{background:rgba(220,53,69,.85);color:#fff}.toast.bg-orange{background:rgba(253,126,20,.9)!important}.toast.bg-orange .toast-header{background:rgba(253,126,20,.85);color:#1f2d3d}.toast.bg-yellow{background:rgba(255,193,7,.9)!important}.toast.bg-yellow .toast-header{background:rgba(255,193,7,.85);color:#1f2d3d}.toast.bg-green{background:rgba(40,167,69,.9)!important}.toast.bg-green .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-green .toast-header{background:rgba(40,167,69,.85);color:#fff}.toast.bg-teal{background:rgba(32,201,151,.9)!important}.toast.bg-teal .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-teal .toast-header{background:rgba(32,201,151,.85);color:#fff}.toast.bg-cyan{background:rgba(23,162,184,.9)!important}.toast.bg-cyan .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-cyan .toast-header{background:rgba(23,162,184,.85);color:#fff}.toast.bg-white{background:rgba(255,255,255,.9)!important}.toast.bg-white .toast-header{background:rgba(255,255,255,.85);color:#1f2d3d}.toast.bg-gray{background:rgba(108,117,125,.9)!important}.toast.bg-gray .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray .toast-header{background:rgba(108,117,125,.85);color:#fff}.toast.bg-gray-dark{background:rgba(52,58,64,.9)!important}.toast.bg-gray-dark .close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray-dark .toast-header{background:rgba(52,58,64,.85);color:#fff}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.btn-flat{border-radius:0;border-width:1px;box-shadow:none}.btn.btn-file{overflow:hidden;position:relative}.btn.btn-file>input[type=file]{background:#fff;cursor:inherit;display:block;font-size:100px;min-height:100%;min-width:100%;opacity:0;outline:0;position:absolute;right:0;text-align:right;top:0}.text-sm .btn{font-size:.875rem!important}.btn-default{background-color:#f8f9fa;border-color:#ddd;color:#444}.btn-default.hover,.btn-default:active,.btn-default:hover{background-color:#e9ecef;color:#2b2b2b}.btn-app{border-radius:3px;background-color:#f8f9fa;border:1px solid #ddd;color:#6c757d;font-size:12px;height:60px;margin:0 0 10px 10px;min-width:80px;padding:15px 5px;position:relative;text-align:center}.btn-app>.fa,.btn-app>.fab,.btn-app>.far,.btn-app>.fas,.btn-app>.glyphicon,.btn-app>.ion{display:block;font-size:20px}.btn-app:hover{background:#f8f9fa;border-color:#aaa;color:#444}.btn-app:active,.btn-app:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-app>.badge{font-size:10px;font-weight:400;position:absolute;right:-10px;top:-3px}.btn-xs{padding:.125rem .25rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.callout{border-radius:.25rem;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);background-color:#fff;border-left:5px solid #e9ecef;margin-bottom:1rem;padding:1rem}.callout a{color:#495057;text-decoration:underline}.callout a:hover{color:#e9ecef}.callout p:last-child{margin-bottom:0}.callout.callout-danger{border-left-color:#bd2130}.callout.callout-warning{border-left-color:#d39e00}.callout.callout-info{border-left-color:#117a8b}.callout.callout-success{border-left-color:#1e7e34}.alert .icon{margin-right:10px}.alert .close{color:#000;opacity:.2}.alert .close:hover{opacity:.5}.alert a{color:#fff;text-decoration:underline}.alert-primary{color:#fff;background:#007bff;border-color:#006fe6}.alert-default-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-default-primary hr{border-top-color:#9fcdff}.alert-default-primary .alert-link{color:#002752}.alert-secondary{color:#fff;background:#6c757d;border-color:#60686f}.alert-default-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-default-secondary hr{border-top-color:#c8cbcf}.alert-default-secondary .alert-link{color:#202326}.alert-success{color:#fff;background:#28a745;border-color:#23923d}.alert-default-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-default-success hr{border-top-color:#b1dfbb}.alert-default-success .alert-link{color:#0b2e13}.alert-info{color:#fff;background:#17a2b8;border-color:#148ea1}.alert-default-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-default-info hr{border-top-color:#abdde5}.alert-default-info .alert-link{color:#062c33}.alert-warning{color:#1f2d3d;background:#ffc107;border-color:#edb100}.alert-default-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-default-warning hr{border-top-color:#ffe8a1}.alert-default-warning .alert-link{color:#533f03}.alert-danger{color:#fff;background:#dc3545;border-color:#d32535}.alert-default-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-default-danger hr{border-top-color:#f1b0b7}.alert-default-danger .alert-link{color:#491217}.alert-light{color:#1f2d3d;background:#f8f9fa;border-color:#e9ecef}.alert-default-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-default-light hr{border-top-color:#ececf6}.alert-default-light .alert-link{color:#686868}.alert-dark{color:#fff;background:#343a40;border-color:#292d32}.alert-default-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-default-dark hr{border-top-color:#b9bbbe}.alert-default-dark .alert-link{color:#040505}.table:not(.table-dark){color:inherit}.table.table-head-fixed thead tr:nth-child(1) th{background-color:#fff;border-bottom:0;box-shadow:inset 0 1px 0 #dee2e6,inset 0 -1px 0 #dee2e6;position:sticky;top:0;z-index:10}.table.table-head-fixed.table-dark thead tr:nth-child(1) th{background-color:#212529;box-shadow:inset 0 1px 0 #383f45,inset 0 -1px 0 #383f45}.table.no-border,.table.no-border td,.table.no-border th{border:0}.table.text-center,.table.text-center td,.table.text-center th{text-align:center}.table.table-valign-middle tbody>tr>td,.table.table-valign-middle tbody>tr>th,.table.table-valign-middle thead>tr>td,.table.table-valign-middle thead>tr>th{vertical-align:middle}.card-body.p-0 .table tbody>tr>td:first-of-type,.card-body.p-0 .table tbody>tr>th:first-of-type,.card-body.p-0 .table thead>tr>td:first-of-type,.card-body.p-0 .table thead>tr>th:first-of-type{padding-left:1.5rem}.card-body.p-0 .table tbody>tr>td:last-of-type,.card-body.p-0 .table tbody>tr>th:last-of-type,.card-body.p-0 .table thead>tr>td:last-of-type,.card-body.p-0 .table thead>tr>th:last-of-type{padding-right:1.5rem}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa,.carousel-control>.fab,.carousel-control>.far,.carousel-control>.fas,.carousel-control>.glyphicon,.carousel-control>.ion{display:inline-block;font-size:40px;margin-top:-20px;position:absolute;top:50%;z-index:5} -/*# sourceMappingURL=adminlte.components.min.css.map */ \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css.map b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css.map deleted file mode 100644 index 0efd97a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.components.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../build/scss/AdminLTE-components.scss","../../../build/scss/_forms.scss","../../../build/scss/_bootstrap-variables.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../build/scss/mixins/_custom-forms.scss","../../../build/scss/_variables.scss","../../../build/scss/_progress-bars.scss","../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss","../../../build/scss/_cards.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../build/scss/mixins/_cards.scss","../../../build/scss/_modals.scss","../../../build/scss/_toasts.scss","../../../build/scss/mixins/_toasts.scss","../../../build/scss/_buttons.scss","../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../build/scss/_callout.scss","../../../build/scss/_alerts.scss","../../../node_modules/bootstrap/scss/mixins/_alert.scss","../../../node_modules/bootstrap/scss/_functions.scss","../../../build/scss/_table.scss","../../../build/scss/_carousel.scss"],"names":[],"mappings":"AAAA;;;;;;ACIW,qBAEP,SAAU,SAEV,mCACE,cAAe,KAGjB,gCACE,iBAAkB,YAClB,OAAQ,EACR,OAAQ,QACR,UAAW,KAEX,QCsTwB,QACA,ODtTxB,SAAU,SACV,MAAO,IACP,IAAK,EAQG,gDACA,+CEzBV,cF0ByB,EAMP,0BAAA,2BAAA,2BAAA,2BAAA,iCAAA,2BAOlB,YC4XoC,oBDvXA,0CAAA,2CAAA,2CAAA,2CAAA,iDAAA,2CADL,oCAAA,qCAAA,qCAAA,qCAAA,2CAAA,qCAQ/B,YCsXoC,qBDjXA,uDAAA,wDAAA,wDAAA,wDAAA,8DAAA,wDAOlC,YC0WkC,qBDpWA,0CAAA,2CAAA,2CAAA,2CAAA,iDAAA,2CADL,oCAAA,qCAAA,qCAAA,qCAAA,2CAAA,qCAQ/B,YC0VoC,sBDrVA,uDAAA,wDAAA,wDAAA,wDAAA,8DAAA,wDAOlC,YC8UkC,sBDzUO,gDAC7C,YCgJ4B,ID7I9B,kBG9BI,UAAU,IHgCZ,MC9DQ,QD+DR,QAAS,KACT,WCwUsC,ODvUtC,MAAO,KAGT,iBEzGI,cDgN0B,OEtFxB,UAtCW,QHwBf,iBCvEQ,mBDwER,MCrBc,QDsBd,QAAS,KACT,YCkI4B,IDjI5B,WAAY,MACZ,UAAW,KACX,QC8jB4B,OACA,MD9jB5B,SAAU,SACV,IAAK,KACL,QAAS,EAGE,yBAET,aCrFM,QDoFI,+BAYR,aChGI,QDiGJ,WAAY,EAAE,EAAE,ECkRkB,EAnX9B,oBDoGJ,2CACA,0CACA,QAAS,MAMM,iCAGf,cC2QkC,QD1QlC,oBAAqB,IC4Qa,wBD5QmB,MC4QnB,wBDvQ1B,0BAEV,aCvHM,QDsHI,gCASR,aC/HI,QDgIJ,WAAY,EAAE,EAAE,ECmPkB,EAnX9B,oBDmIJ,4CACA,2CACA,QAAS,MAQT,gDACA,+CACA,QAAS,MAOT,+CACA,MCvJI,QD0JJ,+CACA,8CACA,QAAS,MAMX,uDACA,MCnKM,QDkKe,+DAInB,aCtKI,QD0KN,mDACA,kDACA,QAAS,MAIc,uEIpNvB,iBJqNuB,QACrB,aAAc,QAKO,qEACrB,WAAY,EAAE,EAAE,EC2LkB,EAnX9B,oBD2LiC,mFACrC,aC5LI,QDoMJ,iDACA,aCrMI,QDwMJ,gDACA,+CACA,QAAS,MAIP,uDACA,aC/ME,QDgNF,WAAY,EAAE,EAAE,ECmKgB,EAnX9B,oBInCyC,6FAC7C,WAAW,QACX,aAAc,QAGqC,mGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJuBlC,oBIpByC,4FAC7C,WAAY,QAKyC,oGACrD,WAAW,QACX,aAAc,QAG6C,0GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJQlC,oBILiD,mGACrD,WAAY,QAzBiC,+FAC7C,WAAW,QACX,aAAc,QAGqC,qGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJIjC,sBIDwC,8FAC7C,WAAY,QAKyC,sGACrD,WAAW,QACX,aAAc,QAG6C,4GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJXjC,sBIcgD,qGACrD,WAAY,QAzBiC,6FAC7C,WAAW,QACX,aAAc,QAGqC,mGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ8BlC,oBI3ByC,4FAC7C,WAAY,QAKyC,oGACrD,WAAW,QACX,aAAc,QAG6C,0GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJelC,oBIZiD,mGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJgClC,qBI7ByC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJiBlC,qBIdiD,gGACrD,WAAY,QAzBiC,6FAC7C,WAAW,QACX,aAAc,QAGqC,mGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ6BlC,oBI1ByC,4FAC7C,WAAY,QAKyC,oGACrD,WAAW,QACX,aAAc,QAG6C,0GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJclC,oBIXiD,mGACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ2BlC,oBIxByC,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJYlC,oBITiD,kGACrD,WAAY,QAzBiC,2FAC7C,WAAW,QACX,aAAc,QAGqC,iGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJDjC,sBIIwC,0FAC7C,WAAY,QAKyC,kGACrD,WAAW,QACX,aAAc,QAG6C,wGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJhBjC,sBImBgD,iGACrD,WAAY,KAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJMjC,mBIHwC,yFAC7C,WAAY,KAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJTjC,mBIYgD,gGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,KAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,ICNrC,kBDS4C,yFAC7C,WAAY,KAKyC,iGACrD,WAAW,QACX,aAAc,KAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,ICrBrC,kBDwBoD,gGACrD,WAAY,QAzBiC,2FAC7C,WAAW,QACX,aAAc,QAGqC,iGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,ICJpC,qBDO2C,0FAC7C,WAAY,QAKyC,kGACrD,WAAW,QACX,aAAc,QAG6C,wGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,ICnBpC,qBDsBmD,iGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,ICHrC,oBDM4C,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IClBrC,oBDqBoD,gGACrD,WAAY,QAzBiC,6FAC7C,WAAW,QACX,aAAc,QAGqC,mGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,ICDlC,qBDIyC,4FAC7C,WAAY,QAKyC,oGACrD,WAAW,QACX,aAAc,QAG6C,0GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IChBlC,qBDmBiD,mGACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,ICCnC,oBDE0C,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,ICdnC,oBDiBkD,kGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJuBlC,oBIpByC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJQlC,oBILiD,gGACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJwBlC,qBIrByC,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJSlC,qBINiD,kGACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJyBlC,qBItByC,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJUlC,qBIPiD,kGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ0BlC,qBIvByC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJWlC,qBIRiD,gGACrD,WAAY,QAzBiC,yFAC7C,WAAW,QACX,aAAc,QAGqC,+FACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ2BlC,oBIxByC,wFAC7C,WAAY,QAKyC,gGACrD,WAAW,QACX,aAAc,QAG6C,sGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJYlC,oBITiD,+FACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ4BlC,qBIzByC,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJalC,qBIViD,kGACrD,WAAY,QAzBiC,4FAC7C,WAAW,QACX,aAAc,QAGqC,kGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ6BlC,oBI1ByC,2FAC7C,WAAY,QAKyC,mGACrD,WAAW,QACX,aAAc,QAG6C,yGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJclC,oBIXiD,kGACrD,WAAY,QAzBiC,2FAC7C,WAAW,QACX,aAAc,QAGqC,iGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ8BlC,oBI3ByC,0FAC7C,WAAY,QAKyC,kGACrD,WAAW,QACX,aAAc,QAG6C,wGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJelC,oBIZiD,iGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJ+BlC,qBI5ByC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJgBlC,qBIbiD,gGACrD,WAAY,QAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJgClC,qBI7ByC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJiBlC,qBIdiD,gGACrD,WAAY,QAzBiC,2FAC7C,WAAW,KACX,aAAc,KAGqC,iGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJFjC,sBIKwC,0FAC7C,WAAY,QAKyC,kGACrD,WAAW,KACX,aAAc,KAG6C,wGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJjBjC,sBIoBgD,iGACrD,WAAY,KAzBiC,0FAC7C,WAAW,QACX,aAAc,QAGqC,gGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJIjC,sBIDwC,yFAC7C,WAAY,QAKyC,iGACrD,WAAW,QACX,aAAc,QAG6C,uGAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJXjC,sBIcgD,gGACrD,WAAY,QAzBiC,+FAC7C,WAAW,QACX,aAAc,QAGqC,qGACnD,WAAY,EAAE,EAAE,EAAE,IJFb,IAAO,CIEoB,EAAE,EAAE,EAAE,IJMjC,mBIHwC,8FAC7C,WAAY,KAKyC,sGACrD,WAAW,QACX,aAAc,QAG6C,4GAC3D,WAAY,EAAE,EAAE,EAAE,IJjBb,IAAO,CIiBoB,EAAE,EAAE,EAAE,IJTjC,mBIYgD,qGACrD,WAAY,QAOM,yCAElB,QAAS,EADJ,+DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJRpC,oBIIC,2DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJZpC,oBIIC,oDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJhBpC,oBIGc,yDAkBlB,iBJrBI,QIoBiB,gEAInB,iBAAkB,QArBF,qDA0BlB,iBJ7BI,QI4Ba,4DAIf,iBAAkB,QA7BF,8CAkClB,iBJrCI,QIoCM,qDAIR,iBAAkB,QArCA,2CAEpB,QAAS,EADJ,iEAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJ3BnC,sBIuBA,6DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJ/BnC,sBIuBA,sDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJnCnC,sBIsBe,2DAkBpB,iBJxCK,QIuCgB,kEAInB,iBAAkB,QArBA,uDA0BpB,iBJhDK,QI+CY,8DAIf,iBAAkB,QA7BA,gDAkCpB,iBJxDK,QIuDK,uDAIR,iBAAkB,QArCF,yCAElB,QAAS,EADJ,+DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJDpC,oBIHC,2DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJLpC,oBIHC,oDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJTpC,oBIJc,yDAkBlB,iBJdI,QIaiB,gEAInB,iBAAkB,QArBF,qDA0BlB,iBJtBI,QIqBa,4DAIf,iBAAkB,QA7BF,8CAkClB,iBJ9BI,QI6BM,qDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJCpC,qBILC,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJHpC,qBILC,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJPpC,qBINW,sDAkBf,iBJZI,QIWiB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJpBI,QImBa,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJ5BI,QI2BM,kDAIR,iBAAkB,QArCF,yCAElB,QAAS,EADJ,+DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJFpC,oBIFC,2DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJNpC,oBIFC,oDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJVpC,oBIHc,yDAkBlB,iBJfI,QIciB,gEAInB,iBAAkB,QArBF,qDA0BlB,iBJvBI,QIsBa,4DAIf,iBAAkB,QA7BF,8CAkClB,iBJ/BI,QI8BM,qDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJJpC,oBIAC,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJRpC,oBIAC,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJZpC,oBIDa,wDAkBjB,iBJjBI,QIgBiB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBJzBI,QIwBa,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBJjCI,QIgCM,oDAIR,iBAAkB,QArCJ,uCAEhB,QAAS,EADJ,6DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJhCnC,sBI4BA,yDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJpCnC,sBI4BA,kDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJxCnC,sBI2BW,uDAkBhB,iBJ7CK,QI4CgB,8DAInB,iBAAkB,KArBJ,mDA0BhB,iBJrDK,QIoDY,0DAIf,iBAAkB,KA7BJ,4CAkChB,iBJ7DK,QI4DK,mDAIR,iBAAkB,KArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJzBnC,mBIqBA,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJ7BnC,mBIqBA,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJjCnC,mBIoBU,sDAkBf,iBJtCK,QIqCgB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJ9CK,QI6CY,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJtDK,QIqDK,kDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,ICrCvC,kBDiCI,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,ICzCvC,kBDiCI,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IC7CvC,kBDgCc,sDAkBf,iBClDC,QDiDoB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBC1DC,QDyDgB,yDAIf,iBAAkB,QA7BL,2CAkCf,iBClEC,QDiES,kDAIR,iBAAkB,QArCJ,uCAEhB,QAAS,EADJ,6DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,ICnCtC,qBD+BG,yDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,ICvCtC,qBD+BG,kDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IC3CtC,qBD8Bc,uDAkBhB,iBChDE,QD+CmB,8DAInB,iBAAkB,QArBJ,mDA0BhB,iBCxDE,QDuDe,0DAIf,iBAAkB,QA7BJ,4CAkChB,iBChEE,QD+DQ,mDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IClCvC,oBD8BI,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,ICtCvC,oBD8BI,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IC1CvC,oBD6Bc,sDAkBf,iBC/CC,QD8CoB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBCvDC,QDsDgB,yDAIf,iBAAkB,QA7BL,2CAkCf,iBC/DC,QD8DS,kDAIR,iBAAkB,QArCF,yCAElB,QAAS,EADJ,+DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IChCpC,qBD4BC,2DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,ICpCpC,qBD4BC,oDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,ICxCpC,qBD2Bc,yDAkBlB,iBC7CI,QD4CiB,gEAInB,iBAAkB,QArBF,qDA0BlB,iBCrDI,QDoDa,4DAIf,iBAAkB,QA7BF,8CAkClB,iBC7DI,QD4DM,qDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IC9BrC,oBD0BE,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IClCrC,oBD0BE,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,ICtCrC,oBDyBc,wDAkBjB,iBC3CG,QD0CkB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBCnDG,QDkDc,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBC3DG,QD0DO,oDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJRpC,oBIIC,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJZpC,oBIIC,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJhBpC,oBIGW,sDAkBf,iBJrBI,QIoBiB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJ7BI,QI4Ba,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJrCI,QIoCM,kDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJPpC,qBIGC,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJXpC,qBIGC,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJfpC,qBIEa,wDAkBjB,iBJpBI,QImBiB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBJ5BI,QI2Ba,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBJpCI,QImCM,oDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJNpC,qBIEC,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJVpC,qBIEC,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJdpC,qBICa,wDAkBjB,iBJnBI,QIkBiB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBJ3BI,QI0Ba,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBJnCI,QIkCM,oDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJLpC,qBICC,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJTpC,qBICC,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJbpC,qBIAW,sDAkBf,iBJlBI,QIiBiB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJ1BI,QIyBa,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJlCI,QIiCM,kDAIR,iBAAkB,QArCN,qCAEd,QAAS,EADJ,2DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJJpC,oBIAC,uDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJRpC,oBIAC,gDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJZpC,oBIDU,qDAkBd,iBJjBI,QIgBiB,4DAInB,iBAAkB,QArBN,iDA0Bd,iBJzBI,QIwBa,wDAIf,iBAAkB,QA7BN,0CAkCd,iBJjCI,QIgCM,iDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJHpC,qBIDC,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJPpC,qBIDC,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJXpC,qBIFa,wDAkBjB,iBJhBI,QIeiB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBJxBI,QIuBa,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBJhCI,QI+BM,oDAIR,iBAAkB,QArCH,wCAEjB,QAAS,EADJ,8DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJFpC,oBIFC,0DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJNpC,oBIFC,mDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJVpC,oBIHa,wDAkBjB,iBJfI,QIciB,+DAInB,iBAAkB,QArBH,oDA0BjB,iBJvBI,QIsBa,2DAIf,iBAAkB,QA7BH,6CAkCjB,iBJ/BI,QI8BM,oDAIR,iBAAkB,QArCJ,uCAEhB,QAAS,EADJ,6DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJDpC,oBIHC,yDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJLpC,oBIHC,kDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJTpC,oBIJY,uDAkBhB,iBJdI,QIaiB,8DAInB,iBAAkB,QArBJ,mDA0BhB,iBJtBI,QIqBa,0DAIf,iBAAkB,QA7BJ,4CAkChB,iBJ9BI,QI6BM,mDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJApC,qBIJC,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJJpC,qBIJC,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJRpC,qBILW,sDAkBf,iBJbI,QIYiB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJrBI,QIoBa,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJ7BI,QI4BM,kDAIR,iBAAkB,QArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJCpC,qBILC,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJHpC,qBILC,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJPpC,qBINW,sDAkBf,iBJZI,QIWiB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJpBI,QImBa,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJ5BI,QI2BM,kDAIR,iBAAkB,QArCJ,uCAEhB,QAAS,EADJ,6DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJjCnC,sBI6BA,yDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJrCnC,sBI6BA,kDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJzCnC,sBI4BW,uDAkBhB,iBJ9CK,KI6CgB,8DAInB,iBAAkB,KArBJ,mDA0BhB,iBJtDK,KIqDY,0DAIf,iBAAkB,KA7BJ,4CAkChB,iBJ9DK,KI6DK,mDAIR,iBAAkB,KArCL,sCAEf,QAAS,EADJ,4DAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJ3BnC,sBIuBA,wDAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJ/BnC,sBIuBA,iDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJnCnC,sBIsBU,sDAkBf,iBJxCK,QIuCgB,6DAInB,iBAAkB,QArBL,kDA0Bf,iBJhDK,QI+CY,yDAIf,iBAAkB,QA7BL,2CAkCf,iBJxDK,QIuDK,kDAIR,iBAAkB,QArCA,2CAEpB,QAAS,EADJ,iEAIH,WAAY,EAAE,EAAE,EAAE,IJjCf,IAAO,CIiCsB,EAAE,EAAE,EAAE,IJzBnC,mBIqBA,6DAQH,WAAY,EAAE,EAAE,EAAE,IJrCf,IAAO,CIqCsB,EAAE,EAAE,EAAE,IJ7BnC,mBIqBA,sDAYH,WAAY,EAAE,EAAE,EAAE,IJzCf,IAAO,CIyCsB,EAAE,EAAE,EAAE,IJjCnC,mBIoBe,2DAkBpB,iBJtCK,QIqCgB,kEAInB,iBAAkB,QArBA,uDA0BpB,iBJ9CK,QI6CY,8DAIf,iBAAkB,QA7BA,gDAkCpB,iBJtDK,QIqDK,uDAIR,iBAAkB,QEvE1B,UCWM,WDVgB,KLDlB,cIuJyB,ICvJpB,mBAML,QAAS,aACT,OAAQ,MACR,aAAc,KACd,SAAU,SACV,MAAO,KAEL,iCACA,OAAQ,EACR,SAAU,SACV,MAAO,KAVD,+BAAA,sBAgBN,MAAO,KAhBD,+BAAA,sBAqBN,MAAO,KArBD,gCAAA,uBA0BN,MAAO,IAKb,gBACE,cNoFS,MMhFX,aACE,OAAQ,KAGV,aACE,OAAQ,IAGV,cACE,OAAQ,IAMN,uBACE,OAAQ,EE1Dd,MDYM,WFkIQ,EAAE,EAAE,IAAI,gBAAmB,CAAE,EAAE,IAAI,IAAI,eG5InD,cRmHO,KQhHL,2BACE,aHuImB,QG7IpB,cAUD,yBACE,MRJK,KQPN,qBAgBD,OAAQ,eACR,KAAM,EACN,WAAY,eACZ,UAAW,eACX,SAAU,MACV,IAAK,EACL,MAAO,eACP,QAAS,KAEO,8CACd,QAAS,gBAGV,4CACC,QAAS,KAIX,kCADA,kCPhCA,cOkCyB,YAMzB,gCACA,kCACE,QAAS,KAKT,0BACA,cAAe,IAAI,MRhCd,iBQiCL,OAAQ,EAFN,uCAKA,cAAe,EAOnB,gCACE,WAAY,MACZ,SAAU,KAId,oBACE,aAAc,IAAI,MRlDX,iBQqDT,mBACE,YAAa,IAAI,MRtDV,iBQ2DH,gDACA,cAAe,EAGC,gFACZ,YAAa,KAOnB,uCACE,cAAe,EAED,6DACZ,YAAa,EACb,YAAa,EA7FlB,wBAoGD,WAAY,EAIM,qEACZ,YAAa,EACb,YAAa,EAIjB,uCACE,WAAY,IAAA,MAAA,YADb,6CAIG,WAAY,IAAI,MRxGf,QQ2GK,oDAEJ,WAAY,EAUpB,oBACF,SAAU,OCrIT,kBAAA,oBAAA,oBACC,QAAS,MACT,MAAO,KACP,QAAS,GD6Ib,aACE,iBAAkB,YAClB,cAAe,IAAI,MR9HV,iBQ+HT,QAAS,ORugByB,QQtgBlC,SAAU,SPvIR,uBDuM0B,OCtM1B,wBDsM0B,OQpE9B,6BAWI,cAAe,EAGf,yBACA,MAAO,MACP,aAAc,SAEd,sCACA,8BACA,qCACE,cAAe,OACf,WAAY,OAGb,+CACC,SAAU,SAKhB,YACE,MAAO,KACP,UH/BqB,OGgCrB,YR+D4B,IQ9D5B,OAAQ,EAGV,WACE,MAAO,KAKT,UACE,WAAY,IACZ,MR/KS,QQgLT,UR+C4B,QQ9C5B,OAAU,QAA0B,EACpC,QAAS,OAAA,MALX,0BAAS,gBASL,MRpLO,QQ2KF,gBAAT,gBAcI,WAAY,eAKd,qBACE,UH7DsB,KGgExB,mBACE,QH/DyB,MACA,MG0EzB,kBACA,cAAe,EAGA,8BADA,8BAEb,iBAAkB,EAKtB,eACE,WAAY,IAGd,6BACE,OAAQ,MAGJ,iCACJ,OAAQ,KAIZ,cEpPE,aAAc,EACd,WAAY,KFqPZ,OAAQ,KAAA,EAGkB,yBADxB,iBAEE,MAAO,KACP,aAAc,MAMpB,eACE,WR1PS,QQ4PT,6BAEE,cAAe,IAAI,MR7PZ,QQ8PP,QAAS,IAAA,EC1QV,oCACC,QAAS,MACT,MAAO,KACP,QAAS,GDoQE,0CAMT,cAAe,EANN,2CAUT,YAAa,EAGf,iCACE,OHnOQ,SGoOR,MHpOQ,SGqOR,MAAO,KAIX,6BACE,MAAO,QACP,YAAa,KAGf,yBACE,MRhRO,QQiRP,QAAS,MACT,YAAa,IAGf,2BACE,UAAW,KACX,YAAa,IAQjB,WACE,WAAY,KACZ,OAAQ,EACR,SAAU,KACV,QAAS,EAGP,cPnTA,cOoTuB,IACvB,WR9SO,QQ+SP,YAAa,IAAI,MR9SV,QQ+SP,MR1SO,QQ2SP,cAAe,IACf,QAAS,KANP,2BASA,cAAe,EAGT,mCACN,OAAQ,EAAA,KAAA,EAAA,IAGV,oBACE,QAAS,aACT,YAAa,IACb,YAAa,IAIf,qBACE,UAAW,MACX,YAAa,KAIf,qBACE,MR9SI,QQ+SJ,QAAS,KACT,MAAO,MAGL,yBAGA,0BADA,0BADA,0BAGA,gCACA,0BACA,OAAQ,QACR,aAAc,IAIV,2BACN,QAAS,aA/CT,mBAmDA,MAAO,QAEP,yBACE,YAAa,IACb,gBAAiB,aAGnB,0BACE,WRnWG,kBQ0WP,oBACE,kBRvVI,QQsVN,sBACE,kBR1WK,QQyWP,oBACE,kBRhVI,QQ+UN,iBACE,kBR9UI,QQ6UN,oBACE,kBRjVI,QQgVN,mBACE,kBRnVI,QQkVN,kBACE,kBR/WK,QQ8WP,iBACE,kBRxWK,QQ6WP,iBACE,kBH1XC,QGyXH,kBACE,kBHxXE,QGuXJ,iBACE,kBHvXC,QGsXH,oBACE,kBHrXI,QGoXN,mBACE,kBHnXG,QGkXL,iBACE,kBR7VI,QQ4VN,mBACE,kBR5VI,QQ2VN,mBACE,kBR3VI,QQ0VN,iBACE,kBR1VI,QQyVN,gBACE,kBRzVI,QQwVN,mBACE,kBRxVI,QQuVN,mBACE,kBRvVI,QQsVN,kBACE,kBRtVI,QQqVN,iBACE,kBRrVI,QQoVN,iBACE,kBRpVI,QQmVN,kBACE,kBRtXK,KQqXP,iBACE,kBRhXK,QQ+WP,sBACE,kBR9WK,QQkXT,mBACE,OAAQ,KACR,QAAS,aACT,OAAQ,EAAA,IAOZ,YACE,UAAW,MGxYL,wDACE,iBX2BA,QW5BF,wDAIE,0DACE,MXFD,KWKA,iEACC,MX4EI,QWvFD,qCAiBP,WAAY,IAAI,MXad,QWPD,qDAEG,WAAY,IAAI,MXjBjB,QWeF,sDAMG,WAAY,IAAI,MXClB,QWSN,+BAAA,sBAAA,2CACE,MXnCK,qBWkCE,qCAAA,4BAAA,iDAIL,MXtCG,KW8CE,qEACA,qEADA,4DACA,4DACL,OAAQ,KAIE,8EACC,+EACE,iFACA,iFAJc,+FACjB,qEACC,sEACE,wEACA,wEAJc,sFAK3B,WAAY,QACZ,MXzDG,KW4DS,kFAAA,yEACZ,oBX7DG,KWgEG,2EACO,iFADP,kEACO,wEACb,WAAY,QACZ,MXnEG,KWHH,0DACE,iBXQC,QWTH,0DAIE,4DACE,MXFD,KWKA,mEACC,MX4EI,QWvFD,uCAiBP,WAAY,IAAI,MXNb,QWYF,uDAEG,WAAY,IAAI,MXjBjB,QWeF,wDAMG,WAAY,IAAI,MXlBjB,QW4BP,iCAAA,wBAAA,6CACE,MXnCK,qBWkCE,uCAAA,8BAAA,mDAIL,MXtCG,KW8CE,uEACA,uEADA,8DACA,8DACL,OAAQ,KAIE,gFACC,iFACE,mFACA,mFAJc,iGACjB,uEACC,wEACE,0EACA,0EAJc,wFAK3B,WAAY,QACZ,MXzDG,KW4DS,oFAAA,2EACZ,oBX7DG,KWgEG,6EACO,mFADP,oEACO,0EACb,WAAY,QACZ,MXnEG,KWHH,wDACE,iBXkCA,QWnCF,wDAIE,0DACE,MXFD,KWKA,iEACC,MX4EI,QWvFD,qCAiBP,WAAY,IAAI,MXoBd,QWdD,qDAEG,WAAY,IAAI,MXjBjB,QWeF,sDAMG,WAAY,IAAI,MXQlB,QWEN,+BAAA,sBAAA,2CACE,MXnCK,qBWkCE,qCAAA,4BAAA,iDAIL,MXtCG,KW8CE,qEACA,qEADA,4DACA,4DACL,OAAQ,KAIE,8EACC,+EACE,iFACA,iFAJc,+FACjB,qEACC,sEACE,wEACA,wEAJc,sFAK3B,WAAY,QACZ,MXzDG,KW4DS,kFAAA,yEACZ,oBX7DG,KWgEG,2EACO,iFADP,kEACO,wEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBXoCA,QWrCF,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXsBd,QWhBD,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXUlB,QWAN,4BAAA,mBAAA,wCACE,MXnCK,qBWkCE,kCAAA,yBAAA,8CAIL,MXtCG,KW8CE,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXzDG,KW4DS,+EAAA,sEACZ,oBX7DG,KWgEG,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXnEG,KWHH,wDACE,iBXiCA,QWlCF,wDAIE,0DACE,MXgFI,QW7EL,iEACC,MX4EI,QWvFD,qCAiBP,WAAY,IAAI,MXmBd,QWbD,qDAEG,WAAY,IAAI,MXjBjB,QWeF,sDAMG,WAAY,IAAI,MXOlB,QWGN,+BAAA,sBAAA,2CACE,MX+CU,kBWhDH,qCAAA,4BAAA,iDAIL,MX4CQ,QWpCH,qEACA,qEADA,4DACA,4DACL,OAAQ,KAIE,8EACC,+EACE,iFACA,iFAJc,+FACjB,qEACC,sEACE,wEACA,wEAJc,sFAK3B,WAAY,QACZ,MXyBQ,QWtBI,kFAAA,yEACZ,oBXqBQ,QWlBF,2EACO,iFADP,kEACO,wEACb,WAAY,QACZ,MXeQ,QWrFR,uDACE,iBX+BA,QWhCF,uDAIE,yDACE,MXFD,KWKA,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MXiBd,QWXD,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MXKlB,QWKN,qBAAA,8BAAA,0CACE,MXnCK,qBWkCE,2BAAA,oCAAA,gDAIL,MXtCG,KW8CE,2DACA,2DADA,oEACA,oEACL,OAAQ,KAIE,oEACC,qEACE,uEACA,uEAJc,qFACjB,6EACC,8EACE,gFACA,gFAJc,8FAK3B,WAAY,QACZ,MXzDG,KW4DS,wEAAA,iFACZ,oBX7DG,KWgEG,iEACO,uEADP,0EACO,gFACb,WAAY,QACZ,MXnEG,KWHH,sDACE,iBXGC,QWJH,sDAIE,wDACE,MXgFI,QW7EL,+DACC,MX4EI,QWvFD,mCAiBP,WAAY,IAAI,MXXb,QWiBF,mDAEG,WAAY,IAAI,MXjBjB,QWeF,oDAMG,WAAY,IAAI,MXvBjB,QWiCP,6BAAA,oBAAA,yCACE,MX+CU,kBWhDH,mCAAA,0BAAA,+CAIL,MX4CQ,QWpCH,mEACA,mEADA,0DACA,0DACL,OAAQ,KAIE,4EACC,6EACE,+EACA,+EAJc,6FACjB,mEACC,oEACE,sEACA,sEAJc,oFAK3B,WAAY,QACZ,MXyBQ,QWtBI,gFAAA,uEACZ,oBXqBQ,QWlBF,yEACO,+EADP,gEACO,sEACb,WAAY,KACZ,MXeQ,QWrFR,qDACE,iBXUC,QWXH,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXJb,QWUF,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXhBjB,QW0BP,mBAAA,4BAAA,wCACE,MXnCK,qBWkCE,yBAAA,kCAAA,8CAIL,MXtCG,KW8CE,yDACA,yDADA,kEACA,kEACL,OAAQ,KAIE,kEACC,mEACE,qEACA,qEAJc,mFACjB,2EACC,4EACE,8EACA,8EAJc,4FAK3B,WAAY,QACZ,MXzDG,KW4DS,sEAAA,+EACZ,oBX7DG,KWgEG,+DACO,qEADP,wEACO,8EACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBNFH,QMCC,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MNhBjB,QMsBE,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MN5BrB,QMsCH,4BAAA,mBAAA,wCACE,MXnCK,qBWkCE,kCAAA,yBAAA,8CAIL,MXtCG,KW8CE,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXzDG,KW4DS,+EAAA,sEACZ,oBX7DG,KWgEG,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXnEG,KWHH,sDACE,iBNAF,QMDA,sDAIE,wDACE,MXFD,KWKA,+DACC,MX4EI,QWvFD,mCAiBP,WAAY,IAAI,MNdhB,QMoBC,mDAEG,WAAY,IAAI,MXjBjB,QWeF,oDAMG,WAAY,IAAI,MN1BpB,QMoCJ,6BAAA,oBAAA,yCACE,MXnCK,qBWkCE,mCAAA,0BAAA,+CAIL,MXtCG,KW8CE,mEACA,mEADA,0DACA,0DACL,OAAQ,KAIE,4EACC,6EACE,+EACA,+EAJc,6FACjB,mEACC,oEACE,sEACA,sEAJc,oFAK3B,WAAY,QACZ,MXzDG,KW4DS,gFAAA,uEACZ,oBX7DG,KWgEG,yEACO,+EADP,gEACO,sEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBNCH,QMFC,qDAIE,uDACE,MXgFI,QW7EL,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MNbjB,QMmBE,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MNzBrB,QMmCH,4BAAA,mBAAA,wCACE,MX+CU,kBWhDH,kCAAA,yBAAA,8CAIL,MX4CQ,QWpCH,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXyBQ,QWtBI,+EAAA,sEACZ,oBXqBQ,QWlBF,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXeQ,QWrFR,wDACE,iBNGA,QMJF,wDAIE,0DACE,MXFD,KWKA,iEACC,MX4EI,QWvFD,qCAiBP,WAAY,IAAI,MNXd,QMiBD,qDAEG,WAAY,IAAI,MXjBjB,QWeF,sDAMG,WAAY,IAAI,MNvBlB,QMiCN,sBAAA,+BAAA,2CACE,MXnCK,qBWkCE,4BAAA,qCAAA,iDAIL,MXtCG,KW8CE,4DACA,4DADA,qEACA,qEACL,OAAQ,KAIE,qEACC,sEACE,wEACA,wEAJc,sFACjB,8EACC,+EACE,iFACA,iFAJc,+FAK3B,WAAY,QACZ,MXzDG,KW4DS,yEAAA,kFACZ,oBX7DG,KWgEG,kEACO,wEADP,2EACO,iFACb,WAAY,QACZ,MXnEG,KWHH,uDACE,iBNKD,QMND,uDAIE,yDACE,MXFD,KWKA,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MNTf,QMeA,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MNrBnB,QM+BL,8BAAA,qBAAA,0CACE,MXnCK,qBWkCE,oCAAA,2BAAA,gDAIL,MXtCG,KW8CE,oEACA,oEADA,2DACA,2DACL,OAAQ,KAIE,6EACC,8EACE,gFACA,gFAJc,8FACjB,oEACC,qEACE,uEACA,uEAJc,qFAK3B,WAAY,QACZ,MXzDG,KW4DS,iFAAA,wEACZ,oBX7DG,KWgEG,0EACO,gFADP,iEACO,uEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBX2BA,QW5BF,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXad,QWPD,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXClB,QWSN,mBAAA,4BAAA,wCACE,MXnCK,qBWkCE,yBAAA,kCAAA,8CAIL,MXtCG,KW8CE,yDACA,yDADA,kEACA,kEACL,OAAQ,KAIE,kEACC,mEACE,qEACA,qEAJc,mFACjB,2EACC,4EACE,8EACA,8EAJc,4FAK3B,WAAY,QACZ,MXzDG,KW4DS,sEAAA,+EACZ,oBX7DG,KWgEG,+DACO,qEADP,wEACO,8EACb,WAAY,QACZ,MXnEG,KWHH,uDACE,iBX4BA,QW7BF,uDAIE,yDACE,MXFD,KWKA,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MXcd,QWRD,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MXElB,QWQN,8BAAA,qBAAA,0CACE,MXnCK,qBWkCE,oCAAA,2BAAA,gDAIL,MXtCG,KW8CE,oEACA,oEADA,2DACA,2DACL,OAAQ,KAIE,6EACC,8EACE,gFACA,gFAJc,8FACjB,oEACC,qEACE,uEACA,uEAJc,qFAK3B,WAAY,QACZ,MXzDG,KW4DS,iFAAA,wEACZ,oBX7DG,KWgEG,0EACO,gFADP,iEACO,uEACb,WAAY,QACZ,MXnEG,KWHH,uDACE,iBX6BA,QW9BF,uDAIE,yDACE,MXFD,KWKA,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MXed,QWTD,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MXGlB,QWON,8BAAA,qBAAA,0CACE,MXnCK,qBWkCE,oCAAA,2BAAA,gDAIL,MXtCG,KW8CE,oEACA,oEADA,2DACA,2DACL,OAAQ,KAIE,6EACC,8EACE,gFACA,gFAJc,8FACjB,oEACC,qEACE,uEACA,uEAJc,qFAK3B,WAAY,QACZ,MXzDG,KW4DS,iFAAA,wEACZ,oBX7DG,KWgEG,0EACO,gFADP,iEACO,uEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBX8BA,QW/BF,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXgBd,QWVD,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXIlB,QWMN,4BAAA,mBAAA,wCACE,MXnCK,qBWkCE,kCAAA,yBAAA,8CAIL,MXtCG,KW8CE,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXzDG,KW4DS,+EAAA,sEACZ,oBX7DG,KWgEG,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXnEG,KWHH,oDACE,iBX+BA,QWhCF,oDAIE,sDACE,MXFD,KWKA,6DACC,MX4EI,QWvFD,iCAiBP,WAAY,IAAI,MXiBd,QWXD,iDAEG,WAAY,IAAI,MXjBjB,QWeF,kDAMG,WAAY,IAAI,MXKlB,QWKN,2BAAA,kBAAA,uCACE,MXnCK,qBWkCE,iCAAA,wBAAA,6CAIL,MXtCG,KW8CE,iEACA,iEADA,wDACA,wDACL,OAAQ,KAIE,0EACC,2EACE,6EACA,6EAJc,2FACjB,iEACC,kEACE,oEACA,oEAJc,kFAK3B,WAAY,QACZ,MXzDG,KW4DS,8EAAA,qEACZ,oBX7DG,KWgEG,uEACO,6EADP,8DACO,oEACb,WAAY,QACZ,MXnEG,KWHH,uDACE,iBXgCA,QWjCF,uDAIE,yDACE,MXgFI,QW7EL,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MXkBd,QWZD,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MXMlB,QWIN,8BAAA,qBAAA,0CACE,MX+CU,kBWhDH,oCAAA,2BAAA,gDAIL,MX4CQ,QWpCH,oEACA,oEADA,2DACA,2DACL,OAAQ,KAIE,6EACC,8EACE,gFACA,gFAJc,8FACjB,oEACC,qEACE,uEACA,uEAJc,qFAK3B,WAAY,QACZ,MXyBQ,QWtBI,iFAAA,wEACZ,oBXqBQ,QWlBF,0EACO,gFADP,iEACO,uEACb,WAAY,QACZ,MXeQ,QWrFR,uDACE,iBXiCA,QWlCF,uDAIE,yDACE,MXgFI,QW7EL,gEACC,MX4EI,QWvFD,oCAiBP,WAAY,IAAI,MXmBd,QWbD,oDAEG,WAAY,IAAI,MXjBjB,QWeF,qDAMG,WAAY,IAAI,MXOlB,QWGN,8BAAA,qBAAA,0CACE,MX+CU,kBWhDH,oCAAA,2BAAA,gDAIL,MX4CQ,QWpCH,oEACA,oEADA,2DACA,2DACL,OAAQ,KAIE,6EACC,8EACE,gFACA,gFAJc,8FACjB,oEACC,qEACE,uEACA,uEAJc,qFAK3B,WAAY,QACZ,MXyBQ,QWtBI,iFAAA,wEACZ,oBXqBQ,QWlBF,0EACO,gFADP,iEACO,uEACb,WAAY,QACZ,MXeQ,QWrFR,sDACE,iBXkCA,QWnCF,sDAIE,wDACE,MXFD,KWKA,+DACC,MX4EI,QWvFD,mCAiBP,WAAY,IAAI,MXoBd,QWdD,mDAEG,WAAY,IAAI,MXjBjB,QWeF,oDAMG,WAAY,IAAI,MXQlB,QWEN,6BAAA,oBAAA,yCACE,MXnCK,qBWkCE,mCAAA,0BAAA,+CAIL,MXtCG,KW8CE,mEACA,mEADA,0DACA,0DACL,OAAQ,KAIE,4EACC,6EACE,+EACA,+EAJc,6FACjB,mEACC,oEACE,sEACA,sEAJc,oFAK3B,WAAY,QACZ,MXzDG,KW4DS,gFAAA,uEACZ,oBX7DG,KWgEG,yEACO,+EADP,gEACO,sEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBXmCA,QWpCF,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXqBd,QWfD,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXSlB,QWCN,4BAAA,mBAAA,wCACE,MXnCK,qBWkCE,kCAAA,yBAAA,8CAIL,MXtCG,KW8CE,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXzDG,KW4DS,+EAAA,sEACZ,oBX7DG,KWgEG,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXnEG,KWHH,qDACE,iBXoCA,QWrCF,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXsBd,QWhBD,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXUlB,QWAN,mBAAA,4BAAA,wCACE,MXnCK,qBWkCE,yBAAA,kCAAA,8CAIL,MXtCG,KW8CE,yDACA,yDADA,kEACA,kEACL,OAAQ,KAIE,kEACC,mEACE,qEACA,qEAJc,mFACjB,2EACC,4EACE,8EACA,8EAJc,4FAK3B,WAAY,QACZ,MXzDG,KW4DS,sEAAA,+EACZ,oBX7DG,KWgEG,+DACO,qEADP,wEACO,8EACb,WAAY,QACZ,MXnEG,KWHH,sDACE,iBXEC,KWHH,sDAIE,wDACE,MXgFI,QW7EL,+DACC,MX4EI,QWvFD,mCAiBP,WAAY,IAAI,MXZb,KWkBF,mDAEG,WAAY,IAAI,MXjBjB,QWeF,oDAMG,WAAY,IAAI,MXxBjB,KWkCP,6BAAA,oBAAA,yCACE,MX+CU,kBWhDH,mCAAA,0BAAA,+CAIL,MX4CQ,QWpCH,mEACA,mEADA,0DACA,0DACL,OAAQ,KAIE,4EACC,6EACE,+EACA,+EAJc,6FACjB,mEACC,oEACE,sEACA,sEAJc,oFAK3B,WAAY,QACZ,MXyBQ,QWtBI,gFAAA,uEACZ,oBXqBQ,QWlBF,yEACO,+EADP,gEACO,sEACb,WAAY,KACZ,MXeQ,QWrFR,qDACE,iBXQC,QWTH,qDAIE,uDACE,MXFD,KWKA,8DACC,MX4EI,QWvFD,kCAiBP,WAAY,IAAI,MXNb,QWYF,kDAEG,WAAY,IAAI,MXjBjB,QWeF,mDAMG,WAAY,IAAI,MXlBjB,QW4BP,4BAAA,mBAAA,wCACE,MXnCK,qBWkCE,kCAAA,yBAAA,8CAIL,MXtCG,KW8CE,kEACA,kEADA,yDACA,yDACL,OAAQ,KAIE,2EACC,4EACE,8EACA,8EAJc,4FACjB,kEACC,mEACE,qEACA,qEAJc,mFAK3B,WAAY,QACZ,MXzDG,KW4DS,+EAAA,sEACZ,oBX7DG,KWgEG,wEACO,8EADP,+DACO,qEACb,WAAY,QACZ,MXnEG,KWHH,0DACE,iBXUC,QWXH,0DAIE,4DACE,MXFD,KWKA,mEACC,MX4EI,QWvFD,uCAiBP,WAAY,IAAI,MXJb,QWUF,uDAEG,WAAY,IAAI,MXjBjB,QWeF,wDAMG,WAAY,IAAI,MXhBjB,QW0BP,iCAAA,wBAAA,6CACE,MXnCK,qBWkCE,uCAAA,8BAAA,mDAIL,MXtCG,KW8CE,uEACA,uEADA,8DACA,8DACL,OAAQ,KAIE,gFACC,iFACE,mFACA,mFAJc,iGACjB,uEACC,wEACE,0EACA,0EAJc,wFAK3B,WAAY,QACZ,MXzDG,KW4DS,oFAAA,2EACZ,oBX7DG,KWgEG,6EACO,mFADP,oEACO,0EACb,WAAY,QACZ,MXnEG,KQqZO,8CACZ,YAAa,EI3ZjB,uBACE,iBZcO,KYbP,QAAS,MACT,OAAQ,KACR,KAAM,EACN,QAAS,GACT,SAAU,SACV,IAAK,EACL,MAAO,KACP,QZ+iBgC,KYtiBhC,wCADA,wCAEE,aZNK,QYeP,gCAAA,8BAAA,iCAAA,mCAAA,iCACE,MZxBK,KYyBL,YAAa,EAAA,IAAA,EAAA,KChCnB,kBACE,SAAU,SACV,MAAO,EACP,IAAK,EACL,QbojBkC,KaxjBnB,wBAOb,SAAU,MAId,iBACE,KAAM,EACN,SAAU,SACV,IAAK,EACL,QbyiBkC,Ka7iBpB,uBAOZ,SAAU,MAId,qBACE,OAAQ,EACR,SAAU,SACV,MAAO,EACP,Qb8hBkC,KaliBhB,2BAOhB,SAAU,MAId,oBACE,OAAQ,EACR,KAAM,EACN,SAAU,SACV,QbmhBkC,KavhBjB,0BAOf,SAAU,MCtCX,kBACC,Wd6BM,6Bc1BJ,yBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,gCACE,WdmBI,oBclBJ,MdPK,KcLR,oBACC,WdUO,+BcPL,2BACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,kCACE,WdAK,sBcCL,MdPK,KcLR,kBACC,WdoCM,6BcjCJ,yBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,gCACE,Wd0BI,oBczBJ,MdPK,KcLR,eACC,WdsCM,8BcnCJ,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,Wd4BI,qBc3BJ,MdPK,KcLR,kBACC,WdmCM,6Bc1BN,gCACE,WdyBI,oBcxBJ,Md2EU,QcvFb,iBACC,WdiCM,6Bc9BJ,wBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,+BACE,WduBI,oBctBJ,MdPK,KcLR,gBACC,WdKO,+BcIP,8BACE,WdLK,sBcML,Md2EU,QcvFb,eACC,WdYO,4BcTL,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,WdEK,mBcDL,MdPK,KcLR,eACC,WTAG,2BSGD,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,WTVC,kBSWD,MdPK,KcLR,gBACC,WTEI,8BSCF,uBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,8BACE,WTRE,qBSSF,MdPK,KcLR,eACC,WTGG,6BSMH,6BACE,WTPC,oBSQD,Md2EU,QcvFb,kBACC,WTKM,8BSFJ,yBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,gCACE,WTLI,qBSMJ,MdPK,KcLR,iBACC,WTOK,6BSJH,wBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,+BACE,WTHG,oBSIH,MdPK,KcLR,eACC,Wd6BM,6Bc1BJ,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,WdmBI,oBclBJ,MdPK,KcLR,iBACC,Wd8BM,8Bc3BJ,wBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,+BACE,WdoBI,qBcnBJ,MdPK,KcLR,iBACC,Wd+BM,8Bc5BJ,wBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,+BACE,WdqBI,qBcpBJ,MdPK,KcLR,eACC,WdgCM,8Bc7BJ,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,WdsBI,qBcrBJ,MdPK,KcLR,cACC,WdiCM,6Bc9BJ,qBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,4BACE,WduBI,oBctBJ,MdPK,KcLR,iBACC,WdkCM,8BczBN,+BACE,WdwBI,qBcvBJ,Md2EU,QcvFb,iBACC,WdmCM,6Bc1BN,+BACE,WdyBI,oBcxBJ,Md2EU,QcvFb,gBACC,WdoCM,6BcjCJ,uBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,8BACE,Wd0BI,oBczBJ,MdPK,KcLR,eACC,WdqCM,8BclCJ,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,Wd2BI,qBc1BJ,MdPK,KcLR,eACC,WdsCM,8BcnCJ,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,Wd4BI,qBc3BJ,MdPK,KcLR,gBACC,WdIO,+BcKP,8BACE,WdNK,sBcOL,Md2EU,QcvFb,eACC,WdUO,+BcPL,sBACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,6BACE,WdAK,sBcCL,MdPK,KcLR,oBACC,WdYO,4BcTL,2BACE,MdAG,KcCH,YAAa,EAAA,IAAA,EAAA,KAIjB,kCACE,WdEK,mBcDL,MdPK,KePP,cAAA,cAGA,OAAQ,YAHR,cdCA,ccOuB,EACvB,aAAc,IACd,WAAY,KAVZ,cAeA,SAAU,OACV,SAAU,SAEF,+BACN,WfZK,KeaL,OAAQ,QACR,QAAS,MACT,UAAW,MACX,WAAY,KACZ,UAAW,KACX,QAAS,EACT,QAAS,EACT,SAAU,SACV,MAAO,EACP,WAAY,MACZ,IAAK,EA9BX,cAmCI,UfwM0B,kBenM9B,aACE,iBfjCS,QekCT,aVuJ4B,KUtJ5B,MVqJqB,KUxJX,mBAAA,oBAAA,mBAQR,iBAAkB,QAClB,MAAO,QAKX,SdrDI,ccsDqB,IACvB,iBfhDS,QeiDT,OAAQ,IAAI,MVwIgB,KUvI5B,Mf7CS,Qe8CT,UAAW,KACX,OAAQ,KACR,OAAQ,EAAA,EAAA,KAAA,KACR,UAAW,KACX,QAAS,KAAA,IACT,SAAU,SACV,WAAY,OAGV,aAGA,cADA,cADA,cAGA,oBACA,cACA,QAAS,MACT,UAAW,KArBP,eAyBJ,WfvEO,QewEP,aAAc,KACd,MV+GmB,KU1If,gBAAA,eR1CF,WQ0EkB,MAAM,EAAE,IAAI,IfrEzB,iBeyEP,gBACA,UAAW,KACX,YAAa,IACb,SAAU,SACV,MAAO,MACP,IAAK,KAMT,QCJE,QXkGoB,QACA,OHzEhB,UAtCW,Occf,YhByG4B,IC3M1B,cIsMsB,OYtM1B,ShBAI,cDgN0B,OiB1M1B,WZuMG,EAAA,IAAA,IAAA,eAAA,CAAA,EAAA,IAAA,IAAA,gBYlML,iBjBLS,KiBMT,YAAa,IAAI,MjBJR,QiBKT,cjBuGO,KiBtGP,QAAS,KAET,WACE,MjBJO,QiBKP,gBAAiB,UAFlB,iBAKG,MjBbK,QiBiBR,sBACC,cAAe,EA1BX,wBA+BJ,kBAAmB,QA/Bf,yBAmCJ,kBAAmB,QAnCf,sBAuCJ,kBAAmB,QAvCf,yBA2CJ,kBAAmB,QC3CrB,aACE,aAAc,KAGhB,cACE,MlBWO,KkBVP,QAAS,GAFL,oBAKF,QAAS,GAIb,SACE,MlBRO,KkBSP,gBAAiB,UAMnB,eACE,MlBhBO,KkBiBP,WlBQM,QkBPN,aAAc,QAGhB,uBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,0BACE,iBAAkB,QAGpB,mCACE,MAAO,QDgBT,iBACE,MlBhBO,KkBiBP,WlBXO,QkBYP,aAAc,QAGhB,yBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,4BACE,iBAAkB,QAGpB,qCACE,MAAO,QDgBT,eACE,MlBhBO,KkBiBP,WlBeM,QkBdN,aAAc,QAGhB,uBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,0BACE,iBAAkB,QAGpB,mCACE,MAAO,QDgBT,YACE,MlBhBO,KkBiBP,WlBiBM,QkBhBN,aAAc,QAGhB,oBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,uBACE,iBAAkB,QAGpB,gCACE,MAAO,QDgBT,eACE,MlBkEY,QkBjEZ,WlBcM,QkBbN,aAAc,QAGhB,uBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,0BACE,iBAAkB,QAGpB,mCACE,MAAO,QDgBT,cACE,MlBhBO,KkBiBP,WlBYM,QkBXN,aAAc,QAGhB,sBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,yBACE,iBAAkB,QAGpB,kCACE,MAAO,QDgBT,aACE,MlBkEY,QkBjEZ,WlBhBO,QkBiBP,aAAc,QAGhB,qBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,wBACE,iBAAkB,QAGpB,iCACE,MAAO,QDgBT,YACE,MlBhBO,KkBiBP,WlBTO,QkBUP,aAAc,QAGhB,oBC/BA,MCmFQ,QjB9EN,iBiB8EM,QDjFR,aCiFQ,QD/ER,uBACE,iBAAkB,QAGpB,gCACE,MAAO,QELQ,wBACf,MAAO,QAKe,iDACpB,iBrBDK,KqBEL,cAAe,EACf,WAAY,MAAM,EAAE,IAAI,ErBAnB,OAAO,CqBCA,MAAM,EAAG,KAAI,ErBDpB,QqBEL,SAAU,OACV,IAAK,EACL,QAAS,GAKQ,4DACb,iBrBJC,QqBKD,WAAY,MAAM,EAAE,IAAI,ErBuSJ,OAAuB,CqBtS/B,MAAM,EAAG,KAAI,ErBsSL,QqB5TxB,iBA+BF,oBACA,oBACE,OAAQ,EAjCR,mBAwCF,sBACA,sBACE,WAAY,OAQD,uCADA,uCADA,uCADA,uCAIX,eAAgB,OAQH,gDADA,gDADA,gDADA,gDAKX,arB+DG,OqBjEQ,+CADA,+CADA,+CADA,+CASX,crB2DG,OsB5HM,uBAAA,wBAGb,iBAAkB,KAGlB,sBAGA,uBADA,uBADA,uBAGA,6BACA,uBACA,QAAS,aACT,UAAW,KACX,WAAY,MACZ,SAAU,SACV,IAAK,IACL,QAAS","sourcesContent":["/*!\n * AdminLTE v3.0.0\n * Only Components\n * Author: Colorlib\n *\t Website: AdminLTE.io \n * License: Open source - MIT \n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/mixins';\n// @import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/components';\n","//\n// Component: Forms\n//\n \n.form-group {\n &.has-icon {\n position: relative;\n\n .form-control {\n padding-right: 35px;\n }\n\n .form-icon {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n font-size: 1rem;\n // margin-top: -3px;\n padding: $input-btn-padding-y $input-btn-padding-x;\n position: absolute;\n right: 3px;\n top: 0;\n }\n }\n}\n\n// Button groups\n.btn-group-vertical {\n .btn {\n &.btn-flat:first-of-type,\n &.btn-flat:last-of-type {\n @include border-radius(0);\n }\n }\n}\n\n// Support icons in form-control\n.form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height;\n }\n}\n\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n}\n\n.form-group-lg {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-lg;\n }\n }\n}\n\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n}\n\n.form-group-sm {\n .form-control + .form-control-feedback {\n &.fa,\n &.fas,\n &.far,\n &.fab,\n &.glyphicon,\n &.ion {\n line-height: $input-height-sm;\n }\n }\n}\n\nlabel:not(.form-check-label, .custom-file-label) {\n font-weight: $font-weight-bold;\n}\n\n.warning-feedback {\n @include font-size($form-feedback-font-size);\n color: theme-color('warning');\n display: none;\n margin-top: $form-feedback-margin-top;\n width: 100%;\n}\n\n.warning-tooltip {\n @include border-radius($form-feedback-tooltip-border-radius);\n @include font-size($form-feedback-tooltip-font-size);\n background-color: rgba(theme-color('warning'), $form-feedback-tooltip-opacity);\n color: color-yiq(theme-color('warning'));\n display: none;\n line-height: $form-feedback-tooltip-line-height;\n margin-top: .1rem;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n position: absolute;\n top: 100%;\n z-index: 5;\n}\n\n.form-control {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $input-height-inner;\n // background-image: none;\n // background-repeat: no-repeat;\n // background-position: center right $input-height-inner-quarter;\n // background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n// stylelint-disable-next-line selector-no-qualifying-type\ntextarea.form-control {\n &.is-warning {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n}\n\n.custom-select {\n &.is-warning {\n border-color: theme-color('warning');\n\n @if $enable-validation-icons {\n // padding-right: $custom-select-feedback-icon-padding-right;\n // background: $custom-select-background, none $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n\n.form-control-file {\n &.is-warning {\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.form-check-input {\n &.is-warning {\n ~ .form-check-label {\n color: theme-color('warning');\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n }\n}\n\n.custom-control-input.is-warning {\n ~ .custom-control-label {\n color: theme-color('warning');\n\n &::before {\n border-color: theme-color('warning');\n }\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n @include gradient-bg(lighten(theme-color('warning'), 10%));\n border-color: lighten(theme-color('warning'), 10%);\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: theme-color('warning');\n }\n }\n}\n\n// custom file\n.custom-file-input {\n &.is-warning {\n ~ .custom-file-label {\n border-color: theme-color('warning');\n }\n\n ~ .warning-feedback,\n ~ .warning-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: theme-color('warning');\n box-shadow: 0 0 0 $input-focus-width rgba(theme-color('warning'), .25);\n }\n }\n }\n}\n\n// custom switch color variations\n.custom-switch {\n @each $name, $color in $theme-colors {\n @include custom-switch-variant($name, $color);\n }\n\n @each $name, $color in $colors {\n @include custom-switch-variant($name, $color);\n }\n}\n\n// custom range color variations\n.custom-range {\n @each $name, $color in $theme-colors {\n @include custom-range-variant($name, $color);\n }\n\n @each $name, $color in $colors {\n @include custom-range-variant($name, $color);\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 15px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 10%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: none !default;\n$btn-focus-width: 0 !default;\n$btn-focus-box-shadow: none !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: none !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 0 0 rgba($black, 0) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: 0 !default;\n$input-focus-box-shadow: none !default;\n\n$input-placeholder-color: lighten($gray-600, 15%) !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;\n$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;\n\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: none !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $custom-select-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $custom-select-focus-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: ($spacer / 2) !default;\n\n$navbar-nav-link-padding-x: 1rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .75) !default;\n$navbar-dark-hover-color: rgba($white, 1) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 0 !default; //$border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n","// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n","//\n// Mixins: Custom Forms\n//\n\n// Custom Switch Variant\n@mixin custom-switch-variant($name, $color) {\n &.custom-switch-off-#{$name} {\n & .custom-control-input ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input ~ .custom-control-label::after {\n background: darken($color, 25%);\n }\n }\n\n &.custom-switch-on-#{$name} {\n & .custom-control-input:checked ~ .custom-control-label::before {\n background: #{$color};\n border-color: darken($color, 20%);\n }\n\n & .custom-control-input:checked:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n & .custom-control-input:checked ~ .custom-control-label::after {\n background: lighten($color, 30%);\n }\n }\n}\n\n// Custom Range Variant\n@mixin custom-range-variant($name, $color) {\n &.custom-range-#{$name} {\n &:focus {\n outline: none;\n\n &::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-moz-range-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n\n &::-ms-thumb {\n box-shadow: 0 0 0 1px $body-bg, 0 0 0 2px rgba($color, .25);\n }\n }\n\n &::-webkit-slider-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-moz-range-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n\n &::-ms-thumb {\n background-color: $color;\n\n &:active {\n background-color: lighten($color, 35%);\n }\n }\n }\n}\n","//\n// Core: Variables\n//\n\n// COLORS\n// --------------------------------------------------------\n$blue: #0073b7 !default;\n$navy: #001f3f !default;\n$teal: #39cccc !default;\n$olive: #3d9970 !default;\n$lime: #01ff70 !default;\n$orange: #ff851b !default;\n$fuchsia: #f012be !default;\n$purple: #605ca8 !default;\n$maroon: #d81b60 !default;\n$black: #111 !default;\n$gray-x-light: #d2d6de !default;\n\n$colors: map-merge((\n 'navy': $navy,\n 'olive': $olive,\n 'lime': $lime,\n 'fuchsia': $fuchsia,\n 'maroon': $maroon,\n), $colors);\n\n// LAYOUT\n// --------------------------------------------------------\n\n$font-size-root: 1rem !default;\n\n// Sidebar\n$sidebar-width: 250px !default;\n$sidebar-padding-x: 0.5rem !default;\n$sidebar-padding-y: 0 !default;\n\n// Boxed layout maximum width\n$boxed-layout-max-width: 1250px !default;\n\n// When to show the smaller logo\n$screen-header-collapse: map-get($grid-breakpoints, md) !default;\n\n// Body background (Affects main content background only)\n$main-bg: #f4f6f9 !default;\n\n// Content padding\n$content-padding-y: 0 !default;\n$content-padding-x: $navbar-padding-x !default;\n\n// IMAGE SIZES\n// --------------------------------------------------------\n$img-size-sm: 1.875rem !default;\n$img-size-md: 3.75rem !default;\n$img-size-lg: 6.25rem !default;\n$img-size-push: .625rem !default;\n\n// MAIN HEADER\n// --------------------------------------------------------\n$main-header-bottom-border-width: $border-width !default;\n$main-header-bottom-border-color: $gray-300 !default;\n$main-header-bottom-border: $main-header-bottom-border-width solid $main-header-bottom-border-color !default;\n$main-header-link-padding-y: $navbar-padding-y !default;\n$main-header-link-padding-x: $navbar-padding-x !default;\n$main-header-brand-padding-y: $navbar-brand-padding-y !default;\n$main-header-brand-padding-x: $navbar-padding-x !default;\n$main-header-height-inner: ($nav-link-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height: calc(#{$main-header-height-inner} + #{$main-header-bottom-border-width}) !default;\n$nav-link-sm-padding-y: .35rem !default;\n$nav-link-sm-height: ($font-size-sm * $line-height-sm + $nav-link-sm-padding-y * 1.785) !default;\n$main-header-height-sm-inner: ($nav-link-sm-height + ($main-header-link-padding-y * 2)) !default;\n$main-header-height-sm: calc(#{$main-header-height-sm-inner} + #{$main-header-bottom-border-width}) !default;\n\n\n// Main header skins\n$main-header-dark-form-control-bg: hsla(100, 100%, 100%, 0.2) !default;\n$main-header-dark-form-control-focused-bg: hsla(100, 100%, 100%, 0.6) !default;\n$main-header-dark-form-control-focused-color: $gray-800 !default;\n$main-header-dark-form-control-border: 0 !default;\n$main-header-dark-form-control-focused-border: 0 !default;\n$main-header-dark-placeholder-color: hsla(100, 100%, 100%, 0.6) !default;\n\n$main-header-light-form-control-bg: darken($gray-100, 2%) !default;\n$main-header-light-form-control-focused-bg: $gray-200 !default;\n$main-header-light-form-control-focused-color: $gray-800 !default;\n$main-header-light-form-control-border: 0 !default;\n$main-header-light-form-control-focused-border: 0 !default;\n$main-header-light-placeholder-color: hsla(0, 0%, 0%, 0.6) !default;\n\n// MAIN FOOTER\n// --------------------------------------------------------\n$main-footer-padding: 1rem !default;\n$main-footer-padding-sm: $main-footer-padding * .812 !default;\n$main-footer-border-top-width: 1px !default;\n$main-footer-border-top-color: $gray-300 !default;\n$main-footer-border-top: $main-footer-border-top-width solid $main-footer-border-top-color !default;\n$main-footer-height-inner: (($font-size-root * $line-height-base) + ($main-footer-padding * 2)) !default;\n$main-footer-height: calc(#{$main-footer-height-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-height-sm-inner: (($font-size-sm * $line-height-base) + ($main-footer-padding-sm * 2)) !default;\n$main-footer-height-sm: calc(#{$main-footer-height-sm-inner} + #{$main-footer-border-top-width}) !default;\n$main-footer-bg: $white;\n\n// SIDEBAR SKINS\n// --------------------------------------------------------\n\n// Dark sidebar\n$sidebar-dark-bg: $dark !default;\n$sidebar-dark-hover-bg: hsla(100, 100%, 100%, 0.1) !default;\n$sidebar-dark-color: #C2C7D0 !default;\n$sidebar-dark-hover-color: $white !default;\n$sidebar-dark-active-color: $white !default;\n$sidebar-dark-submenu-bg: transparent !default;\n$sidebar-dark-submenu-color: #C2C7D0 !default;\n$sidebar-dark-submenu-hover-color: $white !default;\n$sidebar-dark-submenu-hover-bg: $sidebar-dark-hover-bg !default;\n$sidebar-dark-submenu-active-color: $sidebar-dark-bg !default;\n$sidebar-dark-submenu-active-bg: hsla(100, 100%, 100%, 0.9) !default;\n$sidebar-dark-header-color: $white !default;\n\n// Light sidebar\n$sidebar-light-bg: $white !default;\n$sidebar-light-hover-bg: rgba($black, .1) !default;\n$sidebar-light-color: $gray-800 !default;\n$sidebar-light-hover-color: $gray-900 !default;\n$sidebar-light-active-color: $black !default;\n$sidebar-light-submenu-bg: transparent !default;\n$sidebar-light-submenu-color: #777 !default;\n$sidebar-light-submenu-hover-color: #000 !default;\n$sidebar-light-submenu-hover-bg: $sidebar-light-hover-bg !default;\n$sidebar-light-submenu-active-color: $sidebar-light-hover-color !default;\n$sidebar-light-submenu-active-bg: $sidebar-light-submenu-hover-bg !default;\n$sidebar-light-header-color: $gray-800 !default;\n\n// SIDEBAR MINI\n// --------------------------------------------------------\n$sidebar-mini-width: ($nav-link-padding-x + $sidebar-padding-x + .8rem) * 2 !default;\n$sidebar-nav-icon-width: $sidebar-mini-width - (($sidebar-padding-x + $nav-link-padding-x) * 2) !default;\n$sidebar-user-image-width: $sidebar-nav-icon-width + ($nav-link-padding-x / 2) !default;\n\n// CONTROL SIDEBAR\n// --------------------------------------------------------\n$control-sidebar-width: $sidebar-width !default;\n\n// Cards\n// --------------------------------------------------------\n$card-border-color: $gray-100 !default;\n$card-dark-border-color: lighten($gray-900, 10%) !default;\n$card-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2) !default;\n$card-title-font-size: 1.1rem !default;\n$card-title-font-size-sm: 1rem !default;\n$card-title-font-weight: $font-weight-normal !default;\n$card-nav-link-padding-sm-y: .4rem !default;\n$card-nav-link-padding-sm-x: .8rem !default;\n$card-img-size: $img-size-sm !default;\n\n// PROGRESS BARS\n// --------------------------------------------------------\n$progress-bar-border-radius: 1px !default;\n$progress-bar-sm-border-radius: 1px !default;\n$progress-bar-xs-border-radius: 1px !default;\n\n// DIRECT CHAT\n// --------------------------------------------------------\n$direct-chat-height: 250px !default;\n$direct-chat-default-msg-bg: $gray-x-light !default;\n$direct-chat-default-font-color: #444 !default;\n$direct-chat-default-msg-border-color: $gray-x-light !default;\n\n// CHAT WIDGET\n// --------------------------------------------------------\n$attachment-border-radius: 3px !default;\n\n// Z-INDEX\n// --------------------------------------------------------\n$zindex-main-header: $zindex-fixed + 4 !default;\n$zindex-main-sidebar: $zindex-fixed + 8 !default;\n$zindex-main-footer: $zindex-fixed + 2 !default;\n$zindex-control-sidebar: $zindex-fixed + 1 !default;\n$zindex-sidebar-mini-links: 010 !default;\n$zindex-toasts: $zindex-main-sidebar + 2 !default;\n\n// TRANSITIONS SETTINGS\n// --------------------------------------------------------\n\n// Transition global options\n$transition-speed: 0.3s !default;\n$transition-fn: ease-in-out !default;\n\n// TEXT\n// --------------------------------------------------------\n$font-size-xs: ($font-size-base * .75) !default;\n$font-size-xl: ($font-size-base * 2) !default;\n\n\n// BUTTON\n// --------------------------------------------------------\n$button-default-background-color: $gray-100 !default;\n$button-default-color: #444 !default;\n$button-default-border-color: #ddd !default;\n\n$button-padding-y-xs: .125rem !default;\n$button-padding-x-xs: .25rem !default;\n$button-line-height-xs: $line-height-sm !default;\n$button-font-size-xs: ($font-size-base * .75) !default;\n$button-border-radius-xs: .15rem !default;\n\n \n// ELEVATION\n// --------------------------------------------------------\n$elevations: ();\n$elevations: map-merge((\n 1: unquote('0 1px 3px ' + rgba($black, 0.12) + ', 0 1px 2px ' + rgba($black, 0.24)),\n 2: unquote('0 3px 6px ' + rgba($black, 0.16) + ', 0 3px 6px ' + rgba($black, 0.23)),\n 3: unquote('0 10px 20px ' + rgba($black, 0.19) + ', 0 6px 6px ' + rgba($black, 0.23)),\n 4: unquote('0 14px 28px ' + rgba($black, 0.25) + ', 0 10px 10px ' + rgba($black, 0.22)),\n 5: unquote('0 19px 38px ' + rgba($black, 0.30) + ', 0 15px 12px ' + rgba($black, 0.22)),\n), $elevations);\n \n// RIBBON\n// --------------------------------------------------------\n$ribbon-border-size: 3px !default;\n$ribbon-line-height: 100% !default;\n$ribbon-padding: .375rem 0 !default;\n$ribbon-font-size: .8rem !default;\n$ribbon-width: 90px !default;\n$ribbon-wrapper-size: 70px !default;\n$ribbon-top: 10px !default;\n$ribbon-right: -2px !default;\n$ribbon-lg-wrapper-size: 120px !default;\n$ribbon-lg-width: 160px !default;\n$ribbon-lg-top: 26px !default;\n$ribbon-lg-right: 0px !default;\n$ribbon-xl-wrapper-size: 180px !default;\n$ribbon-xl-width: 240px !default;\n$ribbon-xl-top: 47px !default;\n$ribbon-xl-right: 4px !default;\n","//\n// Component: Progress Bar\n//\n\n//General CSS\n.progress {\n @include box-shadow(none);\n @include border-radius($progress-bar-border-radius);\n\n // Vertical bars\n &.vertical {\n display: inline-block;\n height: 200px;\n margin-right: 10px;\n position: relative;\n width: 30px;\n\n > .progress-bar {\n bottom: 0;\n position: absolute;\n width: 100%;\n }\n\n //Sizes\n &.sm,\n &.progress-sm {\n width: 20px;\n }\n\n &.xs,\n &.progress-xs {\n width: 10px;\n }\n\n &.xxs,\n &.progress-xxs {\n width: 3px;\n }\n }\n}\n\n.progress-group {\n margin-bottom: map-get($spacers, 2);\n}\n\n// size variation\n.progress-sm {\n height: 10px;\n}\n\n.progress-xs {\n height: 7px;\n}\n\n.progress-xxs {\n height: 3px;\n}\n\n// Remove margins from progress bars when put in a table\n.table {\n tr > td {\n .progress {\n margin: 0;\n }\n }\n}\n","@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n","//\n// Component: Cards\n//\n\n.card {\n @include box-shadow($card-shadow);\n margin-bottom: map-get($spacers, 3);\n\n &.bg-dark {\n .card-header {\n border-color: $card-dark-border-color;\n }\n\n &,\n .card-body {\n color: $white;\n }\n }\n\n &.maximized-card {\n height: 100% !important;\n left: 0;\n max-height: 100% !important;\n max-width: 100% !important;\n position: fixed;\n top: 0;\n width: 100% !important;\n z-index: 9999;\n\n &.was-collapsed .card-body {\n display: block !important;\n }\n\n [data-widget='collapse'] {\n display: none;\n }\n\n .card-header,\n .card-footer {\n @include border-radius(0 !important);\n }\n }\n\n // collapsed mode\n &.collapsed-card {\n .card-body,\n .card-footer {\n display: none;\n }\n }\n\n .nav.flex-column {\n > li {\n border-bottom: 1px solid $card-border-color;\n margin: 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n }\n }\n\n // fixed height to 300px\n &.height-control {\n .card-body {\n max-height: 300px;\n overflow: auto;\n }\n }\n\n .border-right {\n border-right: 1px solid $card-border-color;\n }\n\n .border-left {\n border-left: 1px solid $card-border-color;\n }\n\n &.card-tabs {\n &:not(.card-outline) {\n & .card-header {\n border-bottom: 0;\n\n .nav-item {\n &:first-child .nav-link {\n margin-left: -1px;\n }\n }\n }\n }\n\n &.card-outline {\n .nav-item {\n border-bottom: 0;\n\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n }\n }\n\n &.card-outline-tabs {\n border-top: 0;\n\n .card-header {\n .nav-item {\n &:first-child .nav-link {\n border-left: 0;\n margin-left: 0;\n }\n }\n\n a {\n border-top: 3px solid transparent;\n\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n &:hover {\n margin-top: 0;\n }\n }\n }\n }\n }\n\n}\n\n// Maximized Card Body Scroll fix\nhtml.maximized-card {\n overflow: hidden;\n}\n\n// Add clearfix to header, body and footer\n.card-header,\n.card-body,\n.card-footer {\n @include clearfix;\n}\n\n// Box header\n.card-header {\n background-color: transparent;\n border-bottom: 1px solid $card-border-color;\n padding: (($card-spacer-y / 2) * 2) $card-spacer-x;\n position: relative;\n\n @if $enable-rounded {\n @include border-top-radius($border-radius);\n }\n\n .collapsed-card & {\n border-bottom: 0;\n }\n\n > .card-tools {\n float: right;\n margin-right: -$card-spacer-x / 2;\n\n .input-group,\n .nav,\n .pagination {\n margin-bottom: -$card-spacer-y / 2.5;\n margin-top: -$card-spacer-y / 2.5;\n }\n\n [data-toggle='tooltip'] {\n position: relative;\n }\n }\n}\n\n.card-title {\n float: left;\n font-size: $card-title-font-size;\n font-weight: $card-title-font-weight;\n margin: 0;\n}\n\n.card-text {\n clear: both;\n}\n\n\n// Box Tools Buttons\n.btn-tool {\n background: transparent;\n color: $gray-500;\n font-size: $font-size-sm;\n margin: -(($card-spacer-y / 2) * 2) 0;\n padding: .25rem .5rem;\n\n .btn-group.show &,\n &:hover {\n color: $gray-700;\n }\n\n .show &,\n &:focus {\n box-shadow: none !important;\n }\n}\n\n.text-sm {\n .card-title {\n font-size: $card-title-font-size-sm;\n }\n\n .nav-link {\n padding: $card-nav-link-padding-sm-y $card-nav-link-padding-sm-x; \n }\n}\n\n// Box Body\n.card-body {\n // @include border-radius-sides(0, 0, $border-radius, $border-radius);\n // .no-header & {\n // @include border-top-radius($border-radius);\n // }\n\n // Tables within the box body\n > .table {\n margin-bottom: 0;\n\n > thead > tr > th,\n > thead > tr > td {\n border-top-width: 0;\n }\n }\n\n // Calendar within the box body\n .fc {\n margin-top: 5px;\n }\n\n .full-width-chart {\n margin: -19px;\n }\n\n &.p-0 .full-width-chart {\n margin: -9px;\n }\n}\n\n.chart-legend {\n @include list-unstyled;\n margin: 10px 0;\n\n > li {\n @media (max-width: map-get($grid-breakpoints, sm)) {\n float: left;\n margin-right: 10px;\n }\n }\n}\n\n// Comment Box\n.card-comments {\n background: $gray-100;\n\n .card-comment {\n @include clearfix;\n border-bottom: 1px solid $gray-200;\n padding: 8px 0;\n\n &:last-of-type {\n border-bottom: 0;\n }\n\n &:first-of-type {\n padding-top: 0;\n }\n\n img {\n height: $card-img-size;\n width: $card-img-size;\n float: left;\n }\n }\n\n .comment-text {\n color: lighten($gray-700, 20%);\n margin-left: 40px;\n }\n\n .username {\n color: $gray-700;\n display: block;\n font-weight: 600;\n }\n\n .text-muted {\n font-size: 12px;\n font-weight: 400;\n }\n}\n\n// Widgets\n//-----------\n\n// Widget: TODO LIST\n.todo-list {\n list-style: none;\n margin: 0;\n overflow: auto;\n padding: 0;\n\n // Todo list element\n > li {\n @include border-radius(2px);\n background: $gray-100;\n border-left: 2px solid $gray-200;\n color: $gray-700;\n margin-bottom: 2px;\n padding: 10px;\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n > input[type='checkbox'] {\n margin: 0 10px 0 5px;\n }\n\n .text {\n display: inline-block;\n font-weight: 600;\n margin-left: 5px;\n }\n\n // Time labels\n .badge {\n font-size: .7rem;\n margin-left: 10px;\n }\n\n // Tools and options box\n .tools {\n color: theme-color('danger');\n display: none;\n float: right;\n\n // icons\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n cursor: pointer;\n margin-right: 5px;\n }\n }\n\n &:hover .tools {\n display: inline-block;\n }\n\n &.done {\n color: darken($gray-500, 25%);\n\n .text {\n font-weight: 500;\n text-decoration: line-through;\n }\n\n .badge {\n background: $gray-500 !important;\n }\n }\n }\n\n // Color variants\n @each $name, $color in $theme-colors {\n .#{$name} {\n border-left-color: $color;\n }\n }\n\n @each $name, $color in $colors {\n .#{$name} {\n border-left-color: $color;\n }\n }\n\n .handle {\n cursor: move;\n display: inline-block;\n margin: 0 5px;\n }\n}\n\n// END TODO WIDGET\n\n// Input in box\n.card-input {\n max-width: 200px;\n}\n\n// Color variants\n@each $name, $color in $theme-colors {\n @include cards-variant($name, $color);\n}\n\n@each $name, $color in $colors {\n @include cards-variant($name, $color);\n}\n\n\n// Nav Tabs override\n.card-default {\n .nav-item {\n &:first-child .nav-link {\n border-left: 0;\n }\n }\n}\n","@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","//\n// Mixins: Cards Variant\n//\n\n@mixin cards-variant($name, $color) {\n .card-#{$name} {\n &.card-tabs {\n &:not(.card-outline) {\n .card-header {\n background-color: $color;\n\n &,\n a {\n color: color-yiq($color);\n }\n\n a.active {\n color: color-yiq($white);\n }\n }\n }\n\n &.card-outline {\n border-top: 3px solid $color;\n }\n }\n\n &.card-outline-tabs {\n .card-header {\n a {\n &:hover {\n border-top: 3px solid $nav-tabs-border-color;\n }\n\n &.active {\n border-top: 3px solid $color;\n }\n }\n }\n }\n }\n\n .bg-#{$name},\n .bg-gradient-#{$name},\n .card-#{$name}:not(.card-outline) {\n .btn-tool {\n color: rgba(color-yiq($color), 0.8);\n\n &:hover {\n color: color-yiq($color);\n }\n }\n }\n\n .card.bg-#{$name},\n .card.bg-gradient-#{$name} {\n .bootstrap-datetimepicker-widget {\n .table td,\n .table th {\n border: none;\n }\n\n table thead tr:first-child th:hover,\n table td.day:hover,\n table td.hour:hover,\n table td.minute:hover,\n table td.second:hover {\n background: darken($color, 8%);\n color: color-yiq($color);\n }\n\n table td.today::before {\n border-bottom-color: color-yiq($color);\n }\n\n table td.active,\n table td.active:hover {\n background: lighten($color, 10%);\n color: color-yiq($color);\n }\n }\n }\n}\n\n","//\n// Component: Modals\n//\n\n// Overlay\n.modal-dialog {\n .overlay {\n background-color: $black;\n display: block;\n height: 100%;\n left: 0;\n opacity: .7;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: ($zindex-modal + 2);\n }\n}\n\n\n// BG Color Variations Fixes\n.modal-content {\n &.bg-warning {\n .modal-header,\n .modal-footer {\n border-color: $gray-800;\n }\n }\n\n &.bg-primary,\n &.bg-secondary,\n &.bg-info,\n &.bg-danger,\n &.bg-success, {\n .close {\n color: $white;\n text-shadow: 0 1px 0 #000;\n }\n }\n}\n","//\n// Component: Toasts\n//\n\n.toasts-top-right {\n position: absolute;\n right: 0;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-top-left {\n left: 0;\n position: absolute;\n top: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-right {\n bottom: 0;\n position: absolute;\n right: 0;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toasts-bottom-left {\n bottom: 0;\n left: 0;\n position: absolute;\n z-index: $zindex-toasts;\n\n &.fixed {\n position: fixed;\n }\n}\n\n.toast {\n @each $name, $color in $theme-colors {\n @include toast-variant($name, $color);\n }\n @each $name, $color in $colors {\n @include toast-variant($name, $color);\n }\n}\n","//\n// Mixins: Toasts\n//\n\n// Toast Variant\n@mixin toast-variant($name, $color) {\n &.bg-#{$name} {\n background: rgba($color, .9) !important;\n @if (color-yiq($color) == $yiq-text-light) {\n\n .close {\n color: color-yiq($color);\n text-shadow: 0 1px 0 #000;\n }\n }\n\n .toast-header {\n background: rgba($color, .85);\n color: color-yiq($color);\n }\n }\n}\n\n","//\n// Component: Button\n//\n\n.btn {\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n }\n\n // Flat buttons\n &.btn-flat {\n @include border-radius(0);\n border-width: 1px;\n box-shadow: none;\n }\n\n // input file btn\n &.btn-file {\n overflow: hidden;\n position: relative;\n\n > input[type='file'] {\n background: $white;\n cursor: inherit;\n display: block;\n font-size: 100px;\n min-height: 100%;\n min-width: 100%;\n opacity: 0;\n outline: none;\n position: absolute;\n right: 0;\n text-align: right;\n top: 0;\n }\n }\n\n .text-sm & {\n font-size: $font-size-sm !important;\n }\n}\n\n// Button color variations\n.btn-default {\n background-color: $button-default-background-color;\n border-color: $button-default-border-color;\n color: $button-default-color;\n\n &:hover,\n &:active,\n &.hover {\n background-color: darken($button-default-background-color, 5%);\n color: darken($button-default-color, 10%);\n }\n}\n\n// Application buttons\n.btn-app {\n @include border-radius(3px);\n background-color: $button-default-background-color;\n border: 1px solid $button-default-border-color;\n color: $gray-600;\n font-size: 12px;\n height: 60px;\n margin: 0 0 10px 10px;\n min-width: 80px;\n padding: 15px 5px;\n position: relative;\n text-align: center;\n\n // Icons within the btn\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: block;\n font-size: 20px;\n }\n\n &:hover {\n background: $button-default-background-color;\n border-color: darken($button-default-border-color, 20%);\n color: $button-default-color;\n }\n\n &:active,\n &:focus {\n @include box-shadow(inset 0 3px 5px rgba($black, 0.125));\n }\n\n // The badge\n > .badge {\n font-size: 10px;\n font-weight: 400;\n position: absolute;\n right: -10px;\n top: -3px;\n }\n}\n\n// Extra Button Size\n\n.btn-xs {\n @include button-size($button-padding-y-xs, $button-padding-x-xs, $button-font-size-xs, $button-line-height-xs, $button-border-radius-xs);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n","//\n// Component: Callout\n//\n\n// Base styles (regardless of theme)\n.callout {\n @if $enable-rounded {\n @include border-radius($border-radius);\n }\n\n @if $enable-shadows {\n box-shadow: map-get($elevations, 1);\n } @else {\n border: 1px solid $gray-300;\n }\n\n background-color: $white;\n border-left: 5px solid $gray-200;\n margin-bottom: map-get($spacers, 3);\n padding: 1rem;\n\n a {\n color: $gray-700;\n text-decoration: underline;\n\n &:hover {\n color: $gray-200;\n }\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n // Themes for different contexts\n &.callout-danger {\n border-left-color: darken(theme-color('danger'), 10%);\n }\n\n &.callout-warning {\n border-left-color: darken(theme-color('warning'), 10%);\n }\n\n &.callout-info {\n border-left-color: darken(theme-color('info'), 10%);\n }\n\n &.callout-success {\n border-left-color: darken(theme-color('success'), 10%);\n }\n}\n","//\n// Component: Alert\n//\n\n.alert {\n .icon {\n margin-right: 10px;\n }\n\n .close {\n color: $black;\n opacity: .2;\n\n &:hover {\n opacity: .5;\n }\n }\n\n a {\n color: $white;\n text-decoration: underline;\n }\n}\n\n//Alert Variants\n@each $color, $value in $theme-colors {\n .alert-#{$color} {\n color: color-yiq($value);\n background: $value;\n border-color: darken($value, 5%);\n }\n\n .alert-default-#{$color} {\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n }\n}\n","@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n","// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n","//\n// Component: Table\n//\n\n.table {\n &:not(.table-dark) {\n color: inherit;\n }\n\n // fixed table head\n &.table-head-fixed {\n thead tr:nth-child(1) th {\n background-color: $white;\n border-bottom: 0;\n box-shadow: inset 0 1px 0 $table-border-color,\n inset 0 -1px 0 $table-border-color;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n\n &.table-dark {\n thead tr {\n &:nth-child(1) th {\n background-color: $table-dark-bg;\n box-shadow: inset 0 1px 0 $table-dark-border-color,\n inset 0 -1px 0 $table-dark-border-color;\n }\n }\n }\n }\n\n // no border\n &.no-border {\n &,\n td,\n th {\n border: 0;\n }\n }\n\n // .text-center in tables\n &.text-center {\n &,\n td,\n th {\n text-align: center;\n }\n }\n\n &.table-valign-middle {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n vertical-align: middle;\n }\n }\n\n .card-body.p-0 & {\n thead > tr > th,\n thead > tr > td,\n tbody > tr > th,\n tbody > tr > td {\n &:first-of-type {\n padding-left: map-get($spacers, 4);\n }\n\n &:last-of-type {\n padding-right: map-get($spacers, 4);\n }\n }\n }\n}\n","//\n// Component: Carousel\n//\n\n.carousel-control {\n &.left,\n &.right {\n background-image: none;\n }\n\n > .fa,\n > .fas,\n > .far,\n > .fab,\n > .glyphicon,\n > .ion {\n display: inline-block;\n font-size: 40px;\n margin-top: -20px;\n position: absolute;\n top: 50%;\n z-index: 5;\n }\n}\n"]} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css deleted file mode 100644 index bac8432..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css +++ /dev/null @@ -1,15398 +0,0 @@ -@charset "UTF-8"; -/*! - * AdminLTE v3.0.0 - * Only Core - * Author: Colorlib - * Website: AdminLTE.io - * License: Open source - MIT - */ -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -:root { - --blue: #007bff; - --indigo: #6610f2; - --purple: #6f42c1; - --pink: #e83e8c; - --red: #dc3545; - --orange: #fd7e14; - --yellow: #ffc107; - --green: #28a745; - --teal: #20c997; - --cyan: #17a2b8; - --white: #ffffff; - --gray: #6c757d; - --gray-dark: #343a40; - --primary: #007bff; - --secondary: #6c757d; - --success: #28a745; - --info: #17a2b8; - --warning: #ffc107; - --danger: #dc3545; - --light: #f8f9fa; - --dark: #343a40; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; -} - -body { - margin: 0; - font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: left; - background-color: #ffffff; -} - -[tabindex="-1"]:focus { - outline: 0 !important; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0.5rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: .5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -.25em; -} - -sup { - top: -.5em; -} - -a { - color: #007bff; - text-decoration: none; - background-color: transparent; -} - -a:hover { - color: #0056b3; - text-decoration: none; -} - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; -} - -a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; -} - -a:not([href]):not([tabindex]):focus { - outline: 0; -} - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; -} - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; -} - -figure { - margin: 0 0 1rem; -} - -img { - vertical-align: middle; - border-style: none; -} - -svg { - overflow: hidden; - vertical-align: middle; -} - -table { - border-collapse: collapse; -} - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; -} - -th { - text-align: inherit; -} - -label { - display: inline-block; - margin-bottom: 0.5rem; -} - -button { - border-radius: 0; -} - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -select { - word-wrap: normal; -} - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -button:not(:disabled), -[type="button"]:not(:disabled), -[type="reset"]:not(:disabled), -[type="submit"]:not(:disabled) { - cursor: pointer; -} - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; -} - -input[type="radio"], -input[type="checkbox"] { - box-sizing: border-box; - padding: 0; -} - -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; -} - -textarea { - overflow: auto; - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; -} - -progress { - vertical-align: baseline; -} - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -[type="search"] { - outline-offset: -2px; - -webkit-appearance: none; -} - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -summary { - display: list-item; - cursor: pointer; -} - -template { - display: none; -} - -[hidden] { - display: none !important; -} - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.5rem; - font-family: inherit; - font-weight: 500; - line-height: 1.2; - color: inherit; -} - -h1, .h1 { - font-size: 2.5rem; -} - -h2, .h2 { - font-size: 2rem; -} - -h3, .h3 { - font-size: 1.75rem; -} - -h4, .h4 { - font-size: 1.5rem; -} - -h5, .h5 { - font-size: 1.25rem; -} - -h6, .h6 { - font-size: 1rem; -} - -.lead { - font-size: 1.25rem; - font-weight: 300; -} - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} - -small, -.small { - font-size: 80%; - font-weight: 400; -} - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; -} - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline-item { - display: inline-block; -} - -.list-inline-item:not(:last-child) { - margin-right: 0.5rem; -} - -.initialism { - font-size: 90%; - text-transform: uppercase; -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; -} - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; -} - -.blockquote-footer::before { - content: "\2014\00A0"; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.img-thumbnail { - padding: 0.25rem; - background-color: #ffffff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); - max-width: 100%; - height: auto; -} - -.figure { - display: inline-block; -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; -} - -.figure-caption { - font-size: 90%; - color: #6c757d; -} - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; -} - -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #ffffff; - background-color: #212529; - border-radius: 0.2rem; - box-shadow: inset 0 -0.1rem 0 rgba(0, 0, 0, 0.25); -} - -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; - box-shadow: none; -} - -pre { - display: block; - font-size: 87.5%; - color: #212529; -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - width: 100%; - padding-right: 7.5px; - padding-left: 7.5px; - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} - -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} - -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid { - width: 100%; - padding-right: 7.5px; - padding-left: 7.5px; - margin-right: auto; - margin-left: auto; -} - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -7.5px; - margin-left: -7.5px; -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} - -.no-gutters > .col, -.no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; -} - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: 7.5px; - padding-left: 7.5px; -} - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; -} - -.col-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; -} - -.col-3 { - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; -} - -.col-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; -} - -.col-6 { - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; -} - -.col-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; -} - -.col-9 { - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; -} - -.col-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; -} - -.col-12 { - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - order: -1; -} - -.order-last { - order: 13; -} - -.order-0 { - order: 0; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.offset-1 { - margin-left: 8.333333%; -} - -.offset-2 { - margin-left: 16.666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.333333%; -} - -.offset-5 { - margin-left: 41.666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.333333%; -} - -.offset-8 { - margin-left: 66.666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.333333%; -} - -.offset-11 { - margin-left: 91.666667%; -} - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-sm-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-sm-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-sm-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-sm-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-sm-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-sm-first { - order: -1; - } - .order-sm-last { - order: 13; - } - .order-sm-0 { - order: 0; - } - .order-sm-1 { - order: 1; - } - .order-sm-2 { - order: 2; - } - .order-sm-3 { - order: 3; - } - .order-sm-4 { - order: 4; - } - .order-sm-5 { - order: 5; - } - .order-sm-6 { - order: 6; - } - .order-sm-7 { - order: 7; - } - .order-sm-8 { - order: 8; - } - .order-sm-9 { - order: 9; - } - .order-sm-10 { - order: 10; - } - .order-sm-11 { - order: 11; - } - .order-sm-12 { - order: 12; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.333333%; - } - .offset-sm-2 { - margin-left: 16.666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.333333%; - } - .offset-sm-5 { - margin-left: 41.666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.333333%; - } - .offset-sm-8 { - margin-left: 66.666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.333333%; - } - .offset-sm-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-md-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-md-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-md-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-md-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-md-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-md-first { - order: -1; - } - .order-md-last { - order: 13; - } - .order-md-0 { - order: 0; - } - .order-md-1 { - order: 1; - } - .order-md-2 { - order: 2; - } - .order-md-3 { - order: 3; - } - .order-md-4 { - order: 4; - } - .order-md-5 { - order: 5; - } - .order-md-6 { - order: 6; - } - .order-md-7 { - order: 7; - } - .order-md-8 { - order: 8; - } - .order-md-9 { - order: 9; - } - .order-md-10 { - order: 10; - } - .order-md-11 { - order: 11; - } - .order-md-12 { - order: 12; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.333333%; - } - .offset-md-2 { - margin-left: 16.666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.333333%; - } - .offset-md-5 { - margin-left: 41.666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.333333%; - } - .offset-md-8 { - margin-left: 66.666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.333333%; - } - .offset-md-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-lg-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-lg-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-lg-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-lg-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-lg-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-lg-first { - order: -1; - } - .order-lg-last { - order: 13; - } - .order-lg-0 { - order: 0; - } - .order-lg-1 { - order: 1; - } - .order-lg-2 { - order: 2; - } - .order-lg-3 { - order: 3; - } - .order-lg-4 { - order: 4; - } - .order-lg-5 { - order: 5; - } - .order-lg-6 { - order: 6; - } - .order-lg-7 { - order: 7; - } - .order-lg-8 { - order: 8; - } - .order-lg-9 { - order: 9; - } - .order-lg-10 { - order: 10; - } - .order-lg-11 { - order: 11; - } - .order-lg-12 { - order: 12; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.333333%; - } - .offset-lg-2 { - margin-left: 16.666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.333333%; - } - .offset-lg-5 { - margin-left: 41.666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.333333%; - } - .offset-lg-8 { - margin-left: 66.666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.333333%; - } - .offset-lg-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-xl-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xl-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xl-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xl-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xl-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-xl-first { - order: -1; - } - .order-xl-last { - order: 13; - } - .order-xl-0 { - order: 0; - } - .order-xl-1 { - order: 1; - } - .order-xl-2 { - order: 2; - } - .order-xl-3 { - order: 3; - } - .order-xl-4 { - order: 4; - } - .order-xl-5 { - order: 5; - } - .order-xl-6 { - order: 6; - } - .order-xl-7 { - order: 7; - } - .order-xl-8 { - order: 8; - } - .order-xl-9 { - order: 9; - } - .order-xl-10 { - order: 10; - } - .order-xl-11 { - order: 11; - } - .order-xl-12 { - order: 12; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.333333%; - } - .offset-xl-2 { - margin-left: 16.666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.333333%; - } - .offset-xl-5 { - margin-left: 41.666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.333333%; - } - .offset-xl-8 { - margin-left: 66.666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.333333%; - } - .offset-xl-11 { - margin-left: 91.666667%; - } -} - -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529; - background-color: transparent; -} - -.table th, -.table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; -} - -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; -} - -.table tbody + tbody { - border-top: 2px solid #dee2e6; -} - -.table-sm th, -.table-sm td { - padding: 0.3rem; -} - -.table-bordered { - border: 1px solid #dee2e6; -} - -.table-bordered th, -.table-bordered td { - border: 1px solid #dee2e6; -} - -.table-bordered thead th, -.table-bordered thead td { - border-bottom-width: 2px; -} - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); -} - -.table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, 0.075); -} - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8daff; -} - -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #7abaff; -} - -.table-hover .table-primary:hover { - background-color: #9fcdff; -} - -.table-hover .table-primary:hover > td, -.table-hover .table-primary:hover > th { - background-color: #9fcdff; -} - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d6d8db; -} - -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #b3b7bb; -} - -.table-hover .table-secondary:hover { - background-color: #c8cbcf; -} - -.table-hover .table-secondary:hover > td, -.table-hover .table-secondary:hover > th { - background-color: #c8cbcf; -} - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c3e6cb; -} - -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #8fd19e; -} - -.table-hover .table-success:hover { - background-color: #b1dfbb; -} - -.table-hover .table-success:hover > td, -.table-hover .table-success:hover > th { - background-color: #b1dfbb; -} - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; -} - -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #86cfda; -} - -.table-hover .table-info:hover { - background-color: #abdde5; -} - -.table-hover .table-info:hover > td, -.table-hover .table-info:hover > th { - background-color: #abdde5; -} - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #ffeeba; -} - -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #ffdf7e; -} - -.table-hover .table-warning:hover { - background-color: #ffe8a1; -} - -.table-hover .table-warning:hover > td, -.table-hover .table-warning:hover > th { - background-color: #ffe8a1; -} - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f5c6cb; -} - -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #ed969e; -} - -.table-hover .table-danger:hover { - background-color: #f1b0b7; -} - -.table-hover .table-danger:hover > td, -.table-hover .table-danger:hover > th { - background-color: #f1b0b7; -} - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; -} - -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #fbfcfc; -} - -.table-hover .table-light:hover { - background-color: #ececf6; -} - -.table-hover .table-light:hover > td, -.table-hover .table-light:hover > th { - background-color: #ececf6; -} - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; -} - -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #95999c; -} - -.table-hover .table-dark:hover { - background-color: #b9bbbe; -} - -.table-hover .table-dark:hover > td, -.table-hover .table-dark:hover > th { - background-color: #b9bbbe; -} - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); -} - -.table-hover .table-active:hover > td, -.table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); -} - -.table .thead-dark th { - color: #ffffff; - background-color: #212529; - border-color: #383f45; -} - -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; -} - -.table-dark { - color: #ffffff; - background-color: #212529; -} - -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #383f45; -} - -.table-dark.table-bordered { - border: 0; -} - -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); -} - -.table-dark.table-hover tbody tr:hover { - color: #ffffff; - background-color: rgba(255, 255, 255, 0.075); -} - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-sm > .table-bordered { - border: 0; - } -} - -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-md > .table-bordered { - border: 0; - } -} - -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-lg > .table-bordered { - border: 0; - } -} - -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } - .table-responsive-xl > .table-bordered { - border: 0; - } -} - -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} - -.table-responsive > .table-bordered { - border: 0; -} - -.form-control { - display: block; - width: 100%; - height: calc(2.25rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - box-shadow: inset 0 0 0 rgba(0, 0, 0, 0); - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; - } -} - -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} - -.form-control:focus { - color: #495057; - background-color: #ffffff; - border-color: #80bdff; - outline: 0; - box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), none; -} - -.form-control::placeholder { - color: #939ba2; - opacity: 1; -} - -.form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; -} - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #ffffff; -} - -.form-control-file, -.form-control-range { - display: block; - width: 100%; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} - -.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm { - height: calc(1.8125rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.form-control-lg { - height: calc(2.875rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -select.form-control[size], select.form-control[multiple] { - height: auto; -} - -textarea.form-control { - height: auto; -} - -.form-group { - margin-bottom: 1rem; -} - -.form-text { - display: block; - margin-top: 0.25rem; -} - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; -} - -.form-row > .col, -.form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; -} - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; -} - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; -} - -.form-check-input:disabled ~ .form-check-label { - color: #6c757d; -} - -.form-check-label { - margin-bottom: 0; -} - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; -} - -.form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #28a745; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #ffffff; - background-color: rgba(40, 167, 69, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #28a745; - padding-right: 2.25rem; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} - -.was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #28a745; - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25); -} - -.was-validated .form-control:valid ~ .valid-feedback, -.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, -.form-control.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: 2.25rem; - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #28a745; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} - -.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #28a745; - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25); -} - -.was-validated .custom-select:valid ~ .valid-feedback, -.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, -.custom-select.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #28a745; -} - -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #28a745; -} - -.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #28a745; -} - -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #34ce57; - background-color: #34ce57; -} - -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25); -} - -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #28a745; -} - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #28a745; -} - -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #28a745; - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25); -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #dc3545; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #ffffff; - background-color: rgba(220, 53, 69, 0.9); - border-radius: 0.25rem; -} - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #dc3545; - padding-right: 2.25rem; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} - -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25); -} - -.was-validated .form-control:invalid ~ .invalid-feedback, -.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, -.form-control.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: 2.25rem; - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #dc3545; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} - -.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25); -} - -.was-validated .custom-select:invalid ~ .invalid-feedback, -.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, -.custom-select.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #dc3545; -} - -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #dc3545; -} - -.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #dc3545; -} - -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #e4606d; - background-color: #e4606d; -} - -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25); -} - -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #dc3545; -} - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #dc3545; -} - -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #dc3545; - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25); -} - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; -} - -.form-inline .form-check { - width: 100%; -} - -@media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; - } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-plaintext { - display: inline-block; - } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; - } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; - } - .form-inline .form-check-input { - position: relative; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; - } - .form-inline .custom-control { - align-items: center; - justify-content: center; - } - .form-inline .custom-control-label { - margin-bottom: 0; - } -} - -.btn { - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .btn { - transition: none; - } -} - -.btn:hover { - color: #212529; - text-decoration: none; -} - -.btn:focus, .btn.focus { - outline: 0; - box-shadow: none; -} - -.btn.disabled, .btn:disabled { - opacity: 0.65; - box-shadow: none; -} - -.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active { - box-shadow: none; -} - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; -} - -.btn-primary { - color: #ffffff; - background-color: #007bff; - border-color: #007bff; - box-shadow: none; -} - -.btn-primary:hover { - color: #ffffff; - background-color: #0069d9; - border-color: #0062cc; -} - -.btn-primary:focus, .btn-primary.focus { - box-shadow: none, 0 0 0 0 rgba(38, 143, 255, 0.5); -} - -.btn-primary.disabled, .btn-primary:disabled { - color: #ffffff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, -.show > .btn-primary.dropdown-toggle { - color: #ffffff; - background-color: #0062cc; - border-color: #005cbf; -} - -.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, -.show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(38, 143, 255, 0.5); -} - -.btn-secondary { - color: #ffffff; - background-color: #6c757d; - border-color: #6c757d; - box-shadow: none; -} - -.btn-secondary:hover { - color: #ffffff; - background-color: #5a6268; - border-color: #545b62; -} - -.btn-secondary:focus, .btn-secondary.focus { - box-shadow: none, 0 0 0 0 rgba(130, 138, 145, 0.5); -} - -.btn-secondary.disabled, .btn-secondary:disabled { - color: #ffffff; - background-color: #6c757d; - border-color: #6c757d; -} - -.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, -.show > .btn-secondary.dropdown-toggle { - color: #ffffff; - background-color: #545b62; - border-color: #4e555b; -} - -.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, -.show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(130, 138, 145, 0.5); -} - -.btn-success { - color: #ffffff; - background-color: #28a745; - border-color: #28a745; - box-shadow: none; -} - -.btn-success:hover { - color: #ffffff; - background-color: #218838; - border-color: #1e7e34; -} - -.btn-success:focus, .btn-success.focus { - box-shadow: none, 0 0 0 0 rgba(72, 180, 97, 0.5); -} - -.btn-success.disabled, .btn-success:disabled { - color: #ffffff; - background-color: #28a745; - border-color: #28a745; -} - -.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, -.show > .btn-success.dropdown-toggle { - color: #ffffff; - background-color: #1e7e34; - border-color: #1c7430; -} - -.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, -.show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5); -} - -.btn-info { - color: #ffffff; - background-color: #17a2b8; - border-color: #17a2b8; - box-shadow: none; -} - -.btn-info:hover { - color: #ffffff; - background-color: #138496; - border-color: #117a8b; -} - -.btn-info:focus, .btn-info.focus { - box-shadow: none, 0 0 0 0 rgba(58, 176, 195, 0.5); -} - -.btn-info.disabled, .btn-info:disabled { - color: #ffffff; - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, -.show > .btn-info.dropdown-toggle { - color: #ffffff; - background-color: #117a8b; - border-color: #10707f; -} - -.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, -.show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(58, 176, 195, 0.5); -} - -.btn-warning { - color: #1F2D3D; - background-color: #ffc107; - border-color: #ffc107; - box-shadow: none; -} - -.btn-warning:hover { - color: #1F2D3D; - background-color: #e0a800; - border-color: #d39e00; -} - -.btn-warning:focus, .btn-warning.focus { - box-shadow: none, 0 0 0 0 rgba(221, 171, 15, 0.5); -} - -.btn-warning.disabled, .btn-warning:disabled { - color: #1F2D3D; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, -.show > .btn-warning.dropdown-toggle { - color: #1F2D3D; - background-color: #d39e00; - border-color: #c69500; -} - -.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, -.show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(221, 171, 15, 0.5); -} - -.btn-danger { - color: #ffffff; - background-color: #dc3545; - border-color: #dc3545; - box-shadow: none; -} - -.btn-danger:hover { - color: #ffffff; - background-color: #c82333; - border-color: #bd2130; -} - -.btn-danger:focus, .btn-danger.focus { - box-shadow: none, 0 0 0 0 rgba(225, 83, 97, 0.5); -} - -.btn-danger.disabled, .btn-danger:disabled { - color: #ffffff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, -.show > .btn-danger.dropdown-toggle { - color: #ffffff; - background-color: #bd2130; - border-color: #b21f2d; -} - -.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, -.show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(225, 83, 97, 0.5); -} - -.btn-light { - color: #1F2D3D; - background-color: #f8f9fa; - border-color: #f8f9fa; - box-shadow: none; -} - -.btn-light:hover { - color: #1F2D3D; - background-color: #e2e6ea; - border-color: #dae0e5; -} - -.btn-light:focus, .btn-light.focus { - box-shadow: none, 0 0 0 0 rgba(215, 218, 222, 0.5); -} - -.btn-light.disabled, .btn-light:disabled { - color: #1F2D3D; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, -.show > .btn-light.dropdown-toggle { - color: #1F2D3D; - background-color: #dae0e5; - border-color: #d3d9df; -} - -.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, -.show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(215, 218, 222, 0.5); -} - -.btn-dark { - color: #ffffff; - background-color: #343a40; - border-color: #343a40; - box-shadow: none; -} - -.btn-dark:hover { - color: #ffffff; - background-color: #23272b; - border-color: #1d2124; -} - -.btn-dark:focus, .btn-dark.focus { - box-shadow: none, 0 0 0 0 rgba(82, 88, 93, 0.5); -} - -.btn-dark.disabled, .btn-dark:disabled { - color: #ffffff; - background-color: #343a40; - border-color: #343a40; -} - -.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, -.show > .btn-dark.dropdown-toggle { - color: #ffffff; - background-color: #1d2124; - border-color: #171a1d; -} - -.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, -.show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(82, 88, 93, 0.5); -} - -.btn-outline-primary { - color: #007bff; - border-color: #007bff; -} - -.btn-outline-primary:hover { - color: #ffffff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5); -} - -.btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #007bff; - background-color: transparent; -} - -.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, -.show > .btn-outline-primary.dropdown-toggle { - color: #ffffff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5); -} - -.btn-outline-secondary { - color: #6c757d; - border-color: #6c757d; -} - -.btn-outline-secondary:hover { - color: #ffffff; - background-color: #6c757d; - border-color: #6c757d; -} - -.btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5); -} - -.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #6c757d; - background-color: transparent; -} - -.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, -.show > .btn-outline-secondary.dropdown-toggle { - color: #ffffff; - background-color: #6c757d; - border-color: #6c757d; -} - -.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5); -} - -.btn-outline-success { - color: #28a745; - border-color: #28a745; -} - -.btn-outline-success:hover { - color: #ffffff; - background-color: #28a745; - border-color: #28a745; -} - -.btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5); -} - -.btn-outline-success.disabled, .btn-outline-success:disabled { - color: #28a745; - background-color: transparent; -} - -.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, -.show > .btn-outline-success.dropdown-toggle { - color: #ffffff; - background-color: #28a745; - border-color: #28a745; -} - -.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5); -} - -.btn-outline-info { - color: #17a2b8; - border-color: #17a2b8; -} - -.btn-outline-info:hover { - color: #ffffff; - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5); -} - -.btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; -} - -.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, -.show > .btn-outline-info.dropdown-toggle { - color: #ffffff; - background-color: #17a2b8; - border-color: #17a2b8; -} - -.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5); -} - -.btn-outline-warning { - color: #ffc107; - border-color: #ffc107; -} - -.btn-outline-warning:hover { - color: #1F2D3D; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5); -} - -.btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #ffc107; - background-color: transparent; -} - -.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, -.show > .btn-outline-warning.dropdown-toggle { - color: #1F2D3D; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5); -} - -.btn-outline-danger { - color: #dc3545; - border-color: #dc3545; -} - -.btn-outline-danger:hover { - color: #ffffff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5); -} - -.btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #dc3545; - background-color: transparent; -} - -.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, -.show > .btn-outline-danger.dropdown-toggle { - color: #ffffff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5); -} - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-outline-light:hover { - color: #1F2D3D; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5); -} - -.btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; -} - -.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, -.show > .btn-outline-light.dropdown-toggle { - color: #1F2D3D; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5); -} - -.btn-outline-dark { - color: #343a40; - border-color: #343a40; -} - -.btn-outline-dark:hover { - color: #ffffff; - background-color: #343a40; - border-color: #343a40; -} - -.btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5); -} - -.btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; -} - -.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, -.show > .btn-outline-dark.dropdown-toggle { - color: #ffffff; - background-color: #343a40; - border-color: #343a40; -} - -.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, -.show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5); -} - -.btn-link { - font-weight: 400; - color: #007bff; - text-decoration: none; -} - -.btn-link:hover { - color: #0056b3; - text-decoration: none; -} - -.btn-link:focus, .btn-link.focus { - text-decoration: none; - box-shadow: none; -} - -.btn-link:disabled, .btn-link.disabled { - color: #6c757d; - pointer-events: none; -} - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.btn-block { - display: block; - width: 100%; -} - -.btn-block + .btn-block { - margin-top: 0.5rem; -} - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} - -.fade { - transition: opacity 0.15s linear; -} - -@media (prefers-reduced-motion: reduce) { - .fade { - transition: none; - } -} - -.fade:not(.show) { - opacity: 0; -} - -.collapse:not(.show) { - display: none; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; -} - -@media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; - } -} - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; -} - -.dropdown-toggle { - white-space: nowrap; -} - -.dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} - -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.175); -} - -.dropdown-menu-left { - right: auto; - left: 0; -} - -.dropdown-menu-right { - right: 0; - left: auto; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; - } - .dropdown-menu-sm-right { - right: 0; - left: auto; - } -} - -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; - } - .dropdown-menu-md-right { - right: 0; - left: auto; - } -} - -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; - } - .dropdown-menu-lg-right { - right: 0; - left: auto; - } -} - -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; - } - .dropdown-menu-xl-right { - right: 0; - left: auto; - } -} - -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; -} - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} - -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; -} - -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} - -.dropright .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropright .dropdown-toggle::after { - vertical-align: 0; -} - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; -} - -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} - -.dropleft .dropdown-toggle::after { - display: none; -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} - -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropleft .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; -} - -.dropdown-item:hover, .dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; -} - -.dropdown-item.active, .dropdown-item:active { - color: #ffffff; - text-decoration: none; - background-color: #007bff; -} - -.dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; -} - -.dropdown-item-text { - display: block; - padding: 0.25rem 1rem; - color: #212529; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; -} - -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; -} - -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover { - z-index: 1; -} - -.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active { - z-index: 1; -} - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; -} - -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; -} - -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} - -.dropdown-toggle-split::after, -.dropup .dropdown-toggle-split::after, -.dropright .dropdown-toggle-split::after { - margin-left: 0; -} - -.dropleft .dropdown-toggle-split::before { - margin-right: 0; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group.show .dropdown-toggle { - box-shadow: none; -} - -.btn-group.show .dropdown-toggle.btn-link { - box-shadow: none; -} - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; -} - -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - width: 100%; -} - -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; -} - -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; -} - -.btn-group-toggle > .btn input[type="radio"], -.btn-group-toggle > .btn input[type="checkbox"], -.btn-group-toggle > .btn-group > .btn input[type="radio"], -.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; -} - -.input-group > .form-control, -.input-group > .form-control-plaintext, -.input-group > .custom-select, -.input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; -} - -.input-group > .form-control + .form-control, -.input-group > .form-control + .custom-select, -.input-group > .form-control + .custom-file, -.input-group > .form-control-plaintext + .form-control, -.input-group > .form-control-plaintext + .custom-select, -.input-group > .form-control-plaintext + .custom-file, -.input-group > .custom-select + .form-control, -.input-group > .custom-select + .custom-select, -.input-group > .custom-select + .custom-file, -.input-group > .custom-file + .form-control, -.input-group > .custom-file + .custom-select, -.input-group > .custom-file + .custom-file { - margin-left: -1px; -} - -.input-group > .form-control:focus, -.input-group > .custom-select:focus, -.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; -} - -.input-group > .custom-file .custom-file-input:focus { - z-index: 4; -} - -.input-group > .form-control:not(:last-child), -.input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .form-control:not(:first-child), -.input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.input-group > .custom-file { - display: flex; - align-items: center; -} - -.input-group > .custom-file:not(:last-child) .custom-file-label, -.input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.input-group-prepend, -.input-group-append { - display: flex; -} - -.input-group-prepend .btn, -.input-group-append .btn { - position: relative; - z-index: 2; -} - -.input-group-prepend .btn:focus, -.input-group-append .btn:focus { - z-index: 3; -} - -.input-group-prepend .btn + .btn, -.input-group-prepend .btn + .input-group-text, -.input-group-prepend .input-group-text + .input-group-text, -.input-group-prepend .input-group-text + .btn, -.input-group-append .btn + .btn, -.input-group-append .btn + .input-group-text, -.input-group-append .input-group-text + .input-group-text, -.input-group-append .input-group-text + .btn { - margin-left: -1px; -} - -.input-group-prepend { - margin-right: -1px; -} - -.input-group-append { - margin-left: -1px; -} - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; -} - -.input-group-text input[type="radio"], -.input-group-text input[type="checkbox"] { - margin-top: 0; -} - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(2.875rem + 2px); -} - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; -} - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.8125rem + 2px); -} - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; -} - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; -} - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 2.5rem; -} - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; -} - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; -} - -.custom-control-input:checked ~ .custom-control-label::before { - color: #ffffff; - border-color: #007bff; - background-color: #007bff; - box-shadow: none; -} - -.custom-control-input:focus ~ .custom-control-label::before { - box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), none; -} - -.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #80bdff; -} - -.custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #ffffff; - background-color: #b3d7ff; - border-color: #b3d7ff; - box-shadow: none; -} - -.custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; -} - -.custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; -} - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; -} - -.custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -2.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #dee2e6; - border: #adb5bd solid 1px; - box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1); -} - -.custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -2.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; -} - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; -} - -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23ffffff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #007bff; - background-color: #007bff; - box-shadow: none; -} - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23ffffff' d='M0 2h4'/%3E%3C/svg%3E"); -} - -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); -} - -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); -} - -.custom-radio .custom-control-label::before { - border-radius: 50%; -} - -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23ffffff'/%3E%3C/svg%3E"); -} - -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); -} - -.custom-switch { - padding-left: 3.25rem; -} - -.custom-switch .custom-control-label::before { - left: -3.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; -} - -.custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-3.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; - } -} - -.custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #dee2e6; - transform: translateX(0.75rem); -} - -.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); -} - -.custom-select { - display: inline-block; - width: 100%; - height: calc(2.25rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px; - background-color: #ffffff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); - appearance: none; -} - -.custom-select:focus { - border-color: #80bdff; - outline: 0; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), none; -} - -.custom-select:focus::-ms-value { - color: #495057; - background-color: #ffffff; -} - -.custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; -} - -.custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; -} - -.custom-select::-ms-expand { - display: none; -} - -.custom-select-sm { - height: calc(1.8125rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 75%; -} - -.custom-select-lg { - height: calc(2.875rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 125%; -} - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(2.25rem + 2px); - margin-bottom: 0; -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(2.25rem + 2px); - margin: 0; - opacity: 0; -} - -.custom-file-input:focus ~ .custom-file-label { - border-color: #80bdff; - box-shadow: none; -} - -.custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; -} - -.custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; -} - -.custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(2.25rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #ffffff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - box-shadow: none; -} - -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: 2.25rem; - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; -} - -.custom-range { - width: 100%; - height: calc(1rem + 0); - padding: 0; - background-color: transparent; - appearance: none; -} - -.custom-range:focus { - outline: none; -} - -.custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.custom-range::-moz-focus-outer { - border: 0; -} - -.custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} - -@media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; - } -} - -.custom-range::-webkit-slider-thumb:active { - background-color: #b3d7ff; -} - -.custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; - box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1); -} - -.custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} - -@media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; - } -} - -.custom-range::-moz-range-thumb:active { - background-color: #b3d7ff; -} - -.custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; - box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1); -} - -.custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0; - margin-left: 0; - background-color: #007bff; - border: 0; - border-radius: 1rem; - box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} - -@media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; - } -} - -.custom-range::-ms-thumb:active { - background-color: #b3d7ff; -} - -.custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; - box-shadow: inset 0 0.25rem 0.25rem rgba(0, 0, 0, 0.1); -} - -.custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; -} - -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; -} - -.custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; -} - -.custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; -} - -.custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; -} - -.custom-range:disabled::-moz-range-track { - cursor: default; -} - -.custom-range:disabled::-ms-thumb { - background-color: #adb5bd; -} - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: none; - } -} - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav-link { - display: block; - padding: 0.5rem 1rem; -} - -.nav-link:hover, .nav-link:focus { - text-decoration: none; -} - -.nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; -} - -.nav-tabs { - border-bottom: 1px solid #dee2e6; -} - -.nav-tabs .nav-item { - margin-bottom: -1px; -} - -.nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; -} - -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; -} - -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #ffffff; - border-color: #dee2e6 #dee2e6 #ffffff; -} - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - border-radius: 0.25rem; -} - -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #ffffff; - background-color: #007bff; -} - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; -} - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; -} - -.tab-content > .tab-pane { - display: none; -} - -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 0.5rem; -} - -.navbar > .container, -.navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 0.5rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; -} - -.navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; -} - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} - -.navbar-nav .dropdown-menu { - position: static; - float: none; -} - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; -} - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 1rem; - padding-left: 1rem; - } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } -} - -@media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 1rem; - padding-left: 1rem; - } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } -} - -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 1rem; - padding-left: 1rem; - } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } -} - -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; - } -} - -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 1rem; - padding-left: 1rem; - } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; - } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } -} - -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; -} - -.navbar-expand > .container, -.navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; -} - -.navbar-expand .navbar-nav { - flex-direction: row; -} - -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} - -.navbar-expand .navbar-nav .nav-link { - padding-right: 1rem; - padding-left: 1rem; -} - -.navbar-expand > .container, -.navbar-expand > .container-fluid { - flex-wrap: nowrap; -} - -.navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; -} - -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); -} - -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} - -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); -} - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); -} - -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #ffffff; -} - -.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #ffffff; -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.75); -} - -.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: white; -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} - -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #ffffff; -} - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.75); - border-color: rgba(255, 255, 255, 0.1); -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.75)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.75); -} - -.navbar-dark .navbar-text a { - color: #ffffff; -} - -.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #ffffff; -} - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #ffffff; - background-clip: border-box; - border: 0 solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; -} - -.card > hr { - margin-right: 0; - margin-left: 0; -} - -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; -} - -.card-title { - margin-bottom: 0.75rem; -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} - -.card-link + .card-link { - margin-left: 1.25rem; -} - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 0 solid rgba(0, 0, 0, 0.125); -} - -.card-header:first-child { - border-radius: calc(0.25rem - 0) calc(0.25rem - 0) 0 0; -} - -.card-header + .list-group .list-group-item:first-child { - border-top: 0; -} - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 0 solid rgba(0, 0, 0, 0.125); -} - -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 0) calc(0.25rem - 0); -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; -} - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 0); -} - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 0); - border-top-right-radius: calc(0.25rem - 0); -} - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 0); - border-bottom-left-radius: calc(0.25rem - 0); -} - -.card-deck { - display: flex; - flex-direction: column; -} - -.card-deck .card { - margin-bottom: 7.5px; -} - -@media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -7.5px; - margin-left: -7.5px; - } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 7.5px; - margin-bottom: 0; - margin-left: 7.5px; - } -} - -.card-group { - display: flex; - flex-direction: column; -} - -.card-group > .card { - margin-bottom: 7.5px; -} - -@media (min-width: 576px) { - .card-group { - flex-flow: row wrap; - } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; - } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; - } -} - -.card-columns .card { - margin-bottom: 0.75rem; -} - -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; - } - .card-columns .card { - display: inline-block; - width: 100%; - } -} - -.accordion > .card { - overflow: hidden; -} - -.accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; -} - -.accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; -} - -.accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.accordion > .card .card-header { - margin-bottom: 0; -} - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; -} - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; -} - -.breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; -} - -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; -} - -.breadcrumb-item.active { - color: #6c757d; -} - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; -} - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #007bff; - background-color: #ffffff; - border: 1px solid #dee2e6; -} - -.page-link:hover { - z-index: 2; - color: #0056b3; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; -} - -.page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} - -.page-item.active .page-link { - z-index: 1; - color: #ffffff; - background-color: #007bff; - border-color: #007bff; -} - -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #ffffff; - border-color: #dee2e6; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; -} - -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; -} - -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} - -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .badge { - transition: none; - } -} - -a.badge:hover, a.badge:focus { - text-decoration: none; -} - -.badge:empty { - display: none; -} - -.btn .badge { - position: relative; - top: -1px; -} - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; -} - -.badge-primary { - color: #ffffff; - background-color: #007bff; -} - -a.badge-primary:hover, a.badge-primary:focus { - color: #ffffff; - background-color: #0062cc; -} - -a.badge-primary:focus, a.badge-primary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); -} - -.badge-secondary { - color: #ffffff; - background-color: #6c757d; -} - -a.badge-secondary:hover, a.badge-secondary:focus { - color: #ffffff; - background-color: #545b62; -} - -a.badge-secondary:focus, a.badge-secondary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); -} - -.badge-success { - color: #ffffff; - background-color: #28a745; -} - -a.badge-success:hover, a.badge-success:focus { - color: #ffffff; - background-color: #1e7e34; -} - -a.badge-success:focus, a.badge-success.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); -} - -.badge-info { - color: #ffffff; - background-color: #17a2b8; -} - -a.badge-info:hover, a.badge-info:focus { - color: #ffffff; - background-color: #117a8b; -} - -a.badge-info:focus, a.badge-info.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); -} - -.badge-warning { - color: #1F2D3D; - background-color: #ffc107; -} - -a.badge-warning:hover, a.badge-warning:focus { - color: #1F2D3D; - background-color: #d39e00; -} - -a.badge-warning:focus, a.badge-warning.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); -} - -.badge-danger { - color: #ffffff; - background-color: #dc3545; -} - -a.badge-danger:hover, a.badge-danger:focus { - color: #ffffff; - background-color: #bd2130; -} - -a.badge-danger:focus, a.badge-danger.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); -} - -.badge-light { - color: #1F2D3D; - background-color: #f8f9fa; -} - -a.badge-light:hover, a.badge-light:focus { - color: #1F2D3D; - background-color: #dae0e5; -} - -a.badge-light:focus, a.badge-light.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); -} - -.badge-dark { - color: #ffffff; - background-color: #343a40; -} - -a.badge-dark:hover, a.badge-dark:focus { - color: #ffffff; - background-color: #1d2124; -} - -a.badge-dark:focus, a.badge-dark.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; -} - -@media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; - } -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; -} - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 4rem; -} - -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; -} - -.alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; -} - -.alert-primary hr { - border-top-color: #9fcdff; -} - -.alert-primary .alert-link { - color: #002752; -} - -.alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; -} - -.alert-secondary hr { - border-top-color: #c8cbcf; -} - -.alert-secondary .alert-link { - color: #202326; -} - -.alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; -} - -.alert-success hr { - border-top-color: #b1dfbb; -} - -.alert-success .alert-link { - color: #0b2e13; -} - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; -} - -.alert-info hr { - border-top-color: #abdde5; -} - -.alert-info .alert-link { - color: #062c33; -} - -.alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; -} - -.alert-warning hr { - border-top-color: #ffe8a1; -} - -.alert-warning .alert-link { - color: #533f03; -} - -.alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; -} - -.alert-danger hr { - border-top-color: #f1b0b7; -} - -.alert-danger .alert-link { - color: #491217; -} - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; -} - -.alert-light hr { - border-top-color: #ececf6; -} - -.alert-light .alert-link { - color: #686868; -} - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; -} - -.alert-dark hr { - border-top-color: #b9bbbe; -} - -.alert-dark .alert-link { - color: #040505; -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; - } - to { - background-position: 0 0; - } -} - -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; - box-shadow: inset 0 0.1rem 0.1rem rgba(0, 0, 0, 0.1); -} - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #ffffff; - text-align: center; - white-space: nowrap; - background-color: #007bff; - transition: width 0.6s ease; -} - -@media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; -} - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; -} - -@media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; - } -} - -.media { - display: flex; - align-items: flex-start; -} - -.media-body { - flex: 1; -} - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; -} - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; -} - -.list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; -} - -.list-group-item-action:active { - color: #212529; - background-color: #e9ecef; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid rgba(0, 0, 0, 0.125); -} - -.list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #ffffff; -} - -.list-group-item.active { - z-index: 2; - color: #ffffff; - background-color: #007bff; - border-color: #007bff; -} - -.list-group-horizontal { - flex-direction: row; -} - -.list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; -} - -.list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; -} - -.list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; -} - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; - } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; - } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; - } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } -} - -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; - } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; - } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } -} - -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} - -.list-group-flush .list-group-item:last-child { - margin-bottom: -1px; -} - -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; -} - -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; -} - -.list-group-item-primary { - color: #004085; - background-color: #b8daff; -} - -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #004085; - background-color: #9fcdff; -} - -.list-group-item-primary.list-group-item-action.active { - color: #ffffff; - background-color: #004085; - border-color: #004085; -} - -.list-group-item-secondary { - color: #383d41; - background-color: #d6d8db; -} - -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf; -} - -.list-group-item-secondary.list-group-item-action.active { - color: #ffffff; - background-color: #383d41; - border-color: #383d41; -} - -.list-group-item-success { - color: #155724; - background-color: #c3e6cb; -} - -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #155724; - background-color: #b1dfbb; -} - -.list-group-item-success.list-group-item-action.active { - color: #ffffff; - background-color: #155724; - border-color: #155724; -} - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb; -} - -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5; -} - -.list-group-item-info.list-group-item-action.active { - color: #ffffff; - background-color: #0c5460; - border-color: #0c5460; -} - -.list-group-item-warning { - color: #856404; - background-color: #ffeeba; -} - -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #856404; - background-color: #ffe8a1; -} - -.list-group-item-warning.list-group-item-action.active { - color: #ffffff; - background-color: #856404; - border-color: #856404; -} - -.list-group-item-danger { - color: #721c24; - background-color: #f5c6cb; -} - -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #721c24; - background-color: #f1b0b7; -} - -.list-group-item-danger.list-group-item-action.active { - color: #ffffff; - background-color: #721c24; - border-color: #721c24; -} - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; -} - -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; -} - -.list-group-item-light.list-group-item-action.active { - color: #ffffff; - background-color: #818182; - border-color: #818182; -} - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; -} - -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe; -} - -.list-group-item-dark.list-group-item-action.active { - color: #ffffff; - background-color: #1b1e21; - border-color: #1b1e21; -} - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #ffffff; - opacity: .5; -} - -.close:hover { - color: #000; - text-decoration: none; -} - -.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: .75; -} - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; -} - -a.close.disabled { - pointer-events: none; -} - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; -} - -.toast:not(:last-child) { - margin-bottom: 0.75rem; -} - -.toast.showing { - opacity: 1; -} - -.toast.show { - display: block; - opacity: 1; -} - -.toast.hide { - display: none; -} - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.toast-body { - padding: 0.75rem; -} - -.modal-open { - overflow: hidden; -} - -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} - -.modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); -} - -@media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; - } -} - -.modal.show .modal-dialog { - transform: none; -} - -.modal-dialog-scrollable { - display: flex; - max-height: calc(100% - 1rem); -} - -.modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; -} - -.modal-dialog-scrollable .modal-header, -.modal-dialog-scrollable .modal-footer { - flex-shrink: 0; -} - -.modal-dialog-scrollable .modal-body { - overflow-y: auto; -} - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); -} - -.modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; -} - -.modal-dialog-centered.modal-dialog-scrollable { - flex-direction: column; - justify-content: center; - height: 100%; -} - -.modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; -} - -.modal-dialog-centered.modal-dialog-scrollable::before { - content: none; -} - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.5); - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; -} - -.modal-backdrop.fade { - opacity: 0; -} - -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem; - border-bottom: 1px solid #e9ecef; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} - -.modal-header .close { - padding: 1rem; - margin: -1rem -1rem -1rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5; -} - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; -} - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #e9ecef; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} - -.modal-footer > :not(:first-child) { - margin-left: .25rem; -} - -.modal-footer > :not(:last-child) { - margin-right: .25rem; -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); - } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); - } - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); - } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); - } - .modal-content { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.5); - } - .modal-sm { - max-width: 300px; - } -} - -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; - } -} - -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; - } -} - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; -} - -.tooltip.show { - opacity: 0.9; -} - -.tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} - -.tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; -} - -.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; -} - -.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; -} - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; -} - -.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; -} - -.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; -} - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; -} - -.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; -} - -.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; -} - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; -} - -.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; -} - -.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #ffffff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.2); -} - -.popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; -} - -.popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-popover-top, .bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; -} - -.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); -} - -.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); -} - -.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #ffffff; -} - -.bs-popover-right, .bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; -} - -.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} - -.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); -} - -.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #ffffff; -} - -.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; -} - -.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); -} - -.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); -} - -.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #ffffff; -} - -.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; -} - -.bs-popover-left, .bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; -} - -.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; -} - -.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); -} - -.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #ffffff; -} - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - color: inherit; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} - -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 0.5rem 0.75rem; - color: #212529; -} - -.carousel { - position: relative; -} - -.carousel.pointer-event { - touch-action: pan-y; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carousel-inner::after { - display: block; - clear: both; - content: ""; -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease; -} - -@media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); -} - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; -} - -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; -} - -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; -} - -@media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - transition: none; - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #ffffff; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; -} - -@media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; - } -} - -.carousel-control-prev:hover, .carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; -} - -.carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #ffffff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity 0.6s ease; -} - -@media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; - } -} - -.carousel-indicators .active { - opacity: 1; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; -} - -@keyframes spinner-border { - to { - transform: rotate(360deg); - } -} - -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border .75s linear infinite; -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; -} - -@keyframes spinner-grow { - 0% { - transform: scale(0); - } - 50% { - opacity: 1; - } -} - -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow .75s linear infinite; -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.bg-primary { - background-color: #007bff !important; -} - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #0062cc !important; -} - -.bg-secondary { - background-color: #6c757d !important; -} - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #545b62 !important; -} - -.bg-success { - background-color: #28a745 !important; -} - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #1e7e34 !important; -} - -.bg-info { - background-color: #17a2b8 !important; -} - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #117a8b !important; -} - -.bg-warning { - background-color: #ffc107 !important; -} - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #d39e00 !important; -} - -.bg-danger { - background-color: #dc3545 !important; -} - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #bd2130 !important; -} - -.bg-light { - background-color: #f8f9fa !important; -} - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important; -} - -.bg-dark { - background-color: #343a40 !important; -} - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #1d2124 !important; -} - -.bg-white { - background-color: #ffffff !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.border { - border: 1px solid #dee2e6 !important; -} - -.border-top { - border-top: 1px solid #dee2e6 !important; -} - -.border-right { - border-right: 1px solid #dee2e6 !important; -} - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; -} - -.border-left { - border-left: 1px solid #dee2e6 !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-right-0 { - border-right: 0 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-left-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #007bff !important; -} - -.border-secondary { - border-color: #6c757d !important; -} - -.border-success { - border-color: #28a745 !important; -} - -.border-info { - border-color: #17a2b8 !important; -} - -.border-warning { - border-color: #ffc107 !important; -} - -.border-danger { - border-color: #dc3545 !important; -} - -.border-light { - border-color: #f8f9fa !important; -} - -.border-dark { - border-color: #343a40 !important; -} - -.border-white { - border-color: #ffffff !important; -} - -.rounded-sm { - border-radius: 0.2rem !important; -} - -.rounded { - border-radius: 0.25rem !important; -} - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; -} - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-lg { - border-radius: 0.3rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 50rem !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.d-none { - display: none !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; - } - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } -} - -@media (min-width: 768px) { - .d-md-none { - display: none !important; - } - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } -} - -@media (min-width: 992px) { - .d-lg-none { - display: none !important; - } - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } -} - -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; - } - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } -} - -@media print { - .d-print-none { - display: none !important; - } - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } -} - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; -} - -.embed-responsive::before { - display: block; - content: ""; -} - -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - -.embed-responsive-21by9::before { - padding-top: 42.857143%; -} - -.embed-responsive-16by9::before { - padding-top: 56.25%; -} - -.embed-responsive-4by3::before { - padding-top: 75%; -} - -.embed-responsive-1by1::before { - padding-top: 100%; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } -} - -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } -} - -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } -} - -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } -} - -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.float-none { - float: none !important; -} - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; - } - .float-sm-right { - float: right !important; - } - .float-sm-none { - float: none !important; - } -} - -@media (min-width: 768px) { - .float-md-left { - float: left !important; - } - .float-md-right { - float: right !important; - } - .float-md-none { - float: none !important; - } -} - -@media (min-width: 992px) { - .float-lg-left { - float: left !important; - } - .float-lg-right { - float: right !important; - } - .float-lg-none { - float: none !important; - } -} - -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; - } - .float-xl-right { - float: right !important; - } - .float-xl-none { - float: none !important; - } -} - -.overflow-auto { - overflow: auto !important; -} - -.overflow-hidden { - overflow: hidden !important; -} - -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: sticky !important; -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; -} - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none { - box-shadow: none !important; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.w-auto { - width: auto !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.h-auto { - height: auto !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.min-vw-100 { - min-width: 100vw !important; -} - -.min-vh-100 { - min-height: 100vh !important; -} - -.vw-100 { - width: 100vw !important; -} - -.vh-100 { - height: 100vh !important; -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); -} - -.m-0 { - margin: 0 !important; -} - -.mt-0, -.my-0 { - margin-top: 0 !important; -} - -.mr-0, -.mx-0 { - margin-right: 0 !important; -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} - -.ml-0, -.mx-0 { - margin-left: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.mt-3, -.my-3 { - margin-top: 1rem !important; -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.mt-5, -.my-5 { - margin-top: 3rem !important; -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0, -.py-0 { - padding-top: 0 !important; -} - -.pr-0, -.px-0 { - padding-right: 0 !important; -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} - -.pl-0, -.px-0 { - padding-left: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.pt-3, -.py-3 { - padding-top: 1rem !important; -} - -.pr-3, -.px-3 { - padding-right: 1rem !important; -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} - -.pl-3, -.px-3 { - padding-left: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.pt-5, -.py-5 { - padding-top: 3rem !important; -} - -.pr-5, -.px-5 { - padding-right: 3rem !important; -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} - -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -.m-n1 { - margin: -0.25rem !important; -} - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; -} - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; -} - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; -} - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; -} - -.m-n2 { - margin: -0.5rem !important; -} - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; -} - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; -} - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; -} - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; -} - -.m-n3 { - margin: -1rem !important; -} - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; -} - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; -} - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; -} - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; -} - -.m-n4 { - margin: -1.5rem !important; -} - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; -} - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; -} - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; -} - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; -} - -.m-n5 { - margin: -3rem !important; -} - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; -} - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; -} - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; -} - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mt-auto, -.my-auto { - margin-top: auto !important; -} - -.mr-auto, -.mx-auto { - margin-right: auto !important; -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important; -} - -.ml-auto, -.mx-auto { - margin-left: auto !important; -} - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; - } - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; - } - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; - } - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; - } - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; - } - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; - } - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; - } - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; - } - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; - } - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; - } - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; - } - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; - } - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; - } - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; - } - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; - } - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; - } - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; - } - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; - } - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; - } - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; - } - .p-sm-0 { - padding: 0 !important; - } - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; - } - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; - } - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; - } - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; - } - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; - } - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; - } - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; - } - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; - } - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; - } - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; - } - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; - } - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; - } - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; - } - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; - } - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; - } - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; - } - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; - } - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; - } - .m-sm-n1 { - margin: -0.25rem !important; - } - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; - } - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; - } - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; - } - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; - } - .m-sm-n2 { - margin: -0.5rem !important; - } - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; - } - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; - } - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; - } - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; - } - .m-sm-n3 { - margin: -1rem !important; - } - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; - } - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; - } - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; - } - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; - } - .m-sm-n4 { - margin: -1.5rem !important; - } - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; - } - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; - } - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; - } - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; - } - .m-sm-n5 { - margin: -3rem !important; - } - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; - } - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; - } - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; - } - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; - } - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; - } - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; - } - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; - } -} - -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; - } - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; - } - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; - } - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; - } - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; - } - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; - } - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; - } - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; - } - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; - } - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; - } - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; - } - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; - } - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; - } - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; - } - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; - } - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; - } - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; - } - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; - } - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; - } - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; - } - .p-md-0 { - padding: 0 !important; - } - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; - } - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; - } - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; - } - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; - } - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; - } - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; - } - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; - } - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; - } - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; - } - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; - } - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; - } - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; - } - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; - } - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; - } - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; - } - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; - } - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; - } - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; - } - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; - } - .m-md-n1 { - margin: -0.25rem !important; - } - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; - } - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; - } - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; - } - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; - } - .m-md-n2 { - margin: -0.5rem !important; - } - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; - } - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; - } - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; - } - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; - } - .m-md-n3 { - margin: -1rem !important; - } - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; - } - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; - } - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; - } - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; - } - .m-md-n4 { - margin: -1.5rem !important; - } - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; - } - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; - } - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; - } - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; - } - .m-md-n5 { - margin: -3rem !important; - } - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; - } - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; - } - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; - } - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; - } - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; - } - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; - } - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; - } -} - -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; - } - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; - } - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; - } - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; - } - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; - } - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; - } - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; - } - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; - } - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; - } - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; - } - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; - } - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; - } - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; - } - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; - } - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; - } - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; - } - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; - } - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; - } - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; - } - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; - } - .p-lg-0 { - padding: 0 !important; - } - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; - } - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; - } - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; - } - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; - } - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; - } - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; - } - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; - } - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; - } - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; - } - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; - } - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; - } - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; - } - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; - } - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; - } - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; - } - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; - } - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; - } - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; - } - .m-lg-n1 { - margin: -0.25rem !important; - } - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; - } - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; - } - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; - } - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; - } - .m-lg-n2 { - margin: -0.5rem !important; - } - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; - } - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; - } - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; - } - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; - } - .m-lg-n3 { - margin: -1rem !important; - } - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; - } - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; - } - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; - } - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; - } - .m-lg-n4 { - margin: -1.5rem !important; - } - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; - } - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; - } - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; - } - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; - } - .m-lg-n5 { - margin: -3rem !important; - } - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; - } - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; - } - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; - } - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; - } - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; - } - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; - } - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; - } -} - -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; - } - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; - } - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; - } - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; - } - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; - } - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; - } - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; - } - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; - } - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; - } - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; - } - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; - } - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; - } - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; - } - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; - } - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; - } - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; - } - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; - } - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; - } - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; - } - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; - } - .p-xl-0 { - padding: 0 !important; - } - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; - } - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; - } - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; - } - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; - } - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; - } - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; - } - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; - } - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; - } - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; - } - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; - } - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; - } - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; - } - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; - } - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; - } - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; - } - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; - } - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; - } - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; - } - .m-xl-n1 { - margin: -0.25rem !important; - } - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; - } - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; - } - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; - } - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; - } - .m-xl-n2 { - margin: -0.5rem !important; - } - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; - } - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; - } - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; - } - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; - } - .m-xl-n3 { - margin: -1rem !important; - } - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; - } - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; - } - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; - } - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; - } - .m-xl-n4 { - margin: -1.5rem !important; - } - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; - } - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; - } - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; - } - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; - } - .m-xl-n5 { - margin: -3rem !important; - } - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; - } - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; - } - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; - } - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; - } - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; - } - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; - } - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; - } -} - -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; -} - -.text-justify { - text-align: justify !important; -} - -.text-wrap { - white-space: normal !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; - } - .text-sm-right { - text-align: right !important; - } - .text-sm-center { - text-align: center !important; - } -} - -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; - } - .text-md-right { - text-align: right !important; - } - .text-md-center { - text-align: center !important; - } -} - -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; - } - .text-lg-right { - text-align: right !important; - } - .text-lg-center { - text-align: center !important; - } -} - -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; - } - .text-xl-right { - text-align: right !important; - } - .text-xl-center { - text-align: center !important; - } -} - -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.font-weight-light { - font-weight: 300 !important; -} - -.font-weight-lighter { - font-weight: lighter !important; -} - -.font-weight-normal { - font-weight: 400 !important; -} - -.font-weight-bold { - font-weight: 700 !important; -} - -.font-weight-bolder { - font-weight: bolder !important; -} - -.font-italic { - font-style: italic !important; -} - -.text-white { - color: #ffffff !important; -} - -.text-primary { - color: #007bff !important; -} - -a.text-primary:hover, a.text-primary:focus { - color: #0056b3 !important; -} - -.text-secondary { - color: #6c757d !important; -} - -a.text-secondary:hover, a.text-secondary:focus { - color: #494f54 !important; -} - -.text-success { - color: #28a745 !important; -} - -a.text-success:hover, a.text-success:focus { - color: #19692c !important; -} - -.text-info { - color: #17a2b8 !important; -} - -a.text-info:hover, a.text-info:focus { - color: #0f6674 !important; -} - -.text-warning { - color: #ffc107 !important; -} - -a.text-warning:hover, a.text-warning:focus { - color: #ba8b00 !important; -} - -.text-danger { - color: #dc3545 !important; -} - -a.text-danger:hover, a.text-danger:focus { - color: #a71d2a !important; -} - -.text-light { - color: #f8f9fa !important; -} - -a.text-light:hover, a.text-light:focus { - color: #cbd3da !important; -} - -.text-dark { - color: #343a40 !important; -} - -a.text-dark:hover, a.text-dark:focus { - color: #121416 !important; -} - -.text-body { - color: #212529 !important; -} - -.text-muted { - color: #6c757d !important; -} - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.text-decoration-none { - text-decoration: none !important; -} - -.text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; -} - -.text-reset { - color: inherit !important; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -@media print { - *, - *::before, - *::after { - text-shadow: none !important; - box-shadow: none !important; - } - a:not(.btn) { - text-decoration: underline; - } - abbr[title]::after { - content: " (" attr(title) ")"; - } - pre { - white-space: pre-wrap !important; - } - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - @page { - size: a3; - } - body { - min-width: 992px !important; - } - .container { - min-width: 992px !important; - } - .navbar { - display: none; - } - .badge { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #ffffff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; - } - .table-dark { - color: inherit; - } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; - } - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; - } -} - -html { - scroll-behavior: smooth; -} - -html, -body, -.wrapper { - min-height: 100%; -} - -.wrapper { - position: relative; -} - -.wrapper .content-wrapper { - min-height: calc(100vh - calc(3.5rem + 1px) - calc(3.5rem + 1px)); -} - -.layout-boxed .wrapper { - box-shadow: 0 0 10 rgba(0, 0, 0, 0.3); -} - -.layout-boxed .wrapper, .layout-boxed .wrapper::before { - margin: 0 auto; - max-width: 1250px; -} - -.layout-boxed .wrapper .main-sidebar { - left: inherit; -} - -.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); -} - -.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); -} - -.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.sidebar-collapse .wrapper .brand-link { - height: calc(3.5rem + 1px); - width: 4.6rem; -} - -.layout-navbar-fixed.sidebar-collapse .wrapper .brand-link.text-sm { - height: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.sidebar-collapse.text-sm .wrapper .brand-link { - height: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed .wrapper .control-sidebar { - top: 0; -} - -.layout-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); -} - -.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; -} - -.layout-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); -} - -.layout-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1033; -} - -.layout-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-not-fixed .wrapper .brand-link { - position: static; -} - -.layout-navbar-not-fixed .wrapper .sidebar, -.layout-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; -} - -.layout-navbar-not-fixed .wrapper .main-header { - position: static; -} - -.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; -} - -.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); -} - -.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar, -.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); -} - -.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar, -.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed .wrapper .control-sidebar { - top: 0; -} - -.layout-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); -} - -.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link { - height: calc(3.5rem + 1px); - transition: width 0.3s ease-in-out; - width: 4.6rem; -} - -.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm { - height: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; -} - -.layout-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; -} - -.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; -} - -.layout-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); -} - -.text-sm .layout-navbar-fixed .wrapper .main-header ~ .content-wrapper, -.layout-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; -} - -.layout-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); -} - -.layout-navbar-not-fixed .wrapper .brand-link { - position: static; -} - -.layout-navbar-not-fixed .wrapper .sidebar, -.layout-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; -} - -.layout-navbar-not-fixed .wrapper .main-header { - position: static; -} - -.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; -} - -@media (min-width: 576px) { - .layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); - } - .text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar, - .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar, - .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed .wrapper .control-sidebar { - top: 0; - } - .layout-sm-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); - } - .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link { - height: calc(3.5rem + 1px); - transition: width 0.3s ease-in-out; - width: 4.6rem; - } - .text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm { - height: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; - } - .layout-sm-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-sm-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-sm-navbar-fixed .wrapper .main-header ~ .content-wrapper, - .layout-sm-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; - } - .layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-sm-navbar-not-fixed .wrapper .brand-link { - position: static; - } - .layout-sm-navbar-not-fixed .wrapper .sidebar, - .layout-sm-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; - } - .layout-sm-navbar-not-fixed .wrapper .main-header { - position: static; - } - .layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; - } -} - -@media (min-width: 768px) { - .layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); - } - .text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar, - .layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar, - .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed .wrapper .control-sidebar { - top: 0; - } - .layout-md-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); - } - .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link { - height: calc(3.5rem + 1px); - transition: width 0.3s ease-in-out; - width: 4.6rem; - } - .text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm { - height: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; - } - .layout-md-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-md-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-md-navbar-fixed .wrapper .main-header ~ .content-wrapper, - .layout-md-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-md-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; - } - .layout-md-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-md-navbar-not-fixed .wrapper .brand-link { - position: static; - } - .layout-md-navbar-not-fixed .wrapper .sidebar, - .layout-md-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; - } - .layout-md-navbar-not-fixed .wrapper .main-header { - position: static; - } - .layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; - } -} - -@media (min-width: 992px) { - .layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); - } - .text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar, - .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar, - .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed .wrapper .control-sidebar { - top: 0; - } - .layout-lg-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); - } - .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link { - height: calc(3.5rem + 1px); - transition: width 0.3s ease-in-out; - width: 4.6rem; - } - .text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm { - height: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; - } - .layout-lg-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-lg-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-lg-navbar-fixed .wrapper .main-header ~ .content-wrapper, - .layout-lg-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; - } - .layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-lg-navbar-not-fixed .wrapper .brand-link { - position: static; - } - .layout-lg-navbar-not-fixed .wrapper .sidebar, - .layout-lg-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; - } - .layout-lg-navbar-not-fixed .wrapper .main-header { - position: static; - } - .layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; - } -} - -@media (min-width: 1200px) { - .layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar { - top: calc(3.5rem + 1px); - } - .text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header ~ .control-sidebar, - .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link ~ .sidebar, - .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm ~ .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar { - top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar { - margin-top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed .wrapper .control-sidebar { - top: 0; - } - .layout-xl-navbar-fixed .wrapper a.anchor { - display: block; - position: relative; - top: calc((3.5rem + 1px + (0.5rem * 2)) / -1); - } - .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link { - height: calc(3.5rem + 1px); - transition: width 0.3s ease-in-out; - width: 4.6rem; - } - .text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link, .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm { - height: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link { - transition: width 0.3s ease-in-out; - width: 250px; - } - .layout-xl-navbar-fixed .wrapper .brand-link { - overflow: hidden; - position: fixed; - top: 0; - transition: width 0.3s ease-in-out; - width: 250px; - z-index: 1035; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*="navbar"]) { - background-color: #343a40; - } - .layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*="navbar"]) { - background-color: #ffffff; - } - .layout-xl-navbar-fixed .wrapper .content-wrapper { - margin-top: calc(3.5rem + 1px); - } - .text-sm .layout-xl-navbar-fixed .wrapper .main-header ~ .content-wrapper, - .layout-xl-navbar-fixed .wrapper .main-header.text-sm ~ .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-fixed .wrapper .main-header { - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; - } - .layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper { - margin-top: calc(2.93725rem + 1px); - } - .layout-xl-navbar-not-fixed .wrapper .brand-link { - position: static; - } - .layout-xl-navbar-not-fixed .wrapper .sidebar, - .layout-xl-navbar-not-fixed .wrapper .content-wrapper { - margin-top: 0; - } - .layout-xl-navbar-not-fixed .wrapper .main-header { - position: static; - } - .layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar { - margin-top: 0; - } -} - -.layout-footer-fixed .wrapper .control-sidebar { - bottom: 0; -} - -.layout-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; -} - -.layout-footer-not-fixed .wrapper .main-footer { - position: static; -} - -.layout-footer-not-fixed .wrapper .content-wrapper { - margin-bottom: 0; -} - -.layout-footer-fixed .wrapper .control-sidebar { - bottom: 0; -} - -.layout-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; -} - -.layout-footer-fixed .wrapper .content-wrapper { - margin-bottom: calc(3.5rem + 1px); -} - -.layout-footer-not-fixed .wrapper .main-footer { - position: static; -} - -@media (min-width: 576px) { - .layout-sm-footer-fixed .wrapper .control-sidebar { - bottom: 0; - } - .layout-sm-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; - } - .layout-sm-footer-fixed .wrapper .content-wrapper { - margin-bottom: calc(3.5rem + 1px); - } - .layout-sm-footer-not-fixed .wrapper .main-footer { - position: static; - } -} - -@media (min-width: 768px) { - .layout-md-footer-fixed .wrapper .control-sidebar { - bottom: 0; - } - .layout-md-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; - } - .layout-md-footer-fixed .wrapper .content-wrapper { - margin-bottom: calc(3.5rem + 1px); - } - .layout-md-footer-not-fixed .wrapper .main-footer { - position: static; - } -} - -@media (min-width: 992px) { - .layout-lg-footer-fixed .wrapper .control-sidebar { - bottom: 0; - } - .layout-lg-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; - } - .layout-lg-footer-fixed .wrapper .content-wrapper { - margin-bottom: calc(3.5rem + 1px); - } - .layout-lg-footer-not-fixed .wrapper .main-footer { - position: static; - } -} - -@media (min-width: 1200px) { - .layout-xl-footer-fixed .wrapper .control-sidebar { - bottom: 0; - } - .layout-xl-footer-fixed .wrapper .main-footer { - bottom: 0; - left: 0; - position: fixed; - right: 0; - z-index: 1032; - } - .layout-xl-footer-fixed .wrapper .content-wrapper { - margin-bottom: calc(3.5rem + 1px); - } - .layout-xl-footer-not-fixed .wrapper .main-footer { - position: static; - } -} - -.layout-top-nav .wrapper { - margin-left: 0; -} - -.layout-top-nav .wrapper .text-sm .brand-image { - margin-top: -.5rem; -} - -.layout-top-nav .wrapper .main-sidebar { - bottom: inherit; - height: inherit; -} - -.layout-top-nav .wrapper .brand-image { - height: 33px; -} - -.layout-top-nav .wrapper .main-sidebar { - display: none; -} - -.layout-top-nav .wrapper .content-wrapper, -.layout-top-nav .wrapper .main-header, -.layout-top-nav .wrapper .main-footer { - margin-left: 0; -} - -@media (min-width: 768px) { - body:not(.sidebar-mini-md) .content-wrapper, - body:not(.sidebar-mini-md) .main-footer, - body:not(.sidebar-mini-md) .main-header { - transition: margin-left 0.3s ease-in-out; - margin-left: 250px; - } -} - -@media (min-width: 768px) and (prefers-reduced-motion: reduce) { - body:not(.sidebar-mini-md) .content-wrapper, - body:not(.sidebar-mini-md) .main-footer, - body:not(.sidebar-mini-md) .main-header { - transition: none; - } -} - -@media (min-width: 768px) { - .sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper, .sidebar-collapse - body:not(.sidebar-mini-md) .main-footer, .sidebar-collapse - body:not(.sidebar-mini-md) .main-header { - margin-left: 0; - } -} - -@media (max-width: 991.98px) { - body:not(.sidebar-mini-md) .content-wrapper, body:not(.sidebar-mini-md) .content-wrapper::before, - body:not(.sidebar-mini-md) .main-footer, - body:not(.sidebar-mini-md) .main-footer::before, - body:not(.sidebar-mini-md) .main-header, - body:not(.sidebar-mini-md) .main-header::before { - margin-left: 0; - } -} - -@media (min-width: 768px) { - .sidebar-mini-md .content-wrapper, - .sidebar-mini-md .main-footer, - .sidebar-mini-md .main-header { - transition: margin-left 0.3s ease-in-out; - margin-left: 250px; - } -} - -@media (min-width: 768px) and (prefers-reduced-motion: reduce) { - .sidebar-mini-md .content-wrapper, - .sidebar-mini-md .main-footer, - .sidebar-mini-md .main-header { - transition: none; - } -} - -@media (min-width: 768px) { - .sidebar-collapse .sidebar-mini-md .content-wrapper, .sidebar-collapse - .sidebar-mini-md .main-footer, .sidebar-collapse - .sidebar-mini-md .main-header { - margin-left: 4.6rem; - } -} - -@media (max-width: 991.98px) { - .sidebar-mini-md .content-wrapper, .sidebar-mini-md .content-wrapper::before, - .sidebar-mini-md .main-footer, - .sidebar-mini-md .main-footer::before, - .sidebar-mini-md .main-header, - .sidebar-mini-md .main-header::before { - margin-left: 4.6rem; - } -} - -.content-wrapper { - background: #f4f6f9; -} - -.content-wrapper > .content { - padding: 0 0.5rem; -} - -.main-sidebar, .main-sidebar::before { - transition: margin-left 0.3s ease-in-out, width 0.3s ease-in-out; - width: 250px; -} - -@media (prefers-reduced-motion: reduce) { - .main-sidebar, .main-sidebar::before { - transition: none; - } -} - -.sidebar-collapse .main-sidebar, .sidebar-collapse .main-sidebar::before { - margin-left: -250px; -} - -.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview { - padding: 0; -} - -@media (max-width: 767.98px) { - .main-sidebar, .main-sidebar::before { - box-shadow: none !important; - margin-left: -250px; - } - .sidebar-open .main-sidebar, .sidebar-open .main-sidebar::before { - margin-left: 0; - } -} - -:not(.layout-fixed) .main-sidebar { - height: inherit; - min-height: 100%; - position: absolute; - top: 0; -} - -.layout-fixed .brand-link { - width: 250px; -} - -.layout-fixed .main-sidebar { - bottom: 0; - float: none; - height: 100vh; - left: 0; - position: fixed; - top: 0; -} - -.layout-fixed .control-sidebar { - bottom: 0; - float: none; - height: 100vh; - position: fixed; - top: 0; -} - -.layout-fixed .control-sidebar .control-sidebar-content { - height: calc(100vh - calc(3.5rem + 1px)); -} - -.main-footer { - background: #ffffff; - border-top: 1px solid #dee2e6; - color: #869099; - padding: 1rem; -} - -.text-sm .main-footer, .main-footer.text-sm { - padding: 0.812rem; -} - -.content-header { - padding: 15px 0.5rem; -} - -.text-sm .content-header { - padding: 10px 0.5rem; -} - -.content-header h1 { - font-size: 1.8rem; - margin: 0; -} - -.text-sm .content-header h1 { - font-size: 1.5rem; -} - -.content-header .breadcrumb { - background: transparent; - line-height: 1.8rem; - margin-bottom: 0; - padding: 0; -} - -.text-sm .content-header .breadcrumb { - line-height: 1.5rem; -} - -.hold-transition .content-wrapper, -.hold-transition .main-header, -.hold-transition .main-sidebar, -.hold-transition .main-sidebar *, -.hold-transition .control-sidebar, -.hold-transition .control-sidebar *, -.hold-transition .main-footer { - transition: none !important; -} - -.main-header { - border-bottom: 1px solid #dee2e6; - z-index: 1034; -} - -.main-header .nav-link { - height: 2.5rem; - position: relative; -} - -.text-sm .main-header .nav-link, .main-header.text-sm .nav-link { - height: 1.93725rem; - padding: 0.35rem 1rem; -} - -.text-sm .main-header .nav-link > .fa, -.text-sm .main-header .nav-link > .fas, -.text-sm .main-header .nav-link > .far, -.text-sm .main-header .nav-link > .fab, -.text-sm .main-header .nav-link > .glyphicon, -.text-sm .main-header .nav-link > .ion, .main-header.text-sm .nav-link > .fa, -.main-header.text-sm .nav-link > .fas, -.main-header.text-sm .nav-link > .far, -.main-header.text-sm .nav-link > .fab, -.main-header.text-sm .nav-link > .glyphicon, -.main-header.text-sm .nav-link > .ion { - font-size: 0.875rem; -} - -.main-header .navbar-nav .nav-item { - margin: 0; -} - -.main-header .navbar-nav[class*='-right'] .dropdown-menu { - left: auto; - margin-top: -3px; - right: 0; -} - -@media (max-width: 575.98px) { - .main-header .navbar-nav[class*='-right'] .dropdown-menu { - left: 0; - right: auto; - } -} - -.navbar-img { - height: calc(3.5rem + 1px)/2; - width: auto; -} - -.navbar-badge { - font-size: .6rem; - font-weight: 300; - padding: 2px 4px; - position: absolute; - right: 5px; - top: 9px; -} - -.btn-navbar { - background-color: transparent; - border-left-width: 0; -} - -.form-control-navbar { - border-right-width: 0; -} - -.form-control-navbar + .input-group-append { - margin-left: 0; -} - -.form-control-navbar, -.btn-navbar { - transition: none; -} - -.navbar-dark .form-control-navbar, -.navbar-dark .btn-navbar { - background-color: rgba(255, 255, 255, 0.2); - border: 0; -} - -.navbar-dark .form-control-navbar::placeholder { - color: rgba(255, 255, 255, 0.6); -} - -.navbar-dark .form-control-navbar + .input-group-append > .btn-navbar { - color: rgba(255, 255, 255, 0.6); -} - -.navbar-dark .form-control-navbar:focus, -.navbar-dark .form-control-navbar:focus + .input-group-append .btn-navbar { - background-color: rgba(255, 255, 255, 0.6); - border: 0 !important; - color: #343a40; -} - -.navbar-light .form-control-navbar, -.navbar-light .btn-navbar { - background-color: #f2f4f6; - border: 0; -} - -.navbar-light .form-control-navbar::placeholder { - color: rgba(0, 0, 0, 0.6); -} - -.navbar-light .form-control-navbar + .input-group-append > .btn-navbar { - color: rgba(0, 0, 0, 0.6); -} - -.navbar-light .form-control-navbar:focus, -.navbar-light .form-control-navbar:focus + .input-group-append .btn-navbar { - background-color: #e9ecef; - border: 0 !important; - color: #343a40; -} - -.brand-link { - display: block; - font-size: 1.25rem; - line-height: 1.5; - padding: 0.8125rem 0.5rem; - transition: width 0.3s ease-in-out; - white-space: nowrap; -} - -.brand-link:hover { - color: #ffffff; - text-decoration: none; -} - -.text-sm .brand-link { - font-size: inherit; -} - -[class*='sidebar-dark'] .brand-link { - border-bottom: 1px solid #4b545c; - color: rgba(255, 255, 255, 0.8); -} - -[class*='sidebar-light'] .brand-link { - border-bottom: 1px solid #dee2e6; - color: rgba(0, 0, 0, 0.8); -} - -.brand-link .brand-image { - float: left; - line-height: .8; - margin-left: .8rem; - margin-right: .5rem; - margin-top: -3px; - max-height: 33px; - width: auto; -} - -.brand-link .brand-image-xs { - float: left; - line-height: .8; - margin-top: -.1rem; - max-height: 33px; - width: auto; -} - -.brand-link .brand-image-xl { - line-height: .8; - max-height: 40px; - width: auto; -} - -.brand-link.text-sm .brand-image, -.text-sm .brand-link .brand-image { - height: 29px; - margin-bottom: -.25rem; - margin-left: .95rem; - margin-top: -.25rem; -} - -.brand-link.text-sm .brand-image-xs, -.text-sm .brand-link .brand-image-xs { - margin-top: -.2rem; - max-height: 29px; -} - -.brand-link.text-sm .brand-image-xl, -.text-sm .brand-link .brand-image-xl { - margin-top: -.225rem; - max-height: 38px; -} - -.main-sidebar { - height: 100vh; - overflow-y: hidden; - z-index: 1038; -} - -.sidebar { - height: calc(100% - 4rem); - overflow-y: auto; - padding-bottom: 0; - padding-left: 0.5rem; - padding-right: 0.5rem; - padding-top: 0; -} - -.user-panel { - position: relative; -} - -[class*='sidebar-dark'] .user-panel { - border-bottom: 1px solid #4f5962; -} - -[class*='sidebar-light'] .user-panel { - border-bottom: 1px solid #dee2e6; -} - -.user-panel, -.user-panel .info { - overflow: hidden; - white-space: nowrap; -} - -.user-panel .image { - display: inline-block; - padding-left: 0.8rem; -} - -.user-panel img { - height: auto; - width: 2.1rem; -} - -.user-panel .info { - display: inline-block; - padding: 5px 5px 5px 10px; -} - -.user-panel .status, -.user-panel .dropdown-menu { - font-size: 0.875rem; -} - -.nav-sidebar .nav-item > .nav-link { - margin-bottom: .2rem; -} - -.nav-sidebar .nav-item > .nav-link .right { - transition: transform ease-in-out 0.3s; -} - -@media (prefers-reduced-motion: reduce) { - .nav-sidebar .nav-item > .nav-link .right { - transition: none; - } -} - -.nav-sidebar .nav-link > .right, -.nav-sidebar .nav-link > p > .right { - position: absolute; - right: 1rem; - top: .7rem; -} - -.nav-sidebar .nav-link > .right i, -.nav-sidebar .nav-link > .right span, -.nav-sidebar .nav-link > p > .right i, -.nav-sidebar .nav-link > p > .right span { - margin-left: .5rem; -} - -.nav-sidebar .nav-link > .right:nth-child(2), -.nav-sidebar .nav-link > p > .right:nth-child(2) { - right: 2.2rem; -} - -.nav-sidebar .menu-open > .nav-treeview { - display: block; -} - -.nav-sidebar .menu-open > .nav-link i.right { - transform: rotate(-90deg); -} - -.nav-sidebar > .nav-item { - margin-bottom: 0; -} - -.nav-sidebar > .nav-item .nav-icon { - font-size: 1.2rem; - margin-right: .2rem; - text-align: center; - width: 1.6rem; -} - -.nav-sidebar > .nav-item .nav-icon.fa, .nav-sidebar > .nav-item .nav-icon.fas, .nav-sidebar > .nav-item .nav-icon.far, .nav-sidebar > .nav-item .nav-icon.fab, .nav-sidebar > .nav-item .nav-icon.glyphicon, .nav-sidebar > .nav-item .nav-icon.ion { - font-size: 1.1rem; -} - -.nav-sidebar > .nav-item .float-right { - margin-top: 3px; -} - -.nav-sidebar .nav-treeview { - display: none; - list-style: none; - padding: 0; -} - -.nav-sidebar .nav-treeview > .nav-item > .nav-link > .nav-icon { - width: 1.6rem; -} - -.nav-sidebar.nav-child-indent .nav-treeview { - transition: padding 0.3s ease-in-out; - padding-left: 1rem; -} - -.nav-sidebar .nav-header { - font-size: .9rem; - padding: 0.5rem; -} - -.nav-sidebar .nav-header:not(:first-of-type) { - padding: 1.7rem 1rem .5rem; -} - -.nav-sidebar .nav-link p { - display: inline-block; - margin: 0; -} - -#sidebar-overlay { - background-color: rgba(0, 0, 0, 0.1); - bottom: 0; - display: none; - left: 0; - position: fixed; - right: 0; - top: 0; - z-index: 1037; -} - -@media (max-width: 991.98px) { - .sidebar-open #sidebar-overlay { - display: block; - } -} - -[class*='sidebar-light-'] { - background-color: #ffffff; -} - -[class*='sidebar-light-'] .user-panel a:hover { - color: #212529; -} - -[class*='sidebar-light-'] .user-panel .status { - background: rgba(0, 0, 0, 0.1); - color: #343a40; -} - -[class*='sidebar-light-'] .user-panel .status:hover, [class*='sidebar-light-'] .user-panel .status:focus, [class*='sidebar-light-'] .user-panel .status:active { - background: rgba(0, 0, 0, 0.1); - color: #212529; -} - -[class*='sidebar-light-'] .user-panel .dropdown-menu { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); - border-color: rgba(0, 0, 0, 0.1); -} - -[class*='sidebar-light-'] .user-panel .dropdown-item { - color: #212529; -} - -[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link:active, [class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link:focus { - color: #343a40; -} - -[class*='sidebar-light-'] .nav-sidebar > .nav-item.menu-open > .nav-link, -[class*='sidebar-light-'] .nav-sidebar > .nav-item:hover > .nav-link { - background-color: rgba(0, 0, 0, 0.1); - color: #212529; -} - -[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-link.active { - color: #000; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); -} - -[class*='sidebar-light-'] .nav-sidebar > .nav-item > .nav-treeview { - background: transparent; -} - -[class*='sidebar-light-'] .nav-header { - background: inherit; - color: #292d32; -} - -[class*='sidebar-light-'] .sidebar a { - color: #343a40; -} - -[class*='sidebar-light-'] .sidebar a:hover { - text-decoration: none; -} - -[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link { - color: #777; -} - -[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link.active:hover { - background-color: rgba(0, 0, 0, 0.1); - color: #212529; -} - -[class*='sidebar-light-'] .nav-treeview > .nav-item > .nav-link:hover { - background-color: rgba(0, 0, 0, 0.1); -} - -[class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview .nav-treeview  { - border-color: rgba(0, 0, 0, 0.1); -} - -[class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link, [class*='sidebar-light-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link.active { - border-color: rgba(0, 0, 0, 0.1); -} - -[class*='sidebar-dark-'] { - background-color: #343a40; -} - -[class*='sidebar-dark-'] .user-panel a:hover { - color: #ffffff; -} - -[class*='sidebar-dark-'] .user-panel .status { - background: rgba(255, 255, 255, 0.1); - color: #C2C7D0; -} - -[class*='sidebar-dark-'] .user-panel .status:hover, [class*='sidebar-dark-'] .user-panel .status:focus, [class*='sidebar-dark-'] .user-panel .status:active { - background: rgba(247, 247, 247, 0.1); - color: #ffffff; -} - -[class*='sidebar-dark-'] .user-panel .dropdown-menu { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); - border-color: rgba(242, 242, 242, 0.1); -} - -[class*='sidebar-dark-'] .user-panel .dropdown-item { - color: #212529; -} - -[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link:active { - color: #C2C7D0; -} - -[class*='sidebar-dark-'] .nav-sidebar > .nav-item.menu-open > .nav-link, -[class*='sidebar-dark-'] .nav-sidebar > .nav-item:hover > .nav-link, -[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link:focus { - background-color: rgba(255, 255, 255, 0.1); - color: #ffffff; -} - -[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-link.active { - color: #ffffff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); -} - -[class*='sidebar-dark-'] .nav-sidebar > .nav-item > .nav-treeview { - background: transparent; -} - -[class*='sidebar-dark-'] .nav-header { - background: inherit; - color: #d0d4db; -} - -[class*='sidebar-dark-'] .sidebar a { - color: #C2C7D0; -} - -[class*='sidebar-dark-'] .sidebar a:hover, [class*='sidebar-dark-'] .sidebar a:focus { - text-decoration: none; -} - -[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link { - color: #C2C7D0; -} - -[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link:hover, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link:focus { - background-color: rgba(255, 255, 255, 0.1); - color: #ffffff; -} - -[class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active:hover, [class*='sidebar-dark-'] .nav-treeview > .nav-item > .nav-link.active:focus { - background-color: rgba(255, 255, 255, 0.9); - color: #343a40; -} - -[class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview .nav-treeview  { - border-color: rgba(255, 255, 255, 0.9); -} - -[class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link, [class*='sidebar-dark-'] .nav-flat .nav-item .nav-treeview > .nav-item > .nav-link.active { - border-color: rgba(255, 255, 255, 0.9); -} - -.sidebar-dark-primary .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-primary .nav-sidebar > .nav-item > .nav-link.active { - background-color: #007bff; - color: #ffffff; -} - -.sidebar-dark-primary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-primary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #007bff; -} - -.sidebar-dark-secondary .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-secondary .nav-sidebar > .nav-item > .nav-link.active { - background-color: #6c757d; - color: #ffffff; -} - -.sidebar-dark-secondary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-secondary .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #6c757d; -} - -.sidebar-dark-success .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-success .nav-sidebar > .nav-item > .nav-link.active { - background-color: #28a745; - color: #ffffff; -} - -.sidebar-dark-success .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-success .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #28a745; -} - -.sidebar-dark-info .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-info .nav-sidebar > .nav-item > .nav-link.active { - background-color: #17a2b8; - color: #ffffff; -} - -.sidebar-dark-info .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-info .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #17a2b8; -} - -.sidebar-dark-warning .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-warning .nav-sidebar > .nav-item > .nav-link.active { - background-color: #ffc107; - color: #1F2D3D; -} - -.sidebar-dark-warning .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-warning .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #ffc107; -} - -.sidebar-dark-danger .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-danger .nav-sidebar > .nav-item > .nav-link.active { - background-color: #dc3545; - color: #ffffff; -} - -.sidebar-dark-danger .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-danger .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #dc3545; -} - -.sidebar-dark-light .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-light .nav-sidebar > .nav-item > .nav-link.active { - background-color: #f8f9fa; - color: #1F2D3D; -} - -.sidebar-dark-light .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-light .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #f8f9fa; -} - -.sidebar-dark-dark .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-dark .nav-sidebar > .nav-item > .nav-link.active { - background-color: #343a40; - color: #ffffff; -} - -.sidebar-dark-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #343a40; -} - -.sidebar-dark-navy .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-navy .nav-sidebar > .nav-item > .nav-link.active { - background-color: #001f3f; - color: #ffffff; -} - -.sidebar-dark-navy .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-navy .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #001f3f; -} - -.sidebar-dark-olive .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-olive .nav-sidebar > .nav-item > .nav-link.active { - background-color: #3d9970; - color: #ffffff; -} - -.sidebar-dark-olive .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-olive .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #3d9970; -} - -.sidebar-dark-lime .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-lime .nav-sidebar > .nav-item > .nav-link.active { - background-color: #01ff70; - color: #1F2D3D; -} - -.sidebar-dark-lime .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-lime .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #01ff70; -} - -.sidebar-dark-fuchsia .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-fuchsia .nav-sidebar > .nav-item > .nav-link.active { - background-color: #f012be; - color: #ffffff; -} - -.sidebar-dark-fuchsia .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-fuchsia .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #f012be; -} - -.sidebar-dark-maroon .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-maroon .nav-sidebar > .nav-item > .nav-link.active { - background-color: #d81b60; - color: #ffffff; -} - -.sidebar-dark-maroon .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-maroon .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #d81b60; -} - -.sidebar-dark-blue .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-blue .nav-sidebar > .nav-item > .nav-link.active { - background-color: #007bff; - color: #ffffff; -} - -.sidebar-dark-blue .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-blue .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #007bff; -} - -.sidebar-dark-indigo .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-indigo .nav-sidebar > .nav-item > .nav-link.active { - background-color: #6610f2; - color: #ffffff; -} - -.sidebar-dark-indigo .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-indigo .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #6610f2; -} - -.sidebar-dark-purple .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-purple .nav-sidebar > .nav-item > .nav-link.active { - background-color: #6f42c1; - color: #ffffff; -} - -.sidebar-dark-purple .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-purple .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #6f42c1; -} - -.sidebar-dark-pink .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-pink .nav-sidebar > .nav-item > .nav-link.active { - background-color: #e83e8c; - color: #ffffff; -} - -.sidebar-dark-pink .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-pink .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #e83e8c; -} - -.sidebar-dark-red .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-red .nav-sidebar > .nav-item > .nav-link.active { - background-color: #dc3545; - color: #ffffff; -} - -.sidebar-dark-red .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-red .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #dc3545; -} - -.sidebar-dark-orange .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-orange .nav-sidebar > .nav-item > .nav-link.active { - background-color: #fd7e14; - color: #1F2D3D; -} - -.sidebar-dark-orange .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-orange .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #fd7e14; -} - -.sidebar-dark-yellow .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-yellow .nav-sidebar > .nav-item > .nav-link.active { - background-color: #ffc107; - color: #1F2D3D; -} - -.sidebar-dark-yellow .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-yellow .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #ffc107; -} - -.sidebar-dark-green .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-green .nav-sidebar > .nav-item > .nav-link.active { - background-color: #28a745; - color: #ffffff; -} - -.sidebar-dark-green .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-green .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #28a745; -} - -.sidebar-dark-teal .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-teal .nav-sidebar > .nav-item > .nav-link.active { - background-color: #20c997; - color: #ffffff; -} - -.sidebar-dark-teal .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-teal .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #20c997; -} - -.sidebar-dark-cyan .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-cyan .nav-sidebar > .nav-item > .nav-link.active { - background-color: #17a2b8; - color: #ffffff; -} - -.sidebar-dark-cyan .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-cyan .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #17a2b8; -} - -.sidebar-dark-white .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-white .nav-sidebar > .nav-item > .nav-link.active { - background-color: #ffffff; - color: #1F2D3D; -} - -.sidebar-dark-white .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-white .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #ffffff; -} - -.sidebar-dark-gray .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-gray .nav-sidebar > .nav-item > .nav-link.active { - background-color: #6c757d; - color: #ffffff; -} - -.sidebar-dark-gray .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-gray .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #6c757d; -} - -.sidebar-dark-gray-dark .nav-sidebar > .nav-item > .nav-link.active, -.sidebar-light-gray-dark .nav-sidebar > .nav-item > .nav-link.active { - background-color: #343a40; - color: #ffffff; -} - -.sidebar-dark-gray-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active, -.sidebar-light-gray-dark .nav-sidebar.nav-legacy > .nav-item > .nav-link.active { - border-color: #343a40; -} - -.nav-flat { - margin: -0.25rem -0.5rem 0; -} - -.nav-flat.nav-child-indent .nav-treeview { - padding-left: 0 !important; -} - -.nav-flat.nav-child-indent .nav-treeview .nav-treeview { - border-left: .2rem solid; -} - -.nav-flat .nav-item > .nav-link { - border-radius: 0; - margin-bottom: 0; -} - -.nav-flat .nav-icon { - transition: margin-left ease-in-out 0.3s; -} - -@media (prefers-reduced-motion: reduce) { - .nav-flat .nav-icon { - transition: none; - } -} - -.nav-flat .nav-treeview .nav-icon { - margin-left: -.2rem; -} - -.sidebar-collapse .nav-flat .nav-icon { - margin-left: .5rem; -} - -.sidebar-collapse .nav-flat .nav-treeview .nav-icon { - margin-left: .3rem; -} - -.nav-flat.nav-sidebar > .nav-item .nav-treeview, -.nav-flat.nav-sidebar > .nav-item > .nav-treeview { - background: rgba(255, 255, 255, 0.05); -} - -.nav-flat.nav-sidebar > .nav-item .nav-treeview .nav-item > .nav-link, -.nav-flat.nav-sidebar > .nav-item > .nav-treeview .nav-item > .nav-link { - border-left: .2rem solid; -} - -.nav-legacy { - margin: -0.25rem -0.5rem 0; -} - -.nav-legacy.nav-sidebar .nav-item > .nav-link { - border-radius: 0; - margin-bottom: 0; -} - -.nav-legacy.nav-sidebar > .nav-item > .nav-link.active { - background: inherit; - border-left: 3px solid transparent; - box-shadow: none; -} - -.nav-legacy.nav-sidebar > .nav-item > .nav-link.active > .nav-icon { - margin-left: -3px; -} - -[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item .nav-treeview, -[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item > .nav-treeview { - background: rgba(255, 255, 255, 0.05); -} - -[class*='sidebar-dark'] .nav-legacy.nav-sidebar > .nav-item > .nav-link.active { - color: #ffffff; -} - -[class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link:focus, [class*='sidebar-dark'] .nav-legacy .nav-treeview > .nav-item > .nav-link:hover { - background: none; - color: #ffffff; -} - -[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item .nav-treeview, -[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item > .nav-treeview { - background: rgba(0, 0, 0, 0.05); -} - -[class*='sidebar-light'] .nav-legacy.nav-sidebar > .nav-item > .nav-link.active { - color: #000; -} - -[class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link.active, [class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link:focus, [class*='sidebar-light'] .nav-legacy .nav-treeview > .nav-item > .nav-link:hover { - background: none; - color: #000; -} - -.nav-collapse-hide-child .menu-open > .nav-treeview { - max-height: min-content; - opacity: 1; -} - -.sidebar-collapse .nav-collapse-hide-child .menu-open > .nav-treeview { - max-height: 0; - opacity: 0; -} - -.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open > .nav-treeview, -.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open > .nav-treeview { - max-height: min-content; - opacity: 1; -} - -.nav-compact .nav-link, -.nav-compact .nav-header { - padding: 0.25rem 0.5rem; -} - -.nav-compact .nav-header:not(:first-of-type) { - padding: 0.75rem 0.5rem 0.25rem; -} - -.nav-compact .nav-link > .right, -.nav-compact .nav-link > p > .right { - top: .5rem; - right: .5rem; -} - -.nav-compact .nav-link > .right:nth-child(2), -.nav-compact .nav-link > p > .right:nth-child(2) { - right: 1.6rem; -} - -[class*='sidebar-dark'] .form-control-sidebar, -[class*='sidebar-dark'] .btn-sidebar { - background: #3f474e; - border: 1px solid #56606a; - color: white; -} - -[class*='sidebar-dark'] .form-control-sidebar:focus, -[class*='sidebar-dark'] .btn-sidebar:focus { - border: 1px solid #7a8793; -} - -[class*='sidebar-dark'] .btn-sidebar:hover { - background: #454d55; -} - -[class*='sidebar-dark'] .btn-sidebar:focus { - background: #4b545c; -} - -[class*='sidebar-light'] .form-control-sidebar, -[class*='sidebar-light'] .btn-sidebar { - background: #f2f2f2; - border: 1px solid #d9d9d9; - color: #1F2D3D; -} - -[class*='sidebar-light'] .form-control-sidebar:focus, -[class*='sidebar-light'] .btn-sidebar:focus { - border: 1px solid #b3b3b3; -} - -[class*='sidebar-light'] .btn-sidebar:hover { - background: #ececec; -} - -[class*='sidebar-light'] .btn-sidebar:focus { - background: #e6e6e6; -} - -.logo-xs, -.logo-xl { - opacity: 1; - position: absolute; - visibility: visible; -} - -.logo-xs.brand-image-xs, -.logo-xl.brand-image-xs { - left: 18px; - top: 12px; -} - -.logo-xs.brand-image-xl, -.logo-xl.brand-image-xl { - left: 12px; - top: 6px; -} - -.logo-xs { - opacity: 0; - visibility: hidden; -} - -.logo-xs.brand-image-xl { - left: 16px; - top: 8px; -} - -.brand-link.logo-switch::before { - content: '\00a0'; -} - -@media (min-width: 992px) { - .sidebar-mini .nav-sidebar, - .sidebar-mini .nav-sidebar > .nav-header, - .sidebar-mini .nav-sidebar .nav-link { - white-space: nowrap; - overflow: hidden; - } - .sidebar-mini.sidebar-collapse .d-hidden-mini { - display: none; - } - .sidebar-mini.sidebar-collapse .content-wrapper, - .sidebar-mini.sidebar-collapse .main-footer, - .sidebar-mini.sidebar-collapse .main-header { - margin-left: 4.6rem !important; - } - .sidebar-mini.sidebar-collapse .nav-sidebar .nav-header { - display: none; - } - .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p { - width: 0; - } - .sidebar-mini.sidebar-collapse .sidebar .user-panel > .info, - .sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p, - .sidebar-mini.sidebar-collapse .brand-text { - margin-left: -10px; - opacity: 0; - visibility: hidden; - } - .sidebar-mini.sidebar-collapse .logo-xl { - opacity: 0; - visibility: hidden; - } - .sidebar-mini.sidebar-collapse .logo-xs { - display: inline-block; - opacity: 1; - visibility: visible; - } - .sidebar-mini.sidebar-collapse .main-sidebar { - overflow-x: hidden; - } - .sidebar-mini.sidebar-collapse .main-sidebar, .sidebar-mini.sidebar-collapse .main-sidebar::before { - margin-left: 0; - width: 4.6rem; - } - .sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image { - float: none; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused { - width: 250px; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview { - padding-left: 1rem; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link { - width: 250px; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel { - text-align: left; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image { - float: left; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel > .info, - .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p, - .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text, - .sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info, - .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p, - .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text, - .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl { - display: inline-block; - margin-left: 0; - opacity: 1; - visibility: visible; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-flat .nav-icon, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-icon { - margin-left: 0; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-flat .nav-treeview .nav-icon, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon { - margin-left: -.2rem; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs { - opacity: 0; - visibility: hidden; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image { - margin-right: .5rem; - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form, - .sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel > .info, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form, - .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info { - display: block !important; - -webkit-transform: translateZ(0); - } - .sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar > .nav-item > .nav-link > span, .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar > .nav-item > .nav-link > span { - display: inline-block !important; - } - .sidebar-mini.sidebar-collapse .visible-sidebar-mini { - display: block !important; - } - .sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link { - width: 250px; - } - .sidebar-mini.sidebar-collapse.layout-fixed .brand-link { - width: 4.6rem; - } -} - -@media (min-width: 768px) { - .sidebar-mini-md .nav-sidebar, - .sidebar-mini-md .nav-sidebar > .nav-header, - .sidebar-mini-md .nav-sidebar .nav-link { - white-space: nowrap; - overflow: hidden; - } - .sidebar-mini-md.sidebar-collapse .d-hidden-mini { - display: none; - } - .sidebar-mini-md.sidebar-collapse .content-wrapper, - .sidebar-mini-md.sidebar-collapse .main-footer, - .sidebar-mini-md.sidebar-collapse .main-header { - margin-left: 4.6rem !important; - } - .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header { - display: none; - } - .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p { - width: 0; - } - .sidebar-mini-md.sidebar-collapse .sidebar .user-panel > .info, - .sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p, - .sidebar-mini-md.sidebar-collapse .brand-text { - margin-left: -10px; - opacity: 0; - visibility: hidden; - } - .sidebar-mini-md.sidebar-collapse .logo-xl { - opacity: 0; - visibility: hidden; - } - .sidebar-mini-md.sidebar-collapse .logo-xs { - display: inline-block; - opacity: 1; - visibility: visible; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar { - overflow-x: hidden; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar, .sidebar-mini-md.sidebar-collapse .main-sidebar::before { - margin-left: 0; - width: 4.6rem; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image { - float: none; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused { - width: 250px; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview { - padding-left: 1rem; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link { - width: 250px; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel { - text-align: left; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image { - float: left; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel > .info, - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p, - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text, - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info, - .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p, - .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text, - .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl { - display: inline-block; - margin-left: 0; - opacity: 1; - visibility: visible; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-flat .nav-icon, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-icon { - margin-left: 0; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-flat .nav-treeview .nav-icon, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon { - margin-left: -.2rem; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs { - opacity: 0; - visibility: hidden; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image { - margin-right: .5rem; - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form, - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel > .info, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form, - .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel > .info { - display: block !important; - -webkit-transform: translateZ(0); - } - .sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar > .nav-item > .nav-link > span, .sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar > .nav-item > .nav-link > span { - display: inline-block !important; - } - .sidebar-mini-md.sidebar-collapse .visible-sidebar-mini { - display: block !important; - } - .sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link { - width: 250px; - } - .sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link { - width: 4.6rem; - } -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover { - width: 4.6rem; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link { - width: 4.6rem !important; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image { - float: none !important; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs { - opacity: 1; - visibility: visible; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl { - opacity: 0; - visibility: hidden; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview { - padding-left: 0; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text, -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel > .info, -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel > .info, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p { - margin-left: -10px; - opacity: 0; - visibility: hidden; - width: 0; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar > .nav-item .nav-icon, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar > .nav-item .nav-icon { - margin-right: 0; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-flat .nav-icon, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-flat .nav-icon { - margin-left: .5rem; -} - -.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-flat .nav-treeview .nav-icon, -.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-flat .nav-treeview .nav-icon { - margin-left: .3rem; -} - -.nav-sidebar { - position: relative; -} - -.nav-sidebar:hover { - overflow: visible; -} - -.sidebar-form, -.nav-sidebar > .nav-header { - overflow: hidden; - text-overflow: clip; -} - -.nav-sidebar .nav-item > .nav-link { - position: relative; -} - -.nav-sidebar .nav-item > .nav-link > .float-right { - margin-top: -7px; - position: absolute; - right: 10px; - top: 50%; -} - -.sidebar .nav-link p, -.main-sidebar .brand-text, -.main-sidebar .logo-xs, -.main-sidebar .logo-xl, -.sidebar .user-panel .info { - transition: margin-left 0.3s linear, opacity 0.3s ease, visibility 0.3s ease; -} - -@media (prefers-reduced-motion: reduce) { - .sidebar .nav-link p, - .main-sidebar .brand-text, - .main-sidebar .logo-xs, - .main-sidebar .logo-xl, - .sidebar .user-panel .info { - transition: none; - } -} - -html.control-sidebar-animate { - overflow-x: hidden; -} - -.control-sidebar { - bottom: calc(3.5rem + 1px); - position: absolute; - top: calc(3.5rem + 1px); - z-index: 1031; -} - -.control-sidebar, .control-sidebar::before { - bottom: calc(3.5rem + 1px); - display: none; - right: -250px; - width: 250px; - transition: right 0.3s ease-in-out, display 0.3s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .control-sidebar, .control-sidebar::before { - transition: none; - } -} - -.control-sidebar::before { - content: ''; - display: block; - position: fixed; - top: 0; - z-index: -1; -} - -body.text-sm .control-sidebar { - bottom: calc(2.9365rem + 1px); - top: calc(2.93725rem + 1px); -} - -.main-header.text-sm ~ .control-sidebar { - top: calc(2.93725rem + 1px); -} - -.main-footer.text-sm ~ .control-sidebar { - bottom: calc(2.9365rem + 1px); -} - -.control-sidebar-push-slide .content-wrapper, -.control-sidebar-push-slide .main-footer { - transition: margin-right 0.3s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .control-sidebar-push-slide .content-wrapper, - .control-sidebar-push-slide .main-footer { - transition: none; - } -} - -.control-sidebar-open .control-sidebar { - display: block; -} - -.control-sidebar-open .control-sidebar, .control-sidebar-open .control-sidebar::before { - right: 0; -} - -.control-sidebar-open.control-sidebar-push .content-wrapper, -.control-sidebar-open.control-sidebar-push .main-footer, .control-sidebar-open.control-sidebar-push-slide .content-wrapper, -.control-sidebar-open.control-sidebar-push-slide .main-footer { - margin-right: 250px; -} - -.control-sidebar-slide-open .control-sidebar { - display: block; -} - -.control-sidebar-slide-open .control-sidebar, .control-sidebar-slide-open .control-sidebar::before { - right: 0; - transition: right 0.3s ease-in-out, display 0.3s ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - .control-sidebar-slide-open .control-sidebar, .control-sidebar-slide-open .control-sidebar::before { - transition: none; - } -} - -.control-sidebar-slide-open.control-sidebar-push .content-wrapper, -.control-sidebar-slide-open.control-sidebar-push .main-footer, .control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper, -.control-sidebar-slide-open.control-sidebar-push-slide .main-footer { - margin-right: 250px; -} - -.control-sidebar-dark, -.control-sidebar-dark a, -.control-sidebar-dark .nav-link { - color: #C2C7D0; -} - -.control-sidebar-dark { - background: #343a40; -} - -.control-sidebar-dark a:hover { - color: #ffffff; -} - -.control-sidebar-dark h1, -.control-sidebar-dark h2, -.control-sidebar-dark h3, -.control-sidebar-dark h4, -.control-sidebar-dark h5, -.control-sidebar-dark h6, -.control-sidebar-dark label { - color: #ffffff; -} - -.control-sidebar-dark .nav-tabs { - background-color: rgba(255, 255, 255, 0.1); - border-bottom: 0; - margin-bottom: 5px; -} - -.control-sidebar-dark .nav-tabs .nav-item { - margin: 0; -} - -.control-sidebar-dark .nav-tabs .nav-link { - border-radius: 0; - padding: 10px 20px; - position: relative; - text-align: center; -} - -.control-sidebar-dark .nav-tabs .nav-link, .control-sidebar-dark .nav-tabs .nav-link:hover, .control-sidebar-dark .nav-tabs .nav-link:active, .control-sidebar-dark .nav-tabs .nav-link:focus, .control-sidebar-dark .nav-tabs .nav-link.active { - border: 0; -} - -.control-sidebar-dark .nav-tabs .nav-link:hover, .control-sidebar-dark .nav-tabs .nav-link:active, .control-sidebar-dark .nav-tabs .nav-link:focus, .control-sidebar-dark .nav-tabs .nav-link.active { - border-bottom-color: transparent; - border-left-color: transparent; - border-top-color: transparent; - color: #ffffff; -} - -.control-sidebar-dark .nav-tabs .nav-link.active { - background-color: #343a40; -} - -.control-sidebar-dark .tab-pane { - padding: 10px 15px; -} - -.control-sidebar-light { - color: #4b545c; -} - -.control-sidebar-light { - background: #ffffff; - border-left: 1px solid #dee2e6; -} - -.text-sm .dropdown-menu { - font-size: 0.875rem !important; -} - -.text-sm .dropdown-toggle::after { - vertical-align: .2rem; -} - -.dropdown-item-title { - font-size: 1rem; - margin: 0; -} - -.dropdown-icon::after { - margin-left: 0; -} - -.dropdown-menu-lg { - max-width: 300px; - min-width: 280px; - padding: 0; -} - -.dropdown-menu-lg .dropdown-divider { - margin: 0; -} - -.dropdown-menu-lg .dropdown-item { - padding: 0.5rem 1rem; -} - -.dropdown-menu-lg p { - margin: 0; - white-space: normal; -} - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu > a:after { - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; - float: right; - margin-left: .5rem; - margin-top: .5rem; -} - -.dropdown-submenu > .dropdown-menu { - left: 100%; - margin-left: 0px; - margin-top: 0px; - top: 0; -} - -.dropdown-hover:hover > .dropdown-menu, .dropdown-hover.nav-item.dropdown:hover > .dropdown-menu, -.dropdown-hover .dropdown-submenu:hover > .dropdown-menu, .dropdown-hover.dropdown-submenu:hover > .dropdown-menu { - display: block; -} - -.dropdown-menu-xl { - max-width: 420px; - min-width: 360px; - padding: 0; -} - -.dropdown-menu-xl .dropdown-divider { - margin: 0; -} - -.dropdown-menu-xl .dropdown-item { - padding: 0.5rem 1rem; -} - -.dropdown-menu-xl p { - margin: 0; - white-space: normal; -} - -.dropdown-footer, -.dropdown-header { - display: block; - font-size: 0.875rem; - padding: 0.5rem 1rem; - text-align: center; -} - -.open:not(.dropup) > .animated-dropdown-menu { - animation: flipInX 0.7s both; - backface-visibility: visible !important; -} - -@keyframes flipInX { - 0% { - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transition-timing-function: ease-in; - opacity: 0; - } - 40% { - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transition-timing-function: ease-in; - } - 60% { - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - 100% { - transform: perspective(400px); - } -} - -.navbar-custom-menu > .navbar-nav > li { - position: relative; -} - -.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 0; - left: auto; -} - -@media (max-width: 767.98px) { - .navbar-custom-menu > .navbar-nav { - float: right; - } - .navbar-custom-menu > .navbar-nav > li { - position: static; - } - .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #ffffff; - } -} - -.navbar-nav > .user-menu > .nav-link:after { - content: none; -} - -.navbar-nav > .user-menu > .dropdown-menu { - border-top-left-radius: 0; - border-top-right-radius: 0; - padding: 0; - border-top-width: 0; - width: 280px; -} - -.navbar-nav > .user-menu > .dropdown-menu, -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} - -.navbar-nav > .user-menu > .dropdown-menu > li.user-header { - height: 175px; - padding: 10px; - text-align: center; -} - -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { - z-index: 5; - height: 90px; - width: 90px; - border: 3px solid; - border-color: transparent; - border-color: rgba(255, 255, 255, 0.2); -} - -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { - z-index: 5; - font-size: 17px; - margin-top: 10px; -} - -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { - display: block; - font-size: 12px; -} - -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - border-bottom: 1px solid #495057; - border-top: 1px solid #dee2e6; - padding: 15px; -} - -.navbar-nav > .user-menu > .dropdown-menu > .user-body::after { - display: block; - clear: both; - content: ""; -} - -@media (min-width: 576px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-body a { - background: #ffffff !important; - color: #495057 !important; - } -} - -.navbar-nav > .user-menu > .dropdown-menu > .user-footer { - background-color: #f8f9fa; - padding: 10px; -} - -.navbar-nav > .user-menu > .dropdown-menu > .user-footer::after { - display: block; - clear: both; - content: ""; -} - -.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { - color: #6c757d; -} - -@media (min-width: 576px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { - background-color: #f8f9fa; - } -} - -.navbar-nav > .user-menu .user-image { - border-radius: 50%; - float: left; - height: 2.1rem; - margin-right: 10px; - margin-top: -2px; - width: 2.1rem; -} - -@media (min-width: 576px) { - .navbar-nav > .user-menu .user-image { - float: none; - line-height: 10px; - margin-right: .4rem; - margin-top: -8px; - } -} - -.nav-pills .nav-link { - color: #6c757d; -} - -.nav-pills .nav-link:not(.active):hover { - color: #007bff; -} - -.nav-pills .nav-item.dropdown.show .nav-link:hover { - color: #ffffff; -} - -.nav-tabs.flex-column { - border-bottom: 0; - border-right: 1px solid #dee2e6; -} - -.nav-tabs.flex-column .nav-link { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - margin-right: -1px; -} - -.nav-tabs.flex-column .nav-link:hover, .nav-tabs.flex-column .nav-link:focus { - border-color: #e9ecef transparent #e9ecef #e9ecef; -} - -.nav-tabs.flex-column .nav-link.active, -.nav-tabs.flex-column .nav-item.show .nav-link { - border-color: #dee2e6 transparent #dee2e6 #dee2e6; -} - -.nav-tabs.flex-column.nav-tabs-right { - border-left: 1px solid #dee2e6; - border-right: 0; -} - -.nav-tabs.flex-column.nav-tabs-right .nav-link { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0.25rem; - border-top-left-radius: 0; - border-top-right-radius: 0.25rem; - margin-left: -1px; -} - -.nav-tabs.flex-column.nav-tabs-right .nav-link:hover, .nav-tabs.flex-column.nav-tabs-right .nav-link:focus { - border-color: #e9ecef #e9ecef #e9ecef transparent; -} - -.nav-tabs.flex-column.nav-tabs-right .nav-link.active, -.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link { - border-color: #dee2e6 #dee2e6 #dee2e6 transparent; -} - -.navbar-no-expand { - flex-direction: row; -} - -.navbar-no-expand .nav-link { - padding-left: 1rem; - padding-right: 1rem; -} - -.navbar-light { - background-color: #f8f9fa; -} - -.navbar-dark { - background-color: #343a40; -} - -.navbar-primary { - background-color: #007bff; -} - -.navbar-secondary { - background-color: #6c757d; -} - -.navbar-success { - background-color: #28a745; -} - -.navbar-info { - background-color: #17a2b8; -} - -.navbar-warning { - background-color: #ffc107; -} - -.navbar-danger { - background-color: #dc3545; -} - -.navbar-navy { - background-color: #001f3f; -} - -.navbar-olive { - background-color: #3d9970; -} - -.navbar-lime { - background-color: #01ff70; -} - -.navbar-fuchsia { - background-color: #f012be; -} - -.navbar-maroon { - background-color: #d81b60; -} - -.navbar-blue { - background-color: #007bff; -} - -.navbar-indigo { - background-color: #6610f2; -} - -.navbar-purple { - background-color: #6f42c1; -} - -.navbar-pink { - background-color: #e83e8c; -} - -.navbar-red { - background-color: #dc3545; -} - -.navbar-orange { - background-color: #fd7e14; -} - -.navbar-yellow { - background-color: #ffc107; -} - -.navbar-green { - background-color: #28a745; -} - -.navbar-teal { - background-color: #20c997; -} - -.navbar-cyan { - background-color: #17a2b8; -} - -.navbar-white { - background-color: #ffffff; -} - -.navbar-gray { - background-color: #6c757d; -} - -.navbar-gray-dark { - background-color: #343a40; -} - -.border-transparent { - border-color: transparent !important; -} - -.description-block { - display: block; - margin: 10px 0; - text-align: center; -} - -.description-block.margin-bottom { - margin-bottom: 25px; -} - -.description-block > .description-header { - font-size: 16px; - font-weight: 600; - margin: 0; - padding: 0; -} - -.description-block > .description-text { - text-transform: uppercase; -} - -.description-block .description-icon { - font-size: 16px; -} - -.list-group-unbordered > .list-group-item { - border-left: 0; - border-radius: 0; - border-right: 0; - padding-left: 0; - padding-right: 0; -} - -.list-header { - color: #6c757d; - font-size: 15px; - font-weight: bold; - padding: 10px 4px; -} - -.list-seperator { - background: rgba(0, 0, 0, 0.125); - height: 1px; - margin: 15px 0 9px; -} - -.list-link > a { - color: #6c757d; - padding: 4px; -} - -.list-link > a:hover { - color: #212529; -} - -.user-block { - float: left; -} - -.user-block img { - float: left; - height: 40px; - width: 40px; -} - -.user-block .username, -.user-block .description, -.user-block .comment { - display: block; - margin-left: 50px; -} - -.user-block .username { - font-size: 16px; - font-weight: 600; - margin-top: -1px; -} - -.user-block .description { - color: #6c757d; - font-size: 13px; - margin-top: -3px; -} - -.user-block.user-block-sm img { - width: 1.875rem; - height: 1.875rem; -} - -.user-block.user-block-sm .username, -.user-block.user-block-sm .description, -.user-block.user-block-sm .comment { - margin-left: 40px; -} - -.user-block.user-block-sm .username { - font-size: 14px; -} - -.img-sm, -.img-md, -.img-lg { - float: left; -} - -.img-sm { - height: 1.875rem; - width: 1.875rem; -} - -.img-sm + .img-push { - margin-left: 2.5rem; -} - -.img-md { - width: 3.75rem; - height: 3.75rem; -} - -.img-md + .img-push { - margin-left: 4.375rem; -} - -.img-lg { - width: 6.25rem; - height: 6.25rem; -} - -.img-lg + .img-push { - margin-left: 6.875rem; -} - -.img-bordered { - border: 3px solid #adb5bd; - padding: 3px; -} - -.img-bordered-sm { - border: 2px solid #adb5bd; - padding: 2px; -} - -.img-rounded { - border-radius: 0.25rem; -} - -.img-circle { - border-radius: 50%; -} - -.img-size-64, -.img-size-50, -.img-size-32 { - height: auto; -} - -.img-size-64 { - width: 64px; -} - -.img-size-50 { - width: 50px; -} - -.img-size-32 { - width: 32px; -} - -.size-32, -.size-40, -.size-50 { - display: block; - text-align: center; -} - -.size-32 { - height: 32px; - line-height: 32px; - width: 32px; -} - -.size-40 { - height: 40px; - line-height: 40px; - width: 40px; -} - -.size-50 { - height: 50px; - line-height: 50px; - width: 50px; -} - -.attachment-block { - background: #f8f9fa; - border: 1px solid rgba(0, 0, 0, 0.125); - margin-bottom: 10px; - padding: 5px; -} - -.attachment-block .attachment-img { - float: left; - height: auto; - max-height: 100px; - max-width: 100px; -} - -.attachment-block .attachment-pushed { - margin-left: 110px; -} - -.attachment-block .attachment-heading { - margin: 0; -} - -.attachment-block .attachment-text { - color: #495057; -} - -.card > .overlay, -.card > .loading-img, -.overlay-wrapper > .overlay, -.overlay-wrapper > .loading-img, -.info-box > .overlay, -.info-box > .loading-img, -.small-box > .overlay, -.small-box > .loading-img { - height: 100%; - left: 0; - position: absolute; - top: 0; - width: 100%; -} - -.card .overlay, -.overlay-wrapper .overlay, -.info-box .overlay, -.small-box .overlay { - border-radius: 0.25rem; - align-items: center; - background: rgba(255, 255, 255, 0.7); - display: flex; - justify-content: center; - z-index: 50; -} - -.card .overlay > .fa, -.card .overlay > .fas, -.card .overlay > .far, -.card .overlay > .fab, -.card .overlay > .glyphicon, -.card .overlay > .ion, -.overlay-wrapper .overlay > .fa, -.overlay-wrapper .overlay > .fas, -.overlay-wrapper .overlay > .far, -.overlay-wrapper .overlay > .fab, -.overlay-wrapper .overlay > .glyphicon, -.overlay-wrapper .overlay > .ion, -.info-box .overlay > .fa, -.info-box .overlay > .fas, -.info-box .overlay > .far, -.info-box .overlay > .fab, -.info-box .overlay > .glyphicon, -.info-box .overlay > .ion, -.small-box .overlay > .fa, -.small-box .overlay > .fas, -.small-box .overlay > .far, -.small-box .overlay > .fab, -.small-box .overlay > .glyphicon, -.small-box .overlay > .ion { - color: #343a40; -} - -.card .overlay.dark, -.overlay-wrapper .overlay.dark, -.info-box .overlay.dark, -.small-box .overlay.dark { - background: rgba(0, 0, 0, 0.5); -} - -.card .overlay.dark > .fa, -.card .overlay.dark > .fas, -.card .overlay.dark > .far, -.card .overlay.dark > .fab, -.card .overlay.dark > .glyphicon, -.card .overlay.dark > .ion, -.overlay-wrapper .overlay.dark > .fa, -.overlay-wrapper .overlay.dark > .fas, -.overlay-wrapper .overlay.dark > .far, -.overlay-wrapper .overlay.dark > .fab, -.overlay-wrapper .overlay.dark > .glyphicon, -.overlay-wrapper .overlay.dark > .ion, -.info-box .overlay.dark > .fa, -.info-box .overlay.dark > .fas, -.info-box .overlay.dark > .far, -.info-box .overlay.dark > .fab, -.info-box .overlay.dark > .glyphicon, -.info-box .overlay.dark > .ion, -.small-box .overlay.dark > .fa, -.small-box .overlay.dark > .fas, -.small-box .overlay.dark > .far, -.small-box .overlay.dark > .fab, -.small-box .overlay.dark > .glyphicon, -.small-box .overlay.dark > .ion { - color: #ced4da; -} - -.ribbon-wrapper { - height: 70px; - overflow: hidden; - position: absolute; - right: -2px; - top: -2px; - width: 70px; - z-index: 10; -} - -.ribbon-wrapper.ribbon-lg { - height: 120px; - width: 120px; -} - -.ribbon-wrapper.ribbon-lg .ribbon { - right: 0px; - top: 26px; - width: 160px; -} - -.ribbon-wrapper.ribbon-xl { - height: 180px; - width: 180px; -} - -.ribbon-wrapper.ribbon-xl .ribbon { - right: 4px; - top: 47px; - width: 240px; -} - -.ribbon-wrapper .ribbon { - box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); - font-size: 0.8rem; - line-height: 100%; - padding: 0.375rem 0; - position: relative; - right: -2px; - text-align: center; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4); - text-transform: uppercase; - top: 10px; - transform: rotate(45deg); - width: 90px; -} - -.ribbon-wrapper .ribbon::before, .ribbon-wrapper .ribbon::after { - border-left: 3px solid transparent; - border-right: 3px solid transparent; - border-top: 3px solid #9e9e9e; - bottom: -3px; - content: ''; - position: absolute; -} - -.ribbon-wrapper .ribbon::before { - left: 0; -} - -.ribbon-wrapper .ribbon::after { - right: 0; -} - -.back-to-top { - bottom: 1.25rem; - position: fixed; - right: 1.25rem; - z-index: 1032; -} - -.back-to-top:focus { - box-shadow: none; -} - -pre { - padding: .75rem; -} - -blockquote { - background: #ffffff; - border-left: 0.7rem solid #007bff; - margin: 1.5em .7rem; - padding: 0.5em .7rem; -} - -.box blockquote { - background: #e9ecef; -} - -blockquote p:last-child { - margin-bottom: 0; -} - -blockquote h1, -blockquote h2, -blockquote h3, -blockquote h4, -blockquote h5, -blockquote h6 { - color: #007bff; - font-size: 1.25rem; - font-weight: 600; -} - -blockquote.quote-primary { - border-color: #007bff; -} - -blockquote.quote-primary h1, -blockquote.quote-primary h2, -blockquote.quote-primary h3, -blockquote.quote-primary h4, -blockquote.quote-primary h5, -blockquote.quote-primary h6 { - color: #007bff; -} - -blockquote.quote-secondary { - border-color: #6c757d; -} - -blockquote.quote-secondary h1, -blockquote.quote-secondary h2, -blockquote.quote-secondary h3, -blockquote.quote-secondary h4, -blockquote.quote-secondary h5, -blockquote.quote-secondary h6 { - color: #6c757d; -} - -blockquote.quote-success { - border-color: #28a745; -} - -blockquote.quote-success h1, -blockquote.quote-success h2, -blockquote.quote-success h3, -blockquote.quote-success h4, -blockquote.quote-success h5, -blockquote.quote-success h6 { - color: #28a745; -} - -blockquote.quote-info { - border-color: #17a2b8; -} - -blockquote.quote-info h1, -blockquote.quote-info h2, -blockquote.quote-info h3, -blockquote.quote-info h4, -blockquote.quote-info h5, -blockquote.quote-info h6 { - color: #17a2b8; -} - -blockquote.quote-warning { - border-color: #ffc107; -} - -blockquote.quote-warning h1, -blockquote.quote-warning h2, -blockquote.quote-warning h3, -blockquote.quote-warning h4, -blockquote.quote-warning h5, -blockquote.quote-warning h6 { - color: #ffc107; -} - -blockquote.quote-danger { - border-color: #dc3545; -} - -blockquote.quote-danger h1, -blockquote.quote-danger h2, -blockquote.quote-danger h3, -blockquote.quote-danger h4, -blockquote.quote-danger h5, -blockquote.quote-danger h6 { - color: #dc3545; -} - -blockquote.quote-light { - border-color: #f8f9fa; -} - -blockquote.quote-light h1, -blockquote.quote-light h2, -blockquote.quote-light h3, -blockquote.quote-light h4, -blockquote.quote-light h5, -blockquote.quote-light h6 { - color: #f8f9fa; -} - -blockquote.quote-dark { - border-color: #343a40; -} - -blockquote.quote-dark h1, -blockquote.quote-dark h2, -blockquote.quote-dark h3, -blockquote.quote-dark h4, -blockquote.quote-dark h5, -blockquote.quote-dark h6 { - color: #343a40; -} - -blockquote.quote-navy { - border-color: #001f3f; -} - -blockquote.quote-navy h1, -blockquote.quote-navy h2, -blockquote.quote-navy h3, -blockquote.quote-navy h4, -blockquote.quote-navy h5, -blockquote.quote-navy h6 { - color: #001f3f; -} - -blockquote.quote-olive { - border-color: #3d9970; -} - -blockquote.quote-olive h1, -blockquote.quote-olive h2, -blockquote.quote-olive h3, -blockquote.quote-olive h4, -blockquote.quote-olive h5, -blockquote.quote-olive h6 { - color: #3d9970; -} - -blockquote.quote-lime { - border-color: #01ff70; -} - -blockquote.quote-lime h1, -blockquote.quote-lime h2, -blockquote.quote-lime h3, -blockquote.quote-lime h4, -blockquote.quote-lime h5, -blockquote.quote-lime h6 { - color: #01ff70; -} - -blockquote.quote-fuchsia { - border-color: #f012be; -} - -blockquote.quote-fuchsia h1, -blockquote.quote-fuchsia h2, -blockquote.quote-fuchsia h3, -blockquote.quote-fuchsia h4, -blockquote.quote-fuchsia h5, -blockquote.quote-fuchsia h6 { - color: #f012be; -} - -blockquote.quote-maroon { - border-color: #d81b60; -} - -blockquote.quote-maroon h1, -blockquote.quote-maroon h2, -blockquote.quote-maroon h3, -blockquote.quote-maroon h4, -blockquote.quote-maroon h5, -blockquote.quote-maroon h6 { - color: #d81b60; -} - -blockquote.quote-blue { - border-color: #007bff; -} - -blockquote.quote-blue h1, -blockquote.quote-blue h2, -blockquote.quote-blue h3, -blockquote.quote-blue h4, -blockquote.quote-blue h5, -blockquote.quote-blue h6 { - color: #007bff; -} - -blockquote.quote-indigo { - border-color: #6610f2; -} - -blockquote.quote-indigo h1, -blockquote.quote-indigo h2, -blockquote.quote-indigo h3, -blockquote.quote-indigo h4, -blockquote.quote-indigo h5, -blockquote.quote-indigo h6 { - color: #6610f2; -} - -blockquote.quote-purple { - border-color: #6f42c1; -} - -blockquote.quote-purple h1, -blockquote.quote-purple h2, -blockquote.quote-purple h3, -blockquote.quote-purple h4, -blockquote.quote-purple h5, -blockquote.quote-purple h6 { - color: #6f42c1; -} - -blockquote.quote-pink { - border-color: #e83e8c; -} - -blockquote.quote-pink h1, -blockquote.quote-pink h2, -blockquote.quote-pink h3, -blockquote.quote-pink h4, -blockquote.quote-pink h5, -blockquote.quote-pink h6 { - color: #e83e8c; -} - -blockquote.quote-red { - border-color: #dc3545; -} - -blockquote.quote-red h1, -blockquote.quote-red h2, -blockquote.quote-red h3, -blockquote.quote-red h4, -blockquote.quote-red h5, -blockquote.quote-red h6 { - color: #dc3545; -} - -blockquote.quote-orange { - border-color: #fd7e14; -} - -blockquote.quote-orange h1, -blockquote.quote-orange h2, -blockquote.quote-orange h3, -blockquote.quote-orange h4, -blockquote.quote-orange h5, -blockquote.quote-orange h6 { - color: #fd7e14; -} - -blockquote.quote-yellow { - border-color: #ffc107; -} - -blockquote.quote-yellow h1, -blockquote.quote-yellow h2, -blockquote.quote-yellow h3, -blockquote.quote-yellow h4, -blockquote.quote-yellow h5, -blockquote.quote-yellow h6 { - color: #ffc107; -} - -blockquote.quote-green { - border-color: #28a745; -} - -blockquote.quote-green h1, -blockquote.quote-green h2, -blockquote.quote-green h3, -blockquote.quote-green h4, -blockquote.quote-green h5, -blockquote.quote-green h6 { - color: #28a745; -} - -blockquote.quote-teal { - border-color: #20c997; -} - -blockquote.quote-teal h1, -blockquote.quote-teal h2, -blockquote.quote-teal h3, -blockquote.quote-teal h4, -blockquote.quote-teal h5, -blockquote.quote-teal h6 { - color: #20c997; -} - -blockquote.quote-cyan { - border-color: #17a2b8; -} - -blockquote.quote-cyan h1, -blockquote.quote-cyan h2, -blockquote.quote-cyan h3, -blockquote.quote-cyan h4, -blockquote.quote-cyan h5, -blockquote.quote-cyan h6 { - color: #17a2b8; -} - -blockquote.quote-white { - border-color: #ffffff; -} - -blockquote.quote-white h1, -blockquote.quote-white h2, -blockquote.quote-white h3, -blockquote.quote-white h4, -blockquote.quote-white h5, -blockquote.quote-white h6 { - color: #ffffff; -} - -blockquote.quote-gray { - border-color: #6c757d; -} - -blockquote.quote-gray h1, -blockquote.quote-gray h2, -blockquote.quote-gray h3, -blockquote.quote-gray h4, -blockquote.quote-gray h5, -blockquote.quote-gray h6 { - color: #6c757d; -} - -blockquote.quote-gray-dark { - border-color: #343a40; -} - -blockquote.quote-gray-dark h1, -blockquote.quote-gray-dark h2, -blockquote.quote-gray-dark h3, -blockquote.quote-gray-dark h4, -blockquote.quote-gray-dark h5, -blockquote.quote-gray-dark h6 { - color: #343a40; -} - -.tab-custom-content { - border-top: 1px solid #dee2e6; - margin-top: .5rem; - padding-top: .5rem; -} - -.nav + .tab-custom-content { - border-top: none; - border-bottom: 1px solid #dee2e6; - margin-top: 0; - margin-bottom: .5rem; - padding-bottom: .5rem; -} - -a:-moz-focusring, -button:-moz-focusring, -input.btn:-moz-focusring { - border: 0; - outline: none; -} - -@media print { - .no-print, .main-sidebar, - .main-header, - .content-header { - display: none !important; - } - .content-wrapper, - .main-footer { - transform: translate(0, 0); - margin-left: 0 !important; - min-height: 0 !important; - } - .layout-fixed .content-wrapper { - padding-top: 0 !important; - } - .invoice { - border: 0; - margin: 0; - padding: 0; - width: 100%; - } - .invoice-col { - float: left; - width: 33.3333333%; - } - .table-responsive { - overflow: auto; - } - .table-responsive > .table tr th, - .table-responsive > .table tr td { - white-space: normal !important; - } -} - -.text-bold, .text-bold.table td, .text-bold.table th { - font-weight: 700; -} - -.text-xs { - font-size: 0.75rem !important; -} - -.text-sm { - font-size: 0.875rem !important; -} - -.text-md { - font-size: 1rem !important; -} - -.text-lg { - font-size: 1.25rem !important; -} - -.text-xl { - font-size: 2rem !important; -} - -.text-navy { - color: #001f3f; -} - -.text-olive { - color: #3d9970; -} - -.text-lime { - color: #01ff70; -} - -.text-fuchsia { - color: #f012be; -} - -.text-maroon { - color: #d81b60; -} - -.text-blue { - color: #007bff; -} - -.text-indigo { - color: #6610f2; -} - -.text-purple { - color: #6f42c1; -} - -.text-pink { - color: #e83e8c; -} - -.text-red { - color: #dc3545; -} - -.text-orange { - color: #fd7e14; -} - -.text-yellow { - color: #ffc107; -} - -.text-green { - color: #28a745; -} - -.text-teal { - color: #20c997; -} - -.text-cyan { - color: #17a2b8; -} - -.text-white { - color: #ffffff; -} - -.text-gray { - color: #6c757d; -} - -.text-gray-dark { - color: #343a40; -} - -.elevation-0 { - box-shadow: none !important; -} - -.elevation-1 { - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important; -} - -.elevation-2 { - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23) !important; -} - -.elevation-3 { - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23) !important; -} - -.elevation-4 { - box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22) !important; -} - -.elevation-5 { - box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22) !important; -} - -.bg-primary { - background-color: #007bff !important; -} - -.bg-primary, -.bg-primary > a { - color: #ffffff !important; -} - -.bg-primary.btn:hover { - border-color: #0062cc; - color: #ececec; -} - -.bg-primary.btn:not(:disabled):not(.disabled):active, .bg-primary.btn:not(:disabled):not(.disabled).active, .bg-primary.btn:active, .bg-primary.btn.active { - background-color: #0062cc !important; - border-color: #005cbf; - color: #ffffff; -} - -.bg-secondary { - background-color: #6c757d !important; -} - -.bg-secondary, -.bg-secondary > a { - color: #ffffff !important; -} - -.bg-secondary.btn:hover { - border-color: #545b62; - color: #ececec; -} - -.bg-secondary.btn:not(:disabled):not(.disabled):active, .bg-secondary.btn:not(:disabled):not(.disabled).active, .bg-secondary.btn:active, .bg-secondary.btn.active { - background-color: #545b62 !important; - border-color: #4e555b; - color: #ffffff; -} - -.bg-success { - background-color: #28a745 !important; -} - -.bg-success, -.bg-success > a { - color: #ffffff !important; -} - -.bg-success.btn:hover { - border-color: #1e7e34; - color: #ececec; -} - -.bg-success.btn:not(:disabled):not(.disabled):active, .bg-success.btn:not(:disabled):not(.disabled).active, .bg-success.btn:active, .bg-success.btn.active { - background-color: #1e7e34 !important; - border-color: #1c7430; - color: #ffffff; -} - -.bg-info { - background-color: #17a2b8 !important; -} - -.bg-info, -.bg-info > a { - color: #ffffff !important; -} - -.bg-info.btn:hover { - border-color: #117a8b; - color: #ececec; -} - -.bg-info.btn:not(:disabled):not(.disabled):active, .bg-info.btn:not(:disabled):not(.disabled).active, .bg-info.btn:active, .bg-info.btn.active { - background-color: #117a8b !important; - border-color: #10707f; - color: #ffffff; -} - -.bg-warning { - background-color: #ffc107 !important; -} - -.bg-warning, -.bg-warning > a { - color: #1F2D3D !important; -} - -.bg-warning.btn:hover { - border-color: #d39e00; - color: #121a24; -} - -.bg-warning.btn:not(:disabled):not(.disabled):active, .bg-warning.btn:not(:disabled):not(.disabled).active, .bg-warning.btn:active, .bg-warning.btn.active { - background-color: #d39e00 !important; - border-color: #c69500; - color: #1F2D3D; -} - -.bg-danger { - background-color: #dc3545 !important; -} - -.bg-danger, -.bg-danger > a { - color: #ffffff !important; -} - -.bg-danger.btn:hover { - border-color: #bd2130; - color: #ececec; -} - -.bg-danger.btn:not(:disabled):not(.disabled):active, .bg-danger.btn:not(:disabled):not(.disabled).active, .bg-danger.btn:active, .bg-danger.btn.active { - background-color: #bd2130 !important; - border-color: #b21f2d; - color: #ffffff; -} - -.bg-light { - background-color: #f8f9fa !important; -} - -.bg-light, -.bg-light > a { - color: #1F2D3D !important; -} - -.bg-light.btn:hover { - border-color: #dae0e5; - color: #121a24; -} - -.bg-light.btn:not(:disabled):not(.disabled):active, .bg-light.btn:not(:disabled):not(.disabled).active, .bg-light.btn:active, .bg-light.btn.active { - background-color: #dae0e5 !important; - border-color: #d3d9df; - color: #1F2D3D; -} - -.bg-dark { - background-color: #343a40 !important; -} - -.bg-dark, -.bg-dark > a { - color: #ffffff !important; -} - -.bg-dark.btn:hover { - border-color: #1d2124; - color: #ececec; -} - -.bg-dark.btn:not(:disabled):not(.disabled):active, .bg-dark.btn:not(:disabled):not(.disabled).active, .bg-dark.btn:active, .bg-dark.btn.active { - background-color: #1d2124 !important; - border-color: #171a1d; - color: #ffffff; -} - -.bg-navy { - background-color: #001f3f !important; -} - -.bg-navy, -.bg-navy > a { - color: #ffffff !important; -} - -.bg-navy.btn:hover { - border-color: #00060c; - color: #ececec; -} - -.bg-navy.btn:not(:disabled):not(.disabled):active, .bg-navy.btn:not(:disabled):not(.disabled).active, .bg-navy.btn:active, .bg-navy.btn.active { - background-color: #00060c !important; - border-color: black; - color: #ffffff; -} - -.bg-olive { - background-color: #3d9970 !important; -} - -.bg-olive, -.bg-olive > a { - color: #ffffff !important; -} - -.bg-olive.btn:hover { - border-color: #2e7555; - color: #ececec; -} - -.bg-olive.btn:not(:disabled):not(.disabled):active, .bg-olive.btn:not(:disabled):not(.disabled).active, .bg-olive.btn:active, .bg-olive.btn.active { - background-color: #2e7555 !important; - border-color: #2b6b4f; - color: #ffffff; -} - -.bg-lime { - background-color: #01ff70 !important; -} - -.bg-lime, -.bg-lime > a { - color: #1F2D3D !important; -} - -.bg-lime.btn:hover { - border-color: #00cd5a; - color: #121a24; -} - -.bg-lime.btn:not(:disabled):not(.disabled):active, .bg-lime.btn:not(:disabled):not(.disabled).active, .bg-lime.btn:active, .bg-lime.btn.active { - background-color: #00cd5a !important; - border-color: #00c054; - color: #ffffff; -} - -.bg-fuchsia { - background-color: #f012be !important; -} - -.bg-fuchsia, -.bg-fuchsia > a { - color: #ffffff !important; -} - -.bg-fuchsia.btn:hover { - border-color: #c30c9a; - color: #ececec; -} - -.bg-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-fuchsia.btn:active, .bg-fuchsia.btn.active { - background-color: #c30c9a !important; - border-color: #b70c90; - color: #ffffff; -} - -.bg-maroon { - background-color: #d81b60 !important; -} - -.bg-maroon, -.bg-maroon > a { - color: #ffffff !important; -} - -.bg-maroon.btn:hover { - border-color: #ab154c; - color: #ececec; -} - -.bg-maroon.btn:not(:disabled):not(.disabled):active, .bg-maroon.btn:not(:disabled):not(.disabled).active, .bg-maroon.btn:active, .bg-maroon.btn.active { - background-color: #ab154c !important; - border-color: #9f1447; - color: #ffffff; -} - -.bg-blue { - background-color: #007bff !important; -} - -.bg-blue, -.bg-blue > a { - color: #ffffff !important; -} - -.bg-blue.btn:hover { - border-color: #0062cc; - color: #ececec; -} - -.bg-blue.btn:not(:disabled):not(.disabled):active, .bg-blue.btn:not(:disabled):not(.disabled).active, .bg-blue.btn:active, .bg-blue.btn.active { - background-color: #0062cc !important; - border-color: #005cbf; - color: #ffffff; -} - -.bg-indigo { - background-color: #6610f2 !important; -} - -.bg-indigo, -.bg-indigo > a { - color: #ffffff !important; -} - -.bg-indigo.btn:hover { - border-color: #510bc4; - color: #ececec; -} - -.bg-indigo.btn:not(:disabled):not(.disabled):active, .bg-indigo.btn:not(:disabled):not(.disabled).active, .bg-indigo.btn:active, .bg-indigo.btn.active { - background-color: #510bc4 !important; - border-color: #4c0ab8; - color: #ffffff; -} - -.bg-purple { - background-color: #6f42c1 !important; -} - -.bg-purple, -.bg-purple > a { - color: #ffffff !important; -} - -.bg-purple.btn:hover { - border-color: #59339d; - color: #ececec; -} - -.bg-purple.btn:not(:disabled):not(.disabled):active, .bg-purple.btn:not(:disabled):not(.disabled).active, .bg-purple.btn:active, .bg-purple.btn.active { - background-color: #59339d !important; - border-color: #533093; - color: #ffffff; -} - -.bg-pink { - background-color: #e83e8c !important; -} - -.bg-pink, -.bg-pink > a { - color: #ffffff !important; -} - -.bg-pink.btn:hover { - border-color: #d91a72; - color: #ececec; -} - -.bg-pink.btn:not(:disabled):not(.disabled):active, .bg-pink.btn:not(:disabled):not(.disabled).active, .bg-pink.btn:active, .bg-pink.btn.active { - background-color: #d91a72 !important; - border-color: #ce196c; - color: #ffffff; -} - -.bg-red { - background-color: #dc3545 !important; -} - -.bg-red, -.bg-red > a { - color: #ffffff !important; -} - -.bg-red.btn:hover { - border-color: #bd2130; - color: #ececec; -} - -.bg-red.btn:not(:disabled):not(.disabled):active, .bg-red.btn:not(:disabled):not(.disabled).active, .bg-red.btn:active, .bg-red.btn.active { - background-color: #bd2130 !important; - border-color: #b21f2d; - color: #ffffff; -} - -.bg-orange { - background-color: #fd7e14 !important; -} - -.bg-orange, -.bg-orange > a { - color: #1F2D3D !important; -} - -.bg-orange.btn:hover { - border-color: #dc6502; - color: #121a24; -} - -.bg-orange.btn:not(:disabled):not(.disabled):active, .bg-orange.btn:not(:disabled):not(.disabled).active, .bg-orange.btn:active, .bg-orange.btn.active { - background-color: #dc6502 !important; - border-color: #cf5f02; - color: #ffffff; -} - -.bg-yellow { - background-color: #ffc107 !important; -} - -.bg-yellow, -.bg-yellow > a { - color: #1F2D3D !important; -} - -.bg-yellow.btn:hover { - border-color: #d39e00; - color: #121a24; -} - -.bg-yellow.btn:not(:disabled):not(.disabled):active, .bg-yellow.btn:not(:disabled):not(.disabled).active, .bg-yellow.btn:active, .bg-yellow.btn.active { - background-color: #d39e00 !important; - border-color: #c69500; - color: #1F2D3D; -} - -.bg-green { - background-color: #28a745 !important; -} - -.bg-green, -.bg-green > a { - color: #ffffff !important; -} - -.bg-green.btn:hover { - border-color: #1e7e34; - color: #ececec; -} - -.bg-green.btn:not(:disabled):not(.disabled):active, .bg-green.btn:not(:disabled):not(.disabled).active, .bg-green.btn:active, .bg-green.btn.active { - background-color: #1e7e34 !important; - border-color: #1c7430; - color: #ffffff; -} - -.bg-teal { - background-color: #20c997 !important; -} - -.bg-teal, -.bg-teal > a { - color: #ffffff !important; -} - -.bg-teal.btn:hover { - border-color: #199d76; - color: #ececec; -} - -.bg-teal.btn:not(:disabled):not(.disabled):active, .bg-teal.btn:not(:disabled):not(.disabled).active, .bg-teal.btn:active, .bg-teal.btn.active { - background-color: #199d76 !important; - border-color: #17926e; - color: #ffffff; -} - -.bg-cyan { - background-color: #17a2b8 !important; -} - -.bg-cyan, -.bg-cyan > a { - color: #ffffff !important; -} - -.bg-cyan.btn:hover { - border-color: #117a8b; - color: #ececec; -} - -.bg-cyan.btn:not(:disabled):not(.disabled):active, .bg-cyan.btn:not(:disabled):not(.disabled).active, .bg-cyan.btn:active, .bg-cyan.btn.active { - background-color: #117a8b !important; - border-color: #10707f; - color: #ffffff; -} - -.bg-white { - background-color: #ffffff !important; -} - -.bg-white, -.bg-white > a { - color: #1F2D3D !important; -} - -.bg-white.btn:hover { - border-color: #e6e6e6; - color: #121a24; -} - -.bg-white.btn:not(:disabled):not(.disabled):active, .bg-white.btn:not(:disabled):not(.disabled).active, .bg-white.btn:active, .bg-white.btn.active { - background-color: #e6e6e6 !important; - border-color: #dfdfdf; - color: #1F2D3D; -} - -.bg-gray { - background-color: #6c757d !important; -} - -.bg-gray, -.bg-gray > a { - color: #ffffff !important; -} - -.bg-gray.btn:hover { - border-color: #545b62; - color: #ececec; -} - -.bg-gray.btn:not(:disabled):not(.disabled):active, .bg-gray.btn:not(:disabled):not(.disabled).active, .bg-gray.btn:active, .bg-gray.btn.active { - background-color: #545b62 !important; - border-color: #4e555b; - color: #ffffff; -} - -.bg-gray-dark { - background-color: #343a40 !important; -} - -.bg-gray-dark, -.bg-gray-dark > a { - color: #ffffff !important; -} - -.bg-gray-dark.btn:hover { - border-color: #1d2124; - color: #ececec; -} - -.bg-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gray-dark.btn:active, .bg-gray-dark.btn.active { - background-color: #1d2124 !important; - border-color: #171a1d; - color: #ffffff; -} - -.bg-gray { - background-color: #adb5bd; - color: #1F2D3D; -} - -.bg-gray-light { - background-color: #f2f4f5; - color: #1F2D3D !important; -} - -.bg-black { - background-color: #000; - color: #ffffff !important; -} - -.bg-white { - background-color: #ffffff; - color: #1F2D3D !important; -} - -.bg-gradient-primary { - color: #ffffff; -} - -.bg-gradient-primary { - background: #007bff linear-gradient(180deg, #268fff, #007bff) repeat-x !important; -} - -.bg-gradient-primary.btn.disabled, .bg-gradient-primary.btn:disabled, .bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-primary.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-primary.btn:hover { - border-color: #0062cc; - color: #ececec; -} - -.bg-gradient-primary.btn:hover { - background: #0069d9 linear-gradient(180deg, #267fde, #0069d9) repeat-x !important; -} - -.bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active, .bg-gradient-primary.btn:active, .bg-gradient-primary.btn.active { - border-color: #005cbf; - color: #ffffff; -} - -.bg-gradient-primary.btn:not(:disabled):not(.disabled):active, .bg-gradient-primary.btn:not(:disabled):not(.disabled).active, .bg-gradient-primary.btn:active, .bg-gradient-primary.btn.active { - background: #0062cc linear-gradient(180deg, #267ad4, #0062cc) repeat-x !important; -} - -.bg-gradient-secondary { - color: #ffffff; -} - -.bg-gradient-secondary { - background: #6c757d linear-gradient(180deg, #828a91, #6c757d) repeat-x !important; -} - -.bg-gradient-secondary.btn.disabled, .bg-gradient-secondary.btn:disabled, .bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-secondary.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-secondary.btn:hover { - border-color: #545b62; - color: #ececec; -} - -.bg-gradient-secondary.btn:hover { - background: #5a6268 linear-gradient(180deg, #73797f, #5a6268) repeat-x !important; -} - -.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active, .bg-gradient-secondary.btn:active, .bg-gradient-secondary.btn.active { - border-color: #4e555b; - color: #ffffff; -} - -.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active, .bg-gradient-secondary.btn:not(:disabled):not(.disabled).active, .bg-gradient-secondary.btn:active, .bg-gradient-secondary.btn.active { - background: #545b62 linear-gradient(180deg, #6e7479, #545b62) repeat-x !important; -} - -.bg-gradient-success { - color: #ffffff; -} - -.bg-gradient-success { - background: #28a745 linear-gradient(180deg, #48b461, #28a745) repeat-x !important; -} - -.bg-gradient-success.btn.disabled, .bg-gradient-success.btn:disabled, .bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-success.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-success.btn:hover { - border-color: #1e7e34; - color: #ececec; -} - -.bg-gradient-success.btn:hover { - background: #218838 linear-gradient(180deg, #429a56, #218838) repeat-x !important; -} - -.bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active, .bg-gradient-success.btn:active, .bg-gradient-success.btn.active { - border-color: #1c7430; - color: #ffffff; -} - -.bg-gradient-success.btn:not(:disabled):not(.disabled):active, .bg-gradient-success.btn:not(:disabled):not(.disabled).active, .bg-gradient-success.btn:active, .bg-gradient-success.btn.active { - background: #1e7e34 linear-gradient(180deg, #409152, #1e7e34) repeat-x !important; -} - -.bg-gradient-info { - color: #ffffff; -} - -.bg-gradient-info { - background: #17a2b8 linear-gradient(180deg, #3ab0c3, #17a2b8) repeat-x !important; -} - -.bg-gradient-info.btn.disabled, .bg-gradient-info.btn:disabled, .bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-info.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-info.btn:hover { - border-color: #117a8b; - color: #ececec; -} - -.bg-gradient-info.btn:hover { - background: #138496 linear-gradient(180deg, #3697a6, #138496) repeat-x !important; -} - -.bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active, .bg-gradient-info.btn:active, .bg-gradient-info.btn.active { - border-color: #10707f; - color: #ffffff; -} - -.bg-gradient-info.btn:not(:disabled):not(.disabled):active, .bg-gradient-info.btn:not(:disabled):not(.disabled).active, .bg-gradient-info.btn:active, .bg-gradient-info.btn.active { - background: #117a8b linear-gradient(180deg, #358e9c, #117a8b) repeat-x !important; -} - -.bg-gradient-warning { - color: #1F2D3D; -} - -.bg-gradient-warning { - background: #ffc107 linear-gradient(180deg, #ffca2c, #ffc107) repeat-x !important; -} - -.bg-gradient-warning.btn.disabled, .bg-gradient-warning.btn:disabled, .bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-warning.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-warning.btn:hover { - border-color: #d39e00; - color: #121a24; -} - -.bg-gradient-warning.btn:hover { - background: #e0a800 linear-gradient(180deg, #e4b526, #e0a800) repeat-x !important; -} - -.bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active, .bg-gradient-warning.btn:active, .bg-gradient-warning.btn.active { - border-color: #c69500; - color: #1F2D3D; -} - -.bg-gradient-warning.btn:not(:disabled):not(.disabled):active, .bg-gradient-warning.btn:not(:disabled):not(.disabled).active, .bg-gradient-warning.btn:active, .bg-gradient-warning.btn.active { - background: #d39e00 linear-gradient(180deg, #daad26, #d39e00) repeat-x !important; -} - -.bg-gradient-danger { - color: #ffffff; -} - -.bg-gradient-danger { - background: #dc3545 linear-gradient(180deg, #e15361, #dc3545) repeat-x !important; -} - -.bg-gradient-danger.btn.disabled, .bg-gradient-danger.btn:disabled, .bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-danger.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-danger.btn:hover { - border-color: #bd2130; - color: #ececec; -} - -.bg-gradient-danger.btn:hover { - background: #c82333 linear-gradient(180deg, #d04451, #c82333) repeat-x !important; -} - -.bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active, .bg-gradient-danger.btn:active, .bg-gradient-danger.btn.active { - border-color: #b21f2d; - color: #ffffff; -} - -.bg-gradient-danger.btn:not(:disabled):not(.disabled):active, .bg-gradient-danger.btn:not(:disabled):not(.disabled).active, .bg-gradient-danger.btn:active, .bg-gradient-danger.btn.active { - background: #bd2130 linear-gradient(180deg, #c7424f, #bd2130) repeat-x !important; -} - -.bg-gradient-light { - color: #1F2D3D; -} - -.bg-gradient-light { - background: #f8f9fa linear-gradient(180deg, #f9fafb, #f8f9fa) repeat-x !important; -} - -.bg-gradient-light.btn.disabled, .bg-gradient-light.btn:disabled, .bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-light.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-light.btn:hover { - border-color: #dae0e5; - color: #121a24; -} - -.bg-gradient-light.btn:hover { - background: #e2e6ea linear-gradient(180deg, #e6eaed, #e2e6ea) repeat-x !important; -} - -.bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active, .bg-gradient-light.btn:active, .bg-gradient-light.btn.active { - border-color: #d3d9df; - color: #1F2D3D; -} - -.bg-gradient-light.btn:not(:disabled):not(.disabled):active, .bg-gradient-light.btn:not(:disabled):not(.disabled).active, .bg-gradient-light.btn:active, .bg-gradient-light.btn.active { - background: #dae0e5 linear-gradient(180deg, #e0e4e9, #dae0e5) repeat-x !important; -} - -.bg-gradient-dark { - color: #ffffff; -} - -.bg-gradient-dark { - background: #343a40 linear-gradient(180deg, #52585d, #343a40) repeat-x !important; -} - -.bg-gradient-dark.btn.disabled, .bg-gradient-dark.btn:disabled, .bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-dark.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-dark.btn:hover { - border-color: #1d2124; - color: #ececec; -} - -.bg-gradient-dark.btn:hover { - background: #23272b linear-gradient(180deg, #44474b, #23272b) repeat-x !important; -} - -.bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-dark.btn:active, .bg-gradient-dark.btn.active { - border-color: #171a1d; - color: #ffffff; -} - -.bg-gradient-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-dark.btn:active, .bg-gradient-dark.btn.active { - background: #1d2124 linear-gradient(180deg, #3f4245, #1d2124) repeat-x !important; -} - -.bg-gradient-navy { - color: #ffffff; -} - -.bg-gradient-navy { - background: #001f3f linear-gradient(180deg, #26415c, #001f3f) repeat-x !important; -} - -.bg-gradient-navy.btn.disabled, .bg-gradient-navy.btn:disabled, .bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-navy.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-navy.btn:hover { - border-color: #00060c; - color: #ececec; -} - -.bg-gradient-navy.btn:hover { - background: #000c19 linear-gradient(180deg, #26313b, #000c19) repeat-x !important; -} - -.bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active, .bg-gradient-navy.btn:active, .bg-gradient-navy.btn.active { - border-color: black; - color: #ffffff; -} - -.bg-gradient-navy.btn:not(:disabled):not(.disabled):active, .bg-gradient-navy.btn:not(:disabled):not(.disabled).active, .bg-gradient-navy.btn:active, .bg-gradient-navy.btn.active { - background: #00060c linear-gradient(180deg, #262b30, #00060c) repeat-x !important; -} - -.bg-gradient-olive { - color: #ffffff; -} - -.bg-gradient-olive { - background: #3d9970 linear-gradient(180deg, #5aa885, #3d9970) repeat-x !important; -} - -.bg-gradient-olive.btn.disabled, .bg-gradient-olive.btn:disabled, .bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-olive.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-olive.btn:hover { - border-color: #2e7555; - color: #ececec; -} - -.bg-gradient-olive.btn:hover { - background: #327e5c linear-gradient(180deg, #519174, #327e5c) repeat-x !important; -} - -.bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active, .bg-gradient-olive.btn:active, .bg-gradient-olive.btn.active { - border-color: #2b6b4f; - color: #ffffff; -} - -.bg-gradient-olive.btn:not(:disabled):not(.disabled):active, .bg-gradient-olive.btn:not(:disabled):not(.disabled).active, .bg-gradient-olive.btn:active, .bg-gradient-olive.btn.active { - background: #2e7555 linear-gradient(180deg, #4e896f, #2e7555) repeat-x !important; -} - -.bg-gradient-lime { - color: #1F2D3D; -} - -.bg-gradient-lime { - background: #01ff70 linear-gradient(180deg, #27ff85, #01ff70) repeat-x !important; -} - -.bg-gradient-lime.btn.disabled, .bg-gradient-lime.btn:disabled, .bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-lime.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-lime.btn:hover { - border-color: #00cd5a; - color: #121a24; -} - -.bg-gradient-lime.btn:hover { - background: #00da5f linear-gradient(180deg, #26df77, #00da5f) repeat-x !important; -} - -.bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active, .bg-gradient-lime.btn:active, .bg-gradient-lime.btn.active { - border-color: #00c054; - color: #ffffff; -} - -.bg-gradient-lime.btn:not(:disabled):not(.disabled):active, .bg-gradient-lime.btn:not(:disabled):not(.disabled).active, .bg-gradient-lime.btn:active, .bg-gradient-lime.btn.active { - background: #00cd5a linear-gradient(180deg, #26d572, #00cd5a) repeat-x !important; -} - -.bg-gradient-fuchsia { - color: #ffffff; -} - -.bg-gradient-fuchsia { - background: #f012be linear-gradient(180deg, #f236c8, #f012be) repeat-x !important; -} - -.bg-gradient-fuchsia.btn.disabled, .bg-gradient-fuchsia.btn:disabled, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-fuchsia.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-fuchsia.btn:hover { - border-color: #c30c9a; - color: #ececec; -} - -.bg-gradient-fuchsia.btn:hover { - background: #cf0da3 linear-gradient(180deg, #d631b1, #cf0da3) repeat-x !important; -} - -.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-gradient-fuchsia.btn:active, .bg-gradient-fuchsia.btn.active { - border-color: #b70c90; - color: #ffffff; -} - -.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active, .bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active, .bg-gradient-fuchsia.btn:active, .bg-gradient-fuchsia.btn.active { - background: #c30c9a linear-gradient(180deg, #cc31a9, #c30c9a) repeat-x !important; -} - -.bg-gradient-maroon { - color: #ffffff; -} - -.bg-gradient-maroon { - background: #d81b60 linear-gradient(180deg, #de3d78, #d81b60) repeat-x !important; -} - -.bg-gradient-maroon.btn.disabled, .bg-gradient-maroon.btn:disabled, .bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-maroon.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-maroon.btn:hover { - border-color: #ab154c; - color: #ececec; -} - -.bg-gradient-maroon.btn:hover { - background: #b61751 linear-gradient(180deg, #c13a6b, #b61751) repeat-x !important; -} - -.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active, .bg-gradient-maroon.btn:active, .bg-gradient-maroon.btn.active { - border-color: #9f1447; - color: #ffffff; -} - -.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active, .bg-gradient-maroon.btn:not(:disabled):not(.disabled).active, .bg-gradient-maroon.btn:active, .bg-gradient-maroon.btn.active { - background: #ab154c linear-gradient(180deg, #b73867, #ab154c) repeat-x !important; -} - -.bg-gradient-blue { - color: #ffffff; -} - -.bg-gradient-blue { - background: #007bff linear-gradient(180deg, #268fff, #007bff) repeat-x !important; -} - -.bg-gradient-blue.btn.disabled, .bg-gradient-blue.btn:disabled, .bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-blue.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-blue.btn:hover { - border-color: #0062cc; - color: #ececec; -} - -.bg-gradient-blue.btn:hover { - background: #0069d9 linear-gradient(180deg, #267fde, #0069d9) repeat-x !important; -} - -.bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active, .bg-gradient-blue.btn:active, .bg-gradient-blue.btn.active { - border-color: #005cbf; - color: #ffffff; -} - -.bg-gradient-blue.btn:not(:disabled):not(.disabled):active, .bg-gradient-blue.btn:not(:disabled):not(.disabled).active, .bg-gradient-blue.btn:active, .bg-gradient-blue.btn.active { - background: #0062cc linear-gradient(180deg, #267ad4, #0062cc) repeat-x !important; -} - -.bg-gradient-indigo { - color: #ffffff; -} - -.bg-gradient-indigo { - background: #6610f2 linear-gradient(180deg, #7d34f4, #6610f2) repeat-x !important; -} - -.bg-gradient-indigo.btn.disabled, .bg-gradient-indigo.btn:disabled, .bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-indigo.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-indigo.btn:hover { - border-color: #510bc4; - color: #ececec; -} - -.bg-gradient-indigo.btn:hover { - background: #560bd0 linear-gradient(180deg, #7030d7, #560bd0) repeat-x !important; -} - -.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active, .bg-gradient-indigo.btn:active, .bg-gradient-indigo.btn.active { - border-color: #4c0ab8; - color: #ffffff; -} - -.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active, .bg-gradient-indigo.btn:not(:disabled):not(.disabled).active, .bg-gradient-indigo.btn:active, .bg-gradient-indigo.btn.active { - background: #510bc4 linear-gradient(180deg, #6b2fcd, #510bc4) repeat-x !important; -} - -.bg-gradient-purple { - color: #ffffff; -} - -.bg-gradient-purple { - background: #6f42c1 linear-gradient(180deg, #855eca, #6f42c1) repeat-x !important; -} - -.bg-gradient-purple.btn.disabled, .bg-gradient-purple.btn:disabled, .bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-purple.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-purple.btn:hover { - border-color: #59339d; - color: #ececec; -} - -.bg-gradient-purple.btn:hover { - background: #5e37a6 linear-gradient(180deg, #7655b4, #5e37a6) repeat-x !important; -} - -.bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active, .bg-gradient-purple.btn:active, .bg-gradient-purple.btn.active { - border-color: #533093; - color: #ffffff; -} - -.bg-gradient-purple.btn:not(:disabled):not(.disabled):active, .bg-gradient-purple.btn:not(:disabled):not(.disabled).active, .bg-gradient-purple.btn:active, .bg-gradient-purple.btn.active { - background: #59339d linear-gradient(180deg, #7252ab, #59339d) repeat-x !important; -} - -.bg-gradient-pink { - color: #ffffff; -} - -.bg-gradient-pink { - background: #e83e8c linear-gradient(180deg, #eb5b9d, #e83e8c) repeat-x !important; -} - -.bg-gradient-pink.btn.disabled, .bg-gradient-pink.btn:disabled, .bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-pink.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-pink.btn:hover { - border-color: #d91a72; - color: #ececec; -} - -.bg-gradient-pink.btn:hover { - background: #e41c78 linear-gradient(180deg, #e83e8c, #e41c78) repeat-x !important; -} - -.bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active, .bg-gradient-pink.btn:active, .bg-gradient-pink.btn.active { - border-color: #ce196c; - color: #ffffff; -} - -.bg-gradient-pink.btn:not(:disabled):not(.disabled):active, .bg-gradient-pink.btn:not(:disabled):not(.disabled).active, .bg-gradient-pink.btn:active, .bg-gradient-pink.btn.active { - background: #d91a72 linear-gradient(180deg, #df3c87, #d91a72) repeat-x !important; -} - -.bg-gradient-red { - color: #ffffff; -} - -.bg-gradient-red { - background: #dc3545 linear-gradient(180deg, #e15361, #dc3545) repeat-x !important; -} - -.bg-gradient-red.btn.disabled, .bg-gradient-red.btn:disabled, .bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-red.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-red.btn:hover { - border-color: #bd2130; - color: #ececec; -} - -.bg-gradient-red.btn:hover { - background: #c82333 linear-gradient(180deg, #d04451, #c82333) repeat-x !important; -} - -.bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active, .bg-gradient-red.btn:active, .bg-gradient-red.btn.active { - border-color: #b21f2d; - color: #ffffff; -} - -.bg-gradient-red.btn:not(:disabled):not(.disabled):active, .bg-gradient-red.btn:not(:disabled):not(.disabled).active, .bg-gradient-red.btn:active, .bg-gradient-red.btn.active { - background: #bd2130 linear-gradient(180deg, #c7424f, #bd2130) repeat-x !important; -} - -.bg-gradient-orange { - color: #1F2D3D; -} - -.bg-gradient-orange { - background: #fd7e14 linear-gradient(180deg, #fd9137, #fd7e14) repeat-x !important; -} - -.bg-gradient-orange.btn.disabled, .bg-gradient-orange.btn:disabled, .bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-orange.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-orange.btn:hover { - border-color: #dc6502; - color: #121a24; -} - -.bg-gradient-orange.btn:hover { - background: #e96b02 linear-gradient(180deg, #ec8128, #e96b02) repeat-x !important; -} - -.bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active, .bg-gradient-orange.btn:active, .bg-gradient-orange.btn.active { - border-color: #cf5f02; - color: #ffffff; -} - -.bg-gradient-orange.btn:not(:disabled):not(.disabled):active, .bg-gradient-orange.btn:not(:disabled):not(.disabled).active, .bg-gradient-orange.btn:active, .bg-gradient-orange.btn.active { - background: #dc6502 linear-gradient(180deg, #e17c28, #dc6502) repeat-x !important; -} - -.bg-gradient-yellow { - color: #1F2D3D; -} - -.bg-gradient-yellow { - background: #ffc107 linear-gradient(180deg, #ffca2c, #ffc107) repeat-x !important; -} - -.bg-gradient-yellow.btn.disabled, .bg-gradient-yellow.btn:disabled, .bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-yellow.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-yellow.btn:hover { - border-color: #d39e00; - color: #121a24; -} - -.bg-gradient-yellow.btn:hover { - background: #e0a800 linear-gradient(180deg, #e4b526, #e0a800) repeat-x !important; -} - -.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active, .bg-gradient-yellow.btn:active, .bg-gradient-yellow.btn.active { - border-color: #c69500; - color: #1F2D3D; -} - -.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active, .bg-gradient-yellow.btn:not(:disabled):not(.disabled).active, .bg-gradient-yellow.btn:active, .bg-gradient-yellow.btn.active { - background: #d39e00 linear-gradient(180deg, #daad26, #d39e00) repeat-x !important; -} - -.bg-gradient-green { - color: #ffffff; -} - -.bg-gradient-green { - background: #28a745 linear-gradient(180deg, #48b461, #28a745) repeat-x !important; -} - -.bg-gradient-green.btn.disabled, .bg-gradient-green.btn:disabled, .bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-green.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-green.btn:hover { - border-color: #1e7e34; - color: #ececec; -} - -.bg-gradient-green.btn:hover { - background: #218838 linear-gradient(180deg, #429a56, #218838) repeat-x !important; -} - -.bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active, .bg-gradient-green.btn:active, .bg-gradient-green.btn.active { - border-color: #1c7430; - color: #ffffff; -} - -.bg-gradient-green.btn:not(:disabled):not(.disabled):active, .bg-gradient-green.btn:not(:disabled):not(.disabled).active, .bg-gradient-green.btn:active, .bg-gradient-green.btn.active { - background: #1e7e34 linear-gradient(180deg, #409152, #1e7e34) repeat-x !important; -} - -.bg-gradient-teal { - color: #ffffff; -} - -.bg-gradient-teal { - background: #20c997 linear-gradient(180deg, #41d1a7, #20c997) repeat-x !important; -} - -.bg-gradient-teal.btn.disabled, .bg-gradient-teal.btn:disabled, .bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-teal.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-teal.btn:hover { - border-color: #199d76; - color: #ececec; -} - -.bg-gradient-teal.btn:hover { - background: #1ba87e linear-gradient(180deg, #3db592, #1ba87e) repeat-x !important; -} - -.bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active, .bg-gradient-teal.btn:active, .bg-gradient-teal.btn.active { - border-color: #17926e; - color: #ffffff; -} - -.bg-gradient-teal.btn:not(:disabled):not(.disabled):active, .bg-gradient-teal.btn:not(:disabled):not(.disabled).active, .bg-gradient-teal.btn:active, .bg-gradient-teal.btn.active { - background: #199d76 linear-gradient(180deg, #3bac8b, #199d76) repeat-x !important; -} - -.bg-gradient-cyan { - color: #ffffff; -} - -.bg-gradient-cyan { - background: #17a2b8 linear-gradient(180deg, #3ab0c3, #17a2b8) repeat-x !important; -} - -.bg-gradient-cyan.btn.disabled, .bg-gradient-cyan.btn:disabled, .bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-cyan.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-cyan.btn:hover { - border-color: #117a8b; - color: #ececec; -} - -.bg-gradient-cyan.btn:hover { - background: #138496 linear-gradient(180deg, #3697a6, #138496) repeat-x !important; -} - -.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active, .bg-gradient-cyan.btn:active, .bg-gradient-cyan.btn.active { - border-color: #10707f; - color: #ffffff; -} - -.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active, .bg-gradient-cyan.btn:not(:disabled):not(.disabled).active, .bg-gradient-cyan.btn:active, .bg-gradient-cyan.btn.active { - background: #117a8b linear-gradient(180deg, #358e9c, #117a8b) repeat-x !important; -} - -.bg-gradient-white { - color: #1F2D3D; -} - -.bg-gradient-white { - background: #ffffff linear-gradient(180deg, white, #ffffff) repeat-x !important; -} - -.bg-gradient-white.btn.disabled, .bg-gradient-white.btn:disabled, .bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-white.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-white.btn:hover { - border-color: #e6e6e6; - color: #121a24; -} - -.bg-gradient-white.btn:hover { - background: #ececec linear-gradient(180deg, #efefef, #ececec) repeat-x !important; -} - -.bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active, .bg-gradient-white.btn:active, .bg-gradient-white.btn.active { - border-color: #dfdfdf; - color: #1F2D3D; -} - -.bg-gradient-white.btn:not(:disabled):not(.disabled):active, .bg-gradient-white.btn:not(:disabled):not(.disabled).active, .bg-gradient-white.btn:active, .bg-gradient-white.btn.active { - background: #e6e6e6 linear-gradient(180deg, #e9e9e9, #e6e6e6) repeat-x !important; -} - -.bg-gradient-gray { - color: #ffffff; -} - -.bg-gradient-gray { - background: #6c757d linear-gradient(180deg, #828a91, #6c757d) repeat-x !important; -} - -.bg-gradient-gray.btn.disabled, .bg-gradient-gray.btn:disabled, .bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-gray.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-gray.btn:hover { - border-color: #545b62; - color: #ececec; -} - -.bg-gradient-gray.btn:hover { - background: #5a6268 linear-gradient(180deg, #73797f, #5a6268) repeat-x !important; -} - -.bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray.btn:active, .bg-gradient-gray.btn.active { - border-color: #4e555b; - color: #ffffff; -} - -.bg-gradient-gray.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray.btn:active, .bg-gradient-gray.btn.active { - background: #545b62 linear-gradient(180deg, #6e7479, #545b62) repeat-x !important; -} - -.bg-gradient-gray-dark { - color: #ffffff; -} - -.bg-gradient-gray-dark { - background: #343a40 linear-gradient(180deg, #52585d, #343a40) repeat-x !important; -} - -.bg-gradient-gray-dark.btn.disabled, .bg-gradient-gray-dark.btn:disabled, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active, -.show > .bg-gradient-gray-dark.btn.dropdown-toggle { - background-image: none !important; -} - -.bg-gradient-gray-dark.btn:hover { - border-color: #1d2124; - color: #ececec; -} - -.bg-gradient-gray-dark.btn:hover { - background: #23272b linear-gradient(180deg, #44474b, #23272b) repeat-x !important; -} - -.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray-dark.btn:active, .bg-gradient-gray-dark.btn.active { - border-color: #171a1d; - color: #ffffff; -} - -.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active, .bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active, .bg-gradient-gray-dark.btn:active, .bg-gradient-gray-dark.btn.active { - background: #1d2124 linear-gradient(180deg, #3f4245, #1d2124) repeat-x !important; -} - -[class^='bg-'].disabled { - opacity: .65; -} - -a.text-muted:hover { - color: #007bff !important; -} - -.link-muted { - color: #5d6974; -} - -.link-muted:hover, .link-muted:focus { - color: #464f58; -} - -.link-black { - color: #6c757d; -} - -.link-black:hover, .link-black:focus { - color: #e6e8ea; -} - -.accent-primary a { - color: #007bff; -} - -.accent-primary a:hover { - color: #0056b3; -} - -.accent-primary .page-item.active .page-link { - background-color: #007bff; - border-color: #007bff; -} - -.accent-primary .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-secondary a { - color: #6c757d; -} - -.accent-secondary a:hover { - color: #494f54; -} - -.accent-secondary .page-item.active .page-link { - background-color: #6c757d; - border-color: #6c757d; -} - -.accent-secondary .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-success a { - color: #28a745; -} - -.accent-success a:hover { - color: #19692c; -} - -.accent-success .page-item.active .page-link { - background-color: #28a745; - border-color: #28a745; -} - -.accent-success .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-info a { - color: #17a2b8; -} - -.accent-info a:hover { - color: #0f6674; -} - -.accent-info .page-item.active .page-link { - background-color: #17a2b8; - border-color: #17a2b8; -} - -.accent-info .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-warning a { - color: #ffc107; -} - -.accent-warning a:hover { - color: #ba8b00; -} - -.accent-warning .page-item.active .page-link { - background-color: #ffc107; - border-color: #ffc107; -} - -.accent-warning .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-danger a { - color: #dc3545; -} - -.accent-danger a:hover { - color: #a71d2a; -} - -.accent-danger .page-item.active .page-link { - background-color: #dc3545; - border-color: #dc3545; -} - -.accent-danger .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-light a { - color: #f8f9fa; -} - -.accent-light a:hover { - color: #cbd3da; -} - -.accent-light .page-item.active .page-link { - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.accent-light .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-dark a { - color: #343a40; -} - -.accent-dark a:hover { - color: #121416; -} - -.accent-dark .page-item.active .page-link { - background-color: #343a40; - border-color: #343a40; -} - -.accent-dark .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-navy a { - color: #001f3f; -} - -.accent-navy a:hover { - color: black; -} - -.accent-navy .page-item.active .page-link { - background-color: #001f3f; - border-color: #001f3f; -} - -.accent-navy .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-olive a { - color: #3d9970; -} - -.accent-olive a:hover { - color: #276248; -} - -.accent-olive .page-item.active .page-link { - background-color: #3d9970; - border-color: #3d9970; -} - -.accent-olive .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-lime a { - color: #01ff70; -} - -.accent-lime a:hover { - color: #00b44e; -} - -.accent-lime .page-item.active .page-link { - background-color: #01ff70; - border-color: #01ff70; -} - -.accent-lime .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-fuchsia a { - color: #f012be; -} - -.accent-fuchsia a:hover { - color: #ab0b87; -} - -.accent-fuchsia .page-item.active .page-link { - background-color: #f012be; - border-color: #f012be; -} - -.accent-fuchsia .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-maroon a { - color: #d81b60; -} - -.accent-maroon a:hover { - color: #941342; -} - -.accent-maroon .page-item.active .page-link { - background-color: #d81b60; - border-color: #d81b60; -} - -.accent-maroon .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-blue a { - color: #007bff; -} - -.accent-blue a:hover { - color: #0056b3; -} - -.accent-blue .page-item.active .page-link { - background-color: #007bff; - border-color: #007bff; -} - -.accent-blue .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-indigo a { - color: #6610f2; -} - -.accent-indigo a:hover { - color: #4709ac; -} - -.accent-indigo .page-item.active .page-link { - background-color: #6610f2; - border-color: #6610f2; -} - -.accent-indigo .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-purple a { - color: #6f42c1; -} - -.accent-purple a:hover { - color: #4e2d89; -} - -.accent-purple .page-item.active .page-link { - background-color: #6f42c1; - border-color: #6f42c1; -} - -.accent-purple .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-pink a { - color: #e83e8c; -} - -.accent-pink a:hover { - color: #c21766; -} - -.accent-pink .page-item.active .page-link { - background-color: #e83e8c; - border-color: #e83e8c; -} - -.accent-pink .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-red a { - color: #dc3545; -} - -.accent-red a:hover { - color: #a71d2a; -} - -.accent-red .page-item.active .page-link { - background-color: #dc3545; - border-color: #dc3545; -} - -.accent-red .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-orange a { - color: #fd7e14; -} - -.accent-orange a:hover { - color: #c35a02; -} - -.accent-orange .page-item.active .page-link { - background-color: #fd7e14; - border-color: #fd7e14; -} - -.accent-orange .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-yellow a { - color: #ffc107; -} - -.accent-yellow a:hover { - color: #ba8b00; -} - -.accent-yellow .page-item.active .page-link { - background-color: #ffc107; - border-color: #ffc107; -} - -.accent-yellow .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-green a { - color: #28a745; -} - -.accent-green a:hover { - color: #19692c; -} - -.accent-green .page-item.active .page-link { - background-color: #28a745; - border-color: #28a745; -} - -.accent-green .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-teal a { - color: #20c997; -} - -.accent-teal a:hover { - color: #158765; -} - -.accent-teal .page-item.active .page-link { - background-color: #20c997; - border-color: #20c997; -} - -.accent-teal .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-cyan a { - color: #17a2b8; -} - -.accent-cyan a:hover { - color: #0f6674; -} - -.accent-cyan .page-item.active .page-link { - background-color: #17a2b8; - border-color: #17a2b8; -} - -.accent-cyan .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-white a { - color: #ffffff; -} - -.accent-white a:hover { - color: #d9d9d9; -} - -.accent-white .page-item.active .page-link { - background-color: #ffffff; - border-color: #ffffff; -} - -.accent-white .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-gray a { - color: #6c757d; -} - -.accent-gray a:hover { - color: #494f54; -} - -.accent-gray .page-item.active .page-link { - background-color: #6c757d; - border-color: #6c757d; -} - -.accent-gray .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -.accent-gray-dark a { - color: #343a40; -} - -.accent-gray-dark a:hover { - color: #121416; -} - -.accent-gray-dark .page-item.active .page-link { - background-color: #343a40; - border-color: #343a40; -} - -.accent-gray-dark .page-item.disabled .page-link { - background-color: #ffffff; - border-color: #dee2e6; -} - -/*# sourceMappingURL=adminlte.core.css.map */ \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css.map b/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css.map deleted file mode 100644 index 8dae124..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/dist/css/alt/adminlte.core.css.map +++ /dev/null @@ -1,242 +0,0 @@ -{ - "version": 3, - "file": "adminlte.core.css", - "sources": [ - "../../../build/scss/AdminLTE-core.scss", - "../../../node_modules/bootstrap/scss/_functions.scss", - "../../../build/scss/_bootstrap-variables.scss", - "../../../node_modules/bootstrap/scss/bootstrap.scss", - "../../../node_modules/bootstrap/scss/_functions.scss", - "../../../node_modules/bootstrap/scss/_variables.scss", - "../../../node_modules/bootstrap/scss/_mixins.scss", - "../../../node_modules/bootstrap/scss/vendor/_rfs.scss", - "../../../node_modules/bootstrap/scss/mixins/_deprecate.scss", - "../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss", - "../../../node_modules/bootstrap/scss/mixins/_hover.scss", - "../../../node_modules/bootstrap/scss/mixins/_image.scss", - "../../../node_modules/bootstrap/scss/mixins/_badge.scss", - "../../../node_modules/bootstrap/scss/mixins/_resize.scss", - "../../../node_modules/bootstrap/scss/mixins/_screen-reader.scss", - "../../../node_modules/bootstrap/scss/mixins/_size.scss", - "../../../node_modules/bootstrap/scss/mixins/_reset-text.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-hide.scss", - "../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss", - "../../../node_modules/bootstrap/scss/mixins/_visibility.scss", - "../../../node_modules/bootstrap/scss/mixins/_alert.scss", - "../../../node_modules/bootstrap/scss/mixins/_buttons.scss", - "../../../node_modules/bootstrap/scss/mixins/_caret.scss", - "../../../node_modules/bootstrap/scss/mixins/_pagination.scss", - "../../../node_modules/bootstrap/scss/mixins/_lists.scss", - "../../../node_modules/bootstrap/scss/mixins/_list-group.scss", - "../../../node_modules/bootstrap/scss/mixins/_nav-divider.scss", - "../../../node_modules/bootstrap/scss/mixins/_forms.scss", - "../../../node_modules/bootstrap/scss/mixins/_table-row.scss", - "../../../node_modules/bootstrap/scss/mixins/_background-variant.scss", - "../../../node_modules/bootstrap/scss/mixins/_border-radius.scss", - "../../../node_modules/bootstrap/scss/mixins/_box-shadow.scss", - "../../../node_modules/bootstrap/scss/mixins/_gradients.scss", - "../../../node_modules/bootstrap/scss/mixins/_transition.scss", - "../../../node_modules/bootstrap/scss/mixins/_clearfix.scss", - "../../../node_modules/bootstrap/scss/mixins/_grid-framework.scss", - "../../../node_modules/bootstrap/scss/mixins/_grid.scss", - "../../../node_modules/bootstrap/scss/mixins/_float.scss", - "../../../node_modules/bootstrap/scss/_root.scss", - "../../../node_modules/bootstrap/scss/_reboot.scss", - "../../../node_modules/bootstrap/scss/_type.scss", - "../../../node_modules/bootstrap/scss/_images.scss", - "../../../node_modules/bootstrap/scss/_code.scss", - "../../../node_modules/bootstrap/scss/_grid.scss", - "../../../node_modules/bootstrap/scss/_tables.scss", - "../../../node_modules/bootstrap/scss/_forms.scss", - "../../../node_modules/bootstrap/scss/_buttons.scss", - "../../../node_modules/bootstrap/scss/_transitions.scss", - "../../../node_modules/bootstrap/scss/_dropdown.scss", - "../../../node_modules/bootstrap/scss/_button-group.scss", - "../../../node_modules/bootstrap/scss/_input-group.scss", - "../../../node_modules/bootstrap/scss/_custom-forms.scss", - "../../../node_modules/bootstrap/scss/_nav.scss", - "../../../node_modules/bootstrap/scss/_navbar.scss", - "../../../node_modules/bootstrap/scss/_card.scss", - "../../../node_modules/bootstrap/scss/_breadcrumb.scss", - "../../../node_modules/bootstrap/scss/_pagination.scss", - "../../../node_modules/bootstrap/scss/_badge.scss", - "../../../node_modules/bootstrap/scss/_jumbotron.scss", - "../../../node_modules/bootstrap/scss/_alert.scss", - "../../../node_modules/bootstrap/scss/_progress.scss", - "../../../node_modules/bootstrap/scss/_media.scss", - "../../../node_modules/bootstrap/scss/_list-group.scss", - "../../../node_modules/bootstrap/scss/_close.scss", - "../../../node_modules/bootstrap/scss/_toasts.scss", - "../../../node_modules/bootstrap/scss/_modal.scss", - "../../../node_modules/bootstrap/scss/_tooltip.scss", - "../../../node_modules/bootstrap/scss/_popover.scss", - "../../../node_modules/bootstrap/scss/_carousel.scss", - "../../../node_modules/bootstrap/scss/_spinners.scss", - "../../../node_modules/bootstrap/scss/_utilities.scss", - "../../../node_modules/bootstrap/scss/utilities/_align.scss", - "../../../node_modules/bootstrap/scss/utilities/_background.scss", - "../../../node_modules/bootstrap/scss/utilities/_borders.scss", - "../../../node_modules/bootstrap/scss/utilities/_clearfix.scss", - "../../../node_modules/bootstrap/scss/utilities/_display.scss", - "../../../node_modules/bootstrap/scss/utilities/_embed.scss", - "../../../node_modules/bootstrap/scss/utilities/_flex.scss", - "../../../node_modules/bootstrap/scss/utilities/_float.scss", - "../../../node_modules/bootstrap/scss/utilities/_overflow.scss", - "../../../node_modules/bootstrap/scss/utilities/_position.scss", - "../../../node_modules/bootstrap/scss/utilities/_screenreaders.scss", - "../../../node_modules/bootstrap/scss/utilities/_shadows.scss", - "../../../node_modules/bootstrap/scss/utilities/_sizing.scss", - "../../../node_modules/bootstrap/scss/utilities/_stretched-link.scss", - "../../../node_modules/bootstrap/scss/utilities/_spacing.scss", - "../../../node_modules/bootstrap/scss/utilities/_text.scss", - "../../../node_modules/bootstrap/scss/utilities/_visibility.scss", - "../../../node_modules/bootstrap/scss/_print.scss", - "../../../build/scss/_variables.scss", - "../../../build/scss/_mixins.scss", - "../../../build/scss/mixins/_cards.scss", - "../../../build/scss/mixins/_sidebar.scss", - "../../../build/scss/mixins/_navbar.scss", - "../../../build/scss/mixins/_accent.scss", - "../../../build/scss/mixins/_custom-forms.scss", - "../../../build/scss/mixins/_backgrounds.scss", - "../../../build/scss/mixins/_direct-chat.scss", - "../../../build/scss/mixins/_toasts.scss", - "../../../build/scss/mixins/_miscellaneous.scss", - "../../../build/scss/parts/_core.scss", - "../../../build/scss/_layout.scss", - "../../../build/scss/_main-header.scss", - "../../../build/scss/_brand.scss", - "../../../build/scss/_main-sidebar.scss", - "../../../build/scss/_sidebar-mini.scss", - "../../../build/scss/_control-sidebar.scss", - "../../../build/scss/_dropdown.scss", - "../../../build/scss/_navs.scss", - "../../../build/scss/parts/_miscellaneous.scss", - "../../../build/scss/_miscellaneous.scss", - "../../../build/scss/_print.scss", - "../../../build/scss/_text.scss", - "../../../build/scss/_elevation.scss", - "../../../build/scss/_colors.scss" - ], - "sourcesContent": [ - "/*!\n * AdminLTE v3.0.0\n * Only Core\n * Author: Colorlib\n * Website: AdminLTE.io \n * License: Open source - MIT \n */\n// Bootstrap\n// ---------------------------------------------------\n@import '~bootstrap/scss/functions';\n@import 'bootstrap-variables';\n@import '~bootstrap/scss/bootstrap';\n\n// Variables and Mixins\n// ---------------------------------------------------\n@import 'variables';\n@import 'mixins';\n\n@import 'parts/core';\n@import 'parts/miscellaneous';\n", - "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n", - "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n\n//\n// Color system\n//\n\n// stylelint-disable\n$white: #ffffff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge((\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n), $grays);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge((\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n), $colors);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge((\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n), $theme-colors);\n// stylelint-enable\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: #1F2D3D !default;\n$yiq-text-light: $white !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: true !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// stylelint-disable\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge((\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n), $spacers);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge((\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%\n), $sizes);\n// stylelint-enable\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: none !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 15px !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n\n// Fonts\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: \"Source Sans Pro\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: ($font-size-base * 1.25) !default;\n$font-size-sm: ($font-size-base * .875) !default;\n\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: ($spacer / 2) !default;\n$headings-font-family: inherit !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: ($font-size-base * 1.25) !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-font-size: ($font-size-base * 1.25) !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-bg: transparent !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $gray-300 !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-bg: $gray-900 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($gray-900, 10%) !default;\n$table-dark-color: $body-bg !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: none !default;\n$btn-focus-width: 0 !default;\n$btn-focus-box-shadow: none !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: none !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 0 0 rgba($black, 0) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: 0 !default;\n$input-focus-box-shadow: none !default;\n\n$input-placeholder-color: lighten($gray-600, 15%) !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;\n$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;\n\n$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;\n\n$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-control-gutter: 1.5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $gray-300 !default;\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-control-indicator-disabled-bg: $gray-200 !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n\n$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$custom-select-padding-y: .375rem !default;\n$custom-select-padding-x: .75rem !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-line-height: $input-btn-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $white !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$custom-select-border-width: $input-btn-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-box-shadow: none !default;\n\n$custom-select-font-size-sm: 75% !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-font-size-lg: 125% !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $custom-select-focus-box-shadow !default;\n\n$custom-file-padding-y: $input-btn-padding-y !default;\n$custom-file-padding-x: $input-btn-padding-x !default;\n$custom-file-line-height: $input-btn-line-height !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-btn-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $custom-select-focus-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n\n// Form validation\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n// Navbar\n\n$navbar-padding-y: ($spacer / 2) !default;\n$navbar-padding-x: ($spacer / 2) !default;\n\n$navbar-nav-link-padding-x: 1rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .75) !default;\n$navbar-dark-hover-color: rgba($white, 1) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: 0 !default; //$border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: ($grid-gutter-width / 2) !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $gray-200 !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding: 1rem !default;\n\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: ($font-size-base * .75) !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n// List group\n\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: \"/\" !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\"), \"#\", \"%23\") !default;\n\n$carousel-transition: transform .6s ease !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Printing\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n", - "/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n", - "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n", - "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\n$emphasized-link-hover-darken-percentage: 15% !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$rounded-pill: 50rem !default;\n\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n$embed-responsive-aspect-ratios: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$embed-responsive-aspect-ratios: join(\n (\n (21 9),\n (16 9),\n (4 3),\n (1 1),\n ),\n $embed-responsive-aspect-ratios\n);\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: $font-size-base * 1.25 !default;\n$font-size-sm: $font-size-base * .875 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-small-font-size: $small-font-size !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-color: $body-color !default;\n$table-bg: null !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-color: $table-color !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-color: $white !default;\n$table-dark-bg: $gray-800 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-color: $table-dark-color !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\n$table-dark-color: $white !default;\n\n$table-striped-order: odd !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-level: -9 !default;\n$table-border-level: -6 !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$label-margin-bottom: .5rem !default;\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;\n$input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;\n$input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;\n\n$input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;\n$input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;\n$input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-grid-gutter-width: 10px !default;\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$custom-control-gutter: .5rem !default;\n$custom-control-spacer-x: 1rem !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $input-bg !default;\n\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\n$custom-control-indicator-border-color: $gray-500 !default;\n$custom-control-indicator-border-width: $input-border-width !default;\n\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: none !default;\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\n\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: none !default;\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\n$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;\n$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;\n\n$custom-select-padding-y: $input-padding-y !default;\n$custom-select-padding-x: $input-padding-x !default;\n$custom-select-font-family: $input-font-family !default;\n$custom-select-font-size: $input-font-size !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-font-weight: $input-font-weight !default;\n$custom-select-line-height: $input-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $input-bg !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\n\n$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$custom-select-border-width: $input-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-width: $input-focus-width !default;\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\n\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\n$custom-select-font-size-sm: $input-font-size-sm !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\n$custom-select-font-size-lg: $input-font-size-lg !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-range-track-width: 100% !default;\n$custom-range-track-height: .5rem !default;\n$custom-range-track-cursor: pointer !default;\n$custom-range-track-bg: $gray-300 !default;\n$custom-range-track-border-radius: 1rem !default;\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-range-thumb-width: 1rem !default;\n$custom-range-thumb-height: $custom-range-thumb-width !default;\n$custom-range-thumb-bg: $component-active-bg !default;\n$custom-range-thumb-border: 0 !default;\n$custom-range-thumb-border-radius: 1rem !default;\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-range-thumb-disabled-bg: $gray-500 !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-height-inner: $input-height-inner !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-file-disabled-bg: $input-disabled-bg !default;\n\n$custom-file-padding-y: $input-padding-y !default;\n$custom-file-padding-x: $input-padding-x !default;\n$custom-file-line-height: $input-line-height !default;\n$custom-file-font-family: $input-font-family !default;\n$custom-file-font-weight: $input-font-weight !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\"), \"#\", \"%23\") !default;\n\n$form-validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-validation-states: map-merge(\n (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n ),\n ),\n $form-validation-states\n);\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-divider-color: $gray-200 !default;\n$nav-divider-margin-y: $spacer / 2 !default;\n\n\n// Navbar\n\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-color: null !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: $grid-gutter-width / 2 !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Toasts\n\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .25rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: .25rem !default;\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-transition: $btn-transition !default;\n$badge-focus-width: $input-btn-focus-width !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: 1rem !default;\n$modal-header-padding-x: 1rem !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-xl: 1140px !default;\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n\n// List group\n\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n\n$breadcrumb-border-radius: $border-radius !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n$carousel-control-next-icon-bg: str-replace(url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\"), \"#\", \"%23\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n\n// Spinners\n\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Utilities\n\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\n$overflows: auto, hidden !default;\n$positions: static, relative, absolute, fixed, sticky !default;\n\n\n// Printing\n\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n", - "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// // Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// // Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// // Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n", - "// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n", - "// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n", - "// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n", - "// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n", - "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n", - "// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n", - "// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n", - "// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n", - "// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n}\n", - "// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n", - "// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n", - "// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n", - "@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n", - "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows and $btn-active-box-shadow != none {\n box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n } @else {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n", - "@mixin caret-down {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down;\n } @else if $direction == up {\n @include caret-up;\n } @else if $direction == right {\n @include caret-right;\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left;\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n", - "// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n", - "// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n", - "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n", - "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n}\n", - "// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n }\n}\n\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n .form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: $icon;\n background-repeat: no-repeat;\n background-position: center right $input-height-inner-quarter;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n .was-validated &:#{$state},\n &.is-#{$state} {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n .was-validated &:#{$state},\n &.is-#{$state} {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, $icon $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n\n .form-control-file {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .form-check-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n .was-validated &:#{$state},\n &.is-#{$state} {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n", - "// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n", - "// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus {\n background-color: darken($color, 10%) !important;\n }\n }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n}\n", - "// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n", - "@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n", - "// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n", - "// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if $enable-transitions {\n @if length($transition) == 0 {\n transition: $transition-base;\n } @else {\n transition: $transition;\n }\n }\n\n @if $enable-prefers-reduced-motion-media-query {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n", - "@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n", - "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n", - "/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n", - "// stylelint-disable declaration-no-important\n\n@mixin float-left {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n", - ":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n", - "// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n", - "// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n", - "// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n", - "// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n", - "// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n", - "//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n", - "// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `
') - .insertBefore(this.element); - - // Cache the inner elements - this.elements = { - originalSelect: this.element, - box1: $('.box1', this.container), - box2: $('.box2', this.container), - filterInput1: $('.box1 .filter', this.container), - filterInput2: $('.box2 .filter', this.container), - filterClear1: $('.box1 .clear1', this.container), - filterClear2: $('.box2 .clear2', this.container), - label1: $('.box1 > label', this.container), - label2: $('.box2 > label', this.container), - info1: $('.box1 .info', this.container), - info2: $('.box2 .info', this.container), - select1: $('.box1 select', this.container), - select2: $('.box2 select', this.container), - moveButton: $('.box1 .move', this.container), - removeButton: $('.box2 .remove', this.container), - moveAllButton: $('.box1 .moveall', this.container), - removeAllButton: $('.box2 .removeall', this.container), - form: $($('.box1 .filter', this.container)[0].form) - }; - - // Set select IDs - this.originalSelectName = this.element.attr('name') || ''; - var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName, - select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName; - this.elements.select1.attr('id', select1Id); - this.elements.select2.attr('id', select2Id); - this.elements.label1.attr('for', select1Id); - this.elements.label2.attr('for', select2Id); - - // Apply all settings - this.selectedElements = 0; - this.sortIndex = 0; - this.elementCount = 0; - this.setFilterTextClear(this.settings.filterTextClear); - this.setFilterPlaceHolder(this.settings.filterPlaceHolder); - this.setMoveSelectedLabel(this.settings.moveSelectedLabel); - this.setMoveAllLabel(this.settings.moveAllLabel); - this.setRemoveSelectedLabel(this.settings.removeSelectedLabel); - this.setRemoveAllLabel(this.settings.removeAllLabel); - this.setMoveOnSelect(this.settings.moveOnSelect); - this.setMoveOnDoubleClick(this.settings.moveOnDoubleClick); - this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove); - this.setSelectedListLabel(this.settings.selectedListLabel); - this.setNonSelectedListLabel(this.settings.nonSelectedListLabel); - this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix); - this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight); - - updateSelectionStates(this); - - this.setShowFilterInputs(this.settings.showFilterInputs); - this.setNonSelectedFilter(this.settings.nonSelectedFilter); - this.setSelectedFilter(this.settings.selectedFilter); - this.setInfoText(this.settings.infoText); - this.setInfoTextFiltered(this.settings.infoTextFiltered); - this.setInfoTextEmpty(this.settings.infoTextEmpty); - this.setFilterOnValues(this.settings.filterOnValues); - this.setSortByInputOrder(this.settings.sortByInputOrder); - this.setEventMoveOverride(this.settings.eventMoveOverride); - this.setEventMoveAllOverride(this.settings.eventMoveAllOverride); - this.setEventRemoveOverride(this.settings.eventRemoveOverride); - this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride); - this.setBtnClass(this.settings.btnClass); - this.setBtnMoveText(this.settings.btnMoveText); - this.setBtnRemoveText(this.settings.btnRemoveText); - this.setBtnMoveAllText(this.settings.btnMoveAllText); - this.setBtnRemoveAllText(this.settings.btnRemoveAllText); - - // Hide the original select - this.element.hide(); - - bindEvents(this); - refreshSelects(this); - - return this.element; - }, - setFilterTextClear: function(value, refresh) { - this.settings.filterTextClear = value; - this.elements.filterClear1.html(value); - this.elements.filterClear2.html(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setFilterPlaceHolder: function(value, refresh) { - this.settings.filterPlaceHolder = value; - this.elements.filterInput1.attr('placeholder', value); - this.elements.filterInput2.attr('placeholder', value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setMoveSelectedLabel: function(value, refresh) { - this.settings.moveSelectedLabel = value; - this.elements.moveButton.attr('title', value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setMoveAllLabel: function(value, refresh) { - this.settings.moveAllLabel = value; - this.elements.moveAllButton.attr('title', value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setRemoveSelectedLabel: function(value, refresh) { - this.settings.removeSelectedLabel = value; - this.elements.removeButton.attr('title', value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setRemoveAllLabel: function(value, refresh) { - this.settings.removeAllLabel = value; - this.elements.removeAllButton.attr('title', value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setMoveOnSelect: function(value, refresh) { - if (isBuggyAndroid) { - value = true; - } - this.settings.moveOnSelect = value; - if (this.settings.moveOnSelect) { - this.container.addClass('moveonselect'); - var self = this; - this.elements.select1.on('change', function() { - move(self); - }); - this.elements.select2.on('change', function() { - remove(self); - }); - this.elements.moveButton.detach(); - this.elements.removeButton.detach(); - } else { - this.container.removeClass('moveonselect'); - this.elements.select1.off('change'); - this.elements.select2.off('change'); - this.elements.moveButton.insertAfter(this.elements.moveAllButton); - this.elements.removeButton.insertBefore(this.elements.removeAllButton); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setMoveOnDoubleClick: function(value, refresh) { - if (isBuggyAndroid) { - value = false; - } - this.settings.moveOnDoubleClick = value; - if (this.settings.moveOnDoubleClick) { - this.container.addClass('moveondoubleclick'); - var self = this; - this.elements.select1.on('dblclick', function() { - move(self); - }); - this.elements.select2.on('dblclick', function() { - remove(self); - }); - } else { - this.container.removeClass('moveondoubleclick'); - this.elements.select1.off('dblclick'); - this.elements.select2.off('dblclick'); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setPreserveSelectionOnMove: function(value, refresh) { - // We are forcing to move on select and disabling preserveSelectionOnMove on Android - if (isBuggyAndroid) { - value = false; - } - this.settings.preserveSelectionOnMove = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setSelectedListLabel: function(value, refresh) { - this.settings.selectedListLabel = value; - if (value) { - this.elements.label2.show().html(value); - } else { - this.elements.label2.hide().html(value); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setNonSelectedListLabel: function(value, refresh) { - this.settings.nonSelectedListLabel = value; - if (value) { - this.elements.label1.show().html(value); - } else { - this.elements.label1.hide().html(value); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setHelperSelectNamePostfix: function(value, refresh) { - this.settings.helperSelectNamePostfix = value; - if (value) { - this.elements.select1.attr('name', this.originalSelectName + value + '1'); - this.elements.select2.attr('name', this.originalSelectName + value + '2'); - } else { - this.elements.select1.removeAttr('name'); - this.elements.select2.removeAttr('name'); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setSelectOrMinimalHeight: function(value, refresh) { - this.settings.selectorMinimalHeight = value; - var height = this.element.height(); - if (this.element.height() < value) { - height = value; - } - this.elements.select1.height(height); - this.elements.select2.height(height); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setShowFilterInputs: function(value, refresh) { - if (!value) { - this.setNonSelectedFilter(''); - this.setSelectedFilter(''); - refreshSelects(this); - this.elements.filterInput1.hide(); - this.elements.filterInput2.hide(); - } else { - this.elements.filterInput1.show(); - this.elements.filterInput2.show(); - } - this.settings.showFilterInputs = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setNonSelectedFilter: function(value, refresh) { - if (this.settings.showFilterInputs) { - this.settings.nonSelectedFilter = value; - this.elements.filterInput1.val(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - } - }, - setSelectedFilter: function(value, refresh) { - if (this.settings.showFilterInputs) { - this.settings.selectedFilter = value; - this.elements.filterInput2.val(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - } - }, - setInfoText: function(value, refresh) { - this.settings.infoText = value; - if (value) { - this.elements.info1.show(); - this.elements.info2.show(); - } else { - this.elements.info1.hide(); - this.elements.info2.hide(); - } - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setInfoTextFiltered: function(value, refresh) { - this.settings.infoTextFiltered = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setInfoTextEmpty: function(value, refresh) { - this.settings.infoTextEmpty = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setFilterOnValues: function(value, refresh) { - this.settings.filterOnValues = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setSortByInputOrder: function(value, refresh){ - this.settings.sortByInputOrder = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setEventMoveOverride: function(value, refresh) { - this.settings.eventMoveOverride = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setEventMoveAllOverride: function(value, refresh) { - this.settings.eventMoveAllOverride = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setEventRemoveOverride: function(value, refresh) { - this.settings.eventRemoveOverride = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setEventRemoveAllOverride: function(value, refresh) { - this.settings.eventRemoveAllOverride = value; - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setBtnClass: function(value, refresh) { - this.settings.btnClass = value; - this.elements.moveButton.attr('class', 'btn move').addClass(value); - this.elements.removeButton.attr('class', 'btn remove').addClass(value); - this.elements.moveAllButton.attr('class', 'btn moveall').addClass(value); - this.elements.removeAllButton.attr('class', 'btn removeall').addClass(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setBtnMoveText: function(value, refresh) { - this.settings.btnMoveText = value; - this.elements.moveButton.html(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setBtnRemoveText: function(value, refresh) { - this.settings.btnMoveText = value; - this.elements.removeButton.html(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setBtnMoveAllText: function(value, refresh) { - this.settings.btnMoveText = value; - this.elements.moveAllButton.html(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - setBtnRemoveAllText: function(value, refresh) { - this.settings.btnMoveText = value; - this.elements.removeAllButton.html(value); - if (refresh) { - refreshSelects(this); - } - return this.element; - }, - getContainer: function() { - return this.container; - }, - refresh: function(mustClearSelections) { - updateSelectionStates(this); - - if (!mustClearSelections) { - saveSelections(this, 1); - saveSelections(this, 2); - } else { - clearSelections(this); - } - - refreshSelects(this); - }, - destroy: function() { - this.container.remove(); - this.element.show(); - $.data(this, 'plugin_' + pluginName, null); - return this.element; - } - }; - - // A really lightweight plugin wrapper around the constructor, - // preventing against multiple instantiations - $.fn[ pluginName ] = function (options) { - var args = arguments; - - // Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin. - if (options === undefined || typeof options === 'object') { - return this.each(function () { - // If this is not a select - if (!$(this).is('select')) { - $(this).find('select').each(function(index, item) { - // For each nested select, instantiate the Dual List Box - $(item).bootstrapDualListbox(options); - }); - } else if (!$.data(this, 'plugin_' + pluginName)) { - // Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet - - // if it has no instance, create a new one, pass options to our plugin constructor, - // and store the plugin instance in the elements jQuery data object. - $.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options)); - } - }); - // If the first parameter is a string and it doesn't start with an underscore or "contains" the `init`-function, - // treat this as a call to a public method. - } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { - - // Cache the method call to make it possible to return a value - var returns; - - this.each(function () { - var instance = $.data(this, 'plugin_' + pluginName); - // Tests that there's already a plugin-instance and checks that the requested public method exists - if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') { - // Call the method of our plugin instance, and pass it the supplied arguments. - returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1)); - } - }); - - // If the earlier cached method gives a value back return the value, - // otherwise return this to preserve chainability. - return returns !== undefined ? returns : this; - } - - }; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/bootstrap4-duallistbox/jquery.bootstrap-duallistbox.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/bootstrap4-duallistbox/jquery.bootstrap-duallistbox.min.js deleted file mode 100644 index 28ffbe2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/bootstrap4-duallistbox/jquery.bootstrap-duallistbox.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Bootstrap Duallistbox - v4.0.1 - * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. - * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ - * - * Made by István Ujj-Mészáros - * Under Apache License v2.0 License - */ - -!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(a){var i="bootstrapDualListbox",n={filterTextClear:"show all",filterPlaceHolder:"Filter",moveSelectedLabel:"Move selected",moveAllLabel:"Move all",removeSelectedLabel:"Remove selected",removeAllLabel:"Remove all",moveOnSelect:!0,moveOnDoubleClick:!0,preserveSelectionOnMove:!1,selectedListLabel:!1,nonSelectedListLabel:!1,helperSelectNamePostfix:"_helper",selectorMinimalHeight:100,showFilterInputs:!0,nonSelectedFilter:"",selectedFilter:"",infoText:"Showing all {0}",infoTextFiltered:'Filtered {0} from {1}',infoTextEmpty:"Empty list",filterOnValues:!1,sortByInputOrder:!1,eventMoveOverride:!1,eventMoveAllOverride:!1,eventRemoveOverride:!1,eventRemoveAllOverride:!1,btnClass:"btn-outline-secondary",btnMoveText:">",btnRemoveText:"<",btnMoveAllText:">>",btnRemoveAllText:"<<"},s=/android/i.test(navigator.userAgent.toLowerCase());function l(e,t){this.element=a(e),this.settings=a.extend({},n,t),this._defaults=n,this._name=i,this.init()}function t(e){e.element.trigger("change")}function o(s){s.element.find("option").each(function(e,t){var n=a(t);void 0===n.data("original-index")&&n.data("original-index",s.elementCount++),void 0===n.data("_selected")&&n.data("_selected",!1)})}function r(s,i,l){s.element.find("option").each(function(e,t){var n=a(t);n.data("original-index")===i&&(n.prop("selected",l),l?(n.attr("data-sortindex",s.sortIndex),s.sortIndex++):n.removeAttr("data-sortindex"))})}function c(e,n){return console.log(e,n),e.replace(/{(\d+)}/g,function(e,t){return void 0!==n[t]?n[t]:e})}function h(e){if(e.settings.infoText){var t=e.elements.select1.find("option").length,n=e.elements.select2.find("option").length,s=e.element.find("option").length-e.selectedElements,i=e.selectedElements,l="";l=0===s?e.settings.infoTextEmpty:c(t===s?e.settings.infoText:e.settings.infoTextFiltered,[t,s]),e.elements.info1.html(l),e.elements.box1.toggleClass("filtered",!(t===s||0===s)),l=0===i?e.settings.infoTextEmpty:c(n===i?e.settings.infoText:e.settings.infoTextFiltered,[n,i]),e.elements.info2.html(l),e.elements.box2.toggleClass("filtered",!(n===i||0===i))}}function m(s){s.selectedElements=0,s.elements.select1.empty(),s.elements.select2.empty(),s.element.find("option").each(function(e,t){var n=a(t);n.prop("selected")?(s.selectedElements++,s.elements.select2.append(n.clone(!0).prop("selected",n.data("_selected")))):s.elements.select1.append(n.clone(!0).prop("selected",n.data("_selected")))}),s.settings.showFilterInputs&&(e(s,1),e(s,2)),h(s)}function e(i,l){if(i.settings.showFilterInputs){d(i,l),i.elements["select"+l].empty().scrollTop(0);var o,r=i.element.find("option"),e=i.element;e=1===l?r.not(":selected"):e.find("option:selected");try{o=new RegExp(a.trim(i.elements["filterInput"+l].val()),"gi")}catch(e){o=new RegExp("/a^/","gi")}e.each(function(e,t){var n=a(t),s=!0;(t.text.match(o)||i.settings.filterOnValues&&n.attr("value").match(o))&&(s=!1,i.elements["select"+l].append(n.clone(!0).prop("selected",n.data("_selected")))),r.eq(n.data("original-index")).data("filtered"+l,s)}),h(i)}}function d(e,t){var s=e.element.find("option");e.elements["select"+t].find("option").each(function(e,t){var n=a(t);s.eq(n.data("original-index")).data("_selected",n.prop("selected"))})}function u(e){var t=e.children("option");t.sort(function(e,t){var n=parseInt(e.getAttribute("data-sortindex")),s=parseInt(t.getAttribute("data-sortindex"));return sa(t).data("original-index")?1:-1}).appendTo(e)}function f(s){"all"!==s.settings.preserveSelectionOnMove||s.settings.moveOnSelect?"moved"!==s.settings.preserveSelectionOnMove||s.settings.moveOnSelect||d(s,1):(d(s,1),d(s,2)),s.elements.select1.find("option:selected").each(function(e,t){var n=a(t);n.data("filtered1")||r(s,n.data("original-index"),!0)}),m(s),t(s),s.settings.sortByInputOrder?u(s.elements.select2):v(s.elements.select2)}function p(s){"all"!==s.settings.preserveSelectionOnMove||s.settings.moveOnSelect?"moved"!==s.settings.preserveSelectionOnMove||s.settings.moveOnSelect||d(s,2):(d(s,1),d(s,2)),s.elements.select2.find("option:selected").each(function(e,t){var n=a(t);n.data("filtered2")||r(s,n.data("original-index"),!1)}),m(s),t(s),v(s.elements.select1),s.settings.sortByInputOrder&&u(s.elements.select2)}function g(n){n.elements.form.submit(function(e){n.elements.filterInput1.is(":focus")?(e.preventDefault(),n.elements.filterInput1.focusout()):n.elements.filterInput2.is(":focus")&&(e.preventDefault(),n.elements.filterInput2.focusout())}),n.element.on("bootstrapDualListbox.refresh",function(e,t){n.refresh(t)}),n.elements.filterClear1.on("click",function(){n.setNonSelectedFilter("",!0)}),n.elements.filterClear2.on("click",function(){n.setSelectedFilter("",!0)}),!1===n.settings.eventMoveOverride&&n.elements.moveButton.on("click",function(){f(n)}),!1===n.settings.eventMoveAllOverride&&n.elements.moveAllButton.on("click",function(){var s;"all"!==(s=n).settings.preserveSelectionOnMove||s.settings.moveOnSelect?"moved"!==s.settings.preserveSelectionOnMove||s.settings.moveOnSelect||d(s,1):(d(s,1),d(s,2)),s.element.find("option").each(function(e,t){var n=a(t);n.data("filtered1")||(n.prop("selected",!0),n.attr("data-sortindex",s.sortIndex),s.sortIndex++)}),m(s),t(s)}),!1===n.settings.eventRemoveOverride&&n.elements.removeButton.on("click",function(){p(n)}),!1===n.settings.eventRemoveAllOverride&&n.elements.removeAllButton.on("click",function(){var e;"all"!==(e=n).settings.preserveSelectionOnMove||e.settings.moveOnSelect?"moved"!==e.settings.preserveSelectionOnMove||e.settings.moveOnSelect||d(e,2):(d(e,1),d(e,2)),e.element.find("option").each(function(e,t){var n=a(t);n.data("filtered2")||(n.prop("selected",!1),n.removeAttr("data-sortindex"))}),m(e),t(e)}),n.elements.filterInput1.on("change keyup",function(){e(n,1)}),n.elements.filterInput2.on("change keyup",function(){e(n,2)})}l.prototype={init:function(){this.container=a('
').insertBefore(this.element),this.elements={originalSelect:this.element,box1:a(".box1",this.container),box2:a(".box2",this.container),filterInput1:a(".box1 .filter",this.container),filterInput2:a(".box2 .filter",this.container),filterClear1:a(".box1 .clear1",this.container),filterClear2:a(".box2 .clear2",this.container),label1:a(".box1 > label",this.container),label2:a(".box2 > label",this.container),info1:a(".box1 .info",this.container),info2:a(".box2 .info",this.container),select1:a(".box1 select",this.container),select2:a(".box2 select",this.container),moveButton:a(".box1 .move",this.container),removeButton:a(".box2 .remove",this.container),moveAllButton:a(".box1 .moveall",this.container),removeAllButton:a(".box2 .removeall",this.container),form:a(a(".box1 .filter",this.container)[0].form)},this.originalSelectName=this.element.attr("name")||"";var e="bootstrap-duallistbox-nonselected-list_"+this.originalSelectName,t="bootstrap-duallistbox-selected-list_"+this.originalSelectName;return this.elements.select1.attr("id",e),this.elements.select2.attr("id",t),this.elements.label1.attr("for",e),this.elements.label2.attr("for",t),this.selectedElements=0,this.sortIndex=0,this.elementCount=0,this.setFilterTextClear(this.settings.filterTextClear),this.setFilterPlaceHolder(this.settings.filterPlaceHolder),this.setMoveSelectedLabel(this.settings.moveSelectedLabel),this.setMoveAllLabel(this.settings.moveAllLabel),this.setRemoveSelectedLabel(this.settings.removeSelectedLabel),this.setRemoveAllLabel(this.settings.removeAllLabel),this.setMoveOnSelect(this.settings.moveOnSelect),this.setMoveOnDoubleClick(this.settings.moveOnDoubleClick),this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove),this.setSelectedListLabel(this.settings.selectedListLabel),this.setNonSelectedListLabel(this.settings.nonSelectedListLabel),this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix),this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight),o(this),this.setShowFilterInputs(this.settings.showFilterInputs),this.setNonSelectedFilter(this.settings.nonSelectedFilter),this.setSelectedFilter(this.settings.selectedFilter),this.setInfoText(this.settings.infoText),this.setInfoTextFiltered(this.settings.infoTextFiltered),this.setInfoTextEmpty(this.settings.infoTextEmpty),this.setFilterOnValues(this.settings.filterOnValues),this.setSortByInputOrder(this.settings.sortByInputOrder),this.setEventMoveOverride(this.settings.eventMoveOverride),this.setEventMoveAllOverride(this.settings.eventMoveAllOverride),this.setEventRemoveOverride(this.settings.eventRemoveOverride),this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride),this.setBtnClass(this.settings.btnClass),this.setBtnMoveText(this.settings.btnMoveText),this.setBtnRemoveText(this.settings.btnRemoveText),this.setBtnMoveAllText(this.settings.btnMoveAllText),this.setBtnRemoveAllText(this.settings.btnRemoveAllText),this.element.hide(),g(this),m(this),this.element},setFilterTextClear:function(e,t){return this.settings.filterTextClear=e,this.elements.filterClear1.html(e),this.elements.filterClear2.html(e),t&&m(this),this.element},setFilterPlaceHolder:function(e,t){return this.settings.filterPlaceHolder=e,this.elements.filterInput1.attr("placeholder",e),this.elements.filterInput2.attr("placeholder",e),t&&m(this),this.element},setMoveSelectedLabel:function(e,t){return this.settings.moveSelectedLabel=e,this.elements.moveButton.attr("title",e),t&&m(this),this.element},setMoveAllLabel:function(e,t){return this.settings.moveAllLabel=e,this.elements.moveAllButton.attr("title",e),t&&m(this),this.element},setRemoveSelectedLabel:function(e,t){return this.settings.removeSelectedLabel=e,this.elements.removeButton.attr("title",e),t&&m(this),this.element},setRemoveAllLabel:function(e,t){return this.settings.removeAllLabel=e,this.elements.removeAllButton.attr("title",e),t&&m(this),this.element},setMoveOnSelect:function(e,t){if(s&&(e=!0),this.settings.moveOnSelect=e,this.settings.moveOnSelect){this.container.addClass("moveonselect");var n=this;this.elements.select1.on("change",function(){f(n)}),this.elements.select2.on("change",function(){p(n)}),this.elements.moveButton.detach(),this.elements.removeButton.detach()}else this.container.removeClass("moveonselect"),this.elements.select1.off("change"),this.elements.select2.off("change"),this.elements.moveButton.insertAfter(this.elements.moveAllButton),this.elements.removeButton.insertBefore(this.elements.removeAllButton);return t&&m(this),this.element},setMoveOnDoubleClick:function(e,t){if(s&&(e=!1),this.settings.moveOnDoubleClick=e,this.settings.moveOnDoubleClick){this.container.addClass("moveondoubleclick");var n=this;this.elements.select1.on("dblclick",function(){f(n)}),this.elements.select2.on("dblclick",function(){p(n)})}else this.container.removeClass("moveondoubleclick"),this.elements.select1.off("dblclick"),this.elements.select2.off("dblclick");return t&&m(this),this.element},setPreserveSelectionOnMove:function(e,t){return s&&(e=!1),this.settings.preserveSelectionOnMove=e,t&&m(this),this.element},setSelectedListLabel:function(e,t){return(this.settings.selectedListLabel=e)?this.elements.label2.show().html(e):this.elements.label2.hide().html(e),t&&m(this),this.element},setNonSelectedListLabel:function(e,t){return(this.settings.nonSelectedListLabel=e)?this.elements.label1.show().html(e):this.elements.label1.hide().html(e),t&&m(this),this.element},setHelperSelectNamePostfix:function(e,t){return(this.settings.helperSelectNamePostfix=e)?(this.elements.select1.attr("name",this.originalSelectName+e+"1"),this.elements.select2.attr("name",this.originalSelectName+e+"2")):(this.elements.select1.removeAttr("name"),this.elements.select2.removeAttr("name")),t&&m(this),this.element},setSelectOrMinimalHeight:function(e,t){this.settings.selectorMinimalHeight=e;var n=this.element.height();return this.element.height() - * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE) - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.bsCustomFileInput = factory()); -}(this, function () { 'use strict'; - - var Selector = { - CUSTOMFILE: '.custom-file input[type="file"]', - CUSTOMFILELABEL: '.custom-file-label', - FORM: 'form', - INPUT: 'input' - }; - - var textNodeType = 3; - - var getDefaultText = function getDefaultText(input) { - var defaultText = ''; - var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL); - - if (label) { - defaultText = label.innerHTML; - } - - return defaultText; - }; - - var findFirstChildNode = function findFirstChildNode(element) { - if (element.childNodes.length > 0) { - var childNodes = [].slice.call(element.childNodes); - - for (var i = 0; i < childNodes.length; i++) { - var node = childNodes[i]; - - if (node.nodeType !== textNodeType) { - return node; - } - } - } - - return element; - }; - - var restoreDefaultText = function restoreDefaultText(input) { - var defaultText = input.bsCustomFileInput.defaultText; - var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL); - - if (label) { - var element = findFirstChildNode(label); - element.innerHTML = defaultText; - } - }; - - var fileApi = !!window.File; - var FAKE_PATH = 'fakepath'; - var FAKE_PATH_SEPARATOR = '\\'; - - var getSelectedFiles = function getSelectedFiles(input) { - if (input.hasAttribute('multiple') && fileApi) { - return [].slice.call(input.files).map(function (file) { - return file.name; - }).join(', '); - } - - if (input.value.indexOf(FAKE_PATH) !== -1) { - var splittedValue = input.value.split(FAKE_PATH_SEPARATOR); - return splittedValue[splittedValue.length - 1]; - } - - return input.value; - }; - - function handleInputChange() { - var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL); - - if (label) { - var element = findFirstChildNode(label); - var inputValue = getSelectedFiles(this); - - if (inputValue.length) { - element.innerHTML = inputValue; - } else { - restoreDefaultText(this); - } - } - } - - function handleFormReset() { - var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) { - return !!input.bsCustomFileInput; - }); - - for (var i = 0, len = customFileList.length; i < len; i++) { - restoreDefaultText(customFileList[i]); - } - } - - var customProperty = 'bsCustomFileInput'; - var Event = { - FORMRESET: 'reset', - INPUTCHANGE: 'change' - }; - var bsCustomFileInput = { - init: function init(inputSelector, formSelector) { - if (inputSelector === void 0) { - inputSelector = Selector.CUSTOMFILE; - } - - if (formSelector === void 0) { - formSelector = Selector.FORM; - } - - var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector)); - var formList = [].slice.call(document.querySelectorAll(formSelector)); - - for (var i = 0, len = customFileInputList.length; i < len; i++) { - var input = customFileInputList[i]; - Object.defineProperty(input, customProperty, { - value: { - defaultText: getDefaultText(input) - }, - writable: true - }); - handleInputChange.call(input); - input.addEventListener(Event.INPUTCHANGE, handleInputChange); - } - - for (var _i = 0, _len = formList.length; _i < _len; _i++) { - formList[_i].addEventListener(Event.FORMRESET, handleFormReset); - - Object.defineProperty(formList[_i], customProperty, { - value: true, - writable: true - }); - } - }, - destroy: function destroy() { - var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) { - return !!form.bsCustomFileInput; - }); - var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) { - return !!input.bsCustomFileInput; - }); - - for (var i = 0, len = customFileInputList.length; i < len; i++) { - var input = customFileInputList[i]; - restoreDefaultText(input); - input[customProperty] = undefined; - input.removeEventListener(Event.INPUTCHANGE, handleInputChange); - } - - for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) { - formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset); - - formList[_i2][customProperty] = undefined; - } - } - }; - - return bsCustomFileInput; - -})); -//# sourceMappingURL=bs-custom-file-input.js.map diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.js.map b/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.js.map deleted file mode 100644 index 5b7f454..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bs-custom-file-input.js","sources":["../src/selector.js","../src/util.js","../src/eventHandlers.js","../src/index.js"],"sourcesContent":["const Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input',\n}\n\nexport default Selector\n","import Selector from './selector'\n\nconst textNodeType = 3\nconst getDefaultText = (input) => {\n let defaultText = ''\n\n const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n defaultText = label.innerHTML\n }\n\n return defaultText\n}\n\nconst findFirstChildNode = (element) => {\n if (element.childNodes.length > 0) {\n const childNodes = [].slice.call(element.childNodes)\n\n for (let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i]\n if (node.nodeType !== textNodeType) {\n return node\n }\n }\n }\n\n return element\n}\n\nconst restoreDefaultText = (input) => {\n const defaultText = input.bsCustomFileInput.defaultText\n const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n const element = findFirstChildNode(label)\n element.innerHTML = defaultText\n }\n}\n\nexport {\n getDefaultText,\n findFirstChildNode,\n restoreDefaultText,\n}\n","import { findFirstChildNode, restoreDefaultText } from './util'\nimport Selector from './selector'\n\nconst fileApi = !!window.File\nconst FAKE_PATH = 'fakepath'\nconst FAKE_PATH_SEPARATOR = '\\\\'\n\nconst getSelectedFiles = (input) => {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files)\n .map((file) => file.name)\n .join(', ')\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n const splittedValue = input.value.split(FAKE_PATH_SEPARATOR)\n\n return splittedValue[splittedValue.length - 1]\n }\n\n return input.value\n}\n\nfunction handleInputChange() {\n const label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n const element = findFirstChildNode(label)\n const inputValue = getSelectedFiles(this)\n\n if (inputValue.length) {\n element.innerHTML = inputValue\n } else {\n restoreDefaultText(this)\n }\n }\n}\n\nfunction handleFormReset() {\n const customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT))\n .filter((input) => !!input.bsCustomFileInput)\n\n for (let i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i])\n }\n}\n\nexport {\n handleInputChange,\n handleFormReset,\n}\n","import { getDefaultText, restoreDefaultText } from './util'\nimport { handleFormReset, handleInputChange } from './eventHandlers'\nimport Selector from './selector'\n\nconst customProperty = 'bsCustomFileInput'\nconst Event = {\n FORMRESET : 'reset',\n INPUTCHANGE : 'change',\n}\n\nconst bsCustomFileInput = {\n init(inputSelector = Selector.CUSTOMFILE, formSelector = Selector.FORM) {\n const customFileInputList = [].slice.call(document.querySelectorAll(inputSelector))\n const formList = [].slice.call(document.querySelectorAll(formSelector))\n\n for (let i = 0, len = customFileInputList.length; i < len; i++) {\n const input = customFileInputList[i]\n\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input),\n },\n writable: true,\n })\n\n handleInputChange.call(input)\n input.addEventListener(Event.INPUTCHANGE, handleInputChange)\n }\n\n for (let i = 0, len = formList.length; i < len; i++) {\n formList[i].addEventListener(Event.FORMRESET, handleFormReset)\n Object.defineProperty(formList[i], customProperty, {\n value: true,\n writable: true,\n })\n }\n },\n\n destroy() {\n const formList = [].slice.call(document.querySelectorAll(Selector.FORM))\n .filter((form) => !!form.bsCustomFileInput)\n const customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT))\n .filter((input) => !!input.bsCustomFileInput)\n\n for (let i = 0, len = customFileInputList.length; i < len; i++) {\n const input = customFileInputList[i]\n\n restoreDefaultText(input)\n input[customProperty] = undefined\n\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange)\n }\n\n for (let i = 0, len = formList.length; i < len; i++) {\n formList[i].removeEventListener(Event.FORMRESET, handleFormReset)\n formList[i][customProperty] = undefined\n }\n },\n}\n\nexport default bsCustomFileInput\n"],"names":["Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","textNodeType","getDefaultText","input","defaultText","label","parentNode","querySelector","innerHTML","findFirstChildNode","element","childNodes","length","slice","call","i","node","nodeType","restoreDefaultText","bsCustomFileInput","fileApi","window","File","FAKE_PATH","FAKE_PATH_SEPARATOR","getSelectedFiles","hasAttribute","files","map","file","name","join","value","indexOf","splittedValue","split","handleInputChange","inputValue","handleFormReset","customFileList","querySelectorAll","filter","len","customProperty","Event","FORMRESET","INPUTCHANGE","init","inputSelector","formSelector","customFileInputList","document","formList","Object","defineProperty","writable","addEventListener","destroy","form","undefined","removeEventListener"],"mappings":";;;;;;;;;;;EAAA,IAAMA,QAAQ,GAAG;EACfC,EAAAA,UAAU,EAAE,iCADG;EAEfC,EAAAA,eAAe,EAAE,oBAFF;EAGfC,EAAAA,IAAI,EAAE,MAHS;EAIfC,EAAAA,KAAK,EAAE;EAJQ,CAAjB;;ECEA,IAAMC,YAAY,GAAG,CAArB;;EACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAW;EAChC,MAAIC,WAAW,GAAG,EAAlB;EAEA,MAAMC,KAAK,GAAGF,KAAK,CAACG,UAAN,CAAiBC,aAAjB,CAA+BX,QAAQ,CAACE,eAAxC,CAAd;;EAEA,MAAIO,KAAJ,EAAW;EACTD,IAAAA,WAAW,GAAGC,KAAK,CAACG,SAApB;EACD;;EAED,SAAOJ,WAAP;EACD,CAVD;;EAYA,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD,EAAa;EACtC,MAAIA,OAAO,CAACC,UAAR,CAAmBC,MAAnB,GAA4B,CAAhC,EAAmC;EACjC,QAAMD,UAAU,GAAG,GAAGE,KAAH,CAASC,IAAT,CAAcJ,OAAO,CAACC,UAAtB,CAAnB;;EAEA,SAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,UAAU,CAACC,MAA/B,EAAuCG,CAAC,EAAxC,EAA4C;EAC1C,UAAMC,IAAI,GAAGL,UAAU,CAACI,CAAD,CAAvB;;EACA,UAAIC,IAAI,CAACC,QAAL,KAAkBhB,YAAtB,EAAoC;EAClC,eAAOe,IAAP;EACD;EACF;EACF;;EAED,SAAON,OAAP;EACD,CAbD;;EAeA,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAACf,KAAD,EAAW;EACpC,MAAMC,WAAW,GAAGD,KAAK,CAACgB,iBAAN,CAAwBf,WAA5C;EACA,MAAMC,KAAK,GAAGF,KAAK,CAACG,UAAN,CAAiBC,aAAjB,CAA+BX,QAAQ,CAACE,eAAxC,CAAd;;EAEA,MAAIO,KAAJ,EAAW;EACT,QAAMK,OAAO,GAAGD,kBAAkB,CAACJ,KAAD,CAAlC;EACAK,IAAAA,OAAO,CAACF,SAAR,GAAoBJ,WAApB;EACD;EACF,CARD;;EC3BA,IAAMgB,OAAO,GAAG,CAAC,CAACC,MAAM,CAACC,IAAzB;EACA,IAAMC,SAAS,GAAG,UAAlB;EACA,IAAMC,mBAAmB,GAAG,IAA5B;;EAEA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACtB,KAAD,EAAW;EAClC,MAAIA,KAAK,CAACuB,YAAN,CAAmB,UAAnB,KAAkCN,OAAtC,EAA+C;EAC7C,WAAO,GAAGP,KAAH,CAASC,IAAT,CAAcX,KAAK,CAACwB,KAApB,EACJC,GADI,CACA,UAACC,IAAD;EAAA,aAAUA,IAAI,CAACC,IAAf;EAAA,KADA,EAEJC,IAFI,CAEC,IAFD,CAAP;EAGD;;EAED,MAAI5B,KAAK,CAAC6B,KAAN,CAAYC,OAAZ,CAAoBV,SAApB,MAAmC,CAAC,CAAxC,EAA2C;EACzC,QAAMW,aAAa,GAAG/B,KAAK,CAAC6B,KAAN,CAAYG,KAAZ,CAAkBX,mBAAlB,CAAtB;EAEA,WAAOU,aAAa,CAACA,aAAa,CAACtB,MAAd,GAAuB,CAAxB,CAApB;EACD;;EAED,SAAOT,KAAK,CAAC6B,KAAb;EACD,CAdD;;EAgBA,SAASI,iBAAT,GAA6B;EAC3B,MAAM/B,KAAK,GAAG,KAAKC,UAAL,CAAgBC,aAAhB,CAA8BX,QAAQ,CAACE,eAAvC,CAAd;;EAEA,MAAIO,KAAJ,EAAW;EACT,QAAMK,OAAO,GAAGD,kBAAkB,CAACJ,KAAD,CAAlC;EACA,QAAMgC,UAAU,GAAGZ,gBAAgB,CAAC,IAAD,CAAnC;;EAEA,QAAIY,UAAU,CAACzB,MAAf,EAAuB;EACrBF,MAAAA,OAAO,CAACF,SAAR,GAAoB6B,UAApB;EACD,KAFD,MAEO;EACLnB,MAAAA,kBAAkB,CAAC,IAAD,CAAlB;EACD;EACF;EACF;;EAED,SAASoB,eAAT,GAA2B;EACzB,MAAMC,cAAc,GAAG,GAAG1B,KAAH,CAASC,IAAT,CAAc,KAAK0B,gBAAL,CAAsB5C,QAAQ,CAACI,KAA/B,CAAd,EACpByC,MADoB,CACb,UAACtC,KAAD;EAAA,WAAW,CAAC,CAACA,KAAK,CAACgB,iBAAnB;EAAA,GADa,CAAvB;;EAGA,OAAK,IAAIJ,CAAC,GAAG,CAAR,EAAW2B,GAAG,GAAGH,cAAc,CAAC3B,MAArC,EAA6CG,CAAC,GAAG2B,GAAjD,EAAsD3B,CAAC,EAAvD,EAA2D;EACzDG,IAAAA,kBAAkB,CAACqB,cAAc,CAACxB,CAAD,CAAf,CAAlB;EACD;EACF;;ECzCD,IAAM4B,cAAc,GAAG,mBAAvB;EACA,IAAMC,KAAK,GAAG;EACZC,EAAAA,SAAS,EAAK,OADF;EAEZC,EAAAA,WAAW,EAAG;EAFF,CAAd;EAKA,IAAM3B,iBAAiB,GAAG;EACxB4B,EAAAA,IADwB,gBACnBC,aADmB,EACkBC,YADlB,EACgD;EAAA,QAAnED,aAAmE;EAAnEA,MAAAA,aAAmE,GAAnDpD,QAAQ,CAACC,UAA0C;EAAA;;EAAA,QAA9BoD,YAA8B;EAA9BA,MAAAA,YAA8B,GAAfrD,QAAQ,CAACG,IAAM;EAAA;;EACtE,QAAMmD,mBAAmB,GAAG,GAAGrC,KAAH,CAASC,IAAT,CAAcqC,QAAQ,CAACX,gBAAT,CAA0BQ,aAA1B,CAAd,CAA5B;EACA,QAAMI,QAAQ,GAAG,GAAGvC,KAAH,CAASC,IAAT,CAAcqC,QAAQ,CAACX,gBAAT,CAA0BS,YAA1B,CAAd,CAAjB;;EAEA,SAAK,IAAIlC,CAAC,GAAG,CAAR,EAAW2B,GAAG,GAAGQ,mBAAmB,CAACtC,MAA1C,EAAkDG,CAAC,GAAG2B,GAAtD,EAA2D3B,CAAC,EAA5D,EAAgE;EAC9D,UAAMZ,KAAK,GAAG+C,mBAAmB,CAACnC,CAAD,CAAjC;EAEAsC,MAAAA,MAAM,CAACC,cAAP,CAAsBnD,KAAtB,EAA6BwC,cAA7B,EAA6C;EAC3CX,QAAAA,KAAK,EAAE;EACL5B,UAAAA,WAAW,EAAEF,cAAc,CAACC,KAAD;EADtB,SADoC;EAI3CoD,QAAAA,QAAQ,EAAE;EAJiC,OAA7C;EAOAnB,MAAAA,iBAAiB,CAACtB,IAAlB,CAAuBX,KAAvB;EACAA,MAAAA,KAAK,CAACqD,gBAAN,CAAuBZ,KAAK,CAACE,WAA7B,EAA0CV,iBAA1C;EACD;;EAED,SAAK,IAAIrB,EAAC,GAAG,CAAR,EAAW2B,IAAG,GAAGU,QAAQ,CAACxC,MAA/B,EAAuCG,EAAC,GAAG2B,IAA3C,EAAgD3B,EAAC,EAAjD,EAAqD;EACnDqC,MAAAA,QAAQ,CAACrC,EAAD,CAAR,CAAYyC,gBAAZ,CAA6BZ,KAAK,CAACC,SAAnC,EAA8CP,eAA9C;;EACAe,MAAAA,MAAM,CAACC,cAAP,CAAsBF,QAAQ,CAACrC,EAAD,CAA9B,EAAmC4B,cAAnC,EAAmD;EACjDX,QAAAA,KAAK,EAAE,IAD0C;EAEjDuB,QAAAA,QAAQ,EAAE;EAFuC,OAAnD;EAID;EACF,GA1BuB;EA4BxBE,EAAAA,OA5BwB,qBA4Bd;EACR,QAAML,QAAQ,GAAG,GAAGvC,KAAH,CAASC,IAAT,CAAcqC,QAAQ,CAACX,gBAAT,CAA0B5C,QAAQ,CAACG,IAAnC,CAAd,EACd0C,MADc,CACP,UAACiB,IAAD;EAAA,aAAU,CAAC,CAACA,IAAI,CAACvC,iBAAjB;EAAA,KADO,CAAjB;EAEA,QAAM+B,mBAAmB,GAAG,GAAGrC,KAAH,CAASC,IAAT,CAAcqC,QAAQ,CAACX,gBAAT,CAA0B5C,QAAQ,CAACI,KAAnC,CAAd,EACzByC,MADyB,CAClB,UAACtC,KAAD;EAAA,aAAW,CAAC,CAACA,KAAK,CAACgB,iBAAnB;EAAA,KADkB,CAA5B;;EAGA,SAAK,IAAIJ,CAAC,GAAG,CAAR,EAAW2B,GAAG,GAAGQ,mBAAmB,CAACtC,MAA1C,EAAkDG,CAAC,GAAG2B,GAAtD,EAA2D3B,CAAC,EAA5D,EAAgE;EAC9D,UAAMZ,KAAK,GAAG+C,mBAAmB,CAACnC,CAAD,CAAjC;EAEAG,MAAAA,kBAAkB,CAACf,KAAD,CAAlB;EACAA,MAAAA,KAAK,CAACwC,cAAD,CAAL,GAAwBgB,SAAxB;EAEAxD,MAAAA,KAAK,CAACyD,mBAAN,CAA0BhB,KAAK,CAACE,WAAhC,EAA6CV,iBAA7C;EACD;;EAED,SAAK,IAAIrB,GAAC,GAAG,CAAR,EAAW2B,KAAG,GAAGU,QAAQ,CAACxC,MAA/B,EAAuCG,GAAC,GAAG2B,KAA3C,EAAgD3B,GAAC,EAAjD,EAAqD;EACnDqC,MAAAA,QAAQ,CAACrC,GAAD,CAAR,CAAY6C,mBAAZ,CAAgChB,KAAK,CAACC,SAAtC,EAAiDP,eAAjD;;EACAc,MAAAA,QAAQ,CAACrC,GAAD,CAAR,CAAY4B,cAAZ,IAA8BgB,SAA9B;EACD;EACF;EA/CuB,CAA1B;;;;;;;;"} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.min.js deleted file mode 100644 index d9af3b1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input) - * Copyright 2018 - 2019 Johann-S - * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE) - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).bsCustomFileInput=t()}(this,function(){"use strict";var d={CUSTOMFILE:'.custom-file input[type="file"]',CUSTOMFILELABEL:".custom-file-label",FORM:"form",INPUT:"input"},r=function(e){if(0 {\n let defaultText = ''\n\n const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n defaultText = label.innerHTML\n }\n\n return defaultText\n}\n\nconst findFirstChildNode = (element) => {\n if (element.childNodes.length > 0) {\n const childNodes = [].slice.call(element.childNodes)\n\n for (let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i]\n if (node.nodeType !== textNodeType) {\n return node\n }\n }\n }\n\n return element\n}\n\nconst restoreDefaultText = (input) => {\n const defaultText = input.bsCustomFileInput.defaultText\n const label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n const element = findFirstChildNode(label)\n element.innerHTML = defaultText\n }\n}\n\nexport {\n getDefaultText,\n findFirstChildNode,\n restoreDefaultText,\n}\n","import { findFirstChildNode, restoreDefaultText } from './util'\nimport Selector from './selector'\n\nconst fileApi = !!window.File\nconst FAKE_PATH = 'fakepath'\nconst FAKE_PATH_SEPARATOR = '\\\\'\n\nconst getSelectedFiles = (input) => {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files)\n .map((file) => file.name)\n .join(', ')\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n const splittedValue = input.value.split(FAKE_PATH_SEPARATOR)\n\n return splittedValue[splittedValue.length - 1]\n }\n\n return input.value\n}\n\nfunction handleInputChange() {\n const label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL)\n\n if (label) {\n const element = findFirstChildNode(label)\n const inputValue = getSelectedFiles(this)\n\n if (inputValue.length) {\n element.innerHTML = inputValue\n } else {\n restoreDefaultText(this)\n }\n }\n}\n\nfunction handleFormReset() {\n const customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT))\n .filter((input) => !!input.bsCustomFileInput)\n\n for (let i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i])\n }\n}\n\nexport {\n handleInputChange,\n handleFormReset,\n}\n","import { getDefaultText, restoreDefaultText } from './util'\nimport { handleFormReset, handleInputChange } from './eventHandlers'\nimport Selector from './selector'\n\nconst customProperty = 'bsCustomFileInput'\nconst Event = {\n FORMRESET : 'reset',\n INPUTCHANGE : 'change',\n}\n\nconst bsCustomFileInput = {\n init(inputSelector = Selector.CUSTOMFILE, formSelector = Selector.FORM) {\n const customFileInputList = [].slice.call(document.querySelectorAll(inputSelector))\n const formList = [].slice.call(document.querySelectorAll(formSelector))\n\n for (let i = 0, len = customFileInputList.length; i < len; i++) {\n const input = customFileInputList[i]\n\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input),\n },\n writable: true,\n })\n\n handleInputChange.call(input)\n input.addEventListener(Event.INPUTCHANGE, handleInputChange)\n }\n\n for (let i = 0, len = formList.length; i < len; i++) {\n formList[i].addEventListener(Event.FORMRESET, handleFormReset)\n Object.defineProperty(formList[i], customProperty, {\n value: true,\n writable: true,\n })\n }\n },\n\n destroy() {\n const formList = [].slice.call(document.querySelectorAll(Selector.FORM))\n .filter((form) => !!form.bsCustomFileInput)\n const customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT))\n .filter((input) => !!input.bsCustomFileInput)\n\n for (let i = 0, len = customFileInputList.length; i < len; i++) {\n const input = customFileInputList[i]\n\n restoreDefaultText(input)\n input[customProperty] = undefined\n\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange)\n }\n\n for (let i = 0, len = formList.length; i < len; i++) {\n formList[i].removeEventListener(Event.FORMRESET, handleFormReset)\n formList[i][customProperty] = undefined\n }\n },\n}\n\nexport default bsCustomFileInput\n"],"names":["Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","findFirstChildNode","element","childNodes","length","slice","call","i","node","nodeType","restoreDefaultText","input","defaultText","bsCustomFileInput","label","parentNode","querySelector","innerHTML","fileApi","window","File","getSelectedFiles","hasAttribute","files","map","file","name","join","value","indexOf","splittedValue","split","handleInputChange","this","inputValue","handleFormReset","customFileList","querySelectorAll","filter","len","customProperty","Event","init","inputSelector","formSelector","customFileInputList","document","formList","Object","defineProperty","writable","addEventListener","destroy","form","undefined","removeEventListener"],"mappings":";;;;;uMAAA,IAAMA,EAAW,CACfC,WAAY,kCACZC,gBAAiB,qBACjBC,KAAM,OACNC,MAAO,SCWHC,EAAqB,SAACC,MACM,EAA5BA,EAAQC,WAAWC,eACfD,EAAa,GAAGE,MAAMC,KAAKJ,EAAQC,YAEhCI,EAAI,EAAGA,EAAIJ,EAAWC,OAAQG,IAAK,KACpCC,EAAOL,EAAWI,MAlBT,IAmBXC,EAAKC,gBACAD,SAKNN,GAGHQ,EAAqB,SAACC,OACpBC,EAAcD,EAAME,kBAAkBD,YACtCE,EAAQH,EAAMI,WAAWC,cAAcpB,EAASE,iBAElDgB,IACcb,EAAmBa,GAC3BG,UAAYL,ICjClBM,IAAYC,OAAOC,KAInBC,EAAmB,SAACV,MACpBA,EAAMW,aAAa,aAAeJ,QAC7B,GAAGb,MAAMC,KAAKK,EAAMY,OACxBC,IAAI,SAACC,UAASA,EAAKC,OACnBC,KAAK,UAG8B,IAApChB,EAAMiB,MAAMC,QAVA,mBAgBTlB,EAAMiB,UALLE,EAAgBnB,EAAMiB,MAAMG,MAVV,aAYjBD,EAAcA,EAAc1B,OAAS,IAMhD,SAAS4B,QACDlB,EAAQmB,KAAKlB,WAAWC,cAAcpB,EAASE,oBAEjDgB,EAAO,KACHZ,EAAUD,EAAmBa,GAC7BoB,EAAab,EAAiBY,MAEhCC,EAAW9B,OACbF,EAAQe,UAAYiB,EAEpBxB,EAAmBuB,OAKzB,SAASE,YACDC,EAAiB,GAAG/B,MAAMC,KAAK2B,KAAKI,iBAAiBzC,EAASI,QACjEsC,OAAO,SAAC3B,WAAYA,EAAME,oBAEpBN,EAAI,EAAGgC,EAAMH,EAAehC,OAAQG,EAAIgC,EAAKhC,IACpDG,EAAmB0B,EAAe7B,ICvCtC,IAAMiC,EAAiB,oBACjBC,EACU,QADVA,EAEU,eAGU,CACxBC,cAAKC,EAAqCC,YAArCD,IAAAA,EAAgB/C,EAASC,qBAAY+C,IAAAA,EAAehD,EAASG,cFR5CY,EAClBC,EAEEE,EEME+B,EAAsB,GAAGxC,MAAMC,KAAKwC,SAAST,iBAAiBM,IAC9DI,EAAW,GAAG1C,MAAMC,KAAKwC,SAAST,iBAAiBO,IAEhDrC,EAAI,EAAGgC,EAAMM,EAAoBzC,OAAQG,EAAIgC,EAAKhC,IAAK,KACxDI,EAAQkC,EAAoBtC,GAElCyC,OAAOC,eAAetC,EAAO6B,EAAgB,CAC3CZ,MAAO,CACLhB,aFjBcD,EEiBcA,EFhBhCC,OAAAA,OAEEE,EAFFF,EAAc,GAEZE,EAAQH,EAAMI,WAAWC,cAAcpB,EAASE,iBAElDgB,IACFF,EAAcE,EAAMG,WAGfL,IEUDsC,UAAU,IAGZlB,EAAkB1B,KAAKK,GACvBA,EAAMwC,iBAAiBV,EAAmBT,OAGvC,IAAIzB,EAAI,EAAGgC,EAAMQ,EAAS3C,OAAQG,EAAIgC,EAAKhC,IAC9CwC,EAASxC,GAAG4C,iBAAiBV,EAAiBN,GAC9Ca,OAAOC,eAAeF,EAASxC,GAAIiC,EAAgB,CACjDZ,OAAO,EACPsB,UAAU,KAKhBE,2BACQL,EAAW,GAAG1C,MAAMC,KAAKwC,SAAST,iBAAiBzC,EAASG,OAC/DuC,OAAO,SAACe,WAAWA,EAAKxC,oBACrBgC,EAAsB,GAAGxC,MAAMC,KAAKwC,SAAST,iBAAiBzC,EAASI,QAC1EsC,OAAO,SAAC3B,WAAYA,EAAME,oBAEpBN,EAAI,EAAGgC,EAAMM,EAAoBzC,OAAQG,EAAIgC,EAAKhC,IAAK,KACxDI,EAAQkC,EAAoBtC,GAElCG,EAAmBC,GACnBA,EAAM6B,QAAkBc,EAExB3C,EAAM4C,oBAAoBd,EAAmBT,OAG1C,IAAIzB,EAAI,EAAGgC,EAAMQ,EAAS3C,OAAQG,EAAIgC,EAAKhC,IAC9CwC,EAASxC,GAAGgD,oBAAoBd,EAAiBN,GACjDY,EAASxC,GAAGiC,QAAkBc"} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.js b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.js deleted file mode 100644 index 622703e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.js +++ /dev/null @@ -1,19288 +0,0 @@ -/*! - * Chart.js v2.8.0 - * https://www.chartjs.org - * (c) 2019 Chart.js Contributors - * Released under the MIT License - */ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : -typeof define === 'function' && define.amd ? define(factory) : -(global.Chart = factory()); -}(this, (function () { 'use strict'; - -/* MIT license */ - -var conversions = { - rgb2hsl: rgb2hsl, - rgb2hsv: rgb2hsv, - rgb2hwb: rgb2hwb, - rgb2cmyk: rgb2cmyk, - rgb2keyword: rgb2keyword, - rgb2xyz: rgb2xyz, - rgb2lab: rgb2lab, - rgb2lch: rgb2lch, - - hsl2rgb: hsl2rgb, - hsl2hsv: hsl2hsv, - hsl2hwb: hsl2hwb, - hsl2cmyk: hsl2cmyk, - hsl2keyword: hsl2keyword, - - hsv2rgb: hsv2rgb, - hsv2hsl: hsv2hsl, - hsv2hwb: hsv2hwb, - hsv2cmyk: hsv2cmyk, - hsv2keyword: hsv2keyword, - - hwb2rgb: hwb2rgb, - hwb2hsl: hwb2hsl, - hwb2hsv: hwb2hsv, - hwb2cmyk: hwb2cmyk, - hwb2keyword: hwb2keyword, - - cmyk2rgb: cmyk2rgb, - cmyk2hsl: cmyk2hsl, - cmyk2hsv: cmyk2hsv, - cmyk2hwb: cmyk2hwb, - cmyk2keyword: cmyk2keyword, - - keyword2rgb: keyword2rgb, - keyword2hsl: keyword2hsl, - keyword2hsv: keyword2hsv, - keyword2hwb: keyword2hwb, - keyword2cmyk: keyword2cmyk, - keyword2lab: keyword2lab, - keyword2xyz: keyword2xyz, - - xyz2rgb: xyz2rgb, - xyz2lab: xyz2lab, - xyz2lch: xyz2lch, - - lab2xyz: lab2xyz, - lab2rgb: lab2rgb, - lab2lch: lab2lch, - - lch2lab: lch2lab, - lch2xyz: lch2xyz, - lch2rgb: lch2rgb -}; - - -function rgb2hsl(rgb) { - var r = rgb[0]/255, - g = rgb[1]/255, - b = rgb[2]/255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, l; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g)/ delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - l = (min + max) / 2; - - if (max == min) - s = 0; - else if (l <= 0.5) - s = delta / (max + min); - else - s = delta / (2 - max - min); - - return [h, s * 100, l * 100]; -} - -function rgb2hsv(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, v; - - if (max == 0) - s = 0; - else - s = (delta/max * 1000)/10; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g) / delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; -} - -function rgb2hwb(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - h = rgb2hsl(rgb)[0], - w = 1/255 * Math.min(r, Math.min(g, b)), - b = 1 - 1/255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; -} - -function rgb2cmyk(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255, - c, m, y, k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - return [c * 100, m * 100, y * 100, k * 100]; -} - -function rgb2keyword(rgb) { - return reverseKeywords[JSON.stringify(rgb)]; -} - -function rgb2xyz(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y *100, z * 100]; -} - -function rgb2lab(rgb) { - var xyz = rgb2xyz(rgb), - x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function rgb2lch(args) { - return lab2lch(rgb2lab(args)); -} - -function hsl2rgb(hsl) { - var h = hsl[0] / 360, - s = hsl[1] / 100, - l = hsl[2] / 100, - t1, t2, t3, rgb, val; - - if (s == 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) - t2 = l * (1 + s); - else - t2 = l + s - l * s; - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * - (i - 1); - t3 < 0 && t3++; - t3 > 1 && t3--; - - if (6 * t3 < 1) - val = t1 + (t2 - t1) * 6 * t3; - else if (2 * t3 < 1) - val = t2; - else if (3 * t3 < 2) - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - else - val = t1; - - rgb[i] = val * 255; - } - - return rgb; -} - -function hsl2hsv(hsl) { - var h = hsl[0], - s = hsl[1] / 100, - l = hsl[2] / 100, - sv, v; - - if(l === 0) { - // no need to do calc on black - // also avoids divide by 0 error - return [0, 0, 0]; - } - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - v = (l + s) / 2; - sv = (2 * s) / (l + s); - return [h, sv * 100, v * 100]; -} - -function hsl2hwb(args) { - return rgb2hwb(hsl2rgb(args)); -} - -function hsl2cmyk(args) { - return rgb2cmyk(hsl2rgb(args)); -} - -function hsl2keyword(args) { - return rgb2keyword(hsl2rgb(args)); -} - - -function hsv2rgb(hsv) { - var h = hsv[0] / 60, - s = hsv[1] / 100, - v = hsv[2] / 100, - hi = Math.floor(h) % 6; - - var f = h - Math.floor(h), - p = 255 * v * (1 - s), - q = 255 * v * (1 - (s * f)), - t = 255 * v * (1 - (s * (1 - f))), - v = 255 * v; - - switch(hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -} - -function hsv2hsl(hsv) { - var h = hsv[0], - s = hsv[1] / 100, - v = hsv[2] / 100, - sl, l; - - l = (2 - s) * v; - sl = s * v; - sl /= (l <= 1) ? l : 2 - l; - sl = sl || 0; - l /= 2; - return [h, sl * 100, l * 100]; -} - -function hsv2hwb(args) { - return rgb2hwb(hsv2rgb(args)) -} - -function hsv2cmyk(args) { - return rgb2cmyk(hsv2rgb(args)); -} - -function hsv2keyword(args) { - return rgb2keyword(hsv2rgb(args)); -} - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -function hwb2rgb(hwb) { - var h = hwb[0] / 360, - wh = hwb[1] / 100, - bl = hwb[2] / 100, - ratio = wh + bl, - i, v, f, n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - if ((i & 0x01) != 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation - - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -} - -function hwb2hsl(args) { - return rgb2hsl(hwb2rgb(args)); -} - -function hwb2hsv(args) { - return rgb2hsv(hwb2rgb(args)); -} - -function hwb2cmyk(args) { - return rgb2cmyk(hwb2rgb(args)); -} - -function hwb2keyword(args) { - return rgb2keyword(hwb2rgb(args)); -} - -function cmyk2rgb(cmyk) { - var c = cmyk[0] / 100, - m = cmyk[1] / 100, - y = cmyk[2] / 100, - k = cmyk[3] / 100, - r, g, b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - return [r * 255, g * 255, b * 255]; -} - -function cmyk2hsl(args) { - return rgb2hsl(cmyk2rgb(args)); -} - -function cmyk2hsv(args) { - return rgb2hsv(cmyk2rgb(args)); -} - -function cmyk2hwb(args) { - return rgb2hwb(cmyk2rgb(args)); -} - -function cmyk2keyword(args) { - return rgb2keyword(cmyk2rgb(args)); -} - - -function xyz2rgb(xyz) { - var x = xyz[0] / 100, - y = xyz[1] / 100, - z = xyz[2] / 100, - r, g, b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92); - - g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92); - - b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92); - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; -} - -function xyz2lab(xyz) { - var x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function xyz2lch(args) { - return lab2lch(xyz2lab(args)); -} - -function lab2xyz(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - x, y, z, y2; - - if (l <= 8) { - y = (l * 100) / 903.3; - y2 = (7.787 * (y / 100)) + (16 / 116); - } else { - y = 100 * Math.pow((l + 16) / 116, 3); - y2 = Math.pow(y / 100, 1/3); - } - - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); - - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); - - return [x, y, z]; -} - -function lab2lch(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - hr, h, c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - if (h < 0) { - h += 360; - } - c = Math.sqrt(a * a + b * b); - return [l, c, h]; -} - -function lab2rgb(args) { - return xyz2rgb(lab2xyz(args)); -} - -function lch2lab(lch) { - var l = lch[0], - c = lch[1], - h = lch[2], - a, b, hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - return [l, a, b]; -} - -function lch2xyz(args) { - return lab2xyz(lch2lab(args)); -} - -function lch2rgb(args) { - return lab2rgb(lch2lab(args)); -} - -function keyword2rgb(keyword) { - return cssKeywords[keyword]; -} - -function keyword2hsl(args) { - return rgb2hsl(keyword2rgb(args)); -} - -function keyword2hsv(args) { - return rgb2hsv(keyword2rgb(args)); -} - -function keyword2hwb(args) { - return rgb2hwb(keyword2rgb(args)); -} - -function keyword2cmyk(args) { - return rgb2cmyk(keyword2rgb(args)); -} - -function keyword2lab(args) { - return rgb2lab(keyword2rgb(args)); -} - -function keyword2xyz(args) { - return rgb2xyz(keyword2rgb(args)); -} - -var cssKeywords = { - aliceblue: [240,248,255], - antiquewhite: [250,235,215], - aqua: [0,255,255], - aquamarine: [127,255,212], - azure: [240,255,255], - beige: [245,245,220], - bisque: [255,228,196], - black: [0,0,0], - blanchedalmond: [255,235,205], - blue: [0,0,255], - blueviolet: [138,43,226], - brown: [165,42,42], - burlywood: [222,184,135], - cadetblue: [95,158,160], - chartreuse: [127,255,0], - chocolate: [210,105,30], - coral: [255,127,80], - cornflowerblue: [100,149,237], - cornsilk: [255,248,220], - crimson: [220,20,60], - cyan: [0,255,255], - darkblue: [0,0,139], - darkcyan: [0,139,139], - darkgoldenrod: [184,134,11], - darkgray: [169,169,169], - darkgreen: [0,100,0], - darkgrey: [169,169,169], - darkkhaki: [189,183,107], - darkmagenta: [139,0,139], - darkolivegreen: [85,107,47], - darkorange: [255,140,0], - darkorchid: [153,50,204], - darkred: [139,0,0], - darksalmon: [233,150,122], - darkseagreen: [143,188,143], - darkslateblue: [72,61,139], - darkslategray: [47,79,79], - darkslategrey: [47,79,79], - darkturquoise: [0,206,209], - darkviolet: [148,0,211], - deeppink: [255,20,147], - deepskyblue: [0,191,255], - dimgray: [105,105,105], - dimgrey: [105,105,105], - dodgerblue: [30,144,255], - firebrick: [178,34,34], - floralwhite: [255,250,240], - forestgreen: [34,139,34], - fuchsia: [255,0,255], - gainsboro: [220,220,220], - ghostwhite: [248,248,255], - gold: [255,215,0], - goldenrod: [218,165,32], - gray: [128,128,128], - green: [0,128,0], - greenyellow: [173,255,47], - grey: [128,128,128], - honeydew: [240,255,240], - hotpink: [255,105,180], - indianred: [205,92,92], - indigo: [75,0,130], - ivory: [255,255,240], - khaki: [240,230,140], - lavender: [230,230,250], - lavenderblush: [255,240,245], - lawngreen: [124,252,0], - lemonchiffon: [255,250,205], - lightblue: [173,216,230], - lightcoral: [240,128,128], - lightcyan: [224,255,255], - lightgoldenrodyellow: [250,250,210], - lightgray: [211,211,211], - lightgreen: [144,238,144], - lightgrey: [211,211,211], - lightpink: [255,182,193], - lightsalmon: [255,160,122], - lightseagreen: [32,178,170], - lightskyblue: [135,206,250], - lightslategray: [119,136,153], - lightslategrey: [119,136,153], - lightsteelblue: [176,196,222], - lightyellow: [255,255,224], - lime: [0,255,0], - limegreen: [50,205,50], - linen: [250,240,230], - magenta: [255,0,255], - maroon: [128,0,0], - mediumaquamarine: [102,205,170], - mediumblue: [0,0,205], - mediumorchid: [186,85,211], - mediumpurple: [147,112,219], - mediumseagreen: [60,179,113], - mediumslateblue: [123,104,238], - mediumspringgreen: [0,250,154], - mediumturquoise: [72,209,204], - mediumvioletred: [199,21,133], - midnightblue: [25,25,112], - mintcream: [245,255,250], - mistyrose: [255,228,225], - moccasin: [255,228,181], - navajowhite: [255,222,173], - navy: [0,0,128], - oldlace: [253,245,230], - olive: [128,128,0], - olivedrab: [107,142,35], - orange: [255,165,0], - orangered: [255,69,0], - orchid: [218,112,214], - palegoldenrod: [238,232,170], - palegreen: [152,251,152], - paleturquoise: [175,238,238], - palevioletred: [219,112,147], - papayawhip: [255,239,213], - peachpuff: [255,218,185], - peru: [205,133,63], - pink: [255,192,203], - plum: [221,160,221], - powderblue: [176,224,230], - purple: [128,0,128], - rebeccapurple: [102, 51, 153], - red: [255,0,0], - rosybrown: [188,143,143], - royalblue: [65,105,225], - saddlebrown: [139,69,19], - salmon: [250,128,114], - sandybrown: [244,164,96], - seagreen: [46,139,87], - seashell: [255,245,238], - sienna: [160,82,45], - silver: [192,192,192], - skyblue: [135,206,235], - slateblue: [106,90,205], - slategray: [112,128,144], - slategrey: [112,128,144], - snow: [255,250,250], - springgreen: [0,255,127], - steelblue: [70,130,180], - tan: [210,180,140], - teal: [0,128,128], - thistle: [216,191,216], - tomato: [255,99,71], - turquoise: [64,224,208], - violet: [238,130,238], - wheat: [245,222,179], - white: [255,255,255], - whitesmoke: [245,245,245], - yellow: [255,255,0], - yellowgreen: [154,205,50] -}; - -var reverseKeywords = {}; -for (var key in cssKeywords) { - reverseKeywords[JSON.stringify(cssKeywords[key])] = key; -} - -var convert = function() { - return new Converter(); -}; - -for (var func in conversions) { - // export Raw versions - convert[func + "Raw"] = (function(func) { - // accept array or plain args - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - return conversions[func](arg); - } - })(func); - - var pair = /(\w+)2(\w+)/.exec(func), - from = pair[1], - to = pair[2]; - - // export rgb2hsl and ["rgb"]["hsl"] - convert[from] = convert[from] || {}; - - convert[from][to] = convert[func] = (function(func) { - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - - var val = conversions[func](arg); - if (typeof val == "string" || val === undefined) - return val; // keyword - - for (var i = 0; i < val.length; i++) - val[i] = Math.round(val[i]); - return val; - } - })(func); -} - - -/* Converter does lazy conversion and caching */ -var Converter = function() { - this.convs = {}; -}; - -/* Either get the values for a space or - set the values for a space, depending on args */ -Converter.prototype.routeSpace = function(space, args) { - var values = args[0]; - if (values === undefined) { - // color.rgb() - return this.getValues(space); - } - // color.rgb(10, 10, 10) - if (typeof values == "number") { - values = Array.prototype.slice.call(args); - } - - return this.setValues(space, values); -}; - -/* Set the values for a space, invalidating cache */ -Converter.prototype.setValues = function(space, values) { - this.space = space; - this.convs = {}; - this.convs[space] = values; - return this; -}; - -/* Get the values for a space. If there's already - a conversion for the space, fetch it, otherwise - compute it */ -Converter.prototype.getValues = function(space) { - var vals = this.convs[space]; - if (!vals) { - var fspace = this.space, - from = this.convs[fspace]; - vals = convert[fspace][space](from); - - this.convs[space] = vals; - } - return vals; -}; - -["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { - Converter.prototype[space] = function(vals) { - return this.routeSpace(space, arguments); - }; -}); - -var colorConvert = convert; - -var colorName = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; - -/* MIT license */ - - -var colorString = { - getRgba: getRgba, - getHsla: getHsla, - getRgb: getRgb, - getHsl: getHsl, - getHwb: getHwb, - getAlpha: getAlpha, - - hexString: hexString, - rgbString: rgbString, - rgbaString: rgbaString, - percentString: percentString, - percentaString: percentaString, - hslString: hslString, - hslaString: hslaString, - hwbString: hwbString, - keyword: keyword -}; - -function getRgba(string) { - if (!string) { - return; - } - var abbr = /^#([a-fA-F0-9]{3,4})$/i, - hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i, - rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - keyword = /(\w+)/; - - var rgb = [0, 0, 0], - a = 1, - match = string.match(abbr), - hexAlpha = ""; - if (match) { - match = match[1]; - hexAlpha = match[3]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i] + match[i], 16); - } - if (hexAlpha) { - a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100; - } - } - else if (match = string.match(hex)) { - hexAlpha = match[2]; - match = match[1]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); - } - if (hexAlpha) { - a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100; - } - } - else if (match = string.match(rgba)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i + 1]); - } - a = parseFloat(match[4]); - } - else if (match = string.match(per)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); - } - a = parseFloat(match[4]); - } - else if (match = string.match(keyword)) { - if (match[1] == "transparent") { - return [0, 0, 0, 0]; - } - rgb = colorName[match[1]]; - if (!rgb) { - return; - } - } - - for (var i = 0; i < rgb.length; i++) { - rgb[i] = scale(rgb[i], 0, 255); - } - if (!a && a != 0) { - a = 1; - } - else { - a = scale(a, 0, 1); - } - rgb[3] = a; - return rgb; -} - -function getHsla(string) { - if (!string) { - return; - } - var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hsl); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - s = scale(parseFloat(match[2]), 0, 100), - l = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, s, l, a]; - } -} - -function getHwb(string) { - if (!string) { - return; - } - var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hwb); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - w = scale(parseFloat(match[2]), 0, 100), - b = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, w, b, a]; - } -} - -function getRgb(string) { - var rgba = getRgba(string); - return rgba && rgba.slice(0, 3); -} - -function getHsl(string) { - var hsla = getHsla(string); - return hsla && hsla.slice(0, 3); -} - -function getAlpha(string) { - var vals = getRgba(string); - if (vals) { - return vals[3]; - } - else if (vals = getHsla(string)) { - return vals[3]; - } - else if (vals = getHwb(string)) { - return vals[3]; - } -} - -// generators -function hexString(rgba, a) { - var a = (a !== undefined && rgba.length === 3) ? a : rgba[3]; - return "#" + hexDouble(rgba[0]) - + hexDouble(rgba[1]) - + hexDouble(rgba[2]) - + ( - (a >= 0 && a < 1) - ? hexDouble(Math.round(a * 255)) - : "" - ); -} - -function rgbString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return rgbaString(rgba, alpha); - } - return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; -} - -function rgbaString(rgba, alpha) { - if (alpha === undefined) { - alpha = (rgba[3] !== undefined ? rgba[3] : 1); - } - return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] - + ", " + alpha + ")"; -} - -function percentString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return percentaString(rgba, alpha); - } - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); - - return "rgb(" + r + "%, " + g + "%, " + b + "%)"; -} - -function percentaString(rgba, alpha) { - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); - return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; -} - -function hslString(hsla, alpha) { - if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { - return hslaString(hsla, alpha); - } - return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; -} - -function hslaString(hsla, alpha) { - if (alpha === undefined) { - alpha = (hsla[3] !== undefined ? hsla[3] : 1); - } - return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " - + alpha + ")"; -} - -// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax -// (hwb have alpha optional & 1 is default value) -function hwbString(hwb, alpha) { - if (alpha === undefined) { - alpha = (hwb[3] !== undefined ? hwb[3] : 1); - } - return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" - + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; -} - -function keyword(rgb) { - return reverseNames[rgb.slice(0, 3)]; -} - -// helpers -function scale(num, min, max) { - return Math.min(Math.max(min, num), max); -} - -function hexDouble(num) { - var str = num.toString(16).toUpperCase(); - return (str.length < 2) ? "0" + str : str; -} - - -//create a list of reverse color names -var reverseNames = {}; -for (var name in colorName) { - reverseNames[colorName[name]] = name; -} - -/* MIT license */ - - - -var Color = function (obj) { - if (obj instanceof Color) { - return obj; - } - if (!(this instanceof Color)) { - return new Color(obj); - } - - this.valid = false; - this.values = { - rgb: [0, 0, 0], - hsl: [0, 0, 0], - hsv: [0, 0, 0], - hwb: [0, 0, 0], - cmyk: [0, 0, 0, 0], - alpha: 1 - }; - - // parse Color() argument - var vals; - if (typeof obj === 'string') { - vals = colorString.getRgba(obj); - if (vals) { - this.setValues('rgb', vals); - } else if (vals = colorString.getHsla(obj)) { - this.setValues('hsl', vals); - } else if (vals = colorString.getHwb(obj)) { - this.setValues('hwb', vals); - } - } else if (typeof obj === 'object') { - vals = obj; - if (vals.r !== undefined || vals.red !== undefined) { - this.setValues('rgb', vals); - } else if (vals.l !== undefined || vals.lightness !== undefined) { - this.setValues('hsl', vals); - } else if (vals.v !== undefined || vals.value !== undefined) { - this.setValues('hsv', vals); - } else if (vals.w !== undefined || vals.whiteness !== undefined) { - this.setValues('hwb', vals); - } else if (vals.c !== undefined || vals.cyan !== undefined) { - this.setValues('cmyk', vals); - } - } -}; - -Color.prototype = { - isValid: function () { - return this.valid; - }, - rgb: function () { - return this.setSpace('rgb', arguments); - }, - hsl: function () { - return this.setSpace('hsl', arguments); - }, - hsv: function () { - return this.setSpace('hsv', arguments); - }, - hwb: function () { - return this.setSpace('hwb', arguments); - }, - cmyk: function () { - return this.setSpace('cmyk', arguments); - }, - - rgbArray: function () { - return this.values.rgb; - }, - hslArray: function () { - return this.values.hsl; - }, - hsvArray: function () { - return this.values.hsv; - }, - hwbArray: function () { - var values = this.values; - if (values.alpha !== 1) { - return values.hwb.concat([values.alpha]); - } - return values.hwb; - }, - cmykArray: function () { - return this.values.cmyk; - }, - rgbaArray: function () { - var values = this.values; - return values.rgb.concat([values.alpha]); - }, - hslaArray: function () { - var values = this.values; - return values.hsl.concat([values.alpha]); - }, - alpha: function (val) { - if (val === undefined) { - return this.values.alpha; - } - this.setValues('alpha', val); - return this; - }, - - red: function (val) { - return this.setChannel('rgb', 0, val); - }, - green: function (val) { - return this.setChannel('rgb', 1, val); - }, - blue: function (val) { - return this.setChannel('rgb', 2, val); - }, - hue: function (val) { - if (val) { - val %= 360; - val = val < 0 ? 360 + val : val; - } - return this.setChannel('hsl', 0, val); - }, - saturation: function (val) { - return this.setChannel('hsl', 1, val); - }, - lightness: function (val) { - return this.setChannel('hsl', 2, val); - }, - saturationv: function (val) { - return this.setChannel('hsv', 1, val); - }, - whiteness: function (val) { - return this.setChannel('hwb', 1, val); - }, - blackness: function (val) { - return this.setChannel('hwb', 2, val); - }, - value: function (val) { - return this.setChannel('hsv', 2, val); - }, - cyan: function (val) { - return this.setChannel('cmyk', 0, val); - }, - magenta: function (val) { - return this.setChannel('cmyk', 1, val); - }, - yellow: function (val) { - return this.setChannel('cmyk', 2, val); - }, - black: function (val) { - return this.setChannel('cmyk', 3, val); - }, - - hexString: function () { - return colorString.hexString(this.values.rgb); - }, - rgbString: function () { - return colorString.rgbString(this.values.rgb, this.values.alpha); - }, - rgbaString: function () { - return colorString.rgbaString(this.values.rgb, this.values.alpha); - }, - percentString: function () { - return colorString.percentString(this.values.rgb, this.values.alpha); - }, - hslString: function () { - return colorString.hslString(this.values.hsl, this.values.alpha); - }, - hslaString: function () { - return colorString.hslaString(this.values.hsl, this.values.alpha); - }, - hwbString: function () { - return colorString.hwbString(this.values.hwb, this.values.alpha); - }, - keyword: function () { - return colorString.keyword(this.values.rgb, this.values.alpha); - }, - - rgbNumber: function () { - var rgb = this.values.rgb; - return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; - }, - - luminosity: function () { - // http://www.w3.org/TR/WCAG20/#relativeluminancedef - var rgb = this.values.rgb; - var lum = []; - for (var i = 0; i < rgb.length; i++) { - var chan = rgb[i] / 255; - lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); - } - return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; - }, - - contrast: function (color2) { - // http://www.w3.org/TR/WCAG20/#contrast-ratiodef - var lum1 = this.luminosity(); - var lum2 = color2.luminosity(); - if (lum1 > lum2) { - return (lum1 + 0.05) / (lum2 + 0.05); - } - return (lum2 + 0.05) / (lum1 + 0.05); - }, - - level: function (color2) { - var contrastRatio = this.contrast(color2); - if (contrastRatio >= 7.1) { - return 'AAA'; - } - - return (contrastRatio >= 4.5) ? 'AA' : ''; - }, - - dark: function () { - // YIQ equation from http://24ways.org/2010/calculating-color-contrast - var rgb = this.values.rgb; - var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; - return yiq < 128; - }, - - light: function () { - return !this.dark(); - }, - - negate: function () { - var rgb = []; - for (var i = 0; i < 3; i++) { - rgb[i] = 255 - this.values.rgb[i]; - } - this.setValues('rgb', rgb); - return this; - }, - - lighten: function (ratio) { - var hsl = this.values.hsl; - hsl[2] += hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - darken: function (ratio) { - var hsl = this.values.hsl; - hsl[2] -= hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - saturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] += hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - desaturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] -= hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - whiten: function (ratio) { - var hwb = this.values.hwb; - hwb[1] += hwb[1] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - blacken: function (ratio) { - var hwb = this.values.hwb; - hwb[2] += hwb[2] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - greyscale: function () { - var rgb = this.values.rgb; - // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale - var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; - this.setValues('rgb', [val, val, val]); - return this; - }, - - clearer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha - (alpha * ratio)); - return this; - }, - - opaquer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha + (alpha * ratio)); - return this; - }, - - rotate: function (degrees) { - var hsl = this.values.hsl; - var hue = (hsl[0] + degrees) % 360; - hsl[0] = hue < 0 ? 360 + hue : hue; - this.setValues('hsl', hsl); - return this; - }, - - /** - * Ported from sass implementation in C - * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 - */ - mix: function (mixinColor, weight) { - var color1 = this; - var color2 = mixinColor; - var p = weight === undefined ? 0.5 : weight; - - var w = 2 * p - 1; - var a = color1.alpha() - color2.alpha(); - - var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - - return this - .rgb( - w1 * color1.red() + w2 * color2.red(), - w1 * color1.green() + w2 * color2.green(), - w1 * color1.blue() + w2 * color2.blue() - ) - .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); - }, - - toJSON: function () { - return this.rgb(); - }, - - clone: function () { - // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, - // making the final build way to big to embed in Chart.js. So let's do it manually, - // assuming that values to clone are 1 dimension arrays containing only numbers, - // except 'alpha' which is a number. - var result = new Color(); - var source = this.values; - var target = result.values; - var value, type; - - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - value = source[prop]; - type = ({}).toString.call(value); - if (type === '[object Array]') { - target[prop] = value.slice(0); - } else if (type === '[object Number]') { - target[prop] = value; - } else { - console.error('unexpected color value:', value); - } - } - } - - return result; - } -}; - -Color.prototype.spaces = { - rgb: ['red', 'green', 'blue'], - hsl: ['hue', 'saturation', 'lightness'], - hsv: ['hue', 'saturation', 'value'], - hwb: ['hue', 'whiteness', 'blackness'], - cmyk: ['cyan', 'magenta', 'yellow', 'black'] -}; - -Color.prototype.maxes = { - rgb: [255, 255, 255], - hsl: [360, 100, 100], - hsv: [360, 100, 100], - hwb: [360, 100, 100], - cmyk: [100, 100, 100, 100] -}; - -Color.prototype.getValues = function (space) { - var values = this.values; - var vals = {}; - - for (var i = 0; i < space.length; i++) { - vals[space.charAt(i)] = values[space][i]; - } - - if (values.alpha !== 1) { - vals.a = values.alpha; - } - - // {r: 255, g: 255, b: 255, a: 0.4} - return vals; -}; - -Color.prototype.setValues = function (space, vals) { - var values = this.values; - var spaces = this.spaces; - var maxes = this.maxes; - var alpha = 1; - var i; - - this.valid = true; - - if (space === 'alpha') { - alpha = vals; - } else if (vals.length) { - // [10, 10, 10] - values[space] = vals.slice(0, space.length); - alpha = vals[space.length]; - } else if (vals[space.charAt(0)] !== undefined) { - // {r: 10, g: 10, b: 10} - for (i = 0; i < space.length; i++) { - values[space][i] = vals[space.charAt(i)]; - } - - alpha = vals.a; - } else if (vals[spaces[space][0]] !== undefined) { - // {red: 10, green: 10, blue: 10} - var chans = spaces[space]; - - for (i = 0; i < space.length; i++) { - values[space][i] = vals[chans[i]]; - } - - alpha = vals.alpha; - } - - values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); - - if (space === 'alpha') { - return false; - } - - var capped; - - // cap values of the space prior converting all values - for (i = 0; i < space.length; i++) { - capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); - values[space][i] = Math.round(capped); - } - - // convert to all the other color spaces - for (var sname in spaces) { - if (sname !== space) { - values[sname] = colorConvert[space][sname](values[space]); - } - } - - return true; -}; - -Color.prototype.setSpace = function (space, args) { - var vals = args[0]; - - if (vals === undefined) { - // color.rgb() - return this.getValues(space); - } - - // color.rgb(10, 10, 10) - if (typeof vals === 'number') { - vals = Array.prototype.slice.call(args); - } - - this.setValues(space, vals); - return this; -}; - -Color.prototype.setChannel = function (space, index, val) { - var svalues = this.values[space]; - if (val === undefined) { - // color.red() - return svalues[index]; - } else if (val === svalues[index]) { - // color.red(color.red()) - return this; - } - - // color.red(100) - svalues[index] = val; - this.setValues(space, svalues); - - return this; -}; - -if (typeof window !== 'undefined') { - window.Color = Color; -} - -var chartjsColor = Color; - -/** - * @namespace Chart.helpers - */ -var helpers = { - /** - * An empty function that can be used, for example, for optional callback. - */ - noop: function() {}, - - /** - * Returns a unique id, sequentially generated from a global variable. - * @returns {number} - * @function - */ - uid: (function() { - var id = 0; - return function() { - return id++; - }; - }()), - - /** - * Returns true if `value` is neither null nor undefined, else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @since 2.7.0 - */ - isNullOrUndef: function(value) { - return value === null || typeof value === 'undefined'; - }, - - /** - * Returns true if `value` is an array (including typed arrays), else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @function - */ - isArray: function(value) { - if (Array.isArray && Array.isArray(value)) { - return true; - } - var type = Object.prototype.toString.call(value); - if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { - return true; - } - return false; - }, - - /** - * Returns true if `value` is an object (excluding null), else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @since 2.7.0 - */ - isObject: function(value) { - return value !== null && Object.prototype.toString.call(value) === '[object Object]'; - }, - - /** - * Returns true if `value` is a finite number, else returns false - * @param {*} value - The value to test. - * @returns {boolean} - */ - isFinite: function(value) { - return (typeof value === 'number' || value instanceof Number) && isFinite(value); - }, - - /** - * Returns `value` if defined, else returns `defaultValue`. - * @param {*} value - The value to return if defined. - * @param {*} defaultValue - The value to return if `value` is undefined. - * @returns {*} - */ - valueOrDefault: function(value, defaultValue) { - return typeof value === 'undefined' ? defaultValue : value; - }, - - /** - * Returns value at the given `index` in array if defined, else returns `defaultValue`. - * @param {Array} value - The array to lookup for value at `index`. - * @param {number} index - The index in `value` to lookup for value. - * @param {*} defaultValue - The value to return if `value[index]` is undefined. - * @returns {*} - */ - valueAtIndexOrDefault: function(value, index, defaultValue) { - return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); - }, - - /** - * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the - * value returned by `fn`. If `fn` is not a function, this method returns undefined. - * @param {function} fn - The function to call. - * @param {Array|undefined|null} args - The arguments with which `fn` should be called. - * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. - * @returns {*} - */ - callback: function(fn, args, thisArg) { - if (fn && typeof fn.call === 'function') { - return fn.apply(thisArg, args); - } - }, - - /** - * Note(SB) for performance sake, this method should only be used when loopable type - * is unknown or in none intensive code (not called often and small loopable). Else - * it's preferable to use a regular for() loop and save extra function calls. - * @param {object|Array} loopable - The object or array to be iterated. - * @param {function} fn - The function to call for each item. - * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. - * @param {boolean} [reverse] - If true, iterates backward on the loopable. - */ - each: function(loopable, fn, thisArg, reverse) { - var i, len, keys; - if (helpers.isArray(loopable)) { - len = loopable.length; - if (reverse) { - for (i = len - 1; i >= 0; i--) { - fn.call(thisArg, loopable[i], i); - } - } else { - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[i], i); - } - } - } else if (helpers.isObject(loopable)) { - keys = Object.keys(loopable); - len = keys.length; - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[keys[i]], keys[i]); - } - } - }, - - /** - * Returns true if the `a0` and `a1` arrays have the same content, else returns false. - * @see https://stackoverflow.com/a/14853974 - * @param {Array} a0 - The array to compare - * @param {Array} a1 - The array to compare - * @returns {boolean} - */ - arrayEquals: function(a0, a1) { - var i, ilen, v0, v1; - - if (!a0 || !a1 || a0.length !== a1.length) { - return false; - } - - for (i = 0, ilen = a0.length; i < ilen; ++i) { - v0 = a0[i]; - v1 = a1[i]; - - if (v0 instanceof Array && v1 instanceof Array) { - if (!helpers.arrayEquals(v0, v1)) { - return false; - } - } else if (v0 !== v1) { - // NOTE: two different object instances will never be equal: {x:20} != {x:20} - return false; - } - } - - return true; - }, - - /** - * Returns a deep copy of `source` without keeping references on objects and arrays. - * @param {*} source - The value to clone. - * @returns {*} - */ - clone: function(source) { - if (helpers.isArray(source)) { - return source.map(helpers.clone); - } - - if (helpers.isObject(source)) { - var target = {}; - var keys = Object.keys(source); - var klen = keys.length; - var k = 0; - - for (; k < klen; ++k) { - target[keys[k]] = helpers.clone(source[keys[k]]); - } - - return target; - } - - return source; - }, - - /** - * The default merger when Chart.helpers.merge is called without merger option. - * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback. - * @private - */ - _merger: function(key, target, source, options) { - var tval = target[key]; - var sval = source[key]; - - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.merge(tval, sval, options); - } else { - target[key] = helpers.clone(sval); - } - }, - - /** - * Merges source[key] in target[key] only if target[key] is undefined. - * @private - */ - _mergerIf: function(key, target, source) { - var tval = target[key]; - var sval = source[key]; - - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.mergeIf(tval, sval); - } else if (!target.hasOwnProperty(key)) { - target[key] = helpers.clone(sval); - } - }, - - /** - * Recursively deep copies `source` properties into `target` with the given `options`. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {object} target - The target object in which all sources are merged into. - * @param {object|object[]} source - Object(s) to merge into `target`. - * @param {object} [options] - Merging options: - * @param {function} [options.merger] - The merge method (key, target, source, options) - * @returns {object} The `target` object. - */ - merge: function(target, source, options) { - var sources = helpers.isArray(source) ? source : [source]; - var ilen = sources.length; - var merge, i, keys, klen, k; - - if (!helpers.isObject(target)) { - return target; - } - - options = options || {}; - merge = options.merger || helpers._merger; - - for (i = 0; i < ilen; ++i) { - source = sources[i]; - if (!helpers.isObject(source)) { - continue; - } - - keys = Object.keys(source); - for (k = 0, klen = keys.length; k < klen; ++k) { - merge(keys[k], target, source, options); - } - } - - return target; - }, - - /** - * Recursively deep copies `source` properties into `target` *only* if not defined in target. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {object} target - The target object in which all sources are merged into. - * @param {object|object[]} source - Object(s) to merge into `target`. - * @returns {object} The `target` object. - */ - mergeIf: function(target, source) { - return helpers.merge(target, source, {merger: helpers._mergerIf}); - }, - - /** - * Applies the contents of two or more objects together into the first object. - * @param {object} target - The target object in which all objects are merged into. - * @param {object} arg1 - Object containing additional properties to merge in target. - * @param {object} argN - Additional objects containing properties to merge in target. - * @returns {object} The `target` object. - */ - extend: function(target) { - var setFn = function(value, key) { - target[key] = value; - }; - for (var i = 1, ilen = arguments.length; i < ilen; ++i) { - helpers.each(arguments[i], setFn); - } - return target; - }, - - /** - * Basic javascript inheritance based on the model created in Backbone.js - */ - inherits: function(extensions) { - var me = this; - var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { - return me.apply(this, arguments); - }; - - var Surrogate = function() { - this.constructor = ChartElement; - }; - - Surrogate.prototype = me.prototype; - ChartElement.prototype = new Surrogate(); - ChartElement.extend = helpers.inherits; - - if (extensions) { - helpers.extend(ChartElement.prototype, extensions); - } - - ChartElement.__super__ = me.prototype; - return ChartElement; - } -}; - -var helpers_core = helpers; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.callback instead. - * @function Chart.helpers.callCallback - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -helpers.callCallback = helpers.callback; - -/** - * Provided for backward compatibility, use Array.prototype.indexOf instead. - * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ - * @function Chart.helpers.indexOf - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.indexOf = function(array, item, fromIndex) { - return Array.prototype.indexOf.call(array, item, fromIndex); -}; - -/** - * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. - * @function Chart.helpers.getValueOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueOrDefault = helpers.valueOrDefault; - -/** - * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. - * @function Chart.helpers.getValueAtIndexOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - -/** - * Easing functions adapted from Robert Penner's easing equations. - * @namespace Chart.helpers.easingEffects - * @see http://www.robertpenner.com/easing/ - */ -var effects = { - linear: function(t) { - return t; - }, - - easeInQuad: function(t) { - return t * t; - }, - - easeOutQuad: function(t) { - return -t * (t - 2); - }, - - easeInOutQuad: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t; - } - return -0.5 * ((--t) * (t - 2) - 1); - }, - - easeInCubic: function(t) { - return t * t * t; - }, - - easeOutCubic: function(t) { - return (t = t - 1) * t * t + 1; - }, - - easeInOutCubic: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t; - } - return 0.5 * ((t -= 2) * t * t + 2); - }, - - easeInQuart: function(t) { - return t * t * t * t; - }, - - easeOutQuart: function(t) { - return -((t = t - 1) * t * t * t - 1); - }, - - easeInOutQuart: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t; - } - return -0.5 * ((t -= 2) * t * t * t - 2); - }, - - easeInQuint: function(t) { - return t * t * t * t * t; - }, - - easeOutQuint: function(t) { - return (t = t - 1) * t * t * t * t + 1; - }, - - easeInOutQuint: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t * t; - } - return 0.5 * ((t -= 2) * t * t * t * t + 2); - }, - - easeInSine: function(t) { - return -Math.cos(t * (Math.PI / 2)) + 1; - }, - - easeOutSine: function(t) { - return Math.sin(t * (Math.PI / 2)); - }, - - easeInOutSine: function(t) { - return -0.5 * (Math.cos(Math.PI * t) - 1); - }, - - easeInExpo: function(t) { - return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); - }, - - easeOutExpo: function(t) { - return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; - }, - - easeInOutExpo: function(t) { - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if ((t /= 0.5) < 1) { - return 0.5 * Math.pow(2, 10 * (t - 1)); - } - return 0.5 * (-Math.pow(2, -10 * --t) + 2); - }, - - easeInCirc: function(t) { - if (t >= 1) { - return t; - } - return -(Math.sqrt(1 - t * t) - 1); - }, - - easeOutCirc: function(t) { - return Math.sqrt(1 - (t = t - 1) * t); - }, - - easeInOutCirc: function(t) { - if ((t /= 0.5) < 1) { - return -0.5 * (Math.sqrt(1 - t * t) - 1); - } - return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, - - easeInElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - }, - - easeOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; - }, - - easeInOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if ((t /= 0.5) === 2) { - return 1; - } - if (!p) { - p = 0.45; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - if (t < 1) { - return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - } - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - easeInBack: function(t) { - var s = 1.70158; - return t * t * ((s + 1) * t - s); - }, - - easeOutBack: function(t) { - var s = 1.70158; - return (t = t - 1) * t * ((s + 1) * t + s) + 1; - }, - - easeInOutBack: function(t) { - var s = 1.70158; - if ((t /= 0.5) < 1) { - return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); - } - return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); - }, - - easeInBounce: function(t) { - return 1 - effects.easeOutBounce(1 - t); - }, - - easeOutBounce: function(t) { - if (t < (1 / 2.75)) { - return 7.5625 * t * t; - } - if (t < (2 / 2.75)) { - return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; - } - if (t < (2.5 / 2.75)) { - return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; - } - return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; - }, - - easeInOutBounce: function(t) { - if (t < 0.5) { - return effects.easeInBounce(t * 2) * 0.5; - } - return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; - } -}; - -var helpers_easing = { - effects: effects -}; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.easing.effects instead. - * @function Chart.helpers.easingEffects - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.easingEffects = effects; - -var PI = Math.PI; -var RAD_PER_DEG = PI / 180; -var DOUBLE_PI = PI * 2; -var HALF_PI = PI / 2; -var QUARTER_PI = PI / 4; -var TWO_THIRDS_PI = PI * 2 / 3; - -/** - * @namespace Chart.helpers.canvas - */ -var exports$1 = { - /** - * Clears the entire canvas associated to the given `chart`. - * @param {Chart} chart - The chart for which to clear the canvas. - */ - clear: function(chart) { - chart.ctx.clearRect(0, 0, chart.width, chart.height); - }, - - /** - * Creates a "path" for a rectangle with rounded corners at position (x, y) with a - * given size (width, height) and the same `radius` for all corners. - * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. - * @param {number} x - The x axis of the coordinate for the rectangle starting point. - * @param {number} y - The y axis of the coordinate for the rectangle starting point. - * @param {number} width - The rectangle's width. - * @param {number} height - The rectangle's height. - * @param {number} radius - The rounded amount (in pixels) for the four corners. - * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? - */ - roundedRect: function(ctx, x, y, width, height, radius) { - if (radius) { - var r = Math.min(radius, height / 2, width / 2); - var left = x + r; - var top = y + r; - var right = x + width - r; - var bottom = y + height - r; - - ctx.moveTo(x, top); - if (left < right && top < bottom) { - ctx.arc(left, top, r, -PI, -HALF_PI); - ctx.arc(right, top, r, -HALF_PI, 0); - ctx.arc(right, bottom, r, 0, HALF_PI); - ctx.arc(left, bottom, r, HALF_PI, PI); - } else if (left < right) { - ctx.moveTo(left, y); - ctx.arc(right, top, r, -HALF_PI, HALF_PI); - ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); - } else if (top < bottom) { - ctx.arc(left, top, r, -PI, 0); - ctx.arc(left, bottom, r, 0, PI); - } else { - ctx.arc(left, top, r, -PI, PI); - } - ctx.closePath(); - ctx.moveTo(x, y); - } else { - ctx.rect(x, y, width, height); - } - }, - - drawPoint: function(ctx, style, radius, x, y, rotation) { - var type, xOffset, yOffset, size, cornerRadius; - var rad = (rotation || 0) * RAD_PER_DEG; - - if (style && typeof style === 'object') { - type = style.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); - return; - } - } - - if (isNaN(radius) || radius <= 0) { - return; - } - - ctx.beginPath(); - - switch (style) { - // Default includes circle - default: - ctx.arc(x, y, radius, 0, DOUBLE_PI); - ctx.closePath(); - break; - case 'triangle': - ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - ctx.closePath(); - break; - case 'rectRounded': - // NOTE: the rounded rect implementation changed to use `arc` instead of - // `quadraticCurveTo` since it generates better results when rect is - // almost a circle. 0.516 (instead of 0.5) produces results with visually - // closer proportion to the previous impl and it is inscribed in the - // circle with `radius`. For more details, see the following PRs: - // https://github.com/chartjs/Chart.js/issues/5597 - // https://github.com/chartjs/Chart.js/issues/5858 - cornerRadius = radius * 0.516; - size = radius - cornerRadius; - xOffset = Math.cos(rad + QUARTER_PI) * size; - yOffset = Math.sin(rad + QUARTER_PI) * size; - ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); - ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); - ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); - ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); - ctx.closePath(); - break; - case 'rect': - if (!rotation) { - size = Math.SQRT1_2 * radius; - ctx.rect(x - size, y - size, 2 * size, 2 * size); - break; - } - rad += QUARTER_PI; - /* falls through */ - case 'rectRot': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + yOffset, y - xOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.lineTo(x - yOffset, y + xOffset); - ctx.closePath(); - break; - case 'crossRot': - rad += QUARTER_PI; - /* falls through */ - case 'cross': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - break; - case 'star': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - rad += QUARTER_PI; - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - break; - case 'line': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - break; - case 'dash': - ctx.moveTo(x, y); - ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); - break; - } - - ctx.fill(); - ctx.stroke(); - }, - - /** - * Returns true if the point is inside the rectangle - * @param {object} point - The point to test - * @param {object} area - The rectangle - * @returns {boolean} - * @private - */ - _isPointInArea: function(point, area) { - var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. - - return point.x > area.left - epsilon && point.x < area.right + epsilon && - point.y > area.top - epsilon && point.y < area.bottom + epsilon; - }, - - clipArea: function(ctx, area) { - ctx.save(); - ctx.beginPath(); - ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); - ctx.clip(); - }, - - unclipArea: function(ctx) { - ctx.restore(); - }, - - lineTo: function(ctx, previous, target, flip) { - var stepped = target.steppedLine; - if (stepped) { - if (stepped === 'middle') { - var midpoint = (previous.x + target.x) / 2.0; - ctx.lineTo(midpoint, flip ? target.y : previous.y); - ctx.lineTo(midpoint, flip ? previous.y : target.y); - } else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) { - ctx.lineTo(previous.x, target.y); - } else { - ctx.lineTo(target.x, previous.y); - } - ctx.lineTo(target.x, target.y); - return; - } - - if (!target.tension) { - ctx.lineTo(target.x, target.y); - return; - } - - ctx.bezierCurveTo( - flip ? previous.controlPointPreviousX : previous.controlPointNextX, - flip ? previous.controlPointPreviousY : previous.controlPointNextY, - flip ? target.controlPointNextX : target.controlPointPreviousX, - flip ? target.controlPointNextY : target.controlPointPreviousY, - target.x, - target.y); - } -}; - -var helpers_canvas = exports$1; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. - * @namespace Chart.helpers.clear - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.clear = exports$1.clear; - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. - * @namespace Chart.helpers.drawRoundedRectangle - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.drawRoundedRectangle = function(ctx) { - ctx.beginPath(); - exports$1.roundedRect.apply(exports$1, arguments); -}; - -var defaults = { - /** - * @private - */ - _set: function(scope, values) { - return helpers_core.merge(this[scope] || (this[scope] = {}), values); - } -}; - -defaults._set('global', { - defaultColor: 'rgba(0,0,0,0.1)', - defaultFontColor: '#666', - defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - defaultFontSize: 12, - defaultFontStyle: 'normal', - defaultLineHeight: 1.2, - showLines: true -}); - -var core_defaults = defaults; - -var valueOrDefault = helpers_core.valueOrDefault; - -/** - * Converts the given font object into a CSS font string. - * @param {object} font - A font object. - * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font - * @private - */ -function toFontString(font) { - if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) { - return null; - } - - return (font.style ? font.style + ' ' : '') - + (font.weight ? font.weight + ' ' : '') - + font.size + 'px ' - + font.family; -} - -/** - * @alias Chart.helpers.options - * @namespace - */ -var helpers_options = { - /** - * Converts the given line height `value` in pixels for a specific font `size`. - * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). - * @param {number} size - The font size (in pixels) used to resolve relative `value`. - * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid). - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height - * @since 2.7.0 - */ - toLineHeight: function(value, size) { - var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); - if (!matches || matches[1] === 'normal') { - return size * 1.2; - } - - value = +matches[2]; - - switch (matches[3]) { - case 'px': - return value; - case '%': - value /= 100; - break; - default: - break; - } - - return size * value; - }, - - /** - * Converts the given value into a padding object with pre-computed width/height. - * @param {number|object} value - If a number, set the value to all TRBL component, - * else, if and object, use defined properties and sets undefined ones to 0. - * @returns {object} The padding values (top, right, bottom, left, width, height) - * @since 2.7.0 - */ - toPadding: function(value) { - var t, r, b, l; - - if (helpers_core.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } - - return { - top: t, - right: r, - bottom: b, - left: l, - height: t + b, - width: l + r - }; - }, - - /** - * Parses font options and returns the font object. - * @param {object} options - A object that contains font options to be parsed. - * @return {object} The font object. - * @todo Support font.* options and renamed to toFont(). - * @private - */ - _parseFont: function(options) { - var globalDefaults = core_defaults.global; - var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); - var font = { - family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily), - lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size), - size: size, - style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle), - weight: null, - string: '' - }; - - font.string = toFontString(font); - return font; - }, - - /** - * Evaluates the given `inputs` sequentially and returns the first defined value. - * @param {Array} inputs - An array of values, falling back to the last value. - * @param {object} [context] - If defined and the current value is a function, the value - * is called with `context` as first argument and the result becomes the new input. - * @param {number} [index] - If defined and the current value is an array, the value - * at `index` become the new input. - * @since 2.7.0 - */ - resolve: function(inputs, context, index) { - var i, ilen, value; - - for (i = 0, ilen = inputs.length; i < ilen; ++i) { - value = inputs[i]; - if (value === undefined) { - continue; - } - if (context !== undefined && typeof value === 'function') { - value = value(context); - } - if (index !== undefined && helpers_core.isArray(value)) { - value = value[index]; - } - if (value !== undefined) { - return value; - } - } - } -}; - -var helpers$1 = helpers_core; -var easing = helpers_easing; -var canvas = helpers_canvas; -var options = helpers_options; -helpers$1.easing = easing; -helpers$1.canvas = canvas; -helpers$1.options = options; - -function interpolate(start, view, model, ease) { - var keys = Object.keys(model); - var i, ilen, key, actual, origin, target, type, c0, c1; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - - target = model[key]; - - // if a value is added to the model after pivot() has been called, the view - // doesn't contain it, so let's initialize the view to the target value. - if (!view.hasOwnProperty(key)) { - view[key] = target; - } - - actual = view[key]; - - if (actual === target || key[0] === '_') { - continue; - } - - if (!start.hasOwnProperty(key)) { - start[key] = actual; - } - - origin = start[key]; - - type = typeof target; - - if (type === typeof origin) { - if (type === 'string') { - c0 = chartjsColor(origin); - if (c0.valid) { - c1 = chartjsColor(target); - if (c1.valid) { - view[key] = c1.mix(c0, ease).rgbString(); - continue; - } - } - } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) { - view[key] = origin + (target - origin) * ease; - continue; - } - } - - view[key] = target; - } -} - -var Element = function(configuration) { - helpers$1.extend(this, configuration); - this.initialize.apply(this, arguments); -}; - -helpers$1.extend(Element.prototype, { - - initialize: function() { - this.hidden = false; - }, - - pivot: function() { - var me = this; - if (!me._view) { - me._view = helpers$1.clone(me._model); - } - me._start = {}; - return me; - }, - - transition: function(ease) { - var me = this; - var model = me._model; - var start = me._start; - var view = me._view; - - // No animation -> No Transition - if (!model || ease === 1) { - me._view = model; - me._start = null; - return me; - } - - if (!view) { - view = me._view = {}; - } - - if (!start) { - start = me._start = {}; - } - - interpolate(start, view, model, ease); - - return me; - }, - - tooltipPosition: function() { - return { - x: this._model.x, - y: this._model.y - }; - }, - - hasValue: function() { - return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y); - } -}); - -Element.extend = helpers$1.inherits; - -var core_element = Element; - -var exports$2 = core_element.extend({ - chart: null, // the animation associated chart instance - currentStep: 0, // the current animation step - numSteps: 60, // default number of steps - easing: '', // the easing to use for this animation - render: null, // render function used by the animation service - - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null, // user specified callback to fire when the animation finishes -}); - -var core_animation = exports$2; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.Animation instead - * @prop Chart.Animation#animationObject - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports$2.prototype, 'animationObject', { - get: function() { - return this; - } -}); - -/** - * Provided for backward compatibility, use Chart.Animation#chart instead - * @prop Chart.Animation#chartInstance - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports$2.prototype, 'chartInstance', { - get: function() { - return this.chart; - }, - set: function(value) { - this.chart = value; - } -}); - -core_defaults._set('global', { - animation: { - duration: 1000, - easing: 'easeOutQuart', - onProgress: helpers$1.noop, - onComplete: helpers$1.noop - } -}); - -var core_animations = { - animations: [], - request: null, - - /** - * @param {Chart} chart - The chart to animate. - * @param {Chart.Animation} animation - The animation that we will animate. - * @param {number} duration - The animation duration in ms. - * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions - */ - addAnimation: function(chart, animation, duration, lazy) { - var animations = this.animations; - var i, ilen; - - animation.chart = chart; - animation.startTime = Date.now(); - animation.duration = duration; - - if (!lazy) { - chart.animating = true; - } - - for (i = 0, ilen = animations.length; i < ilen; ++i) { - if (animations[i].chart === chart) { - animations[i] = animation; - return; - } - } - - animations.push(animation); - - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (animations.length === 1) { - this.requestAnimationFrame(); - } - }, - - cancelAnimation: function(chart) { - var index = helpers$1.findIndex(this.animations, function(animation) { - return animation.chart === chart; - }); - - if (index !== -1) { - this.animations.splice(index, 1); - chart.animating = false; - } - }, - - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers$1.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); - }); - } - }, - - /** - * @private - */ - startDigest: function() { - var me = this; - - me.advance(); - - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - }, - - /** - * @private - */ - advance: function() { - var animations = this.animations; - var animation, chart, numSteps, nextStep; - var i = 0; - - // 1 animation per chart, so we are looping charts here - while (i < animations.length) { - animation = animations[i]; - chart = animation.chart; - numSteps = animation.numSteps; - - // Make sure that currentStep starts at 1 - // https://github.com/chartjs/Chart.js/issues/6104 - nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1; - animation.currentStep = Math.min(nextStep, numSteps); - - helpers$1.callback(animation.render, [chart, animation], chart); - helpers$1.callback(animation.onAnimationProgress, [animation], chart); - - if (animation.currentStep >= numSteps) { - helpers$1.callback(animation.onAnimationComplete, [animation], chart); - chart.animating = false; - animations.splice(i, 1); - } else { - ++i; - } - } - } -}; - -var resolve = helpers$1.options.resolve; - -var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; - -/** - * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', - * 'unshift') and notify the listener AFTER the array has been altered. Listeners are - * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. - */ -function listenArrayEvents(array, listener) { - if (array._chartjs) { - array._chartjs.listeners.push(listener); - return; - } - - Object.defineProperty(array, '_chartjs', { - configurable: true, - enumerable: false, - value: { - listeners: [listener] - } - }); - - arrayEvents.forEach(function(key) { - var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); - var base = array[key]; - - Object.defineProperty(array, key, { - configurable: true, - enumerable: false, - value: function() { - var args = Array.prototype.slice.call(arguments); - var res = base.apply(this, args); - - helpers$1.each(array._chartjs.listeners, function(object) { - if (typeof object[method] === 'function') { - object[method].apply(object, args); - } - }); - - return res; - } - }); - }); -} - -/** - * Removes the given array event listener and cleanup extra attached properties (such as - * the _chartjs stub and overridden methods) if array doesn't have any more listeners. - */ -function unlistenArrayEvents(array, listener) { - var stub = array._chartjs; - if (!stub) { - return; - } - - var listeners = stub.listeners; - var index = listeners.indexOf(listener); - if (index !== -1) { - listeners.splice(index, 1); - } - - if (listeners.length > 0) { - return; - } - - arrayEvents.forEach(function(key) { - delete array[key]; - }); - - delete array._chartjs; -} - -// Base class for all dataset controllers (line, bar, etc) -var DatasetController = function(chart, datasetIndex) { - this.initialize(chart, datasetIndex); -}; - -helpers$1.extend(DatasetController.prototype, { - - /** - * Element type used to generate a meta dataset (e.g. Chart.element.Line). - * @type {Chart.core.element} - */ - datasetElementType: null, - - /** - * Element type used to generate a meta data (e.g. Chart.element.Point). - * @type {Chart.core.element} - */ - dataElementType: null, - - initialize: function(chart, datasetIndex) { - var me = this; - me.chart = chart; - me.index = datasetIndex; - me.linkScales(); - me.addElements(); - }, - - updateIndex: function(datasetIndex) { - this.index = datasetIndex; - }, - - linkScales: function() { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); - - if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { - meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; - } - if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { - meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; - } - }, - - getDataset: function() { - return this.chart.data.datasets[this.index]; - }, - - getMeta: function() { - return this.chart.getDatasetMeta(this.index); - }, - - getScaleForId: function(scaleID) { - return this.chart.scales[scaleID]; - }, - - /** - * @private - */ - _getValueScaleId: function() { - return this.getMeta().yAxisID; - }, - - /** - * @private - */ - _getIndexScaleId: function() { - return this.getMeta().xAxisID; - }, - - /** - * @private - */ - _getValueScale: function() { - return this.getScaleForId(this._getValueScaleId()); - }, - - /** - * @private - */ - _getIndexScale: function() { - return this.getScaleForId(this._getIndexScaleId()); - }, - - reset: function() { - this.update(true); - }, - - /** - * @private - */ - destroy: function() { - if (this._data) { - unlistenArrayEvents(this._data, this); - } - }, - - createMetaDataset: function() { - var me = this; - var type = me.datasetElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index - }); - }, - - createMetaData: function(index) { - var me = this; - var type = me.dataElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index, - _index: index - }); - }, - - addElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data || []; - var metaData = meta.data; - var i, ilen; - - for (i = 0, ilen = data.length; i < ilen; ++i) { - metaData[i] = metaData[i] || me.createMetaData(i); - } - - meta.dataset = meta.dataset || me.createMetaDataset(); - }, - - addElementAndReset: function(index) { - var element = this.createMetaData(index); - this.getMeta().data.splice(index, 0, element); - this.updateElement(element, index, true); - }, - - buildOrUpdateElements: function() { - var me = this; - var dataset = me.getDataset(); - var data = dataset.data || (dataset.data = []); - - // In order to correctly handle data addition/deletion animation (an thus simulate - // real-time charts), we need to monitor these data modifications and synchronize - // the internal meta data accordingly. - if (me._data !== data) { - if (me._data) { - // This case happens when the user replaced the data array instance. - unlistenArrayEvents(me._data, me); - } - - if (data && Object.isExtensible(data)) { - listenArrayEvents(data, me); - } - me._data = data; - } - - // Re-sync meta data in case the user replaced the data array or if we missed - // any updates and so make sure that we handle number of datapoints changing. - me.resyncElements(); - }, - - update: helpers$1.noop, - - transition: function(easingValue) { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; - - for (; i < ilen; ++i) { - elements[i].transition(easingValue); - } - - if (meta.dataset) { - meta.dataset.transition(easingValue); - } - }, - - draw: function() { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; - - if (meta.dataset) { - meta.dataset.draw(); - } - - for (; i < ilen; ++i) { - elements[i].draw(); - } - }, - - removeHoverStyle: function(element) { - helpers$1.merge(element._model, element.$previousStyle || {}); - delete element.$previousStyle; - }, - - setHoverStyle: function(element) { - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var model = element._model; - var getHoverColor = helpers$1.getHoverColor; - - element.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth - }; - - model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); - model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index); - model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index); - }, - - /** - * @private - */ - resyncElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data; - var numMeta = meta.data.length; - var numData = data.length; - - if (numData < numMeta) { - meta.data.splice(numData, numMeta - numData); - } else if (numData > numMeta) { - me.insertElements(numMeta, numData - numMeta); - } - }, - - /** - * @private - */ - insertElements: function(start, count) { - for (var i = 0; i < count; ++i) { - this.addElementAndReset(start + i); - } - }, - - /** - * @private - */ - onDataPush: function() { - var count = arguments.length; - this.insertElements(this.getDataset().data.length - count, count); - }, - - /** - * @private - */ - onDataPop: function() { - this.getMeta().data.pop(); - }, - - /** - * @private - */ - onDataShift: function() { - this.getMeta().data.shift(); - }, - - /** - * @private - */ - onDataSplice: function(start, count) { - this.getMeta().data.splice(start, count); - this.insertElements(start, arguments.length - 2); - }, - - /** - * @private - */ - onDataUnshift: function() { - this.insertElements(0, arguments.length); - } -}); - -DatasetController.extend = helpers$1.inherits; - -var core_datasetController = DatasetController; - -core_defaults._set('global', { - elements: { - arc: { - backgroundColor: core_defaults.global.defaultColor, - borderColor: '#fff', - borderWidth: 2, - borderAlign: 'center' - } - } -}); - -var element_arc = core_element.extend({ - inLabelRange: function(mouseX) { - var vm = this._view; - - if (vm) { - return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); - } - return false; - }, - - inRange: function(chartX, chartY) { - var vm = this._view; - - if (vm) { - var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY}); - var angle = pointRelativePosition.angle; - var distance = pointRelativePosition.distance; - - // Sanitise angle range - var startAngle = vm.startAngle; - var endAngle = vm.endAngle; - while (endAngle < startAngle) { - endAngle += 2.0 * Math.PI; - } - while (angle > endAngle) { - angle -= 2.0 * Math.PI; - } - while (angle < startAngle) { - angle += 2.0 * Math.PI; - } - - // Check if within the range of the open/close angle - var betweenAngles = (angle >= startAngle && angle <= endAngle); - var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); - - return (betweenAngles && withinRadius); - } - return false; - }, - - getCenterPoint: function() { - var vm = this._view; - var halfAngle = (vm.startAngle + vm.endAngle) / 2; - var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; - return { - x: vm.x + Math.cos(halfAngle) * halfRadius, - y: vm.y + Math.sin(halfAngle) * halfRadius - }; - }, - - getArea: function() { - var vm = this._view; - return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); - }, - - tooltipPosition: function() { - var vm = this._view; - var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); - var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; - - return { - x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), - y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) - }; - }, - - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var sA = vm.startAngle; - var eA = vm.endAngle; - var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; - var angleMargin; - - ctx.save(); - - ctx.beginPath(); - ctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - ctx.closePath(); - - ctx.fillStyle = vm.backgroundColor; - ctx.fill(); - - if (vm.borderWidth) { - if (vm.borderAlign === 'inner') { - // Draw an inner border by cliping the arc and drawing a double-width border - // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders - ctx.beginPath(); - angleMargin = pixelMargin / vm.outerRadius; - ctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin); - if (vm.innerRadius > pixelMargin) { - angleMargin = pixelMargin / vm.innerRadius; - ctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true); - } else { - ctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2); - } - ctx.closePath(); - ctx.clip(); - - ctx.beginPath(); - ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - ctx.closePath(); - - ctx.lineWidth = vm.borderWidth * 2; - ctx.lineJoin = 'round'; - } else { - ctx.lineWidth = vm.borderWidth; - ctx.lineJoin = 'bevel'; - } - - ctx.strokeStyle = vm.borderColor; - ctx.stroke(); - } - - ctx.restore(); - } -}); - -var valueOrDefault$1 = helpers$1.valueOrDefault; - -var defaultColor = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - line: { - tension: 0.4, - backgroundColor: defaultColor, - borderWidth: 3, - borderColor: defaultColor, - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - capBezierPoints: true, - fill: true, // do we fill in the area between the line and its base axis - } - } -}); - -var element_line = core_element.extend({ - draw: function() { - var me = this; - var vm = me._view; - var ctx = me._chart.ctx; - var spanGaps = vm.spanGaps; - var points = me._children.slice(); // clone array - var globalDefaults = core_defaults.global; - var globalOptionLineElements = globalDefaults.elements.line; - var lastDrawnIndex = -1; - var index, current, previous, currentVM; - - // If we are looping, adding the first point again - if (me._loop && points.length) { - points.push(points[0]); - } - - ctx.save(); - - // Stroke Line Options - ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; - - // IE 9 and 10 do not support line dash - if (ctx.setLineDash) { - ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); - } - - ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset); - ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; - ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth); - ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; - - // Stroke Line - ctx.beginPath(); - lastDrawnIndex = -1; - - for (index = 0; index < points.length; ++index) { - current = points[index]; - previous = helpers$1.previousItem(points, index); - currentVM = current._view; - - // First point moves to it's starting position no matter what - if (index === 0) { - if (!currentVM.skip) { - ctx.moveTo(currentVM.x, currentVM.y); - lastDrawnIndex = index; - } - } else { - previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; - - if (!currentVM.skip) { - if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { - // There was a gap and this is the first point after the gap - ctx.moveTo(currentVM.x, currentVM.y); - } else { - // Line to next point - helpers$1.canvas.lineTo(ctx, previous._view, current._view); - } - lastDrawnIndex = index; - } - } - } - - ctx.stroke(); - ctx.restore(); - } -}); - -var valueOrDefault$2 = helpers$1.valueOrDefault; - -var defaultColor$1 = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - point: { - radius: 3, - pointStyle: 'circle', - backgroundColor: defaultColor$1, - borderColor: defaultColor$1, - borderWidth: 1, - // Hover - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1 - } - } -}); - -function xRange(mouseX) { - var vm = this._view; - return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; -} - -function yRange(mouseY) { - var vm = this._view; - return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; -} - -var element_point = core_element.extend({ - inRange: function(mouseX, mouseY) { - var vm = this._view; - return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; - }, - - inLabelRange: xRange, - inXRange: xRange, - inYRange: yRange, - - getCenterPoint: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - }, - - getArea: function() { - return Math.PI * Math.pow(this._view.radius, 2); - }, - - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y, - padding: vm.radius + vm.borderWidth - }; - }, - - draw: function(chartArea) { - var vm = this._view; - var ctx = this._chart.ctx; - var pointStyle = vm.pointStyle; - var rotation = vm.rotation; - var radius = vm.radius; - var x = vm.x; - var y = vm.y; - var globalDefaults = core_defaults.global; - var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow - - if (vm.skip) { - return; - } - - // Clipping for Points. - if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) { - ctx.strokeStyle = vm.borderColor || defaultColor; - ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth); - ctx.fillStyle = vm.backgroundColor || defaultColor; - helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); - } - } -}); - -var defaultColor$2 = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - rectangle: { - backgroundColor: defaultColor$2, - borderColor: defaultColor$2, - borderSkipped: 'bottom', - borderWidth: 0 - } - } -}); - -function isVertical(vm) { - return vm && vm.width !== undefined; -} - -/** - * Helper function to get the bounds of the bar regardless of the orientation - * @param bar {Chart.Element.Rectangle} the bar - * @return {Bounds} bounds of the bar - * @private - */ -function getBarBounds(vm) { - var x1, x2, y1, y2, half; - - if (isVertical(vm)) { - half = vm.width / 2; - x1 = vm.x - half; - x2 = vm.x + half; - y1 = Math.min(vm.y, vm.base); - y2 = Math.max(vm.y, vm.base); - } else { - half = vm.height / 2; - x1 = Math.min(vm.x, vm.base); - x2 = Math.max(vm.x, vm.base); - y1 = vm.y - half; - y2 = vm.y + half; - } - - return { - left: x1, - top: y1, - right: x2, - bottom: y2 - }; -} - -function swap(orig, v1, v2) { - return orig === v1 ? v2 : orig === v2 ? v1 : orig; -} - -function parseBorderSkipped(vm) { - var edge = vm.borderSkipped; - var res = {}; - - if (!edge) { - return res; - } - - if (vm.horizontal) { - if (vm.base > vm.x) { - edge = swap(edge, 'left', 'right'); - } - } else if (vm.base < vm.y) { - edge = swap(edge, 'bottom', 'top'); - } - - res[edge] = true; - return res; -} - -function parseBorderWidth(vm, maxW, maxH) { - var value = vm.borderWidth; - var skip = parseBorderSkipped(vm); - var t, r, b, l; - - if (helpers$1.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } - - return { - t: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t, - r: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r, - b: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b, - l: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l - }; -} - -function boundingRects(vm) { - var bounds = getBarBounds(vm); - var width = bounds.right - bounds.left; - var height = bounds.bottom - bounds.top; - var border = parseBorderWidth(vm, width / 2, height / 2); - - return { - outer: { - x: bounds.left, - y: bounds.top, - w: width, - h: height - }, - inner: { - x: bounds.left + border.l, - y: bounds.top + border.t, - w: width - border.l - border.r, - h: height - border.t - border.b - } - }; -} - -function inRange(vm, x, y) { - var skipX = x === null; - var skipY = y === null; - var bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm); - - return bounds - && (skipX || x >= bounds.left && x <= bounds.right) - && (skipY || y >= bounds.top && y <= bounds.bottom); -} - -var element_rectangle = core_element.extend({ - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var rects = boundingRects(vm); - var outer = rects.outer; - var inner = rects.inner; - - ctx.fillStyle = vm.backgroundColor; - ctx.fillRect(outer.x, outer.y, outer.w, outer.h); - - if (outer.w === inner.w && outer.h === inner.h) { - return; - } - - ctx.save(); - ctx.beginPath(); - ctx.rect(outer.x, outer.y, outer.w, outer.h); - ctx.clip(); - ctx.fillStyle = vm.borderColor; - ctx.rect(inner.x, inner.y, inner.w, inner.h); - ctx.fill('evenodd'); - ctx.restore(); - }, - - height: function() { - var vm = this._view; - return vm.base - vm.y; - }, - - inRange: function(mouseX, mouseY) { - return inRange(this._view, mouseX, mouseY); - }, - - inLabelRange: function(mouseX, mouseY) { - var vm = this._view; - return isVertical(vm) - ? inRange(vm, mouseX, null) - : inRange(vm, null, mouseY); - }, - - inXRange: function(mouseX) { - return inRange(this._view, mouseX, null); - }, - - inYRange: function(mouseY) { - return inRange(this._view, null, mouseY); - }, - - getCenterPoint: function() { - var vm = this._view; - var x, y; - if (isVertical(vm)) { - x = vm.x; - y = (vm.y + vm.base) / 2; - } else { - x = (vm.x + vm.base) / 2; - y = vm.y; - } - - return {x: x, y: y}; - }, - - getArea: function() { - var vm = this._view; - - return isVertical(vm) - ? vm.width * Math.abs(vm.y - vm.base) - : vm.height * Math.abs(vm.x - vm.base); - }, - - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - } -}); - -var elements = {}; -var Arc = element_arc; -var Line = element_line; -var Point = element_point; -var Rectangle = element_rectangle; -elements.Arc = Arc; -elements.Line = Line; -elements.Point = Point; -elements.Rectangle = Rectangle; - -var resolve$1 = helpers$1.options.resolve; - -core_defaults._set('bar', { - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - categoryPercentage: 0.8, - barPercentage: 0.9, - offset: true, - gridLines: { - offsetGridLines: true - } - }], - - yAxes: [{ - type: 'linear' - }] - } -}); - -/** - * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. - * @private - */ -function computeMinSampleSize(scale, pixels) { - var min = scale.isHorizontal() ? scale.width : scale.height; - var ticks = scale.getTicks(); - var prev, curr, i, ilen; - - for (i = 1, ilen = pixels.length; i < ilen; ++i) { - min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1])); - } - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - curr = scale.getPixelForTick(i); - min = i > 0 ? Math.min(min, curr - prev) : min; - prev = curr; - } - - return min; -} - -/** - * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, - * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This - * mode currently always generates bars equally sized (until we introduce scriptable options?). - * @private - */ -function computeFitCategoryTraits(index, ruler, options) { - var thickness = options.barThickness; - var count = ruler.stackCount; - var curr = ruler.pixels[index]; - var size, ratio; - - if (helpers$1.isNullOrUndef(thickness)) { - size = ruler.min * options.categoryPercentage; - ratio = options.barPercentage; - } else { - // When bar thickness is enforced, category and bar percentages are ignored. - // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') - // and deprecate barPercentage since this value is ignored when thickness is absolute. - size = thickness * count; - ratio = 1; - } - - return { - chunk: size / count, - ratio: ratio, - start: curr - (size / 2) - }; -} - -/** - * Computes an "optimal" category that globally arranges bars side by side (no gap when - * percentage options are 1), based on the previous and following categories. This mode - * generates bars with different widths when data are not evenly spaced. - * @private - */ -function computeFlexCategoryTraits(index, ruler, options) { - var pixels = ruler.pixels; - var curr = pixels[index]; - var prev = index > 0 ? pixels[index - 1] : null; - var next = index < pixels.length - 1 ? pixels[index + 1] : null; - var percent = options.categoryPercentage; - var start, size; - - if (prev === null) { - // first data: its size is double based on the next point or, - // if it's also the last data, we use the scale size. - prev = curr - (next === null ? ruler.end - ruler.start : next - curr); - } - - if (next === null) { - // last data: its size is also double based on the previous point. - next = curr + curr - prev; - } - - start = curr - (curr - Math.min(prev, next)) / 2 * percent; - size = Math.abs(next - prev) / 2 * percent; - - return { - chunk: size / ruler.stackCount, - ratio: options.barPercentage, - start: start - }; -} - -var controller_bar = core_datasetController.extend({ - - dataElementType: elements.Rectangle, - - initialize: function() { - var me = this; - var meta; - - core_datasetController.prototype.initialize.apply(me, arguments); - - meta = me.getMeta(); - meta.stack = me.getDataset().stack; - meta.bar = true; - }, - - update: function(reset) { - var me = this; - var rects = me.getMeta().data; - var i, ilen; - - me._ruler = me.getRuler(); - - for (i = 0, ilen = rects.length; i < ilen; ++i) { - me.updateElement(rects[i], i, reset); - } - }, - - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); - var options = me._resolveElementOptions(rectangle, index); - - rectangle._xScale = me.getScaleForId(meta.xAxisID); - rectangle._yScale = me.getScaleForId(meta.yAxisID); - rectangle._datasetIndex = me.index; - rectangle._index = index; - rectangle._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderSkipped: options.borderSkipped, - borderWidth: options.borderWidth, - datasetLabel: dataset.label, - label: me.chart.data.labels[index] - }; - - me._updateElementGeometry(rectangle, index, reset); - - rectangle.pivot(); - }, - - /** - * @private - */ - _updateElementGeometry: function(rectangle, index, reset) { - var me = this; - var model = rectangle._model; - var vscale = me._getValueScale(); - var base = vscale.getBasePixel(); - var horizontal = vscale.isHorizontal(); - var ruler = me._ruler || me.getRuler(); - var vpixels = me.calculateBarValuePixels(me.index, index); - var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); - - model.horizontal = horizontal; - model.base = reset ? base : vpixels.base; - model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; - model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; - model.height = horizontal ? ipixels.size : undefined; - model.width = horizontal ? undefined : ipixels.size; - }, - - /** - * Returns the stacks based on groups and bar visibility. - * @param {number} [last] - The dataset index - * @returns {string[]} The list of stack IDs - * @private - */ - _getStacks: function(last) { - var me = this; - var chart = me.chart; - var scale = me._getIndexScale(); - var stacked = scale.options.stacked; - var ilen = last === undefined ? chart.data.datasets.length : last + 1; - var stacks = []; - var i, meta; - - for (i = 0; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - if (meta.bar && chart.isDatasetVisible(i) && - (stacked === false || - (stacked === true && stacks.indexOf(meta.stack) === -1) || - (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { - stacks.push(meta.stack); - } - } - - return stacks; - }, - - /** - * Returns the effective number of stacks based on groups and bar visibility. - * @private - */ - getStackCount: function() { - return this._getStacks().length; - }, - - /** - * Returns the stack index for the given dataset based on groups and bar visibility. - * @param {number} [datasetIndex] - The dataset index - * @param {string} [name] - The stack name to find - * @returns {number} The stack index - * @private - */ - getStackIndex: function(datasetIndex, name) { - var stacks = this._getStacks(datasetIndex); - var index = (name !== undefined) - ? stacks.indexOf(name) - : -1; // indexOf returns -1 if element is not present - - return (index === -1) - ? stacks.length - 1 - : index; - }, - - /** - * @private - */ - getRuler: function() { - var me = this; - var scale = me._getIndexScale(); - var stackCount = me.getStackCount(); - var datasetIndex = me.index; - var isHorizontal = scale.isHorizontal(); - var start = isHorizontal ? scale.left : scale.top; - var end = start + (isHorizontal ? scale.width : scale.height); - var pixels = []; - var i, ilen, min; - - for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { - pixels.push(scale.getPixelForValue(null, i, datasetIndex)); - } - - min = helpers$1.isNullOrUndef(scale.options.barThickness) - ? computeMinSampleSize(scale, pixels) - : -1; - - return { - min: min, - pixels: pixels, - start: start, - end: end, - stackCount: stackCount, - scale: scale - }; - }, - - /** - * Note: pixel values are not clamped to the scale area. - * @private - */ - calculateBarValuePixels: function(datasetIndex, index) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var scale = me._getValueScale(); - var isHorizontal = scale.isHorizontal(); - var datasets = chart.data.datasets; - var value = +scale.getRightValue(datasets[datasetIndex].data[index]); - var minBarLength = scale.options.minBarLength; - var stacked = scale.options.stacked; - var stack = meta.stack; - var start = 0; - var i, imeta, ivalue, base, head, size; - - if (stacked || (stacked === undefined && stack !== undefined)) { - for (i = 0; i < datasetIndex; ++i) { - imeta = chart.getDatasetMeta(i); - - if (imeta.bar && - imeta.stack === stack && - imeta.controller._getValueScaleId() === scale.id && - chart.isDatasetVisible(i)) { - - ivalue = +scale.getRightValue(datasets[i].data[index]); - if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { - start += ivalue; - } - } - } - } - - base = scale.getPixelForValue(start); - head = scale.getPixelForValue(start + value); - size = head - base; - - if (minBarLength !== undefined && Math.abs(size) < minBarLength) { - size = minBarLength; - if (value >= 0 && !isHorizontal || value < 0 && isHorizontal) { - head = base - minBarLength; - } else { - head = base + minBarLength; - } - } - - return { - size: size, - base: base, - head: head, - center: head + size / 2 - }; - }, - - /** - * @private - */ - calculateBarIndexPixels: function(datasetIndex, index, ruler) { - var me = this; - var options = ruler.scale.options; - var range = options.barThickness === 'flex' - ? computeFlexCategoryTraits(index, ruler, options) - : computeFitCategoryTraits(index, ruler, options); - - var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); - var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); - var size = Math.min( - helpers$1.valueOrDefault(options.maxBarThickness, Infinity), - range.chunk * range.ratio); - - return { - base: center - size / 2, - head: center + size / 2, - center: center, - size: size - }; - }, - - draw: function() { - var me = this; - var chart = me.chart; - var scale = me._getValueScale(); - var rects = me.getMeta().data; - var dataset = me.getDataset(); - var ilen = rects.length; - var i = 0; - - helpers$1.canvas.clipArea(chart.ctx, chart.chartArea); - - for (; i < ilen; ++i) { - if (!isNaN(scale.getRightValue(dataset.data[i]))) { - rects[i].draw(); - } - } - - helpers$1.canvas.unclipArea(chart.ctx); - }, - - /** - * @private - */ - _resolveElementOptions: function(rectangle, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = rectangle.custom || {}; - var options = chart.options.elements.rectangle; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderSkipped', - 'borderWidth' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$1([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - } -}); - -var valueOrDefault$3 = helpers$1.valueOrDefault; -var resolve$2 = helpers$1.options.resolve; - -core_defaults._set('bubble', { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - type: 'linear', // bubble should probably use a linear scale by default - position: 'bottom', - id: 'x-axis-0' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-0' - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - var dataPoint = data.datasets[item.datasetIndex].data[item.index]; - return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; - } - } - } -}); - -var controller_bubble = core_datasetController.extend({ - /** - * @protected - */ - dataElementType: elements.Point, - - /** - * @protected - */ - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; - - // Update Points - helpers$1.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, - - /** - * @protected - */ - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var options = me._resolveElementOptions(point, index); - var data = me.getDataset().data[index]; - var dsIndex = me.index; - - var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); - var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); - - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = dsIndex; - point._index = index; - point._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - hitRadius: options.hitRadius, - pointStyle: options.pointStyle, - rotation: options.rotation, - radius: reset ? 0 : options.radius, - skip: custom.skip || isNaN(x) || isNaN(y), - x: x, - y: y, - }; - - point.pivot(); - }, - - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$3(options.hoverBorderWidth, options.borderWidth); - model.radius = options.radius + options.hoverRadius; - }, - - /** - * @private - */ - _resolveElementOptions: function(point, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = point.custom || {}; - var options = chart.options.elements.point; - var data = dataset.data[index]; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - 'hoverRadius', - 'hitRadius', - 'pointStyle', - 'rotation' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$2([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - // Custom radius resolution - values.radius = resolve$2([ - custom.radius, - data ? data.r : undefined, - dataset.radius, - options.radius - ], context, index); - - return values; - } -}); - -var resolve$3 = helpers$1.options.resolve; -var valueOrDefault$4 = helpers$1.valueOrDefault; - -core_defaults._set('doughnut', { - animation: { - // Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - // Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var arcOpts = chart.options.elements.arc; - var fill = resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); - var stroke = resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); - var bw = resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - // toggle visibility of index if exists - if (meta.data[index]) { - meta.data[index].hidden = !meta.data[index].hidden; - } - } - - chart.update(); - } - }, - - // The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, - - // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, - - // The total circumference of the chart. - circumference: Math.PI * 2.0, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - var dataLabel = data.labels[tooltipItem.index]; - var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - - if (helpers$1.isArray(dataLabel)) { - // show value on first line of multiline label - // need to clone because we are changing the value - dataLabel = dataLabel.slice(); - dataLabel[0] += value; - } else { - dataLabel += value; - } - - return dataLabel; - } - } - } -}); - -var controller_doughnut = core_datasetController.extend({ - - dataElementType: elements.Arc, - - linkScales: helpers$1.noop, - - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; - - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } - - return ringIndex; - }, - - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var availableWidth = chartArea.right - chartArea.left; - var availableHeight = chartArea.bottom - chartArea.top; - var minSize = Math.min(availableWidth, availableHeight); - var offset = {x: 0, y: 0}; - var meta = me.getMeta(); - var arcs = meta.data; - var cutoutPercentage = opts.cutoutPercentage; - var circumference = opts.circumference; - var chartWeight = me._getRingWeight(me.index); - var i, ilen; - - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arcs[i]._options = me._resolveElementOptions(arcs[i], i); - } - - chart.borderWidth = me.getMaxBorderWidth(); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; - - meta.total = me.calculateTotal(); - - me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index); - me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0); - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - me.updateElement(arcs[i], i, reset); - } - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var animationOpts = opts.animation; - var centerX = (chartArea.left + chartArea.right) / 2; - var centerY = (chartArea.top + chartArea.bottom) / 2; - var startAngle = opts.rotation; // non reset case handled later - var endAngle = opts.rotation; // non reset case handled later - var dataset = me.getDataset(); - var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); - var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; - var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; - var options = arc._options || {}; - - helpers$1.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - borderAlign: options.borderAlign, - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); - - var model = arc._model; - - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } - - model.endAngle = model.startAngle + model.circumference; - } - - arc.pivot(); - }, - - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; - - helpers$1.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); - - /* if (total === 0) { - total = NaN; - }*/ - - return total; - }, - - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (Math.abs(value) / total); - } - return 0; - }, - - // gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function(arcs) { - var me = this; - var max = 0; - var chart = me.chart; - var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; - - if (!arcs) { - // Find the outmost visible dataset - for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - meta = chart.getDatasetMeta(i); - arcs = meta.data; - if (i !== me.index) { - controller = meta.controller; - } - break; - } - } - } - - if (!arcs) { - return 0; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arc = arcs[i]; - options = controller ? controller._resolveElementOptions(arc, i) : arc._options; - if (options.borderAlign !== 'inner') { - borderWidth = options.borderWidth; - hoverWidth = options.hoverBorderWidth; - - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; - } - } - return max; - }, - - /** - * @protected - */ - setHoverStyle: function(arc) { - var model = arc._model; - var options = arc._options; - var getHoverColor = helpers$1.getHoverColor; - - arc.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - }; - - model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth); - }, - - /** - * @private - */ - _resolveElementOptions: function(arc, index) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var custom = arc.custom || {}; - var options = chart.options.elements.arc; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'borderAlign', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$3([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly - * @private - */ - _getRingWeightOffset: function(datasetIndex) { - var ringWeightOffset = 0; - - for (var i = 0; i < datasetIndex; ++i) { - if (this.chart.isDatasetVisible(i)) { - ringWeightOffset += this._getRingWeight(i); - } - } - - return ringWeightOffset; - }, - - /** - * @private - */ - _getRingWeight: function(dataSetIndex) { - return Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0); - }, - - /** - * Returns the sum of all visibile data set weights. This value can be 0. - * @private - */ - _getVisibleDatasetWeightTotal: function() { - return this._getRingWeightOffset(this.chart.data.datasets.length); - } -}); - -core_defaults._set('horizontalBar', { - hover: { - mode: 'index', - axis: 'y' - }, - - scales: { - xAxes: [{ - type: 'linear', - position: 'bottom' - }], - - yAxes: [{ - type: 'category', - position: 'left', - categoryPercentage: 0.8, - barPercentage: 0.9, - offset: true, - gridLines: { - offsetGridLines: true - } - }] - }, - - elements: { - rectangle: { - borderSkipped: 'left' - } - }, - - tooltips: { - mode: 'index', - axis: 'y' - } -}); - -var controller_horizontalBar = controller_bar.extend({ - /** - * @private - */ - _getValueScaleId: function() { - return this.getMeta().xAxisID; - }, - - /** - * @private - */ - _getIndexScaleId: function() { - return this.getMeta().yAxisID; - } -}); - -var valueOrDefault$5 = helpers$1.valueOrDefault; -var resolve$4 = helpers$1.options.resolve; -var isPointInArea = helpers$1.canvas._isPointInArea; - -core_defaults._set('line', { - showLines: true, - spanGaps: false, - - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - id: 'x-axis-0' - }], - yAxes: [{ - type: 'linear', - id: 'y-axis-0' - }] - } -}); - -function lineEnabled(dataset, options) { - return valueOrDefault$5(dataset.showLine, options.showLines); -} - -var controller_line = core_datasetController.extend({ - - datasetElementType: elements.Line, - - dataElementType: elements.Point, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var scale = me.getScaleForId(meta.yAxisID); - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, me.chart.options); - var i, ilen; - - // Update Line - if (showLine) { - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = me._resolveLineOptions(line); - - line.pivot(); - } - - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } - - if (showLine && line._model.tension !== 0) { - me.updateBezierControlPoints(); - } - - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, - - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var dataset = me.getDataset(); - var datasetIndex = me.index; - var value = dataset.data[index]; - var yScale = me.getScaleForId(meta.yAxisID); - var xScale = me.getScaleForId(meta.xAxisID); - var lineModel = meta.dataset._model; - var x, y; - - var options = me._resolvePointOptions(point, index); - - x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); - y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); - - // Utility - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = datasetIndex; - point._index = index; - - // Desired view properties - point._model = { - x: x, - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: options.radius, - pointStyle: options.pointStyle, - rotation: options.rotation, - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - tension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension : 0), - steppedLine: lineModel ? lineModel.steppedLine : false, - // Tooltip - hitRadius: options.hitRadius - }; - }, - - /** - * @private - */ - _resolvePointOptions: function(element, index) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.point; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var ELEMENT_OPTIONS = { - backgroundColor: 'pointBackgroundColor', - borderColor: 'pointBorderColor', - borderWidth: 'pointBorderWidth', - hitRadius: 'pointHitRadius', - hoverBackgroundColor: 'pointHoverBackgroundColor', - hoverBorderColor: 'pointHoverBorderColor', - hoverBorderWidth: 'pointHoverBorderWidth', - hoverRadius: 'pointHoverRadius', - pointStyle: 'pointStyle', - radius: 'pointRadius', - rotation: 'pointRotation' - }; - var keys = Object.keys(ELEMENT_OPTIONS); - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$4([ - custom[key], - dataset[ELEMENT_OPTIONS[key]], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _resolveLineOptions: function(element) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options; - var elementOptions = options.elements.line; - var values = {}; - var i, ilen, key; - - var keys = [ - 'backgroundColor', - 'borderWidth', - 'borderColor', - 'borderCapStyle', - 'borderDash', - 'borderDashOffset', - 'borderJoinStyle', - 'fill', - 'cubicInterpolationMode' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$4([ - custom[key], - dataset[key], - elementOptions[key] - ]); - } - - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives lines the ability to span gaps - values.spanGaps = valueOrDefault$5(dataset.spanGaps, options.spanGaps); - values.tension = valueOrDefault$5(dataset.lineTension, elementOptions.tension); - values.steppedLine = resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]); - - return values; - }, - - calculatePointY: function(value, index, datasetIndex) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var sumPos = 0; - var sumNeg = 0; - var i, ds, dsMeta; - - if (yScale.options.stacked) { - for (i = 0; i < datasetIndex; i++) { - ds = chart.data.datasets[i]; - dsMeta = chart.getDatasetMeta(i); - if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); - if (stackedRightValue < 0) { - sumNeg += stackedRightValue || 0; - } else { - sumPos += stackedRightValue || 0; - } - } - } - - var rightValue = Number(yScale.getRightValue(value)); - if (rightValue < 0) { - return yScale.getPixelForValue(sumNeg + rightValue); - } - return yScale.getPixelForValue(sumPos + rightValue); - } - - return yScale.getPixelForValue(value); - }, - - updateBezierControlPoints: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var lineModel = meta.dataset._model; - var area = chart.chartArea; - var points = meta.data || []; - var i, ilen, model, controlPoints; - - // Only consider points that are drawn in case the spanGaps option is used - if (lineModel.spanGaps) { - points = points.filter(function(pt) { - return !pt._model.skip; - }); - } - - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } - - if (lineModel.cubicInterpolationMode === 'monotone') { - helpers$1.splineCurveMonotone(points); - } else { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - controlPoints = helpers$1.splineCurve( - helpers$1.previousItem(points, i)._model, - model, - helpers$1.nextItem(points, i)._model, - lineModel.tension - ); - model.controlPointPreviousX = controlPoints.previous.x; - model.controlPointPreviousY = controlPoints.previous.y; - model.controlPointNextX = controlPoints.next.x; - model.controlPointNextY = controlPoints.next.y; - } - } - - if (chart.options.elements.line.capBezierPoints) { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - if (isPointInArea(model, area)) { - if (i > 0 && isPointInArea(points[i - 1]._model, area)) { - model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); - model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); - } - if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) { - model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); - model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); - } - } - } - } - }, - - draw: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var points = meta.data || []; - var area = chart.chartArea; - var ilen = points.length; - var halfBorderWidth; - var i = 0; - - if (lineEnabled(me.getDataset(), chart.options)) { - halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; - - helpers$1.canvas.clipArea(chart.ctx, { - left: area.left, - right: area.right, - top: area.top - halfBorderWidth, - bottom: area.bottom + halfBorderWidth - }); - - meta.dataset.draw(); - - helpers$1.canvas.unclipArea(chart.ctx); - } - - // Draw the points - for (; i < ilen; ++i) { - points[i].draw(area); - } - }, - - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth); - model.radius = valueOrDefault$5(options.hoverRadius, options.radius); - }, -}); - -var resolve$5 = helpers$1.options.resolve; - -core_defaults._set('polarArea', { - scale: { - type: 'radialLinear', - angleLines: { - display: false - }, - gridLines: { - circular: true - }, - pointLabels: { - display: false - }, - ticks: { - beginAtZero: true - } - }, - - // Boolean - Whether to animate the rotation of the chart - animation: { - animateRotate: true, - animateScale: true - }, - - startAngle: -0.5 * Math.PI, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var arcOpts = chart.options.elements.arc; - var fill = resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); - var stroke = resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); - var bw = resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; - } - - chart.update(); - } - }, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(item, data) { - return data.labels[item.index] + ': ' + item.yLabel; - } - } - } -}); - -var controller_polarArea = core_datasetController.extend({ - - dataElementType: elements.Arc, - - linkScales: helpers$1.noop, - - update: function(reset) { - var me = this; - var dataset = me.getDataset(); - var meta = me.getMeta(); - var start = me.chart.options.startAngle || 0; - var starts = me._starts = []; - var angles = me._angles = []; - var arcs = meta.data; - var i, ilen, angle; - - me._updateRadius(); - - meta.count = me.countVisibleElements(); - - for (i = 0, ilen = dataset.data.length; i < ilen; i++) { - starts[i] = start; - angle = me._computeAngle(i); - angles[i] = angle; - start += angle; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arcs[i]._options = me._resolveElementOptions(arcs[i], i); - me.updateElement(arcs[i], i, reset); - } - }, - - /** - * @private - */ - _updateRadius: function() { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - - chart.outerRadius = Math.max(minSize / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var labels = chart.data.labels; - - var centerX = scale.xCenter; - var centerY = scale.yCenter; - - // var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = me._starts[index]; - var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); - - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var options = arc._options || {}; - - helpers$1.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - borderAlign: options.borderAlign, - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index]) - } - }); - - arc.pivot(); - }, - - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; - - helpers$1.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; - } - }); - - return count; - }, - - /** - * @protected - */ - setHoverStyle: function(arc) { - var model = arc._model; - var options = arc._options; - var getHoverColor = helpers$1.getHoverColor; - var valueOrDefault = helpers$1.valueOrDefault; - - arc.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - }; - - model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); - }, - - /** - * @private - */ - _resolveElementOptions: function(arc, index) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var custom = arc.custom || {}; - var options = chart.options.elements.arc; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'borderAlign', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$5([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _computeAngle: function(index) { - var me = this; - var count = this.getMeta().count; - var dataset = me.getDataset(); - var meta = me.getMeta(); - - if (isNaN(dataset.data[index]) || meta.data[index].hidden) { - return 0; - } - - // Scriptable options - var context = { - chart: me.chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - return resolve$5([ - me.chart.options.elements.arc.angle, - (2 * Math.PI) / count - ], context, index); - } -}); - -core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut)); -core_defaults._set('pie', { - cutoutPercentage: 0 -}); - -// Pie charts are Doughnut chart with different defaults -var controller_pie = controller_doughnut; - -var valueOrDefault$6 = helpers$1.valueOrDefault; -var resolve$6 = helpers$1.options.resolve; - -core_defaults._set('radar', { - scale: { - type: 'radialLinear' - }, - elements: { - line: { - tension: 0 // no bezier in radar - } - } -}); - -var controller_radar = core_datasetController.extend({ - - datasetElementType: elements.Line, - - dataElementType: elements.Point, - - linkScales: helpers$1.noop, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var scale = me.chart.scale; - var dataset = me.getDataset(); - var i, ilen; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - line._loop = true; - // Model - line._model = me._resolveLineOptions(line); - - line.pivot(); - - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } - - // Update bezier control points - me.updateBezierControlPoints(); - - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, - - updateElement: function(point, index, reset) { - var me = this; - var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - var options = me._resolvePointOptions(point, index); - var lineModel = me.getMeta().dataset._model; - var x = reset ? scale.xCenter : pointPosition.x; - var y = reset ? scale.yCenter : pointPosition.y; - - // Utility - point._scale = scale; - point._options = options; - point._datasetIndex = me.index; - point._index = index; - - // Desired view properties - point._model = { - x: x, // value not used in dataset scale, but we want a consistent API between scales - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: options.radius, - pointStyle: options.pointStyle, - rotation: options.rotation, - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0), - - // Tooltip - hitRadius: options.hitRadius - }; - }, - - /** - * @private - */ - _resolvePointOptions: function(element, index) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.point; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var ELEMENT_OPTIONS = { - backgroundColor: 'pointBackgroundColor', - borderColor: 'pointBorderColor', - borderWidth: 'pointBorderWidth', - hitRadius: 'pointHitRadius', - hoverBackgroundColor: 'pointHoverBackgroundColor', - hoverBorderColor: 'pointHoverBorderColor', - hoverBorderWidth: 'pointHoverBorderWidth', - hoverRadius: 'pointHoverRadius', - pointStyle: 'pointStyle', - radius: 'pointRadius', - rotation: 'pointRotation' - }; - var keys = Object.keys(ELEMENT_OPTIONS); - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$6([ - custom[key], - dataset[ELEMENT_OPTIONS[key]], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _resolveLineOptions: function(element) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.line; - var values = {}; - var i, ilen, key; - - var keys = [ - 'backgroundColor', - 'borderWidth', - 'borderColor', - 'borderCapStyle', - 'borderDash', - 'borderDashOffset', - 'borderJoinStyle', - 'fill' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$6([ - custom[key], - dataset[key], - options[key] - ]); - } - - values.tension = valueOrDefault$6(dataset.lineTension, options.tension); - - return values; - }, - - updateBezierControlPoints: function() { - var me = this; - var meta = me.getMeta(); - var area = me.chart.chartArea; - var points = meta.data || []; - var i, ilen, model, controlPoints; - - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } - - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - controlPoints = helpers$1.splineCurve( - helpers$1.previousItem(points, i, true)._model, - model, - helpers$1.nextItem(points, i, true)._model, - model.tension - ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); - model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); - model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); - model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); - } - }, - - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth); - model.radius = valueOrDefault$6(options.hoverRadius, options.radius); - } -}); - -core_defaults._set('scatter', { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - id: 'x-axis-1', // need an ID so datasets can reference the scale - type: 'linear', // scatter should not use a category axis - position: 'bottom' - }], - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left' - }] - }, - - showLines: false, - - tooltips: { - callbacks: { - title: function() { - return ''; // doesn't make sense for scatter since data are formatted as a point - }, - label: function(item) { - return '(' + item.xLabel + ', ' + item.yLabel + ')'; - } - } - } -}); - -// Scatter charts use line controllers -var controller_scatter = controller_line; - -// NOTE export a map in which the key represents the controller type, not -// the class, and so must be CamelCase in order to be correctly retrieved -// by the controller in core.controller.js (`controllers[meta.type]`). - -var controllers = { - bar: controller_bar, - bubble: controller_bubble, - doughnut: controller_doughnut, - horizontalBar: controller_horizontalBar, - line: controller_line, - polarArea: controller_polarArea, - pie: controller_pie, - radar: controller_radar, - scatter: controller_scatter -}; - -/** - * Helper function to get relative position for an event - * @param {Event|IEvent} event - The event to get the position for - * @param {Chart} chart - The chart - * @returns {object} the event position - */ -function getRelativePosition(e, chart) { - if (e.native) { - return { - x: e.x, - y: e.y - }; - } - - return helpers$1.getRelativePosition(e, chart); -} - -/** - * Helper function to traverse all of the visible elements in the chart - * @param {Chart} chart - the chart - * @param {function} handler - the callback to execute for each visible item - */ -function parseVisibleItems(chart, handler) { - var datasets = chart.data.datasets; - var meta, i, j, ilen, jlen; - - for (i = 0, ilen = datasets.length; i < ilen; ++i) { - if (!chart.isDatasetVisible(i)) { - continue; - } - - meta = chart.getDatasetMeta(i); - for (j = 0, jlen = meta.data.length; j < jlen; ++j) { - var element = meta.data[j]; - if (!element._view.skip) { - handler(element); - } - } - } -} - -/** - * Helper function to get the items that intersect the event position - * @param {ChartElement[]} items - elements to filter - * @param {object} position - the point to be nearest to - * @return {ChartElement[]} the nearest items - */ -function getIntersectItems(chart, position) { - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - } - }); - - return elements; -} - -/** - * Helper function to get the items nearest to the event position considering all visible items in teh chart - * @param {Chart} chart - the chart to look at elements from - * @param {object} position - the point to be nearest to - * @param {boolean} intersect - if true, only consider items that intersect the position - * @param {function} distanceMetric - function to provide the distance between points - * @return {ChartElement[]} the nearest items - */ -function getNearestItems(chart, position, intersect, distanceMetric) { - var minDistance = Number.POSITIVE_INFINITY; - var nearestItems = []; - - parseVisibleItems(chart, function(element) { - if (intersect && !element.inRange(position.x, position.y)) { - return; - } - - var center = element.getCenterPoint(); - var distance = distanceMetric(position, center); - if (distance < minDistance) { - nearestItems = [element]; - minDistance = distance; - } else if (distance === minDistance) { - // Can have multiple items at the same distance in which case we sort by size - nearestItems.push(element); - } - }); - - return nearestItems; -} - -/** - * Get a distance metric function for two points based on the - * axis mode setting - * @param {string} axis - the axis mode. x|y|xy - */ -function getDistanceMetricForAxis(axis) { - var useX = axis.indexOf('x') !== -1; - var useY = axis.indexOf('y') !== -1; - - return function(pt1, pt2) { - var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; - var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; - return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); - }; -} - -function indexMode(chart, e, options) { - var position = getRelativePosition(e, chart); - // Default axis for index mode is 'x' to match old behaviour - options.axis = options.axis || 'x'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - var elements = []; - - if (!items.length) { - return []; - } - - chart.data.datasets.forEach(function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - var element = meta.data[items[0]._index]; - - // don't count items that are skipped (null data) - if (element && !element._view.skip) { - elements.push(element); - } - } - }); - - return elements; -} - -/** - * @interface IInteractionOptions - */ -/** - * If true, only consider items that intersect the point - * @name IInterfaceOptions#boolean - * @type Boolean - */ - -/** - * Contains interaction related functions - * @namespace Chart.Interaction - */ -var core_interaction = { - // Helper function for different modes - modes: { - single: function(chart, e) { - var position = getRelativePosition(e, chart); - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - return elements; - } - }); - - return elements.slice(0, 1); - }, - - /** - * @function Chart.Interaction.modes.label - * @deprecated since version 2.4.0 - * @todo remove at version 3 - * @private - */ - label: indexMode, - - /** - * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item - * @function Chart.Interaction.modes.index - * @since v2.4.0 - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - index: indexMode, - - /** - * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect is false, we find the nearest item and return the items in that dataset - * @function Chart.Interaction.modes.dataset - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - dataset: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - - if (items.length > 0) { - items = chart.getDatasetMeta(items[0]._datasetIndex).data; - } - - return items; - }, - - /** - * @function Chart.Interaction.modes.x-axis - * @deprecated since version 2.4.0. Use index mode and intersect == true - * @todo remove at version 3 - * @private - */ - 'x-axis': function(chart, e) { - return indexMode(chart, e, {intersect: false}); - }, - - /** - * Point mode returns all elements that hit test based on the event position - * of the event - * @function Chart.Interaction.modes.intersect - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - point: function(chart, e) { - var position = getRelativePosition(e, chart); - return getIntersectItems(chart, position); - }, - - /** - * nearest mode returns the element closest to the point - * @function Chart.Interaction.modes.intersect - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - nearest: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - return getNearestItems(chart, position, options.intersect, distanceMetric); - }, - - /** - * x mode returns the elements that hit-test at the current x coordinate - * @function Chart.Interaction.modes.x - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - x: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; - - parseVisibleItems(chart, function(element) { - if (element.inXRange(position.x)) { - items.push(element); - } - - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); - - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; - } - return items; - }, - - /** - * y mode returns the elements that hit-test at the current y coordinate - * @function Chart.Interaction.modes.y - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - y: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; - - parseVisibleItems(chart, function(element) { - if (element.inYRange(position.y)) { - items.push(element); - } - - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); - - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; - } - return items; - } - } -}; - -function filterByPosition(array, position) { - return helpers$1.where(array, function(v) { - return v.position === position; - }); -} - -function sortByWeight(array, reverse) { - array.forEach(function(v, i) { - v._tmpIndex_ = i; - return v; - }); - array.sort(function(a, b) { - var v0 = reverse ? b : a; - var v1 = reverse ? a : b; - return v0.weight === v1.weight ? - v0._tmpIndex_ - v1._tmpIndex_ : - v0.weight - v1.weight; - }); - array.forEach(function(v) { - delete v._tmpIndex_; - }); -} - -function findMaxPadding(boxes) { - var top = 0; - var left = 0; - var bottom = 0; - var right = 0; - helpers$1.each(boxes, function(box) { - if (box.getPadding) { - var boxPadding = box.getPadding(); - top = Math.max(top, boxPadding.top); - left = Math.max(left, boxPadding.left); - bottom = Math.max(bottom, boxPadding.bottom); - right = Math.max(right, boxPadding.right); - } - }); - return { - top: top, - left: left, - bottom: bottom, - right: right - }; -} - -function addSizeByPosition(boxes, size) { - helpers$1.each(boxes, function(box) { - size[box.position] += box.isHorizontal() ? box.height : box.width; - }); -} - -core_defaults._set('global', { - layout: { - padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - } -}); - -/** - * @interface ILayoutItem - * @prop {string} position - The position of the item in the chart layout. Possible values are - * 'left', 'top', 'right', 'bottom', and 'chartArea' - * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area - * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down - * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) - * @prop {function} update - Takes two parameters: width and height. Returns size of item - * @prop {function} getPadding - Returns an object with padding on the edges - * @prop {number} width - Width of item. Must be valid after update() - * @prop {number} height - Height of item. Must be valid after update() - * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update - * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update - * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update - * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update - */ - -// The layout service is very self explanatory. It's responsible for the layout within a chart. -// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need -// It is this service's responsibility of carrying out that layout. -var core_layouts = { - defaults: {}, - - /** - * Register a box to a chart. - * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. - * @param {Chart} chart - the chart to use - * @param {ILayoutItem} item - the item to add to be layed out - */ - addBox: function(chart, item) { - if (!chart.boxes) { - chart.boxes = []; - } - - // initialize item with default values - item.fullWidth = item.fullWidth || false; - item.position = item.position || 'top'; - item.weight = item.weight || 0; - - chart.boxes.push(item); - }, - - /** - * Remove a layoutItem from a chart - * @param {Chart} chart - the chart to remove the box from - * @param {ILayoutItem} layoutItem - the item to remove from the layout - */ - removeBox: function(chart, layoutItem) { - var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; - if (index !== -1) { - chart.boxes.splice(index, 1); - } - }, - - /** - * Sets (or updates) options on the given `item`. - * @param {Chart} chart - the chart in which the item lives (or will be added to) - * @param {ILayoutItem} item - the item to configure with the given options - * @param {object} options - the new item options. - */ - configure: function(chart, item, options) { - var props = ['fullWidth', 'position', 'weight']; - var ilen = props.length; - var i = 0; - var prop; - - for (; i < ilen; ++i) { - prop = props[i]; - if (options.hasOwnProperty(prop)) { - item[prop] = options[prop]; - } - } - }, - - /** - * Fits boxes of the given chart into the given size by having each box measure itself - * then running a fitting algorithm - * @param {Chart} chart - the chart - * @param {number} width - the width to fit into - * @param {number} height - the height to fit into - */ - update: function(chart, width, height) { - if (!chart) { - return; - } - - var layoutOptions = chart.options.layout || {}; - var padding = helpers$1.options.toPadding(layoutOptions.padding); - var leftPadding = padding.left; - var rightPadding = padding.right; - var topPadding = padding.top; - var bottomPadding = padding.bottom; - - var leftBoxes = filterByPosition(chart.boxes, 'left'); - var rightBoxes = filterByPosition(chart.boxes, 'right'); - var topBoxes = filterByPosition(chart.boxes, 'top'); - var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); - var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); - - // Sort boxes by weight. A higher weight is further away from the chart area - sortByWeight(leftBoxes, true); - sortByWeight(rightBoxes, false); - sortByWeight(topBoxes, true); - sortByWeight(bottomBoxes, false); - - var verticalBoxes = leftBoxes.concat(rightBoxes); - var horizontalBoxes = topBoxes.concat(bottomBoxes); - var outerBoxes = verticalBoxes.concat(horizontalBoxes); - - // Essentially we now have any number of boxes on each of the 4 sides. - // Our canvas looks like the following. - // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and - // B1 is the bottom axis - // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays - // These locations are single-box locations only, when trying to register a chartArea location that is already taken, - // an error will be thrown. - // - // |----------------------------------------------------| - // | T1 (Full Width) | - // |----------------------------------------------------| - // | | | T2 | | - // | |----|-------------------------------------|----| - // | | | C1 | | C2 | | - // | | |----| |----| | - // | | | | | - // | L1 | L2 | ChartArea (C0) | R1 | - // | | | | | - // | | |----| |----| | - // | | | C3 | | C4 | | - // | |----|-------------------------------------|----| - // | | | B1 | | - // |----------------------------------------------------| - // | B2 (Full Width) | - // |----------------------------------------------------| - // - // What we do to find the best sizing, we do the following - // 1. Determine the minimum size of the chart area. - // 2. Split the remaining width equally between each vertical axis - // 3. Split the remaining height equally between each horizontal axis - // 4. Give each layout the maximum size it can be. The layout will return it's minimum size - // 5. Adjust the sizes of each axis based on it's minimum reported size. - // 6. Refit each axis - // 7. Position each axis in the final location - // 8. Tell the chart the final location of the chart area - // 9. Tell any axes that overlay the chart area the positions of the chart area - - // Step 1 - var chartWidth = width - leftPadding - rightPadding; - var chartHeight = height - topPadding - bottomPadding; - var chartAreaWidth = chartWidth / 2; // min 50% - - // Step 2 - var verticalBoxWidth = (width - chartAreaWidth) / verticalBoxes.length; - - // Step 3 - // TODO re-limit horizontal axis height (this limit has affected only padding calculation since PR 1837) - // var horizontalBoxHeight = (height - chartAreaHeight) / horizontalBoxes.length; - - // Step 4 - var maxChartAreaWidth = chartWidth; - var maxChartAreaHeight = chartHeight; - var outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; - var minBoxSizes = []; - var maxPadding; - - function getMinimumBoxSize(box) { - var minSize; - var isHorizontal = box.isHorizontal(); - - if (isHorizontal) { - minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2); - maxChartAreaHeight -= minSize.height; - } else { - minSize = box.update(verticalBoxWidth, maxChartAreaHeight); - maxChartAreaWidth -= minSize.width; - } - - minBoxSizes.push({ - horizontal: isHorizontal, - width: minSize.width, - box: box, - }); - } - - helpers$1.each(outerBoxes, getMinimumBoxSize); - - // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) - maxPadding = findMaxPadding(outerBoxes); - - // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could - // be if the axes are drawn at their minimum sizes. - // Steps 5 & 6 - - // Function to fit a box - function fitBox(box) { - var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minBox) { - return minBox.box === box; - }); - - if (minBoxSize) { - if (minBoxSize.horizontal) { - var scaleMargin = { - left: Math.max(outerBoxSizes.left, maxPadding.left), - right: Math.max(outerBoxSizes.right, maxPadding.right), - top: 0, - bottom: 0 - }; - - // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends - // on the margin. Sometimes they need to increase in size slightly - box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); - } else { - box.update(minBoxSize.width, maxChartAreaHeight); - } - } - } - - // Update, and calculate the left and right margins for the horizontal boxes - helpers$1.each(verticalBoxes, fitBox); - addSizeByPosition(verticalBoxes, outerBoxSizes); - - // Set the Left and Right margins for the horizontal boxes - helpers$1.each(horizontalBoxes, fitBox); - addSizeByPosition(horizontalBoxes, outerBoxSizes); - - function finalFitVerticalBox(box) { - var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minSize) { - return minSize.box === box; - }); - - var scaleMargin = { - left: 0, - right: 0, - top: outerBoxSizes.top, - bottom: outerBoxSizes.bottom - }; - - if (minBoxSize) { - box.update(minBoxSize.width, maxChartAreaHeight, scaleMargin); - } - } - - // Let the left layout know the final margin - helpers$1.each(verticalBoxes, finalFitVerticalBox); - - // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) - outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; - addSizeByPosition(outerBoxes, outerBoxSizes); - - // We may be adding some padding to account for rotated x axis labels - var leftPaddingAddition = Math.max(maxPadding.left - outerBoxSizes.left, 0); - outerBoxSizes.left += leftPaddingAddition; - outerBoxSizes.right += Math.max(maxPadding.right - outerBoxSizes.right, 0); - - var topPaddingAddition = Math.max(maxPadding.top - outerBoxSizes.top, 0); - outerBoxSizes.top += topPaddingAddition; - outerBoxSizes.bottom += Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0); - - // Figure out if our chart area changed. This would occur if the dataset layout label rotation - // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do - // without calling `fit` again - var newMaxChartAreaHeight = height - outerBoxSizes.top - outerBoxSizes.bottom; - var newMaxChartAreaWidth = width - outerBoxSizes.left - outerBoxSizes.right; - - if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { - helpers$1.each(verticalBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); - - helpers$1.each(horizontalBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); - - maxChartAreaHeight = newMaxChartAreaHeight; - maxChartAreaWidth = newMaxChartAreaWidth; - } - - // Step 7 - Position the boxes - var left = leftPadding + leftPaddingAddition; - var top = topPadding + topPaddingAddition; - - function placeBox(box) { - if (box.isHorizontal()) { - box.left = box.fullWidth ? leftPadding : outerBoxSizes.left; - box.right = box.fullWidth ? width - rightPadding : outerBoxSizes.left + maxChartAreaWidth; - box.top = top; - box.bottom = top + box.height; - - // Move to next point - top = box.bottom; - - } else { - - box.left = left; - box.right = left + box.width; - box.top = outerBoxSizes.top; - box.bottom = outerBoxSizes.top + maxChartAreaHeight; - - // Move to next point - left = box.right; - } - } - - helpers$1.each(leftBoxes.concat(topBoxes), placeBox); - - // Account for chart width and height - left += maxChartAreaWidth; - top += maxChartAreaHeight; - - helpers$1.each(rightBoxes, placeBox); - helpers$1.each(bottomBoxes, placeBox); - - // Step 8 - chart.chartArea = { - left: outerBoxSizes.left, - top: outerBoxSizes.top, - right: outerBoxSizes.left + maxChartAreaWidth, - bottom: outerBoxSizes.top + maxChartAreaHeight - }; - - // Step 9 - helpers$1.each(chartAreaBoxes, function(box) { - box.left = chart.chartArea.left; - box.top = chart.chartArea.top; - box.right = chart.chartArea.right; - box.bottom = chart.chartArea.bottom; - - box.update(maxChartAreaWidth, maxChartAreaHeight); - }); - } -}; - -/** - * Platform fallback implementation (minimal). - * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 - */ - -var platform_basic = { - acquireContext: function(item) { - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } - - return item && item.getContext('2d') || null; - } -}; - -var platform_dom = "/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"; - -var platform_dom$1 = /*#__PURE__*/Object.freeze({ -default: platform_dom -}); - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -function getCjsExportFromNamespace (n) { - return n && n.default || n; -} - -var stylesheet = getCjsExportFromNamespace(platform_dom$1); - -var EXPANDO_KEY = '$chartjs'; -var CSS_PREFIX = 'chartjs-'; -var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor'; -var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; -var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; -var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; - -/** - * DOM event types -> Chart.js event types. - * Note: only events with different types are mapped. - * @see https://developer.mozilla.org/en-US/docs/Web/Events - */ -var EVENT_TYPES = { - touchstart: 'mousedown', - touchmove: 'mousemove', - touchend: 'mouseup', - pointerenter: 'mouseenter', - pointerdown: 'mousedown', - pointermove: 'mousemove', - pointerup: 'mouseup', - pointerleave: 'mouseout', - pointerout: 'mouseout' -}; - -/** - * The "used" size is the final value of a dimension property after all calculations have - * been performed. This method uses the computed style of `element` but returns undefined - * if the computed style is not expressed in pixels. That can happen in some cases where - * `element` has a size relative to its parent and this last one is not yet displayed, - * for example because of `display: none` on a parent node. - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value - * @returns {number} Size in pixels or undefined if unknown. - */ -function readUsedSize(element, property) { - var value = helpers$1.getStyle(element, property); - var matches = value && value.match(/^(\d+)(\.\d+)?px$/); - return matches ? Number(matches[1]) : undefined; -} - -/** - * Initializes the canvas style and render size without modifying the canvas display size, - * since responsiveness is handled by the controller.resize() method. The config is used - * to determine the aspect ratio to apply in case no explicit height has been specified. - */ -function initCanvas(canvas, config) { - var style = canvas.style; - - // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it - // returns null or '' if no explicit value has been set to the canvas attribute. - var renderHeight = canvas.getAttribute('height'); - var renderWidth = canvas.getAttribute('width'); - - // Chart.js modifies some canvas values that we want to restore on destroy - canvas[EXPANDO_KEY] = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } - } - }; - - // Force canvas to display as block to avoid extra space caused by inline - // elements, which would interfere with the responsive resize process. - // https://github.com/chartjs/Chart.js/issues/2538 - style.display = style.display || 'block'; - - if (renderWidth === null || renderWidth === '') { - var displayWidth = readUsedSize(canvas, 'width'); - if (displayWidth !== undefined) { - canvas.width = displayWidth; - } - } - - if (renderHeight === null || renderHeight === '') { - if (canvas.style.height === '') { - // If no explicit render height and style height, let's apply the aspect ratio, - // which one can be specified by the user but also by charts as default option - // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. - canvas.height = canvas.width / (config.options.aspectRatio || 2); - } else { - var displayHeight = readUsedSize(canvas, 'height'); - if (displayWidth !== undefined) { - canvas.height = displayHeight; - } - } - } - - return canvas; -} - -/** - * Detects support for options object argument in addEventListener. - * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support - * @private - */ -var supportsEventListenerOptions = (function() { - var supports = false; - try { - var options = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line getter-return - get: function() { - supports = true; - } - }); - window.addEventListener('e', null, options); - } catch (e) { - // continue regardless of error - } - return supports; -}()); - -// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. -// https://github.com/chartjs/Chart.js/issues/4287 -var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; - -function addListener(node, type, listener) { - node.addEventListener(type, listener, eventListenerOptions); -} - -function removeListener(node, type, listener) { - node.removeEventListener(type, listener, eventListenerOptions); -} - -function createEvent(type, chart, x, y, nativeEvent) { - return { - type: type, - chart: chart, - native: nativeEvent || null, - x: x !== undefined ? x : null, - y: y !== undefined ? y : null, - }; -} - -function fromNativeEvent(event, chart) { - var type = EVENT_TYPES[event.type] || event.type; - var pos = helpers$1.getRelativePosition(event, chart); - return createEvent(type, chart, pos.x, pos.y, event); -} - -function throttled(fn, thisArg) { - var ticking = false; - var args = []; - - return function() { - args = Array.prototype.slice.call(arguments); - thisArg = thisArg || this; - - if (!ticking) { - ticking = true; - helpers$1.requestAnimFrame.call(window, function() { - ticking = false; - fn.apply(thisArg, args); - }); - } - }; -} - -function createDiv(cls) { - var el = document.createElement('div'); - el.className = cls || ''; - return el; -} - -// Implementation based on https://github.com/marcj/css-element-queries -function createResizer(handler) { - var maxSize = 1000000; - - // NOTE(SB) Don't use innerHTML because it could be considered unsafe. - // https://github.com/chartjs/Chart.js/issues/5902 - var resizer = createDiv(CSS_SIZE_MONITOR); - var expand = createDiv(CSS_SIZE_MONITOR + '-expand'); - var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink'); - - expand.appendChild(createDiv()); - shrink.appendChild(createDiv()); - - resizer.appendChild(expand); - resizer.appendChild(shrink); - resizer._reset = function() { - expand.scrollLeft = maxSize; - expand.scrollTop = maxSize; - shrink.scrollLeft = maxSize; - shrink.scrollTop = maxSize; - }; - - var onScroll = function() { - resizer._reset(); - handler(); - }; - - addListener(expand, 'scroll', onScroll.bind(expand, 'expand')); - addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); - - return resizer; -} - -// https://davidwalsh.name/detect-node-insertion -function watchForRender(node, handler) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - var proxy = expando.renderProxy = function(e) { - if (e.animationName === CSS_RENDER_ANIMATION) { - handler(); - } - }; - - helpers$1.each(ANIMATION_START_EVENTS, function(type) { - addListener(node, type, proxy); - }); - - // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class - // is removed then added back immediately (same animation frame?). Accessing the - // `offsetParent` property will force a reflow and re-evaluate the CSS animation. - // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics - // https://github.com/chartjs/Chart.js/issues/4737 - expando.reflow = !!node.offsetParent; - - node.classList.add(CSS_RENDER_MONITOR); -} - -function unwatchForRender(node) { - var expando = node[EXPANDO_KEY] || {}; - var proxy = expando.renderProxy; - - if (proxy) { - helpers$1.each(ANIMATION_START_EVENTS, function(type) { - removeListener(node, type, proxy); - }); - - delete expando.renderProxy; - } - - node.classList.remove(CSS_RENDER_MONITOR); -} - -function addResizeListener(node, listener, chart) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - - // Let's keep track of this added resizer and thus avoid DOM query when removing it. - var resizer = expando.resizer = createResizer(throttled(function() { - if (expando.resizer) { - var container = chart.options.maintainAspectRatio && node.parentNode; - var w = container ? container.clientWidth : 0; - listener(createEvent('resize', chart)); - if (container && container.clientWidth < w && chart.canvas) { - // If the container size shrank during chart resize, let's assume - // scrollbar appeared. So we resize again with the scrollbar visible - - // effectively making chart smaller and the scrollbar hidden again. - // Because we are inside `throttled`, and currently `ticking`, scroll - // events are ignored during this whole 2 resize process. - // If we assumed wrong and something else happened, we are resizing - // twice in a frame (potential performance issue) - listener(createEvent('resize', chart)); - } - } - })); - - // The resizer needs to be attached to the node parent, so we first need to be - // sure that `node` is attached to the DOM before injecting the resizer element. - watchForRender(node, function() { - if (expando.resizer) { - var container = node.parentNode; - if (container && container !== resizer.parentNode) { - container.insertBefore(resizer, container.firstChild); - } - - // The container size might have changed, let's reset the resizer state. - resizer._reset(); - } - }); -} - -function removeResizeListener(node) { - var expando = node[EXPANDO_KEY] || {}; - var resizer = expando.resizer; - - delete expando.resizer; - unwatchForRender(node); - - if (resizer && resizer.parentNode) { - resizer.parentNode.removeChild(resizer); - } -} - -function injectCSS(platform, css) { - // https://stackoverflow.com/q/3922139 - var style = platform._style || document.createElement('style'); - if (!platform._style) { - platform._style = style; - css = '/* Chart.js */\n' + css; - style.setAttribute('type', 'text/css'); - document.getElementsByTagName('head')[0].appendChild(style); - } - - style.appendChild(document.createTextNode(css)); -} - -var platform_dom$2 = { - /** - * When `true`, prevents the automatic injection of the stylesheet required to - * correctly detect when the chart is added to the DOM and then resized. This - * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`) - * to be manually imported to make this library compatible with any CSP. - * See https://github.com/chartjs/Chart.js/issues/5208 - */ - disableCSSInjection: false, - - /** - * This property holds whether this platform is enabled for the current environment. - * Currently used by platform.js to select the proper implementation. - * @private - */ - _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', - - /** - * @private - */ - _ensureLoaded: function() { - if (this._loaded) { - return; - } - - this._loaded = true; - - // https://github.com/chartjs/Chart.js/issues/5208 - if (!this.disableCSSInjection) { - injectCSS(this, stylesheet); - } - }, - - acquireContext: function(item, config) { - if (typeof item === 'string') { - item = document.getElementById(item); - } else if (item.length) { - // Support for array based queries (such as jQuery) - item = item[0]; - } - - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } - - // To prevent canvas fingerprinting, some add-ons undefine the getContext - // method, for example: https://github.com/kkapsner/CanvasBlocker - // https://github.com/chartjs/Chart.js/issues/2807 - var context = item && item.getContext && item.getContext('2d'); - - // Load platform resources on first chart creation, to make possible to change - // platform options after importing the library (e.g. `disableCSSInjection`). - this._ensureLoaded(); - - // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is - // inside an iframe or when running in a protected environment. We could guess the - // types from their toString() value but let's keep things flexible and assume it's - // a sufficient condition if the item has a context2D which has item as `canvas`. - // https://github.com/chartjs/Chart.js/issues/3887 - // https://github.com/chartjs/Chart.js/issues/4102 - // https://github.com/chartjs/Chart.js/issues/4152 - if (context && context.canvas === item) { - initCanvas(item, config); - return context; - } - - return null; - }, - - releaseContext: function(context) { - var canvas = context.canvas; - if (!canvas[EXPANDO_KEY]) { - return; - } - - var initial = canvas[EXPANDO_KEY].initial; - ['height', 'width'].forEach(function(prop) { - var value = initial[prop]; - if (helpers$1.isNullOrUndef(value)) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); - - helpers$1.each(initial.style || {}, function(value, key) { - canvas.style[key] = value; - }); - - // The canvas render size might have been changed (and thus the state stack discarded), - // we can't use save() and restore() to restore the initial state. So make sure that at - // least the canvas context is reset to the default state by setting the canvas width. - // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html - // eslint-disable-next-line no-self-assign - canvas.width = canvas.width; - - delete canvas[EXPANDO_KEY]; - }, - - addEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - addResizeListener(canvas, listener, chart); - return; - } - - var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); - var proxies = expando.proxies || (expando.proxies = {}); - var proxy = proxies[chart.id + '_' + type] = function(event) { - listener(fromNativeEvent(event, chart)); - }; - - addListener(canvas, type, proxy); - }, - - removeEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - removeResizeListener(canvas); - return; - } - - var expando = listener[EXPANDO_KEY] || {}; - var proxies = expando.proxies || {}; - var proxy = proxies[chart.id + '_' + type]; - if (!proxy) { - return; - } - - removeListener(canvas, type, proxy); - } -}; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use EventTarget.addEventListener instead. - * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener - * @function Chart.helpers.addEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers$1.addEvent = addListener; - -/** - * Provided for backward compatibility, use EventTarget.removeEventListener instead. - * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener - * @function Chart.helpers.removeEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers$1.removeEvent = removeListener; - -// @TODO Make possible to select another platform at build time. -var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic; - -/** - * @namespace Chart.platform - * @see https://chartjs.gitbooks.io/proposals/content/Platform.html - * @since 2.4.0 - */ -var platform = helpers$1.extend({ - /** - * @since 2.7.0 - */ - initialize: function() {}, - - /** - * Called at chart construction time, returns a context2d instance implementing - * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. - * @param {*} item - The native item from which to acquire context (platform specific) - * @param {object} options - The chart options - * @returns {CanvasRenderingContext2D} context2d instance - */ - acquireContext: function() {}, - - /** - * Called at chart destruction time, releases any resources associated to the context - * previously returned by the acquireContext() method. - * @param {CanvasRenderingContext2D} context - The context2d instance - * @returns {boolean} true if the method succeeded, else false - */ - releaseContext: function() {}, - - /** - * Registers the specified listener on the given chart. - * @param {Chart} chart - Chart from which to listen for event - * @param {string} type - The ({@link IEvent}) type to listen for - * @param {function} listener - Receives a notification (an object that implements - * the {@link IEvent} interface) when an event of the specified type occurs. - */ - addEventListener: function() {}, - - /** - * Removes the specified listener previously registered with addEventListener. - * @param {Chart} chart - Chart from which to remove the listener - * @param {string} type - The ({@link IEvent}) type to remove - * @param {function} listener - The listener function to remove from the event target. - */ - removeEventListener: function() {} - -}, implementation); - -core_defaults._set('global', { - plugins: {} -}); - -/** - * The plugin service singleton - * @namespace Chart.plugins - * @since 2.1.0 - */ -var core_plugins = { - /** - * Globally registered plugins. - * @private - */ - _plugins: [], - - /** - * This identifier is used to invalidate the descriptors cache attached to each chart - * when a global plugin is registered or unregistered. In this case, the cache ID is - * incremented and descriptors are regenerated during following API calls. - * @private - */ - _cacheId: 0, - - /** - * Registers the given plugin(s) if not already registered. - * @param {IPlugin[]|IPlugin} plugins plugin instance(s). - */ - register: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - if (p.indexOf(plugin) === -1) { - p.push(plugin); - } - }); - - this._cacheId++; - }, - - /** - * Unregisters the given plugin(s) only if registered. - * @param {IPlugin[]|IPlugin} plugins plugin instance(s). - */ - unregister: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - var idx = p.indexOf(plugin); - if (idx !== -1) { - p.splice(idx, 1); - } - }); - - this._cacheId++; - }, - - /** - * Remove all registered plugins. - * @since 2.1.5 - */ - clear: function() { - this._plugins = []; - this._cacheId++; - }, - - /** - * Returns the number of registered plugins? - * @returns {number} - * @since 2.1.5 - */ - count: function() { - return this._plugins.length; - }, - - /** - * Returns all registered plugin instances. - * @returns {IPlugin[]} array of plugin objects. - * @since 2.1.5 - */ - getAll: function() { - return this._plugins; - }, - - /** - * Calls enabled plugins for `chart` on the specified hook and with the given args. - * This method immediately returns as soon as a plugin explicitly returns false. The - * returned value can be used, for instance, to interrupt the current action. - * @param {Chart} chart - The chart instance for which plugins should be called. - * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). - * @param {Array} [args] - Extra arguments to apply to the hook call. - * @returns {boolean} false if any of the plugins return false, else returns true. - */ - notify: function(chart, hook, args) { - var descriptors = this.descriptors(chart); - var ilen = descriptors.length; - var i, descriptor, plugin, params, method; - - for (i = 0; i < ilen; ++i) { - descriptor = descriptors[i]; - plugin = descriptor.plugin; - method = plugin[hook]; - if (typeof method === 'function') { - params = [chart].concat(args || []); - params.push(descriptor.options); - if (method.apply(plugin, params) === false) { - return false; - } - } - } - - return true; - }, - - /** - * Returns descriptors of enabled plugins for the given chart. - * @returns {object[]} [{ plugin, options }] - * @private - */ - descriptors: function(chart) { - var cache = chart.$plugins || (chart.$plugins = {}); - if (cache.id === this._cacheId) { - return cache.descriptors; - } - - var plugins = []; - var descriptors = []; - var config = (chart && chart.config) || {}; - var options = (config.options && config.options.plugins) || {}; - - this._plugins.concat(config.plugins || []).forEach(function(plugin) { - var idx = plugins.indexOf(plugin); - if (idx !== -1) { - return; - } - - var id = plugin.id; - var opts = options[id]; - if (opts === false) { - return; - } - - if (opts === true) { - opts = helpers$1.clone(core_defaults.global.plugins[id]); - } - - plugins.push(plugin); - descriptors.push({ - plugin: plugin, - options: opts || {} - }); - }); - - cache.descriptors = descriptors; - cache.id = this._cacheId; - return descriptors; - }, - - /** - * Invalidates cache for the given chart: descriptors hold a reference on plugin option, - * but in some cases, this reference can be changed by the user when updating options. - * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - * @private - */ - _invalidate: function(chart) { - delete chart.$plugins; - } -}; - -var core_scaleService = { - // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then - // use the new chart options to grab the correct scale - constructors: {}, - // Use a registration function so that we can move to an ES6 map when we no longer need to support - // old browsers - - // Scale config defaults - defaults: {}, - registerScaleType: function(type, scaleConstructor, scaleDefaults) { - this.constructors[type] = scaleConstructor; - this.defaults[type] = helpers$1.clone(scaleDefaults); - }, - getScaleConstructor: function(type) { - return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; - }, - getScaleDefaults: function(type) { - // Return the scale defaults merged with the global settings so that we always use the latest ones - return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {}; - }, - updateScaleDefaults: function(type, additions) { - var me = this; - if (me.defaults.hasOwnProperty(type)) { - me.defaults[type] = helpers$1.extend(me.defaults[type], additions); - } - }, - addScalesToLayout: function(chart) { - // Adds each scale to the chart.boxes array to be sized accordingly - helpers$1.each(chart.scales, function(scale) { - // Set ILayoutItem parameters for backwards compatibility - scale.fullWidth = scale.options.fullWidth; - scale.position = scale.options.position; - scale.weight = scale.options.weight; - core_layouts.addBox(chart, scale); - }); - } -}; - -var valueOrDefault$7 = helpers$1.valueOrDefault; - -core_defaults._set('global', { - tooltips: { - enabled: true, - custom: null, - mode: 'nearest', - position: 'average', - intersect: true, - backgroundColor: 'rgba(0,0,0,0.8)', - titleFontStyle: 'bold', - titleSpacing: 2, - titleMarginBottom: 6, - titleFontColor: '#fff', - titleAlign: 'left', - bodySpacing: 2, - bodyFontColor: '#fff', - bodyAlign: 'left', - footerFontStyle: 'bold', - footerSpacing: 2, - footerMarginTop: 6, - footerFontColor: '#fff', - footerAlign: 'left', - yPadding: 6, - xPadding: 6, - caretPadding: 2, - caretSize: 5, - cornerRadius: 6, - multiKeyBackground: '#fff', - displayColors: true, - borderColor: 'rgba(0,0,0,0)', - borderWidth: 0, - callbacks: { - // Args are: (tooltipItems, data) - beforeTitle: helpers$1.noop, - title: function(tooltipItems, data) { - var title = ''; - var labels = data.labels; - var labelCount = labels ? labels.length : 0; - - if (tooltipItems.length > 0) { - var item = tooltipItems[0]; - if (item.label) { - title = item.label; - } else if (item.xLabel) { - title = item.xLabel; - } else if (labelCount > 0 && item.index < labelCount) { - title = labels[item.index]; - } - } - - return title; - }, - afterTitle: helpers$1.noop, - - // Args are: (tooltipItems, data) - beforeBody: helpers$1.noop, - - // Args are: (tooltipItem, data) - beforeLabel: helpers$1.noop, - label: function(tooltipItem, data) { - var label = data.datasets[tooltipItem.datasetIndex].label || ''; - - if (label) { - label += ': '; - } - if (!helpers$1.isNullOrUndef(tooltipItem.value)) { - label += tooltipItem.value; - } else { - label += tooltipItem.yLabel; - } - return label; - }, - labelColor: function(tooltipItem, chart) { - var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); - var activeElement = meta.data[tooltipItem.index]; - var view = activeElement._view; - return { - borderColor: view.borderColor, - backgroundColor: view.backgroundColor - }; - }, - labelTextColor: function() { - return this._options.bodyFontColor; - }, - afterLabel: helpers$1.noop, - - // Args are: (tooltipItems, data) - afterBody: helpers$1.noop, - - // Args are: (tooltipItems, data) - beforeFooter: helpers$1.noop, - footer: helpers$1.noop, - afterFooter: helpers$1.noop - } - } -}); - -var positioners = { - /** - * Average mode places the tooltip at the average position of the elements shown - * @function Chart.Tooltip.positioners.average - * @param elements {ChartElement[]} the elements being displayed in the tooltip - * @returns {object} tooltip position - */ - average: function(elements) { - if (!elements.length) { - return false; - } - - var i, len; - var x = 0; - var y = 0; - var count = 0; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var pos = el.tooltipPosition(); - x += pos.x; - y += pos.y; - ++count; - } - } - - return { - x: x / count, - y: y / count - }; - }, - - /** - * Gets the tooltip position nearest of the item nearest to the event position - * @function Chart.Tooltip.positioners.nearest - * @param elements {Chart.Element[]} the tooltip elements - * @param eventPosition {object} the position of the event in canvas coordinates - * @returns {object} the tooltip position - */ - nearest: function(elements, eventPosition) { - var x = eventPosition.x; - var y = eventPosition.y; - var minDistance = Number.POSITIVE_INFINITY; - var i, len, nearestElement; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var center = el.getCenterPoint(); - var d = helpers$1.distanceBetweenPoints(eventPosition, center); - - if (d < minDistance) { - minDistance = d; - nearestElement = el; - } - } - } - - if (nearestElement) { - var tp = nearestElement.tooltipPosition(); - x = tp.x; - y = tp.y; - } - - return { - x: x, - y: y - }; - } -}; - -// Helper to push or concat based on if the 2nd parameter is an array or not -function pushOrConcat(base, toPush) { - if (toPush) { - if (helpers$1.isArray(toPush)) { - // base = base.concat(toPush); - Array.prototype.push.apply(base, toPush); - } else { - base.push(toPush); - } - } - - return base; -} - -/** - * Returns array of strings split by newline - * @param {string} value - The value to split by newline. - * @returns {string[]} value if newline present - Returned from String split() method - * @function - */ -function splitNewlines(str) { - if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { - return str.split('\n'); - } - return str; -} - - -/** - * Private helper to create a tooltip item model - * @param element - the chart element (point, arc, bar) to create the tooltip item for - * @return new tooltip item - */ -function createTooltipItem(element) { - var xScale = element._xScale; - var yScale = element._yScale || element._scale; // handle radar || polarArea charts - var index = element._index; - var datasetIndex = element._datasetIndex; - var controller = element._chart.getDatasetMeta(datasetIndex).controller; - var indexScale = controller._getIndexScale(); - var valueScale = controller._getValueScale(); - - return { - xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', - yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', - label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '', - value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '', - index: index, - datasetIndex: datasetIndex, - x: element._model.x, - y: element._model.y - }; -} - -/** - * Helper to get the reset model for the tooltip - * @param tooltipOpts {object} the tooltip options - */ -function getBaseModel(tooltipOpts) { - var globalDefaults = core_defaults.global; - - return { - // Positioning - xPadding: tooltipOpts.xPadding, - yPadding: tooltipOpts.yPadding, - xAlign: tooltipOpts.xAlign, - yAlign: tooltipOpts.yAlign, - - // Body - bodyFontColor: tooltipOpts.bodyFontColor, - _bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), - _bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), - _bodyAlign: tooltipOpts.bodyAlign, - bodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), - bodySpacing: tooltipOpts.bodySpacing, - - // Title - titleFontColor: tooltipOpts.titleFontColor, - _titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), - _titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), - titleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), - _titleAlign: tooltipOpts.titleAlign, - titleSpacing: tooltipOpts.titleSpacing, - titleMarginBottom: tooltipOpts.titleMarginBottom, - - // Footer - footerFontColor: tooltipOpts.footerFontColor, - _footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), - _footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), - footerFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), - _footerAlign: tooltipOpts.footerAlign, - footerSpacing: tooltipOpts.footerSpacing, - footerMarginTop: tooltipOpts.footerMarginTop, - - // Appearance - caretSize: tooltipOpts.caretSize, - cornerRadius: tooltipOpts.cornerRadius, - backgroundColor: tooltipOpts.backgroundColor, - opacity: 0, - legendColorBackground: tooltipOpts.multiKeyBackground, - displayColors: tooltipOpts.displayColors, - borderColor: tooltipOpts.borderColor, - borderWidth: tooltipOpts.borderWidth - }; -} - -/** - * Get the size of the tooltip - */ -function getTooltipSize(tooltip, model) { - var ctx = tooltip._chart.ctx; - - var height = model.yPadding * 2; // Tooltip Padding - var width = 0; - - // Count of all lines in the body - var body = model.body; - var combinedBodyLength = body.reduce(function(count, bodyItem) { - return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; - }, 0); - combinedBodyLength += model.beforeBody.length + model.afterBody.length; - - var titleLineCount = model.title.length; - var footerLineCount = model.footer.length; - var titleFontSize = model.titleFontSize; - var bodyFontSize = model.bodyFontSize; - var footerFontSize = model.footerFontSize; - - height += titleLineCount * titleFontSize; // Title Lines - height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing - height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin - height += combinedBodyLength * bodyFontSize; // Body Lines - height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing - height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin - height += footerLineCount * (footerFontSize); // Footer Lines - height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing - - // Title width - var widthPadding = 0; - var maxLineWidth = function(line) { - width = Math.max(width, ctx.measureText(line).width + widthPadding); - }; - - ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); - helpers$1.each(model.title, maxLineWidth); - - // Body width - ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); - helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); - - // Body lines may include some extra width due to the color box - widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; - helpers$1.each(body, function(bodyItem) { - helpers$1.each(bodyItem.before, maxLineWidth); - helpers$1.each(bodyItem.lines, maxLineWidth); - helpers$1.each(bodyItem.after, maxLineWidth); - }); - - // Reset back to 0 - widthPadding = 0; - - // Footer width - ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); - helpers$1.each(model.footer, maxLineWidth); - - // Add padding - width += 2 * model.xPadding; - - return { - width: width, - height: height - }; -} - -/** - * Helper to get the alignment of a tooltip given the size - */ -function determineAlignment(tooltip, size) { - var model = tooltip._model; - var chart = tooltip._chart; - var chartArea = tooltip._chart.chartArea; - var xAlign = 'center'; - var yAlign = 'center'; - - if (model.y < size.height) { - yAlign = 'top'; - } else if (model.y > (chart.height - size.height)) { - yAlign = 'bottom'; - } - - var lf, rf; // functions to determine left, right alignment - var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart - var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges - var midX = (chartArea.left + chartArea.right) / 2; - var midY = (chartArea.top + chartArea.bottom) / 2; - - if (yAlign === 'center') { - lf = function(x) { - return x <= midX; - }; - rf = function(x) { - return x > midX; - }; - } else { - lf = function(x) { - return x <= (size.width / 2); - }; - rf = function(x) { - return x >= (chart.width - (size.width / 2)); - }; - } - - olf = function(x) { - return x + size.width + model.caretSize + model.caretPadding > chart.width; - }; - orf = function(x) { - return x - size.width - model.caretSize - model.caretPadding < 0; - }; - yf = function(y) { - return y <= midY ? 'top' : 'bottom'; - }; - - if (lf(model.x)) { - xAlign = 'left'; - - // Is tooltip too wide and goes over the right side of the chart.? - if (olf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } else if (rf(model.x)) { - xAlign = 'right'; - - // Is tooltip too wide and goes outside left edge of canvas? - if (orf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } - - var opts = tooltip._options; - return { - xAlign: opts.xAlign ? opts.xAlign : xAlign, - yAlign: opts.yAlign ? opts.yAlign : yAlign - }; -} - -/** - * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment - */ -function getBackgroundPoint(vm, size, alignment, chart) { - // Background Position - var x = vm.x; - var y = vm.y; - - var caretSize = vm.caretSize; - var caretPadding = vm.caretPadding; - var cornerRadius = vm.cornerRadius; - var xAlign = alignment.xAlign; - var yAlign = alignment.yAlign; - var paddingAndSize = caretSize + caretPadding; - var radiusAndPadding = cornerRadius + caretPadding; - - if (xAlign === 'right') { - x -= size.width; - } else if (xAlign === 'center') { - x -= (size.width / 2); - if (x + size.width > chart.width) { - x = chart.width - size.width; - } - if (x < 0) { - x = 0; - } - } - - if (yAlign === 'top') { - y += paddingAndSize; - } else if (yAlign === 'bottom') { - y -= size.height + paddingAndSize; - } else { - y -= (size.height / 2); - } - - if (yAlign === 'center') { - if (xAlign === 'left') { - x += paddingAndSize; - } else if (xAlign === 'right') { - x -= paddingAndSize; - } - } else if (xAlign === 'left') { - x -= radiusAndPadding; - } else if (xAlign === 'right') { - x += radiusAndPadding; - } - - return { - x: x, - y: y - }; -} - -function getAlignedX(vm, align) { - return align === 'center' - ? vm.x + vm.width / 2 - : align === 'right' - ? vm.x + vm.width - vm.xPadding - : vm.x + vm.xPadding; -} - -/** - * Helper to build before and after body lines - */ -function getBeforeAfterBodyLines(callback) { - return pushOrConcat([], splitNewlines(callback)); -} - -var exports$3 = core_element.extend({ - initialize: function() { - this._model = getBaseModel(this._options); - this._lastActive = []; - }, - - // Get the title - // Args are: (tooltipItem, data) - getTitle: function() { - var me = this; - var opts = me._options; - var callbacks = opts.callbacks; - - var beforeTitle = callbacks.beforeTitle.apply(me, arguments); - var title = callbacks.title.apply(me, arguments); - var afterTitle = callbacks.afterTitle.apply(me, arguments); - - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeTitle)); - lines = pushOrConcat(lines, splitNewlines(title)); - lines = pushOrConcat(lines, splitNewlines(afterTitle)); - - return lines; - }, - - // Args are: (tooltipItem, data) - getBeforeBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); - }, - - // Args are: (tooltipItem, data) - getBody: function(tooltipItems, data) { - var me = this; - var callbacks = me._options.callbacks; - var bodyItems = []; - - helpers$1.each(tooltipItems, function(tooltipItem) { - var bodyItem = { - before: [], - lines: [], - after: [] - }; - pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); - pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); - pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); - - bodyItems.push(bodyItem); - }); - - return bodyItems; - }, - - // Args are: (tooltipItem, data) - getAfterBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); - }, - - // Get the footer and beforeFooter and afterFooter lines - // Args are: (tooltipItem, data) - getFooter: function() { - var me = this; - var callbacks = me._options.callbacks; - - var beforeFooter = callbacks.beforeFooter.apply(me, arguments); - var footer = callbacks.footer.apply(me, arguments); - var afterFooter = callbacks.afterFooter.apply(me, arguments); - - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeFooter)); - lines = pushOrConcat(lines, splitNewlines(footer)); - lines = pushOrConcat(lines, splitNewlines(afterFooter)); - - return lines; - }, - - update: function(changed) { - var me = this; - var opts = me._options; - - // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition - // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time - // which breaks any animations. - var existingModel = me._model; - var model = me._model = getBaseModel(opts); - var active = me._active; - - var data = me._data; - - // In the case where active.length === 0 we need to keep these at existing values for good animations - var alignment = { - xAlign: existingModel.xAlign, - yAlign: existingModel.yAlign - }; - var backgroundPoint = { - x: existingModel.x, - y: existingModel.y - }; - var tooltipSize = { - width: existingModel.width, - height: existingModel.height - }; - var tooltipPosition = { - x: existingModel.caretX, - y: existingModel.caretY - }; - - var i, len; - - if (active.length) { - model.opacity = 1; - - var labelColors = []; - var labelTextColors = []; - tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); - - var tooltipItems = []; - for (i = 0, len = active.length; i < len; ++i) { - tooltipItems.push(createTooltipItem(active[i])); - } - - // If the user provided a filter function, use it to modify the tooltip items - if (opts.filter) { - tooltipItems = tooltipItems.filter(function(a) { - return opts.filter(a, data); - }); - } - - // If the user provided a sorting function, use it to modify the tooltip items - if (opts.itemSort) { - tooltipItems = tooltipItems.sort(function(a, b) { - return opts.itemSort(a, b, data); - }); - } - - // Determine colors for boxes - helpers$1.each(tooltipItems, function(tooltipItem) { - labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); - labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); - }); - - - // Build the Text Lines - model.title = me.getTitle(tooltipItems, data); - model.beforeBody = me.getBeforeBody(tooltipItems, data); - model.body = me.getBody(tooltipItems, data); - model.afterBody = me.getAfterBody(tooltipItems, data); - model.footer = me.getFooter(tooltipItems, data); - - // Initial positioning and colors - model.x = tooltipPosition.x; - model.y = tooltipPosition.y; - model.caretPadding = opts.caretPadding; - model.labelColors = labelColors; - model.labelTextColors = labelTextColors; - - // data points - model.dataPoints = tooltipItems; - - // We need to determine alignment of the tooltip - tooltipSize = getTooltipSize(this, model); - alignment = determineAlignment(this, tooltipSize); - // Final Size and Position - backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); - } else { - model.opacity = 0; - } - - model.xAlign = alignment.xAlign; - model.yAlign = alignment.yAlign; - model.x = backgroundPoint.x; - model.y = backgroundPoint.y; - model.width = tooltipSize.width; - model.height = tooltipSize.height; - - // Point where the caret on the tooltip points to - model.caretX = tooltipPosition.x; - model.caretY = tooltipPosition.y; - - me._model = model; - - if (changed && opts.custom) { - opts.custom.call(me, model); - } - - return me; - }, - - drawCaret: function(tooltipPoint, size) { - var ctx = this._chart.ctx; - var vm = this._view; - var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); - - ctx.lineTo(caretPosition.x1, caretPosition.y1); - ctx.lineTo(caretPosition.x2, caretPosition.y2); - ctx.lineTo(caretPosition.x3, caretPosition.y3); - }, - getCaretPosition: function(tooltipPoint, size, vm) { - var x1, x2, x3, y1, y2, y3; - var caretSize = vm.caretSize; - var cornerRadius = vm.cornerRadius; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var ptX = tooltipPoint.x; - var ptY = tooltipPoint.y; - var width = size.width; - var height = size.height; - - if (yAlign === 'center') { - y2 = ptY + (height / 2); - - if (xAlign === 'left') { - x1 = ptX; - x2 = x1 - caretSize; - x3 = x1; - - y1 = y2 + caretSize; - y3 = y2 - caretSize; - } else { - x1 = ptX + width; - x2 = x1 + caretSize; - x3 = x1; - - y1 = y2 - caretSize; - y3 = y2 + caretSize; - } - } else { - if (xAlign === 'left') { - x2 = ptX + cornerRadius + (caretSize); - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else if (xAlign === 'right') { - x2 = ptX + width - cornerRadius - caretSize; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else { - x2 = vm.caretX; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } - if (yAlign === 'top') { - y1 = ptY; - y2 = y1 - caretSize; - y3 = y1; - } else { - y1 = ptY + height; - y2 = y1 + caretSize; - y3 = y1; - // invert drawing order - var tmp = x3; - x3 = x1; - x1 = tmp; - } - } - return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; - }, - - drawTitle: function(pt, vm, ctx) { - var title = vm.title; - - if (title.length) { - pt.x = getAlignedX(vm, vm._titleAlign); - - ctx.textAlign = vm._titleAlign; - ctx.textBaseline = 'top'; - - var titleFontSize = vm.titleFontSize; - var titleSpacing = vm.titleSpacing; - - ctx.fillStyle = vm.titleFontColor; - ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); - - var i, len; - for (i = 0, len = title.length; i < len; ++i) { - ctx.fillText(title[i], pt.x, pt.y); - pt.y += titleFontSize + titleSpacing; // Line Height and spacing - - if (i + 1 === title.length) { - pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing - } - } - } - }, - - drawBody: function(pt, vm, ctx) { - var bodyFontSize = vm.bodyFontSize; - var bodySpacing = vm.bodySpacing; - var bodyAlign = vm._bodyAlign; - var body = vm.body; - var drawColorBoxes = vm.displayColors; - var labelColors = vm.labelColors; - var xLinePadding = 0; - var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0; - var textColor; - - ctx.textAlign = bodyAlign; - ctx.textBaseline = 'top'; - ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); - - pt.x = getAlignedX(vm, bodyAlign); - - // Before Body - var fillLineOfText = function(line) { - ctx.fillText(line, pt.x + xLinePadding, pt.y); - pt.y += bodyFontSize + bodySpacing; - }; - - // Before body lines - ctx.fillStyle = vm.bodyFontColor; - helpers$1.each(vm.beforeBody, fillLineOfText); - - xLinePadding = drawColorBoxes && bodyAlign !== 'right' - ? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2) - : 0; - - // Draw body lines now - helpers$1.each(body, function(bodyItem, i) { - textColor = vm.labelTextColors[i]; - ctx.fillStyle = textColor; - helpers$1.each(bodyItem.before, fillLineOfText); - - helpers$1.each(bodyItem.lines, function(line) { - // Draw Legend-like boxes if needed - if (drawColorBoxes) { - // Fill a white rect so that colours merge nicely if the opacity is < 1 - ctx.fillStyle = vm.legendColorBackground; - ctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize); - - // Border - ctx.lineWidth = 1; - ctx.strokeStyle = labelColors[i].borderColor; - ctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize); - - // Inner square - ctx.fillStyle = labelColors[i].backgroundColor; - ctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); - ctx.fillStyle = textColor; - } - - fillLineOfText(line); - }); - - helpers$1.each(bodyItem.after, fillLineOfText); - }); - - // Reset back to 0 for after body - xLinePadding = 0; - - // After body lines - helpers$1.each(vm.afterBody, fillLineOfText); - pt.y -= bodySpacing; // Remove last body spacing - }, - - drawFooter: function(pt, vm, ctx) { - var footer = vm.footer; - - if (footer.length) { - pt.x = getAlignedX(vm, vm._footerAlign); - pt.y += vm.footerMarginTop; - - ctx.textAlign = vm._footerAlign; - ctx.textBaseline = 'top'; - - ctx.fillStyle = vm.footerFontColor; - ctx.font = helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); - - helpers$1.each(footer, function(line) { - ctx.fillText(line, pt.x, pt.y); - pt.y += vm.footerFontSize + vm.footerSpacing; - }); - } - }, - - drawBackground: function(pt, vm, ctx, tooltipSize) { - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var x = pt.x; - var y = pt.y; - var width = tooltipSize.width; - var height = tooltipSize.height; - var radius = vm.cornerRadius; - - ctx.beginPath(); - ctx.moveTo(x + radius, y); - if (yAlign === 'top') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - if (yAlign === 'center' && xAlign === 'right') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - if (yAlign === 'bottom') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - if (yAlign === 'center' && xAlign === 'left') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); - - ctx.fill(); - - if (vm.borderWidth > 0) { - ctx.stroke(); - } - }, - - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - - if (vm.opacity === 0) { - return; - } - - var tooltipSize = { - width: vm.width, - height: vm.height - }; - var pt = { - x: vm.x, - y: vm.y - }; - - // IE11/Edge does not like very small opacities, so snap to 0 - var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; - - // Truthy/falsey value for empty tooltip - var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; - - if (this._options.enabled && hasTooltipContent) { - ctx.save(); - ctx.globalAlpha = opacity; - - // Draw Background - this.drawBackground(pt, vm, ctx, tooltipSize); - - // Draw Title, Body, and Footer - pt.y += vm.yPadding; - - // Titles - this.drawTitle(pt, vm, ctx); - - // Body - this.drawBody(pt, vm, ctx); - - // Footer - this.drawFooter(pt, vm, ctx); - - ctx.restore(); - } - }, - - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - * @returns {boolean} true if the tooltip changed - */ - handleEvent: function(e) { - var me = this; - var options = me._options; - var changed = false; - - me._lastActive = me._lastActive || []; - - // Find Active Elements for tooltips - if (e.type === 'mouseout') { - me._active = []; - } else { - me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); - } - - // Remember Last Actives - changed = !helpers$1.arrayEquals(me._active, me._lastActive); - - // Only handle target event on tooltip change - if (changed) { - me._lastActive = me._active; - - if (options.enabled || options.custom) { - me._eventPosition = { - x: e.x, - y: e.y - }; - - me.update(true); - me.pivot(); - } - } - - return changed; - } -}); - -/** - * @namespace Chart.Tooltip.positioners - */ -var positioners_1 = positioners; - -var core_tooltip = exports$3; -core_tooltip.positioners = positioners_1; - -var valueOrDefault$8 = helpers$1.valueOrDefault; - -core_defaults._set('global', { - elements: {}, - events: [ - 'mousemove', - 'mouseout', - 'click', - 'touchstart', - 'touchmove' - ], - hover: { - onHover: null, - mode: 'nearest', - intersect: true, - animationDuration: 400 - }, - onClick: null, - maintainAspectRatio: true, - responsive: true, - responsiveAnimationDuration: 0 -}); - -/** - * Recursively merge the given config objects representing the `scales` option - * by incorporating scale defaults in `xAxes` and `yAxes` array items, then - * returns a deep copy of the result, thus doesn't alter inputs. - */ -function mergeScaleConfig(/* config objects ... */) { - return helpers$1.merge({}, [].slice.call(arguments), { - merger: function(key, target, source, options) { - if (key === 'xAxes' || key === 'yAxes') { - var slen = source[key].length; - var i, type, scale; - - if (!target[key]) { - target[key] = []; - } - - for (i = 0; i < slen; ++i) { - scale = source[key][i]; - type = valueOrDefault$8(scale.type, key === 'xAxes' ? 'category' : 'linear'); - - if (i >= target[key].length) { - target[key].push({}); - } - - if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { - // new/untyped scale or type changed: let's apply the new defaults - // then merge source scale to correctly overwrite the defaults. - helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]); - } else { - // scales type are the same - helpers$1.merge(target[key][i], scale); - } - } - } else { - helpers$1._merger(key, target, source, options); - } - } - }); -} - -/** - * Recursively merge the given config objects as the root options by handling - * default scale options for the `scales` and `scale` properties, then returns - * a deep copy of the result, thus doesn't alter inputs. - */ -function mergeConfig(/* config objects ... */) { - return helpers$1.merge({}, [].slice.call(arguments), { - merger: function(key, target, source, options) { - var tval = target[key] || {}; - var sval = source[key]; - - if (key === 'scales') { - // scale config merging is complex. Add our own function here for that - target[key] = mergeScaleConfig(tval, sval); - } else if (key === 'scale') { - // used in polar area & radar charts since there is only one scale - target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]); - } else { - helpers$1._merger(key, target, source, options); - } - } - }); -} - -function initConfig(config) { - config = config || {}; - - // Do NOT use mergeConfig for the data object because this method merges arrays - // and so would change references to labels and datasets, preventing data updates. - var data = config.data = config.data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; - - config.options = mergeConfig( - core_defaults.global, - core_defaults[config.type], - config.options || {}); - - return config; -} - -function updateConfig(chart) { - var newOptions = chart.options; - - helpers$1.each(chart.scales, function(scale) { - core_layouts.removeBox(chart, scale); - }); - - newOptions = mergeConfig( - core_defaults.global, - core_defaults[chart.config.type], - newOptions); - - chart.options = chart.config.options = newOptions; - chart.ensureScalesHaveIDs(); - chart.buildOrUpdateScales(); - - // Tooltip - chart.tooltip._options = newOptions.tooltips; - chart.tooltip.initialize(); -} - -function positionIsHorizontal(position) { - return position === 'top' || position === 'bottom'; -} - -var Chart = function(item, config) { - this.construct(item, config); - return this; -}; - -helpers$1.extend(Chart.prototype, /** @lends Chart */ { - /** - * @private - */ - construct: function(item, config) { - var me = this; - - config = initConfig(config); - - var context = platform.acquireContext(item, config); - var canvas = context && context.canvas; - var height = canvas && canvas.height; - var width = canvas && canvas.width; - - me.id = helpers$1.uid(); - me.ctx = context; - me.canvas = canvas; - me.config = config; - me.width = width; - me.height = height; - me.aspectRatio = height ? width / height : null; - me.options = config.options; - me._bufferedRender = false; - - /** - * Provided for backward compatibility, Chart and Chart.Controller have been merged, - * the "instance" still need to be defined since it might be called from plugins. - * @prop Chart#chart - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - me.chart = me; - me.controller = me; // chart.chart.controller #inception - - // Add the chart instance to the global namespace - Chart.instances[me.id] = me; - - // Define alias to the config data: `chart.data === chart.config.data` - Object.defineProperty(me, 'data', { - get: function() { - return me.config.data; - }, - set: function(value) { - me.config.data = value; - } - }); - - if (!context || !canvas) { - // The given item is not a compatible context2d element, let's return before finalizing - // the chart initialization but after setting basic chart / controller properties that - // can help to figure out that the chart is not valid (e.g chart.canvas !== null); - // https://github.com/chartjs/Chart.js/issues/2807 - console.error("Failed to create chart: can't acquire context from the given item"); - return; - } - - me.initialize(); - me.update(); - }, - - /** - * @private - */ - initialize: function() { - var me = this; - - // Before init plugin notification - core_plugins.notify(me, 'beforeInit'); - - helpers$1.retinaScale(me, me.options.devicePixelRatio); - - me.bindEvents(); - - if (me.options.responsive) { - // Initial resize before chart draws (must be silent to preserve initial animations). - me.resize(true); - } - - // Make sure scales have IDs and are built before we build any controllers. - me.ensureScalesHaveIDs(); - me.buildOrUpdateScales(); - me.initToolTip(); - - // After init plugin notification - core_plugins.notify(me, 'afterInit'); - - return me; - }, - - clear: function() { - helpers$1.canvas.clear(this); - return this; - }, - - stop: function() { - // Stops any current animation loop occurring - core_animations.cancelAnimation(this); - return this; - }, - - resize: function(silent) { - var me = this; - var options = me.options; - var canvas = me.canvas; - var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; - - // the canvas render width and height will be casted to integers so make sure that - // the canvas display style uses the same integer values to avoid blurring effect. - - // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed - var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas))); - var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas))); - - if (me.width === newWidth && me.height === newHeight) { - return; - } - - canvas.width = me.width = newWidth; - canvas.height = me.height = newHeight; - canvas.style.width = newWidth + 'px'; - canvas.style.height = newHeight + 'px'; - - helpers$1.retinaScale(me, options.devicePixelRatio); - - if (!silent) { - // Notify any plugins about the resize - var newSize = {width: newWidth, height: newHeight}; - core_plugins.notify(me, 'resize', [newSize]); - - // Notify of resize - if (options.onResize) { - options.onResize(me, newSize); - } - - me.stop(); - me.update({ - duration: options.responsiveAnimationDuration - }); - } - }, - - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; - - helpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); - - helpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); - - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; - } - }, - - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildOrUpdateScales: function() { - var me = this; - var options = me.options; - var scales = me.scales || {}; - var items = []; - var updated = Object.keys(scales).reduce(function(obj, id) { - obj[id] = false; - return obj; - }, {}); - - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; - }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; - }) - ); - } - - if (options.scale) { - items.push({ - options: options.scale, - dtype: 'radialLinear', - isDefault: true, - dposition: 'chartArea' - }); - } - - helpers$1.each(items, function(item) { - var scaleOptions = item.options; - var id = scaleOptions.id; - var scaleType = valueOrDefault$8(scaleOptions.type, item.dtype); - - if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { - scaleOptions.position = item.dposition; - } - - updated[id] = true; - var scale = null; - if (id in scales && scales[id].type === scaleType) { - scale = scales[id]; - scale.options = scaleOptions; - scale.ctx = me.ctx; - scale.chart = me; - } else { - var scaleClass = core_scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - scale = new scaleClass({ - id: id, - type: scaleType, - options: scaleOptions, - ctx: me.ctx, - chart: me - }); - scales[scale.id] = scale; - } - - scale.mergeTicksOptions(); - - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - // clear up discarded scales - helpers$1.each(updated, function(hasUpdated, id) { - if (!hasUpdated) { - delete scales[id]; - } - }); - - me.scales = scales; - - core_scaleService.addScalesToLayout(this); - }, - - buildOrUpdateControllers: function() { - var me = this; - var newControllers = []; - - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - var type = dataset.type || me.config.type; - - if (meta.type && meta.type !== type) { - me.destroyDatasetMeta(datasetIndex); - meta = me.getDatasetMeta(datasetIndex); - } - meta.type = type; - - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - meta.controller.linkScales(); - } else { - var ControllerClass = controllers[meta.type]; - if (ControllerClass === undefined) { - throw new Error('"' + meta.type + '" is not a chart type.'); - } - - meta.controller = new ControllerClass(me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); - - return newControllers; - }, - - /** - * Reset the elements of all datasets - * @private - */ - resetElements: function() { - var me = this; - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); - }, - - /** - * Resets the chart back to it's state before the initial animation - */ - reset: function() { - this.resetElements(); - this.tooltip.initialize(); - }, - - update: function(config) { - var me = this; - - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } - - updateConfig(me); - - // plugins options references might have change, let's invalidate the cache - // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - core_plugins._invalidate(me); - - if (core_plugins.notify(me, 'beforeUpdate') === false) { - return; - } - - // In case the entire data object changed - me.tooltip._data = me.data; - - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); - - // Make sure all dataset controllers have correct meta data counts - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); - - me.updateLayout(); - - // Can only reset the new controllers after the scales have been updated - if (me.options.animation && me.options.animation.duration) { - helpers$1.each(newControllers, function(controller) { - controller.reset(); - }); - } - - me.updateDatasets(); - - // Need to reset tooltip in case it is displayed with elements that are removed - // after update. - me.tooltip.initialize(); - - // Last active contains items that were previously in the tooltip. - // When we reset the tooltip, we need to clear it - me.lastActive = []; - - // Do this before render so that any plugins that need final scale updates can use it - core_plugins.notify(me, 'afterUpdate'); - - if (me._bufferedRender) { - me._bufferedRequest = { - duration: config.duration, - easing: config.easing, - lazy: config.lazy - }; - } else { - me.render(config); - } - }, - - /** - * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` - * hook, in which case, plugins will not be called on `afterLayout`. - * @private - */ - updateLayout: function() { - var me = this; - - if (core_plugins.notify(me, 'beforeLayout') === false) { - return; - } - - core_layouts.update(this, this.width, this.height); - - /** - * Provided for backward compatibility, use `afterLayout` instead. - * @method IPlugin#afterScaleUpdate - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ - core_plugins.notify(me, 'afterScaleUpdate'); - core_plugins.notify(me, 'afterLayout'); - }, - - /** - * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` - * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. - * @private - */ - updateDatasets: function() { - var me = this; - - if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) { - return; - } - - for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.updateDataset(i); - } - - core_plugins.notify(me, 'afterDatasetsUpdate'); - }, - - /** - * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` - * hook, in which case, plugins will not be called on `afterDatasetUpdate`. - * @private - */ - updateDataset: function(index) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index - }; - - if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { - return; - } - - meta.controller.update(); - - core_plugins.notify(me, 'afterDatasetUpdate', [args]); - }, - - render: function(config) { - var me = this; - - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } - - var animationOptions = me.options.animation; - var duration = valueOrDefault$8(config.duration, animationOptions && animationOptions.duration); - var lazy = config.lazy; - - if (core_plugins.notify(me, 'beforeRender') === false) { - return; - } - - var onComplete = function(animation) { - core_plugins.notify(me, 'afterRender'); - helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me); - }; - - if (animationOptions && duration) { - var animation = new core_animation({ - numSteps: duration / 16.66, // 60 fps - easing: config.easing || animationOptions.easing, - - render: function(chart, animationObject) { - var easingFunction = helpers$1.easing.effects[animationObject.easing]; - var currentStep = animationObject.currentStep; - var stepDecimal = currentStep / animationObject.numSteps; - - chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); - }, - - onAnimationProgress: animationOptions.onProgress, - onAnimationComplete: onComplete - }); - - core_animations.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); - - // See https://github.com/chartjs/Chart.js/issues/3781 - onComplete(new core_animation({numSteps: 0, chart: me})); - } - - return me; - }, - - draw: function(easingValue) { - var me = this; - - me.clear(); - - if (helpers$1.isNullOrUndef(easingValue)) { - easingValue = 1; - } - - me.transition(easingValue); - - if (me.width <= 0 || me.height <= 0) { - return; - } - - if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) { - return; - } - - // Draw all the scales - helpers$1.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); - - me.drawDatasets(easingValue); - me._drawTooltip(easingValue); - - core_plugins.notify(me, 'afterDraw', [easingValue]); - }, - - /** - * @private - */ - transition: function(easingValue) { - var me = this; - - for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { - if (me.isDatasetVisible(i)) { - me.getDatasetMeta(i).controller.transition(easingValue); - } - } - - me.tooltip.transition(easingValue); - }, - - /** - * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` - * hook, in which case, plugins will not be called on `afterDatasetsDraw`. - * @private - */ - drawDatasets: function(easingValue) { - var me = this; - - if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { - return; - } - - // Draw datasets reversed to support proper line stacking - for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { - if (me.isDatasetVisible(i)) { - me.drawDataset(i, easingValue); - } - } - - core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]); - }, - - /** - * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` - * hook, in which case, plugins will not be called on `afterDatasetDraw`. - * @private - */ - drawDataset: function(index, easingValue) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index, - easingValue: easingValue - }; - - if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { - return; - } - - meta.controller.draw(easingValue); - - core_plugins.notify(me, 'afterDatasetDraw', [args]); - }, - - /** - * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` - * hook, in which case, plugins will not be called on `afterTooltipDraw`. - * @private - */ - _drawTooltip: function(easingValue) { - var me = this; - var tooltip = me.tooltip; - var args = { - tooltip: tooltip, - easingValue: easingValue - }; - - if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { - return; - } - - tooltip.draw(); - - core_plugins.notify(me, 'afterTooltipDraw', [args]); - }, - - /** - * Get the single element that was clicked on - * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - */ - getElementAtEvent: function(e) { - return core_interaction.modes.single(this, e); - }, - - getElementsAtEvent: function(e) { - return core_interaction.modes.label(this, e, {intersect: true}); - }, - - getElementsAtXAxis: function(e) { - return core_interaction.modes['x-axis'](this, e, {intersect: true}); - }, - - getElementsAtEventForMode: function(e, mode, options) { - var method = core_interaction.modes[mode]; - if (typeof method === 'function') { - return method(this, e, options); - } - - return []; - }, - - getDatasetAtEvent: function(e) { - return core_interaction.modes.dataset(this, e, {intersect: true}); - }, - - getDatasetMeta: function(datasetIndex) { - var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } - - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; - } - - return meta; - }, - - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - if (this.isDatasetVisible(i)) { - count++; - } - } - return count; - }, - - isDatasetVisible: function(datasetIndex) { - var meta = this.getDatasetMeta(datasetIndex); - - // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, - // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. - return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; - }, - - generateLegend: function() { - return this.options.legendCallback(this); - }, - - /** - * @private - */ - destroyDatasetMeta: function(datasetIndex) { - var id = this.id; - var dataset = this.data.datasets[datasetIndex]; - var meta = dataset._meta && dataset._meta[id]; - - if (meta) { - meta.controller.destroy(); - delete dataset._meta[id]; - } - }, - - destroy: function() { - var me = this; - var canvas = me.canvas; - var i, ilen; - - me.stop(); - - // dataset controllers need to cleanup associated data - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.destroyDatasetMeta(i); - } - - if (canvas) { - me.unbindEvents(); - helpers$1.canvas.clear(me); - platform.releaseContext(me.ctx); - me.canvas = null; - me.ctx = null; - } - - core_plugins.notify(me, 'destroy'); - - delete Chart.instances[me.id]; - }, - - toBase64Image: function() { - return this.canvas.toDataURL.apply(this.canvas, arguments); - }, - - initToolTip: function() { - var me = this; - me.tooltip = new core_tooltip({ - _chart: me, - _chartInstance: me, // deprecated, backward compatibility - _data: me.data, - _options: me.options.tooltips - }, me); - }, - - /** - * @private - */ - bindEvents: function() { - var me = this; - var listeners = me._listeners = {}; - var listener = function() { - me.eventHandler.apply(me, arguments); - }; - - helpers$1.each(me.options.events, function(type) { - platform.addEventListener(me, type, listener); - listeners[type] = listener; - }); - - // Elements used to detect size change should not be injected for non responsive charts. - // See https://github.com/chartjs/Chart.js/issues/2210 - if (me.options.responsive) { - listener = function() { - me.resize(); - }; - - platform.addEventListener(me, 'resize', listener); - listeners.resize = listener; - } - }, - - /** - * @private - */ - unbindEvents: function() { - var me = this; - var listeners = me._listeners; - if (!listeners) { - return; - } - - delete me._listeners; - helpers$1.each(listeners, function(listener, type) { - platform.removeEventListener(me, type, listener); - }); - }, - - updateHoverStyle: function(elements, mode, enabled) { - var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; - var element, i, ilen; - - for (i = 0, ilen = elements.length; i < ilen; ++i) { - element = elements[i]; - if (element) { - this.getDatasetMeta(element._datasetIndex).controller[method](element); - } - } - }, - - /** - * @private - */ - eventHandler: function(e) { - var me = this; - var tooltip = me.tooltip; - - if (core_plugins.notify(me, 'beforeEvent', [e]) === false) { - return; - } - - // Buffer any update calls so that renders do not occur - me._bufferedRender = true; - me._bufferedRequest = null; - - var changed = me.handleEvent(e); - // for smooth tooltip animations issue #4989 - // the tooltip should be the source of change - // Animation check workaround: - // tooltip._start will be null when tooltip isn't animating - if (tooltip) { - changed = tooltip._start - ? tooltip.handleEvent(e) - : changed | tooltip.handleEvent(e); - } - - core_plugins.notify(me, 'afterEvent', [e]); - - var bufferedRequest = me._bufferedRequest; - if (bufferedRequest) { - // If we have an update that was triggered, we need to do a normal render - me.render(bufferedRequest); - } else if (changed && !me.animating) { - // If entering, leaving, or changing elements, animate the change via pivot - me.stop(); - - // We only need to render at this point. Updating will cause scales to be - // recomputed generating flicker & using more memory than necessary. - me.render({ - duration: me.options.hover.animationDuration, - lazy: true - }); - } - - me._bufferedRender = false; - me._bufferedRequest = null; - - return me; - }, - - /** - * Handle an event - * @private - * @param {IEvent} event the event to handle - * @return {boolean} true if the chart needs to re-render - */ - handleEvent: function(e) { - var me = this; - var options = me.options || {}; - var hoverOptions = options.hover; - var changed = false; - - me.lastActive = me.lastActive || []; - - // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me.active = []; - } else { - me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); - } - - // Invoke onHover hook - // Need to call with native event here to not break backwards compatibility - helpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); - - if (e.type === 'mouseup' || e.type === 'click') { - if (options.onClick) { - // Use e.native here for backwards compatibility - options.onClick.call(me, e.native, me.active); - } - } - - // Remove styling for last active (even if it may still be active) - if (me.lastActive.length) { - me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); - } - - // Built in hover styling - if (me.active.length && hoverOptions.mode) { - me.updateHoverStyle(me.active, hoverOptions.mode, true); - } - - changed = !helpers$1.arrayEquals(me.active, me.lastActive); - - // Remember Last Actives - me.lastActive = me.active; - - return changed; - } -}); - -/** - * NOTE(SB) We actually don't use this container anymore but we need to keep it - * for backward compatibility. Though, it can still be useful for plugins that - * would need to work on multiple charts?! - */ -Chart.instances = {}; - -var core_controller = Chart; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart instead. - * @class Chart.Controller - * @deprecated since version 2.6 - * @todo remove at version 3 - * @private - */ -Chart.Controller = Chart; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart - * @deprecated since version 2.8 - * @todo remove at version 3 - * @private - */ -Chart.types = {}; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.helpers.configMerge - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -helpers$1.configMerge = mergeConfig; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.helpers.scaleMerge - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -helpers$1.scaleMerge = mergeScaleConfig; - -var core_helpers = function() { - - // -- Basic js utility methods - - helpers$1.where = function(collection, filterCallback) { - if (helpers$1.isArray(collection) && Array.prototype.filter) { - return collection.filter(filterCallback); - } - var filtered = []; - - helpers$1.each(collection, function(item) { - if (filterCallback(item)) { - filtered.push(item); - } - }); - - return filtered; - }; - helpers$1.findIndex = Array.prototype.findIndex ? - function(array, callback, scope) { - return array.findIndex(callback, scope); - } : - function(array, callback, scope) { - scope = scope === undefined ? array : scope; - for (var i = 0, ilen = array.length; i < ilen; ++i) { - if (callback.call(scope, array[i], i, array)) { - return i; - } - } - return -1; - }; - helpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to start of the array - if (helpers$1.isNullOrUndef(startIndex)) { - startIndex = -1; - } - for (var i = startIndex + 1; i < arrayToSearch.length; i++) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; - helpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to end of the array - if (helpers$1.isNullOrUndef(startIndex)) { - startIndex = arrayToSearch.length; - } - for (var i = startIndex - 1; i >= 0; i--) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; - - // -- Math methods - helpers$1.isNumber = function(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - }; - helpers$1.almostEquals = function(x, y, epsilon) { - return Math.abs(x - y) < epsilon; - }; - helpers$1.almostWhole = function(x, epsilon) { - var rounded = Math.round(x); - return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); - }; - helpers$1.max = function(array) { - return array.reduce(function(max, value) { - if (!isNaN(value)) { - return Math.max(max, value); - } - return max; - }, Number.NEGATIVE_INFINITY); - }; - helpers$1.min = function(array) { - return array.reduce(function(min, value) { - if (!isNaN(value)) { - return Math.min(min, value); - } - return min; - }, Number.POSITIVE_INFINITY); - }; - helpers$1.sign = Math.sign ? - function(x) { - return Math.sign(x); - } : - function(x) { - x = +x; // convert to a number - if (x === 0 || isNaN(x)) { - return x; - } - return x > 0 ? 1 : -1; - }; - helpers$1.log10 = Math.log10 ? - function(x) { - return Math.log10(x); - } : - function(x) { - var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. - // Check for whole powers of 10, - // which due to floating point rounding error should be corrected. - var powerOf10 = Math.round(exponent); - var isPowerOf10 = x === Math.pow(10, powerOf10); - - return isPowerOf10 ? powerOf10 : exponent; - }; - helpers$1.toRadians = function(degrees) { - return degrees * (Math.PI / 180); - }; - helpers$1.toDegrees = function(radians) { - return radians * (180 / Math.PI); - }; - - /** - * Returns the number of decimal places - * i.e. the number of digits after the decimal point, of the value of this Number. - * @param {number} x - A number. - * @returns {number} The number of decimal places. - * @private - */ - helpers$1._decimalPlaces = function(x) { - if (!helpers$1.isFinite(x)) { - return; - } - var e = 1; - var p = 0; - while (Math.round(x * e) / e !== x) { - e *= 10; - p++; - } - return p; - }; - - // Gets the angle from vertical upright to the point about a centre. - helpers$1.getAngleFromPoint = function(centrePoint, anglePoint) { - var distanceFromXCenter = anglePoint.x - centrePoint.x; - var distanceFromYCenter = anglePoint.y - centrePoint.y; - var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - - var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); - - if (angle < (-0.5 * Math.PI)) { - angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] - } - - return { - angle: angle, - distance: radialDistanceFromCenter - }; - }; - helpers$1.distanceBetweenPoints = function(pt1, pt2) { - return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); - }; - - /** - * Provided for backward compatibility, not available anymore - * @function Chart.helpers.aliasPixel - * @deprecated since version 2.8.0 - * @todo remove at version 3 - */ - helpers$1.aliasPixel = function(pixelWidth) { - return (pixelWidth % 2 === 0) ? 0 : 0.5; - }; - - /** - * Returns the aligned pixel value to avoid anti-aliasing blur - * @param {Chart} chart - The chart instance. - * @param {number} pixel - A pixel value. - * @param {number} width - The width of the element. - * @returns {number} The aligned pixel value. - * @private - */ - helpers$1._alignPixel = function(chart, pixel, width) { - var devicePixelRatio = chart.currentDevicePixelRatio; - var halfWidth = width / 2; - return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; - }; - - helpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { - // Props to Rob Spencer at scaled innovation for his post on splining between points - // http://scaledinnovation.com/analytics/splines/aboutSplines.html - - // This function must also respect "skipped" points - - var previous = firstPoint.skip ? middlePoint : firstPoint; - var current = middlePoint; - var next = afterPoint.skip ? middlePoint : afterPoint; - - var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); - var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); - - var s01 = d01 / (d01 + d12); - var s12 = d12 / (d01 + d12); - - // If all points are the same, s01 & s02 will be inf - s01 = isNaN(s01) ? 0 : s01; - s12 = isNaN(s12) ? 0 : s12; - - var fa = t * s01; // scaling factor for triangle Ta - var fb = t * s12; - - return { - previous: { - x: current.x - fa * (next.x - previous.x), - y: current.y - fa * (next.y - previous.y) - }, - next: { - x: current.x + fb * (next.x - previous.x), - y: current.y + fb * (next.y - previous.y) - } - }; - }; - helpers$1.EPSILON = Number.EPSILON || 1e-14; - helpers$1.splineCurveMonotone = function(points) { - // This function calculates Bézier control points in a similar way than |splineCurve|, - // but preserves monotonicity of the provided data and ensures no local extremums are added - // between the dataset discrete points due to the interpolation. - // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation - - var pointsWithTangents = (points || []).map(function(point) { - return { - model: point._model, - deltaK: 0, - mK: 0 - }; - }); - - // Calculate slopes (deltaK) and initialize tangents (mK) - var pointsLen = pointsWithTangents.length; - var i, pointBefore, pointCurrent, pointAfter; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } - - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointAfter && !pointAfter.model.skip) { - var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); - - // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 - pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; - } - - if (!pointBefore || pointBefore.model.skip) { - pointCurrent.mK = pointCurrent.deltaK; - } else if (!pointAfter || pointAfter.model.skip) { - pointCurrent.mK = pointBefore.deltaK; - } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { - pointCurrent.mK = 0; - } else { - pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; - } - } - - // Adjust tangents to ensure monotonic properties - var alphaK, betaK, tauK, squaredMagnitude; - for (i = 0; i < pointsLen - 1; ++i) { - pointCurrent = pointsWithTangents[i]; - pointAfter = pointsWithTangents[i + 1]; - if (pointCurrent.model.skip || pointAfter.model.skip) { - continue; - } - - if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { - pointCurrent.mK = pointAfter.mK = 0; - continue; - } - - alphaK = pointCurrent.mK / pointCurrent.deltaK; - betaK = pointAfter.mK / pointCurrent.deltaK; - squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); - if (squaredMagnitude <= 9) { - continue; - } - - tauK = 3 / Math.sqrt(squaredMagnitude); - pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; - pointAfter.mK = betaK * tauK * pointCurrent.deltaK; - } - - // Compute control points - var deltaX; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } - - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointBefore && !pointBefore.model.skip) { - deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; - pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; - pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; - } - if (pointAfter && !pointAfter.model.skip) { - deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; - pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; - pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; - } - } - }; - helpers$1.nextItem = function(collection, index, loop) { - if (loop) { - return index >= collection.length - 1 ? collection[0] : collection[index + 1]; - } - return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; - }; - helpers$1.previousItem = function(collection, index, loop) { - if (loop) { - return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; - } - return index <= 0 ? collection[0] : collection[index - 1]; - }; - // Implementation of the nice number algorithm used in determining where axis labels will go - helpers$1.niceNum = function(range, round) { - var exponent = Math.floor(helpers$1.log10(range)); - var fraction = range / Math.pow(10, exponent); - var niceFraction; - - if (round) { - if (fraction < 1.5) { - niceFraction = 1; - } else if (fraction < 3) { - niceFraction = 2; - } else if (fraction < 7) { - niceFraction = 5; - } else { - niceFraction = 10; - } - } else if (fraction <= 1.0) { - niceFraction = 1; - } else if (fraction <= 2) { - niceFraction = 2; - } else if (fraction <= 5) { - niceFraction = 5; - } else { - niceFraction = 10; - } - - return niceFraction * Math.pow(10, exponent); - }; - // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ - helpers$1.requestAnimFrame = (function() { - if (typeof window === 'undefined') { - return function(callback) { - callback(); - }; - } - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { - return window.setTimeout(callback, 1000 / 60); - }; - }()); - // -- DOM methods - helpers$1.getRelativePosition = function(evt, chart) { - var mouseX, mouseY; - var e = evt.originalEvent || evt; - var canvas = evt.target || evt.srcElement; - var boundingRect = canvas.getBoundingClientRect(); - - var touches = e.touches; - if (touches && touches.length > 0) { - mouseX = touches[0].clientX; - mouseY = touches[0].clientY; - - } else { - mouseX = e.clientX; - mouseY = e.clientY; - } - - // Scale mouse coordinates into canvas coordinates - // by following the pattern laid out by 'jerryj' in the comments of - // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ - var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left')); - var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top')); - var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right')); - var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom')); - var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; - var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; - - // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However - // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here - mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); - mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); - - return { - x: mouseX, - y: mouseY - }; - - }; - - // Private helper function to convert max-width/max-height values that may be percentages into a number - function parseMaxStyle(styleValue, node, parentProperty) { - var valueInPixels; - if (typeof styleValue === 'string') { - valueInPixels = parseInt(styleValue, 10); - - if (styleValue.indexOf('%') !== -1) { - // percentage * size in dimension - valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; - } - } else { - valueInPixels = styleValue; - } - - return valueInPixels; - } - - /** - * Returns if the given value contains an effective constraint. - * @private - */ - function isConstrainedValue(value) { - return value !== undefined && value !== null && value !== 'none'; - } - - /** - * Returns the max width or height of the given DOM node in a cross-browser compatible fashion - * @param {HTMLElement} domNode - the node to check the constraint on - * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height') - * @param {string} percentageProperty - property of parent to use when calculating width as a percentage - * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser} - */ - function getConstraintDimension(domNode, maxStyle, percentageProperty) { - var view = document.defaultView; - var parentNode = helpers$1._getParentNode(domNode); - var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; - var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; - var hasCNode = isConstrainedValue(constrainedNode); - var hasCContainer = isConstrainedValue(constrainedContainer); - var infinity = Number.POSITIVE_INFINITY; - - if (hasCNode || hasCContainer) { - return Math.min( - hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, - hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); - } - - return 'none'; - } - // returns Number or undefined if no constraint - helpers$1.getConstraintWidth = function(domNode) { - return getConstraintDimension(domNode, 'max-width', 'clientWidth'); - }; - // returns Number or undefined if no constraint - helpers$1.getConstraintHeight = function(domNode) { - return getConstraintDimension(domNode, 'max-height', 'clientHeight'); - }; - /** - * @private - */ - helpers$1._calculatePadding = function(container, padding, parentDimension) { - padding = helpers$1.getStyle(container, padding); - - return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10); - }; - /** - * @private - */ - helpers$1._getParentNode = function(domNode) { - var parent = domNode.parentNode; - if (parent && parent.toString() === '[object ShadowRoot]') { - parent = parent.host; - } - return parent; - }; - helpers$1.getMaximumWidth = function(domNode) { - var container = helpers$1._getParentNode(domNode); - if (!container) { - return domNode.clientWidth; - } - - var clientWidth = container.clientWidth; - var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth); - var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth); - - var w = clientWidth - paddingLeft - paddingRight; - var cw = helpers$1.getConstraintWidth(domNode); - return isNaN(cw) ? w : Math.min(w, cw); - }; - helpers$1.getMaximumHeight = function(domNode) { - var container = helpers$1._getParentNode(domNode); - if (!container) { - return domNode.clientHeight; - } - - var clientHeight = container.clientHeight; - var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight); - var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight); - - var h = clientHeight - paddingTop - paddingBottom; - var ch = helpers$1.getConstraintHeight(domNode); - return isNaN(ch) ? h : Math.min(h, ch); - }; - helpers$1.getStyle = function(el, property) { - return el.currentStyle ? - el.currentStyle[property] : - document.defaultView.getComputedStyle(el, null).getPropertyValue(property); - }; - helpers$1.retinaScale = function(chart, forceRatio) { - var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; - if (pixelRatio === 1) { - return; - } - - var canvas = chart.canvas; - var height = chart.height; - var width = chart.width; - - canvas.height = height * pixelRatio; - canvas.width = width * pixelRatio; - chart.ctx.scale(pixelRatio, pixelRatio); - - // If no style has been set on the canvas, the render size is used as display size, - // making the chart visually bigger, so let's enforce it to the "correct" values. - // See https://github.com/chartjs/Chart.js/issues/3575 - if (!canvas.style.height && !canvas.style.width) { - canvas.style.height = height + 'px'; - canvas.style.width = width + 'px'; - } - }; - // -- Canvas methods - helpers$1.fontString = function(pixelSize, fontStyle, fontFamily) { - return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; - }; - helpers$1.longestText = function(ctx, font, arrayOfThings, cache) { - cache = cache || {}; - var data = cache.data = cache.data || {}; - var gc = cache.garbageCollect = cache.garbageCollect || []; - - if (cache.font !== font) { - data = cache.data = {}; - gc = cache.garbageCollect = []; - cache.font = font; - } - - ctx.font = font; - var longest = 0; - helpers$1.each(arrayOfThings, function(thing) { - // Undefined strings and arrays should not be measured - if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) { - longest = helpers$1.measureText(ctx, data, gc, longest, thing); - } else if (helpers$1.isArray(thing)) { - // if it is an array lets measure each element - // to do maybe simplify this function a bit so we can do this more recursively? - helpers$1.each(thing, function(nestedThing) { - // Undefined strings and arrays should not be measured - if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) { - longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing); - } - }); - } - }); - - var gcLen = gc.length / 2; - if (gcLen > arrayOfThings.length) { - for (var i = 0; i < gcLen; i++) { - delete data[gc[i]]; - } - gc.splice(0, gcLen); - } - return longest; - }; - helpers$1.measureText = function(ctx, data, gc, longest, string) { - var textWidth = data[string]; - if (!textWidth) { - textWidth = data[string] = ctx.measureText(string).width; - gc.push(string); - } - if (textWidth > longest) { - longest = textWidth; - } - return longest; - }; - helpers$1.numberOfLabelLines = function(arrayOfThings) { - var numberOfLines = 1; - helpers$1.each(arrayOfThings, function(thing) { - if (helpers$1.isArray(thing)) { - if (thing.length > numberOfLines) { - numberOfLines = thing.length; - } - } - }); - return numberOfLines; - }; - - helpers$1.color = !chartjsColor ? - function(value) { - console.error('Color.js not found!'); - return value; - } : - function(value) { - /* global CanvasGradient */ - if (value instanceof CanvasGradient) { - value = core_defaults.global.defaultColor; - } - - return chartjsColor(value); - }; - - helpers$1.getHoverColor = function(colorValue) { - /* global CanvasPattern */ - return (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ? - colorValue : - helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString(); - }; -}; - -function abstract() { - throw new Error( - 'This method is not implemented: either no adapter can ' + - 'be found or an incomplete integration was provided.' - ); -} - -/** - * Date adapter (current used by the time scale) - * @namespace Chart._adapters._date - * @memberof Chart._adapters - * @private - */ - -/** - * Currently supported unit string values. - * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')} - * @memberof Chart._adapters._date - * @name Unit - */ - -/** - * @class - */ -function DateAdapter(options) { - this.options = options || {}; -} - -helpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ { - /** - * Returns a map of time formats for the supported formatting units defined - * in Unit as well as 'datetime' representing a detailed date/time string. - * @returns {{string: string}} - */ - formats: abstract, - - /** - * Parses the given `value` and return the associated timestamp. - * @param {any} value - the value to parse (usually comes from the data) - * @param {string} [format] - the expected data format - * @returns {(number|null)} - * @function - */ - parse: abstract, - - /** - * Returns the formatted date in the specified `format` for a given `timestamp`. - * @param {number} timestamp - the timestamp to format - * @param {string} format - the date/time token - * @return {string} - * @function - */ - format: abstract, - - /** - * Adds the specified `amount` of `unit` to the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {number} amount - the amount to add - * @param {Unit} unit - the unit as string - * @return {number} - * @function - */ - add: abstract, - - /** - * Returns the number of `unit` between the given timestamps. - * @param {number} max - the input timestamp (reference) - * @param {number} min - the timestamp to substract - * @param {Unit} unit - the unit as string - * @return {number} - * @function - */ - diff: abstract, - - /** - * Returns start of `unit` for the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {Unit} unit - the unit as string - * @param {number} [weekday] - the ISO day of the week with 1 being Monday - * and 7 being Sunday (only needed if param *unit* is `isoWeek`). - * @function - */ - startOf: abstract, - - /** - * Returns end of `unit` for the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {Unit} unit - the unit as string - * @function - */ - endOf: abstract, - - // DEPRECATIONS - - /** - * Provided for backward compatibility for scale.getValueForPixel(), - * this method should be overridden only by the moment adapter. - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ - _create: function(value) { - return value; - } -}); - -DateAdapter.override = function(members) { - helpers$1.extend(DateAdapter.prototype, members); -}; - -var _date = DateAdapter; - -var core_adapters = { - _date: _date -}; - -/** - * Namespace to hold static tick generation functions - * @namespace Chart.Ticks - */ -var core_ticks = { - /** - * Namespace to hold formatters for different types of ticks - * @namespace Chart.Ticks.formatters - */ - formatters: { - /** - * Formatter for value labels - * @method Chart.Ticks.formatters.values - * @param value the value to display - * @return {string|string[]} the label to display - */ - values: function(value) { - return helpers$1.isArray(value) ? value : '' + value; - }, - - /** - * Formatter for linear numeric ticks - * @method Chart.Ticks.formatters.linear - * @param tickValue {number} the value to be formatted - * @param index {number} the position of the tickValue parameter in the ticks array - * @param ticks {number[]} the list of ticks being converted - * @return {string} string representation of the tickValue parameter - */ - linear: function(tickValue, index, ticks) { - // If we have lots of ticks, don't use the ones - var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; - - // If we have a number like 2.5 as the delta, figure out how many decimal places we need - if (Math.abs(delta) > 1) { - if (tickValue !== Math.floor(tickValue)) { - // not an integer - delta = tickValue - Math.floor(tickValue); - } - } - - var logDelta = helpers$1.log10(Math.abs(delta)); - var tickString = ''; - - if (tickValue !== 0) { - var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); - if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation - var logTick = helpers$1.log10(Math.abs(tickValue)); - tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); - } else { - var numDecimal = -1 * Math.floor(logDelta); - numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places - tickString = tickValue.toFixed(numDecimal); - } - } else { - tickString = '0'; // never show decimal places for 0 - } - - return tickString; - }, - - logarithmic: function(tickValue, index, ticks) { - var remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue)))); - - if (tickValue === 0) { - return '0'; - } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { - return tickValue.toExponential(); - } - return ''; - } - } -}; - -var valueOrDefault$9 = helpers$1.valueOrDefault; -var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault; - -core_defaults._set('scale', { - display: true, - position: 'left', - offset: false, - - // grid line settings - gridLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - drawBorder: true, - drawOnChartArea: true, - drawTicks: true, - tickMarkLength: 10, - zeroLineWidth: 1, - zeroLineColor: 'rgba(0,0,0,0.25)', - zeroLineBorderDash: [], - zeroLineBorderDashOffset: 0.0, - offsetGridLines: false, - borderDash: [], - borderDashOffset: 0.0 - }, - - // scale label - scaleLabel: { - // display property - display: false, - - // actual label - labelString: '', - - // top/bottom padding - padding: { - top: 4, - bottom: 4 - } - }, - - // label settings - ticks: { - beginAtZero: false, - minRotation: 0, - maxRotation: 50, - mirror: false, - padding: 0, - reverse: false, - display: true, - autoSkip: true, - autoSkipPadding: 0, - labelOffset: 0, - // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. - callback: core_ticks.formatters.values, - minor: {}, - major: {} - } -}); - -function labelsFromTicks(ticks) { - var labels = []; - var i, ilen; - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(ticks[i].label); - } - - return labels; -} - -function getPixelForGridLine(scale, index, offsetGridLines) { - var lineValue = scale.getPixelForTick(index); - - if (offsetGridLines) { - if (scale.getTicks().length === 1) { - lineValue -= scale.isHorizontal() ? - Math.max(lineValue - scale.left, scale.right - lineValue) : - Math.max(lineValue - scale.top, scale.bottom - lineValue); - } else if (index === 0) { - lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; - } else { - lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; - } - } - return lineValue; -} - -function computeTextSize(context, tick, font) { - return helpers$1.isArray(tick) ? - helpers$1.longestText(context, font, tick) : - context.measureText(tick).width; -} - -var core_scale = core_element.extend({ - /** - * Get the padding needed for the scale - * @method getPadding - * @private - * @returns {Padding} the necessary padding - */ - getPadding: function() { - var me = this; - return { - left: me.paddingLeft || 0, - top: me.paddingTop || 0, - right: me.paddingRight || 0, - bottom: me.paddingBottom || 0 - }; - }, - - /** - * Returns the scale tick objects ({label, major}) - * @since 2.7 - */ - getTicks: function() { - return this._ticks; - }, - - // These methods are ordered by lifecyle. Utilities then follow. - // Any function defined here is inherited by all scale types. - // Any function can be extended by the scale type - - mergeTicksOptions: function() { - var ticks = this.options.ticks; - if (ticks.minor === false) { - ticks.minor = { - display: false - }; - } - if (ticks.major === false) { - ticks.major = { - display: false - }; - } - for (var key in ticks) { - if (key !== 'major' && key !== 'minor') { - if (typeof ticks.minor[key] === 'undefined') { - ticks.minor[key] = ticks[key]; - } - if (typeof ticks.major[key] === 'undefined') { - ticks.major[key] = ticks[key]; - } - } - } - }, - beforeUpdate: function() { - helpers$1.callback(this.options.beforeUpdate, [this]); - }, - - update: function(maxWidth, maxHeight, margins) { - var me = this; - var i, ilen, labels, label, ticks, tick; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = helpers$1.extend({ - left: 0, - right: 0, - top: 0, - bottom: 0 - }, margins); - - me._maxLabelLines = 0; - me.longestLabelWidth = 0; - me.longestTextCache = me.longestTextCache || {}; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - - // Data min/max - me.beforeDataLimits(); - me.determineDataLimits(); - me.afterDataLimits(); - - // Ticks - `this.ticks` is now DEPRECATED! - // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member - // and must not be accessed directly from outside this class. `this.ticks` being - // around for long time and not marked as private, we can't change its structure - // without unexpected breaking changes. If you need to access the scale ticks, - // use scale.getTicks() instead. - - me.beforeBuildTicks(); - - // New implementations should return an array of objects but for BACKWARD COMPAT, - // we still support no return (`this.ticks` internally set by calling this method). - ticks = me.buildTicks() || []; - - // Allow modification of ticks in callback. - ticks = me.afterBuildTicks(ticks) || ticks; - - me.beforeTickToLabelConversion(); - - // New implementations should return the formatted tick labels but for BACKWARD - // COMPAT, we still support no return (`this.ticks` internally changed by calling - // this method and supposed to contain only string values). - labels = me.convertTicksToLabels(ticks) || me.ticks; - - me.afterTickToLabelConversion(); - - me.ticks = labels; // BACKWARD COMPATIBILITY - - // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! - - // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) - for (i = 0, ilen = labels.length; i < ilen; ++i) { - label = labels[i]; - tick = ticks[i]; - if (!tick) { - ticks.push(tick = { - label: label, - major: false - }); - } else { - tick.label = label; - } - } - - me._ticks = ticks; - - // Tick Rotation - me.beforeCalculateTickRotation(); - me.calculateTickRotation(); - me.afterCalculateTickRotation(); - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - - }, - afterUpdate: function() { - helpers$1.callback(this.options.afterUpdate, [this]); - }, - - // - - beforeSetDimensions: function() { - helpers$1.callback(this.options.beforeSetDimensions, [this]); - }, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - }, - afterSetDimensions: function() { - helpers$1.callback(this.options.afterSetDimensions, [this]); - }, - - // Data limits - beforeDataLimits: function() { - helpers$1.callback(this.options.beforeDataLimits, [this]); - }, - determineDataLimits: helpers$1.noop, - afterDataLimits: function() { - helpers$1.callback(this.options.afterDataLimits, [this]); - }, - - // - beforeBuildTicks: function() { - helpers$1.callback(this.options.beforeBuildTicks, [this]); - }, - buildTicks: helpers$1.noop, - afterBuildTicks: function(ticks) { - var me = this; - // ticks is empty for old axis implementations here - if (helpers$1.isArray(ticks) && ticks.length) { - return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]); - } - // Support old implementations (that modified `this.ticks` directly in buildTicks) - me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks; - return ticks; - }, - - beforeTickToLabelConversion: function() { - helpers$1.callback(this.options.beforeTickToLabelConversion, [this]); - }, - convertTicksToLabels: function() { - var me = this; - // Convert ticks to strings - var tickOpts = me.options.ticks; - me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); - }, - afterTickToLabelConversion: function() { - helpers$1.callback(this.options.afterTickToLabelConversion, [this]); - }, - - // - - beforeCalculateTickRotation: function() { - helpers$1.callback(this.options.beforeCalculateTickRotation, [this]); - }, - calculateTickRotation: function() { - var me = this; - var context = me.ctx; - var tickOpts = me.options.ticks; - var labels = labelsFromTicks(me._ticks); - - // Get the width of each grid by calculating the difference - // between x offsets between 0 and 1. - var tickFont = helpers$1.options._parseFont(tickOpts); - context.font = tickFont.string; - - var labelRotation = tickOpts.minRotation || 0; - - if (labels.length && me.options.display && me.isHorizontal()) { - var originalLabelWidth = helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache); - var labelWidth = originalLabelWidth; - var cosRotation, sinRotation; - - // Allow 3 pixels x2 padding either side for label readability - var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; - - // Max label rotation can be set or default to 90 - also act as a loop counter - while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { - var angleRadians = helpers$1.toRadians(labelRotation); - cosRotation = Math.cos(angleRadians); - sinRotation = Math.sin(angleRadians); - - if (sinRotation * originalLabelWidth > me.maxHeight) { - // go back one step - labelRotation--; - break; - } - - labelRotation++; - labelWidth = cosRotation * originalLabelWidth; - } - } - - me.labelRotation = labelRotation; - }, - afterCalculateTickRotation: function() { - helpers$1.callback(this.options.afterCalculateTickRotation, [this]); - }, - - // - - beforeFit: function() { - helpers$1.callback(this.options.beforeFit, [this]); - }, - fit: function() { - var me = this; - // Reset - var minSize = me.minSize = { - width: 0, - height: 0 - }; - - var labels = labelsFromTicks(me._ticks); - - var opts = me.options; - var tickOpts = opts.ticks; - var scaleLabelOpts = opts.scaleLabel; - var gridLineOpts = opts.gridLines; - var display = me._isVisible(); - var position = opts.position; - var isHorizontal = me.isHorizontal(); - - var parseFont = helpers$1.options._parseFont; - var tickFont = parseFont(tickOpts); - var tickMarkLength = opts.gridLines.tickMarkLength; - - // Width - if (isHorizontal) { - // subtract the margins to line up with the chartArea if we are a full width scale - minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; - } else { - minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } - - // height - if (isHorizontal) { - minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } else { - minSize.height = me.maxHeight; // fill all the height - } - - // Are we showing a title for the scale? - if (scaleLabelOpts.display && display) { - var scaleLabelFont = parseFont(scaleLabelOpts); - var scaleLabelPadding = helpers$1.options.toPadding(scaleLabelOpts.padding); - var deltaHeight = scaleLabelFont.lineHeight + scaleLabelPadding.height; - - if (isHorizontal) { - minSize.height += deltaHeight; - } else { - minSize.width += deltaHeight; - } - } - - // Don't bother fitting the ticks if we are not showing the labels - if (tickOpts.display && display) { - var largestTextWidth = helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache); - var tallestLabelHeightInLines = helpers$1.numberOfLabelLines(labels); - var lineSpace = tickFont.size * 0.5; - var tickPadding = me.options.ticks.padding; - - // Store max number of lines and widest label for _autoSkip - me._maxLabelLines = tallestLabelHeightInLines; - me.longestLabelWidth = largestTextWidth; - - if (isHorizontal) { - var angleRadians = helpers$1.toRadians(me.labelRotation); - var cosRotation = Math.cos(angleRadians); - var sinRotation = Math.sin(angleRadians); - - // TODO - improve this calculation - var labelHeight = (sinRotation * largestTextWidth) - + (tickFont.lineHeight * tallestLabelHeightInLines) - + lineSpace; // padding - - minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); - - me.ctx.font = tickFont.string; - var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.string); - var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string); - var offsetLeft = me.getPixelForTick(0) - me.left; - var offsetRight = me.right - me.getPixelForTick(labels.length - 1); - var paddingLeft, paddingRight; - - // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned - // which means that the right padding is dominated by the font height - if (me.labelRotation !== 0) { - paddingLeft = position === 'bottom' ? (cosRotation * firstLabelWidth) : (cosRotation * lineSpace); - paddingRight = position === 'bottom' ? (cosRotation * lineSpace) : (cosRotation * lastLabelWidth); - } else { - paddingLeft = firstLabelWidth / 2; - paddingRight = lastLabelWidth / 2; - } - me.paddingLeft = Math.max(paddingLeft - offsetLeft, 0) + 3; // add 3 px to move away from canvas edges - me.paddingRight = Math.max(paddingRight - offsetRight, 0) + 3; - } else { - // A vertical axis is more constrained by the width. Labels are the - // dominant factor here, so get that length first and account for padding - if (tickOpts.mirror) { - largestTextWidth = 0; - } else { - // use lineSpace for consistency with horizontal axis - // tickPadding is not implemented for horizontal - largestTextWidth += tickPadding + lineSpace; - } - - minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); - - me.paddingTop = tickFont.size / 2; - me.paddingBottom = tickFont.size / 2; - } - } - - me.handleMargins(); - - me.width = minSize.width; - me.height = minSize.height; - }, - - /** - * Handle margins and padding interactions - * @private - */ - handleMargins: function() { - var me = this; - if (me.margins) { - me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); - me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); - me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); - me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); - } - }, - - afterFit: function() { - helpers$1.callback(this.options.afterFit, [this]); - }, - - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - isFullWidth: function() { - return (this.options.fullWidth); - }, - - // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not - getRightValue: function(rawValue) { - // Null and undefined values first - if (helpers$1.isNullOrUndef(rawValue)) { - return NaN; - } - // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values - if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) { - return NaN; - } - // If it is in fact an object, dive in one more level - if (rawValue) { - if (this.isHorizontal()) { - if (rawValue.x !== undefined) { - return this.getRightValue(rawValue.x); - } - } else if (rawValue.y !== undefined) { - return this.getRightValue(rawValue.y); - } - } - - // Value is good, return it - return rawValue; - }, - - /** - * Used to get the value to display in the tooltip for the data at the given index - * @param index - * @param datasetIndex - */ - getLabelForIndex: helpers$1.noop, - - /** - * Returns the location of the given data point. Value can either be an index or a numerical value - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param value - * @param index - * @param datasetIndex - */ - getPixelForValue: helpers$1.noop, - - /** - * Used to get the data value from a given pixel. This is the inverse of getPixelForValue - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param pixel - */ - getValueForPixel: helpers$1.noop, - - /** - * Returns the location of the tick at the given index - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForTick: function(index) { - var me = this; - var offset = me.options.offset; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var pixel = (tickWidth * index) + me.paddingLeft; - - if (offset) { - pixel += tickWidth / 2; - } - - var finalVal = me.left + pixel; - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - var innerHeight = me.height - (me.paddingTop + me.paddingBottom); - return me.top + (index * (innerHeight / (me._ticks.length - 1))); - }, - - /** - * Utility for getting the pixel location of a percentage of scale - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForDecimal: function(decimal) { - var me = this; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var valueOffset = (innerWidth * decimal) + me.paddingLeft; - - var finalVal = me.left + valueOffset; - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - return me.top + (decimal * me.height); - }, - - /** - * Returns the pixel for the minimum chart value - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getBasePixel: function() { - return this.getPixelForValue(this.getBaseValue()); - }, - - getBaseValue: function() { - var me = this; - var min = me.min; - var max = me.max; - - return me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0; - }, - - /** - * Returns a subset of ticks to be plotted to avoid overlapping labels. - * @private - */ - _autoSkip: function(ticks) { - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - var tickCount = ticks.length; - var skipRatio = false; - var maxTicks = optionTicks.maxTicksLimit; - - // Total space needed to display all ticks. First and last ticks are - // drawn as their center at end of axis, so tickCount-1 - var ticksLength = me._tickSize() * (tickCount - 1); - - // Axis length - var axisLength = isHorizontal - ? me.width - (me.paddingLeft + me.paddingRight) - : me.height - (me.paddingTop + me.PaddingBottom); - - var result = []; - var i, tick; - - if (ticksLength > axisLength) { - skipRatio = 1 + Math.floor(ticksLength / axisLength); - } - - // if they defined a max number of optionTicks, - // increase skipRatio until that number is met - if (tickCount > maxTicks) { - skipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks)); - } - - for (i = 0; i < tickCount; i++) { - tick = ticks[i]; - - if (skipRatio > 1 && i % skipRatio > 0) { - // leave tick in place but make sure it's not displayed (#4635) - delete tick.label; - } - result.push(tick); - } - return result; - }, - - /** - * @private - */ - _tickSize: function() { - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - - // Calculate space needed by label in axis direction. - var rot = helpers$1.toRadians(me.labelRotation); - var cos = Math.abs(Math.cos(rot)); - var sin = Math.abs(Math.sin(rot)); - - var padding = optionTicks.autoSkipPadding || 0; - var w = (me.longestLabelWidth + padding) || 0; - - var tickFont = helpers$1.options._parseFont(optionTicks); - var h = (me._maxLabelLines * tickFont.lineHeight + padding) || 0; - - // Calculate space needed for 1 tick in axis direction. - return isHorizontal - ? h * cos > w * sin ? w / cos : h / sin - : h * sin < w * cos ? h / cos : w / sin; - }, - - /** - * @private - */ - _isVisible: function() { - var me = this; - var chart = me.chart; - var display = me.options.display; - var i, ilen, meta; - - if (display !== 'auto') { - return !!display; - } - - // When 'auto', the scale is visible if at least one associated dataset is visible. - for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - meta = chart.getDatasetMeta(i); - if (meta.xAxisID === me.id || meta.yAxisID === me.id) { - return true; - } - } - } - - return false; - }, - - /** - * Actually draw the scale on the canvas - * @param {object} chartArea - the area of the chart to draw full grid lines on - */ - draw: function(chartArea) { - var me = this; - var options = me.options; - - if (!me._isVisible()) { - return; - } - - var chart = me.chart; - var context = me.ctx; - var globalDefaults = core_defaults.global; - var defaultFontColor = globalDefaults.defaultFontColor; - var optionTicks = options.ticks.minor; - var optionMajorTicks = options.ticks.major || optionTicks; - var gridLines = options.gridLines; - var scaleLabel = options.scaleLabel; - var position = options.position; - - var isRotated = me.labelRotation !== 0; - var isMirrored = optionTicks.mirror; - var isHorizontal = me.isHorizontal(); - - var parseFont = helpers$1.options._parseFont; - var ticks = optionTicks.display && optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); - var tickFontColor = valueOrDefault$9(optionTicks.fontColor, defaultFontColor); - var tickFont = parseFont(optionTicks); - var lineHeight = tickFont.lineHeight; - var majorTickFontColor = valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor); - var majorTickFont = parseFont(optionMajorTicks); - var tickPadding = optionTicks.padding; - var labelOffset = optionTicks.labelOffset; - - var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; - - var scaleLabelFontColor = valueOrDefault$9(scaleLabel.fontColor, defaultFontColor); - var scaleLabelFont = parseFont(scaleLabel); - var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding); - var labelRotationRadians = helpers$1.toRadians(me.labelRotation); - - var itemsToDraw = []; - - var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0; - var alignPixel = helpers$1._alignPixel; - var borderValue, tickStart, tickEnd; - - if (position === 'top') { - borderValue = alignPixel(chart, me.bottom, axisWidth); - tickStart = me.bottom - tl; - tickEnd = borderValue - axisWidth / 2; - } else if (position === 'bottom') { - borderValue = alignPixel(chart, me.top, axisWidth); - tickStart = borderValue + axisWidth / 2; - tickEnd = me.top + tl; - } else if (position === 'left') { - borderValue = alignPixel(chart, me.right, axisWidth); - tickStart = me.right - tl; - tickEnd = borderValue - axisWidth / 2; - } else { - borderValue = alignPixel(chart, me.left, axisWidth); - tickStart = borderValue + axisWidth / 2; - tickEnd = me.left + tl; - } - - var epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error. - - helpers$1.each(ticks, function(tick, index) { - // autoskipper skipped this tick (#4635) - if (helpers$1.isNullOrUndef(tick.label)) { - return; - } - - var label = tick.label; - var lineWidth, lineColor, borderDash, borderDashOffset; - if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { - // Draw the first index specially - lineWidth = gridLines.zeroLineWidth; - lineColor = gridLines.zeroLineColor; - borderDash = gridLines.zeroLineBorderDash || []; - borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0; - } else { - lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index); - lineColor = valueAtIndexOrDefault(gridLines.color, index); - borderDash = gridLines.borderDash || []; - borderDashOffset = gridLines.borderDashOffset || 0.0; - } - - // Common properties - var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign; - var labelCount = helpers$1.isArray(label) ? label.length : 1; - var lineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines); - - if (isHorizontal) { - var labelYOffset = tl + tickPadding; - - if (lineValue < me.left - epsilon) { - lineColor = 'rgba(0,0,0,0)'; - } - - tx1 = tx2 = x1 = x2 = alignPixel(chart, lineValue, lineWidth); - ty1 = tickStart; - ty2 = tickEnd; - labelX = me.getPixelForTick(index) + labelOffset; // x values for optionTicks (need to consider offsetLabel option) - - if (position === 'top') { - y1 = alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2; - y2 = chartArea.bottom; - textOffset = ((!isRotated ? 0.5 : 1) - labelCount) * lineHeight; - textAlign = !isRotated ? 'center' : 'left'; - labelY = me.bottom - labelYOffset; - } else { - y1 = chartArea.top; - y2 = alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2; - textOffset = (!isRotated ? 0.5 : 0) * lineHeight; - textAlign = !isRotated ? 'center' : 'right'; - labelY = me.top + labelYOffset; - } - } else { - var labelXOffset = (isMirrored ? 0 : tl) + tickPadding; - - if (lineValue < me.top - epsilon) { - lineColor = 'rgba(0,0,0,0)'; - } - - tx1 = tickStart; - tx2 = tickEnd; - ty1 = ty2 = y1 = y2 = alignPixel(chart, lineValue, lineWidth); - labelY = me.getPixelForTick(index) + labelOffset; - textOffset = (1 - labelCount) * lineHeight / 2; - - if (position === 'left') { - x1 = alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2; - x2 = chartArea.right; - textAlign = isMirrored ? 'left' : 'right'; - labelX = me.right - labelXOffset; - } else { - x1 = chartArea.left; - x2 = alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2; - textAlign = isMirrored ? 'right' : 'left'; - labelX = me.left + labelXOffset; - } - } - - itemsToDraw.push({ - tx1: tx1, - ty1: ty1, - tx2: tx2, - ty2: ty2, - x1: x1, - y1: y1, - x2: x2, - y2: y2, - labelX: labelX, - labelY: labelY, - glWidth: lineWidth, - glColor: lineColor, - glBorderDash: borderDash, - glBorderDashOffset: borderDashOffset, - rotation: -1 * labelRotationRadians, - label: label, - major: tick.major, - textOffset: textOffset, - textAlign: textAlign - }); - }); - - // Draw all of the tick labels, tick marks, and grid lines at the correct places - helpers$1.each(itemsToDraw, function(itemToDraw) { - var glWidth = itemToDraw.glWidth; - var glColor = itemToDraw.glColor; - - if (gridLines.display && glWidth && glColor) { - context.save(); - context.lineWidth = glWidth; - context.strokeStyle = glColor; - if (context.setLineDash) { - context.setLineDash(itemToDraw.glBorderDash); - context.lineDashOffset = itemToDraw.glBorderDashOffset; - } - - context.beginPath(); - - if (gridLines.drawTicks) { - context.moveTo(itemToDraw.tx1, itemToDraw.ty1); - context.lineTo(itemToDraw.tx2, itemToDraw.ty2); - } - - if (gridLines.drawOnChartArea) { - context.moveTo(itemToDraw.x1, itemToDraw.y1); - context.lineTo(itemToDraw.x2, itemToDraw.y2); - } - - context.stroke(); - context.restore(); - } - - if (optionTicks.display) { - // Make sure we draw text in the correct color and font - context.save(); - context.translate(itemToDraw.labelX, itemToDraw.labelY); - context.rotate(itemToDraw.rotation); - context.font = itemToDraw.major ? majorTickFont.string : tickFont.string; - context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; - context.textBaseline = 'middle'; - context.textAlign = itemToDraw.textAlign; - - var label = itemToDraw.label; - var y = itemToDraw.textOffset; - if (helpers$1.isArray(label)) { - for (var i = 0; i < label.length; ++i) { - // We just make sure the multiline element is a string here.. - context.fillText('' + label[i], 0, y); - y += lineHeight; - } - } else { - context.fillText(label, 0, y); - } - context.restore(); - } - }); - - if (scaleLabel.display) { - // Draw the scale label - var scaleLabelX; - var scaleLabelY; - var rotation = 0; - var halfLineHeight = scaleLabelFont.lineHeight / 2; - - if (isHorizontal) { - scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width - scaleLabelY = position === 'bottom' - ? me.bottom - halfLineHeight - scaleLabelPadding.bottom - : me.top + halfLineHeight + scaleLabelPadding.top; - } else { - var isLeft = position === 'left'; - scaleLabelX = isLeft - ? me.left + halfLineHeight + scaleLabelPadding.top - : me.right - halfLineHeight - scaleLabelPadding.top; - scaleLabelY = me.top + ((me.bottom - me.top) / 2); - rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; - } - - context.save(); - context.translate(scaleLabelX, scaleLabelY); - context.rotate(rotation); - context.textAlign = 'center'; - context.textBaseline = 'middle'; - context.fillStyle = scaleLabelFontColor; // render in correct colour - context.font = scaleLabelFont.string; - context.fillText(scaleLabel.labelString, 0, 0); - context.restore(); - } - - if (axisWidth) { - // Draw the line at the edge of the axis - var firstLineWidth = axisWidth; - var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0); - var x1, x2, y1, y2; - - if (isHorizontal) { - x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2; - x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2; - y1 = y2 = borderValue; - } else { - y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2; - y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2; - x1 = x2 = borderValue; - } - - context.lineWidth = axisWidth; - context.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0); - context.beginPath(); - context.moveTo(x1, y1); - context.lineTo(x2, y2); - context.stroke(); - } - } -}); - -var defaultConfig = { - position: 'bottom' -}; - -var scale_category = core_scale.extend({ - /** - * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those - * else fall back to data.labels - * @private - */ - getLabels: function() { - var data = this.chart.data; - return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; - }, - - determineDataLimits: function() { - var me = this; - var labels = me.getLabels(); - me.minIndex = 0; - me.maxIndex = labels.length - 1; - var findIndex; - - if (me.options.ticks.min !== undefined) { - // user specified min value - findIndex = labels.indexOf(me.options.ticks.min); - me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; - } - - if (me.options.ticks.max !== undefined) { - // user specified max value - findIndex = labels.indexOf(me.options.ticks.max); - me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; - } - - me.min = labels[me.minIndex]; - me.max = labels[me.maxIndex]; - }, - - buildTicks: function() { - var me = this; - var labels = me.getLabels(); - // If we are viewing some subset of labels, slice the original array - me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); - }, - - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var chart = me.chart; - - if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) { - return me.getRightValue(chart.data.datasets[datasetIndex].data[index]); - } - - return me.ticks[index - me.minIndex]; - }, - - // Used to get data value locations. Value can either be an index or a numerical value - getPixelForValue: function(value, index) { - var me = this; - var offset = me.options.offset; - // 1 is added because we need the length but we have the indexes - var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); - - // If value is a data object, then index is the index in the data array, - // not the index of the scale. We need to change that. - var valueCategory; - if (value !== undefined && value !== null) { - valueCategory = me.isHorizontal() ? value.x : value.y; - } - if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { - var labels = me.getLabels(); - value = valueCategory || value; - var idx = labels.indexOf(value); - index = idx !== -1 ? idx : index; - } - - if (me.isHorizontal()) { - var valueWidth = me.width / offsetAmt; - var widthOffset = (valueWidth * (index - me.minIndex)); - - if (offset) { - widthOffset += (valueWidth / 2); - } - - return me.left + widthOffset; - } - var valueHeight = me.height / offsetAmt; - var heightOffset = (valueHeight * (index - me.minIndex)); - - if (offset) { - heightOffset += (valueHeight / 2); - } - - return me.top + heightOffset; - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); - }, - - getValueForPixel: function(pixel) { - var me = this; - var offset = me.options.offset; - var value; - var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var horz = me.isHorizontal(); - var valueDimension = (horz ? me.width : me.height) / offsetAmt; - - pixel -= horz ? me.left : me.top; - - if (offset) { - pixel -= (valueDimension / 2); - } - - if (pixel <= 0) { - value = 0; - } else { - value = Math.round(pixel / valueDimension); - } - - return value + me.minIndex; - }, - - getBasePixel: function() { - return this.bottom; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults = defaultConfig; -scale_category._defaults = _defaults; - -var noop = helpers$1.noop; -var isNullOrUndef = helpers$1.isNullOrUndef; - -/** - * Generate a set of linear ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {number[]} array of tick values - */ -function generateTicks(generationOptions, dataRange) { - var ticks = []; - // To get a "nice" value for the tick spacing, we will use the appropriately named - // "nice number" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks - // for details. - - var MIN_SPACING = 1e-14; - var stepSize = generationOptions.stepSize; - var unit = stepSize || 1; - var maxNumSpaces = generationOptions.maxTicks - 1; - var min = generationOptions.min; - var max = generationOptions.max; - var precision = generationOptions.precision; - var rmin = dataRange.min; - var rmax = dataRange.max; - var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit; - var factor, niceMin, niceMax, numSpaces; - - // Beyond MIN_SPACING floating point numbers being to lose precision - // such that we can't do the math necessary to generate ticks - if (spacing < MIN_SPACING && isNullOrUndef(min) && isNullOrUndef(max)) { - return [rmin, rmax]; - } - - numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); - if (numSpaces > maxNumSpaces) { - // If the calculated num of spaces exceeds maxNumSpaces, recalculate it - spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit; - } - - if (stepSize || isNullOrUndef(precision)) { - // If a precision is not specified, calculate factor based on spacing - factor = Math.pow(10, helpers$1._decimalPlaces(spacing)); - } else { - // If the user specified a precision, round to that number of decimal places - factor = Math.pow(10, precision); - spacing = Math.ceil(spacing * factor) / factor; - } - - niceMin = Math.floor(rmin / spacing) * spacing; - niceMax = Math.ceil(rmax / spacing) * spacing; - - // If min, max and stepSize is set and they make an evenly spaced scale use it. - if (stepSize) { - // If very close to our whole number, use it. - if (!isNullOrUndef(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) { - niceMin = min; - } - if (!isNullOrUndef(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) { - niceMax = max; - } - } - - numSpaces = (niceMax - niceMin) / spacing; - // If very close to our rounded value, use it. - if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { - numSpaces = Math.round(numSpaces); - } else { - numSpaces = Math.ceil(numSpaces); - } - - niceMin = Math.round(niceMin * factor) / factor; - niceMax = Math.round(niceMax * factor) / factor; - ticks.push(isNullOrUndef(min) ? niceMin : min); - for (var j = 1; j < numSpaces; ++j) { - ticks.push(Math.round((niceMin + j * spacing) * factor) / factor); - } - ticks.push(isNullOrUndef(max) ? niceMax : max); - - return ticks; -} - -var scale_linearbase = core_scale.extend({ - getRightValue: function(value) { - if (typeof value === 'string') { - return +value; - } - return core_scale.prototype.getRightValue.call(this, value); - }, - - handleTickRangeOptions: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, - // do nothing since that would make the chart weird. If the user really wants a weird chart - // axis, they can manually override it - if (tickOpts.beginAtZero) { - var minSign = helpers$1.sign(me.min); - var maxSign = helpers$1.sign(me.max); - - if (minSign < 0 && maxSign < 0) { - // move the top up to 0 - me.max = 0; - } else if (minSign > 0 && maxSign > 0) { - // move the bottom down to 0 - me.min = 0; - } - } - - var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; - var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; - - if (tickOpts.min !== undefined) { - me.min = tickOpts.min; - } else if (tickOpts.suggestedMin !== undefined) { - if (me.min === null) { - me.min = tickOpts.suggestedMin; - } else { - me.min = Math.min(me.min, tickOpts.suggestedMin); - } - } - - if (tickOpts.max !== undefined) { - me.max = tickOpts.max; - } else if (tickOpts.suggestedMax !== undefined) { - if (me.max === null) { - me.max = tickOpts.suggestedMax; - } else { - me.max = Math.max(me.max, tickOpts.suggestedMax); - } - } - - if (setMin !== setMax) { - // We set the min or the max but not both. - // So ensure that our range is good - // Inverted or 0 length range can happen when - // ticks.min is set, and no datasets are visible - if (me.min >= me.max) { - if (setMin) { - me.max = me.min + 1; - } else { - me.min = me.max - 1; - } - } - } - - if (me.min === me.max) { - me.max++; - - if (!tickOpts.beginAtZero) { - me.min--; - } - } - }, - - getTickLimit: function() { - var me = this; - var tickOpts = me.options.ticks; - var stepSize = tickOpts.stepSize; - var maxTicksLimit = tickOpts.maxTicksLimit; - var maxTicks; - - if (stepSize) { - maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1; - } else { - maxTicks = me._computeTickLimit(); - maxTicksLimit = maxTicksLimit || 11; - } - - if (maxTicksLimit) { - maxTicks = Math.min(maxTicksLimit, maxTicks); - } - - return maxTicks; - }, - - _computeTickLimit: function() { - return Number.POSITIVE_INFINITY; - }, - - handleDirectionalChanges: noop, - - buildTicks: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // Figure out what the max number of ticks we can support it is based on the size of - // the axis area. For now, we say that the minimum tick spacing in pixels must be 40 - // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on - // the graph. Make sure we always have at least 2 ticks - var maxTicks = me.getTickLimit(); - maxTicks = Math.max(2, maxTicks); - - var numericGeneratorOptions = { - maxTicks: maxTicks, - min: tickOpts.min, - max: tickOpts.max, - precision: tickOpts.precision, - stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) - }; - var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); - - me.handleDirectionalChanges(); - - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers$1.max(ticks); - me.min = helpers$1.min(ticks); - - if (tickOpts.reverse) { - ticks.reverse(); - - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - }, - - convertTicksToLabels: function() { - var me = this; - me.ticksAsNumbers = me.ticks.slice(); - me.zeroLineIndex = me.ticks.indexOf(0); - - core_scale.prototype.convertTicksToLabels.call(me); - } -}); - -var defaultConfig$1 = { - position: 'left', - ticks: { - callback: core_ticks.formatters.linear - } -}; - -var scale_linear = scale_linearbase.extend({ - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - var DEFAULT_MIN = 0; - var DEFAULT_MAX = 1; - - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } - - // First Calculate the range - me.min = null; - me.max = null; - - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers$1.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } - - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } - - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; - - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); - - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = { - positiveValues: [], - negativeValues: [] - }; - } - - // Store these per type - var positiveValues = valuesPerStack[key].positiveValues; - var negativeValues = valuesPerStack[key].negativeValues; - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - positiveValues[index] = positiveValues[index] || 0; - negativeValues[index] = negativeValues[index] || 0; - - if (opts.relativePoints) { - positiveValues[index] = 100; - } else if (value < 0) { - negativeValues[index] += value; - } else { - positiveValues[index] += value; - } - }); - } - }); - - helpers$1.each(valuesPerStack, function(valuesForType) { - var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); - var minVal = helpers$1.min(values); - var maxVal = helpers$1.max(values); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - }); - - } else { - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - }); - } - }); - } - - me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; - me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; - - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - this.handleTickRangeOptions(); - }, - - // Returns the maximum number of ticks based on the scale dimension - _computeTickLimit: function() { - var me = this; - var tickFont; - - if (me.isHorizontal()) { - return Math.ceil(me.width / 40); - } - tickFont = helpers$1.options._parseFont(me.options.ticks); - return Math.ceil(me.height / tickFont.lineHeight); - }, - - // Called after the ticks are built. We need - handleDirectionalChanges: function() { - if (!this.isHorizontal()) { - // We are in a vertical orientation. The top value is the highest. So reverse the array - this.ticks.reverse(); - } - }, - - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - // Utils - getPixelForValue: function(value) { - // This must be called after fit has been run so that - // this.left, this.top, this.right, and this.bottom have been defined - var me = this; - var start = me.start; - - var rightValue = +me.getRightValue(value); - var pixel; - var range = me.end - start; - - if (me.isHorizontal()) { - pixel = me.left + (me.width / range * (rightValue - start)); - } else { - pixel = me.bottom - (me.height / range * (rightValue - start)); - } - return pixel; - }, - - getValueForPixel: function(pixel) { - var me = this; - var isHorizontal = me.isHorizontal(); - var innerDimension = isHorizontal ? me.width : me.height; - var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; - return me.start + ((me.end - me.start) * offset); - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticksAsNumbers[index]); - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$1 = defaultConfig$1; -scale_linear._defaults = _defaults$1; - -var valueOrDefault$a = helpers$1.valueOrDefault; - -/** - * Generate a set of logarithmic ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {number[]} array of tick values - */ -function generateTicks$1(generationOptions, dataRange) { - var ticks = []; - - var tickVal = valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min)))); - - var endExp = Math.floor(helpers$1.log10(dataRange.max)); - var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); - var exp, significand; - - if (tickVal === 0) { - exp = Math.floor(helpers$1.log10(dataRange.minNotZero)); - significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); - - ticks.push(tickVal); - tickVal = significand * Math.pow(10, exp); - } else { - exp = Math.floor(helpers$1.log10(tickVal)); - significand = Math.floor(tickVal / Math.pow(10, exp)); - } - var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - - do { - ticks.push(tickVal); - - ++significand; - if (significand === 10) { - significand = 1; - ++exp; - precision = exp >= 0 ? 1 : precision; - } - - tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; - } while (exp < endExp || (exp === endExp && significand < endSignificand)); - - var lastTick = valueOrDefault$a(generationOptions.max, tickVal); - ticks.push(lastTick); - - return ticks; -} - -var defaultConfig$2 = { - position: 'left', - - // label settings - ticks: { - callback: core_ticks.formatters.logarithmic - } -}; - -// TODO(v3): change this to positiveOrDefault -function nonNegativeOrDefault(value, defaultValue) { - return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue; -} - -var scale_logarithmic = core_scale.extend({ - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } - - // Calculate Range - me.min = null; - me.max = null; - me.minNotZero = null; - - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers$1.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } - - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } - - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; - - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = []; - } - - helpers$1.each(dataset.data, function(rawValue, index) { - var values = valuesPerStack[key]; - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - values[index] = values[index] || 0; - values[index] += value; - }); - } - }); - - helpers$1.each(valuesPerStack, function(valuesForType) { - if (valuesForType.length > 0) { - var minVal = helpers$1.min(valuesForType); - var maxVal = helpers$1.max(valuesForType); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - } - }); - - } else { - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - - if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { - me.minNotZero = value; - } - }); - } - }); - } - - // Common base implementation to handle ticks.min, ticks.max - this.handleTickRangeOptions(); - }, - - handleTickRangeOptions: function() { - var me = this; - var tickOpts = me.options.ticks; - var DEFAULT_MIN = 1; - var DEFAULT_MAX = 10; - - me.min = nonNegativeOrDefault(tickOpts.min, me.min); - me.max = nonNegativeOrDefault(tickOpts.max, me.max); - - if (me.min === me.max) { - if (me.min !== 0 && me.min !== null) { - me.min = Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1); - me.max = Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1); - } else { - me.min = DEFAULT_MIN; - me.max = DEFAULT_MAX; - } - } - if (me.min === null) { - me.min = Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1); - } - if (me.max === null) { - me.max = me.min !== 0 - ? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1) - : DEFAULT_MAX; - } - if (me.minNotZero === null) { - if (me.min > 0) { - me.minNotZero = me.min; - } else if (me.max < 1) { - me.minNotZero = Math.pow(10, Math.floor(helpers$1.log10(me.max))); - } else { - me.minNotZero = DEFAULT_MIN; - } - } - }, - - buildTicks: function() { - var me = this; - var tickOpts = me.options.ticks; - var reverse = !me.isHorizontal(); - - var generationOptions = { - min: nonNegativeOrDefault(tickOpts.min), - max: nonNegativeOrDefault(tickOpts.max) - }; - var ticks = me.ticks = generateTicks$1(generationOptions, me); - - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers$1.max(ticks); - me.min = helpers$1.min(ticks); - - if (tickOpts.reverse) { - reverse = !reverse; - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - if (reverse) { - ticks.reverse(); - } - }, - - convertTicksToLabels: function() { - this.tickValues = this.ticks.slice(); - - core_scale.prototype.convertTicksToLabels.call(this); - }, - - // Get the correct tooltip label - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.tickValues[index]); - }, - - /** - * Returns the value of the first tick. - * @param {number} value - The minimum not zero value. - * @return {number} The first tick value. - * @private - */ - _getFirstTickValue: function(value) { - var exp = Math.floor(helpers$1.log10(value)); - var significand = Math.floor(value / Math.pow(10, exp)); - - return significand * Math.pow(10, exp); - }, - - getPixelForValue: function(value) { - var me = this; - var tickOpts = me.options.ticks; - var reverse = tickOpts.reverse; - var log10 = helpers$1.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var offset = 0; - var innerDimension, pixel, start, end, sign; - - value = +me.getRightValue(value); - if (reverse) { - start = me.end; - end = me.start; - sign = -1; - } else { - start = me.start; - end = me.end; - sign = 1; - } - if (me.isHorizontal()) { - innerDimension = me.width; - pixel = reverse ? me.right : me.left; - } else { - innerDimension = me.height; - sign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0) - pixel = reverse ? me.top : me.bottom; - } - if (value !== start) { - if (start === 0) { // include zero tick - offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); - innerDimension -= offset; - start = firstTickValue; - } - if (value !== 0) { - offset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start)); - } - pixel += sign * offset; - } - return pixel; - }, - - getValueForPixel: function(pixel) { - var me = this; - var tickOpts = me.options.ticks; - var reverse = tickOpts.reverse; - var log10 = helpers$1.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var innerDimension, start, end, value; - - if (reverse) { - start = me.end; - end = me.start; - } else { - start = me.start; - end = me.end; - } - if (me.isHorizontal()) { - innerDimension = me.width; - value = reverse ? me.right - pixel : pixel - me.left; - } else { - innerDimension = me.height; - value = reverse ? pixel - me.top : me.bottom - pixel; - } - if (value !== start) { - if (start === 0) { // include zero tick - var offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); - value -= offset; - innerDimension -= offset; - start = firstTickValue; - } - value *= log10(end) - log10(start); - value /= innerDimension; - value = Math.pow(10, log10(start) + value); - } - return value; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$2 = defaultConfig$2; -scale_logarithmic._defaults = _defaults$2; - -var valueOrDefault$b = helpers$1.valueOrDefault; -var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault; -var resolve$7 = helpers$1.options.resolve; - -var defaultConfig$3 = { - display: true, - - // Boolean - Whether to animate scaling the chart from the centre - animate: true, - position: 'chartArea', - - angleLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - borderDash: [], - borderDashOffset: 0.0 - }, - - gridLines: { - circular: false - }, - - // label settings - ticks: { - // Boolean - Show a backdrop to the scale label - showLabelBackdrop: true, - - // String - The colour of the label backdrop - backdropColor: 'rgba(255,255,255,0.75)', - - // Number - The backdrop padding above & below the label in pixels - backdropPaddingY: 2, - - // Number - The backdrop padding to the side of the label in pixels - backdropPaddingX: 2, - - callback: core_ticks.formatters.linear - }, - - pointLabels: { - // Boolean - if true, show point labels - display: true, - - // Number - Point label font size in pixels - fontSize: 10, - - // Function - Used to convert point labels - callback: function(label) { - return label; - } - } -}; - -function getValueCount(scale) { - var opts = scale.options; - return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; -} - -function getTickBackdropHeight(opts) { - var tickOpts = opts.ticks; - - if (tickOpts.display && opts.display) { - return valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2; - } - return 0; -} - -function measureLabelSize(ctx, lineHeight, label) { - if (helpers$1.isArray(label)) { - return { - w: helpers$1.longestText(ctx, ctx.font, label), - h: label.length * lineHeight - }; - } - - return { - w: ctx.measureText(label).width, - h: lineHeight - }; -} - -function determineLimits(angle, pos, size, min, max) { - if (angle === min || angle === max) { - return { - start: pos - (size / 2), - end: pos + (size / 2) - }; - } else if (angle < min || angle > max) { - return { - start: pos - size, - end: pos - }; - } - - return { - start: pos, - end: pos + size - }; -} - -/** - * Helper function to fit a radial linear scale with point labels - */ -function fitWithPointLabels(scale) { - - // Right, this is really confusing and there is a lot of maths going on here - // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 - // - // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif - // - // Solution: - // - // We assume the radius of the polygon is half the size of the canvas at first - // at each index we check if the text overlaps. - // - // Where it does, we store that angle and that index. - // - // After finding the largest index and angle we calculate how much we need to remove - // from the shape radius to move the point inwards by that x. - // - // We average the left and right distances to get the maximum shape radius that can fit in the box - // along with labels. - // - // Once we have that, we can find the centre point for the chart, by taking the x text protrusion - // on each side, removing that from the size, halving it and adding the left x protrusion width. - // - // This will mean we have a shape fitted to the canvas, as large as it can be with the labels - // and position it in the most space efficient manner - // - // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif - - var plFont = helpers$1.options._parseFont(scale.options.pointLabels); - - // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. - // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points - var furthestLimits = { - l: 0, - r: scale.width, - t: 0, - b: scale.height - scale.paddingTop - }; - var furthestAngles = {}; - var i, textSize, pointPosition; - - scale.ctx.font = plFont.string; - scale._pointLabelSizes = []; - - var valueCount = getValueCount(scale); - for (i = 0; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, scale.drawingArea + 5); - textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || ''); - scale._pointLabelSizes[i] = textSize; - - // Add quarter circle to make degree 0 mean top of circle - var angleRadians = scale.getIndexAngle(i); - var angle = helpers$1.toDegrees(angleRadians) % 360; - var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); - var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); - - if (hLimits.start < furthestLimits.l) { - furthestLimits.l = hLimits.start; - furthestAngles.l = angleRadians; - } - - if (hLimits.end > furthestLimits.r) { - furthestLimits.r = hLimits.end; - furthestAngles.r = angleRadians; - } - - if (vLimits.start < furthestLimits.t) { - furthestLimits.t = vLimits.start; - furthestAngles.t = angleRadians; - } - - if (vLimits.end > furthestLimits.b) { - furthestLimits.b = vLimits.end; - furthestAngles.b = angleRadians; - } - } - - scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles); -} - -function getTextAlignForAngle(angle) { - if (angle === 0 || angle === 180) { - return 'center'; - } else if (angle < 180) { - return 'left'; - } - - return 'right'; -} - -function fillText(ctx, text, position, lineHeight) { - var y = position.y + lineHeight / 2; - var i, ilen; - - if (helpers$1.isArray(text)) { - for (i = 0, ilen = text.length; i < ilen; ++i) { - ctx.fillText(text[i], position.x, y); - y += lineHeight; - } - } else { - ctx.fillText(text, position.x, y); - } -} - -function adjustPointPositionForLabelHeight(angle, textSize, position) { - if (angle === 90 || angle === 270) { - position.y -= (textSize.h / 2); - } else if (angle > 270 || angle < 90) { - position.y -= textSize.h; - } -} - -function drawPointLabels(scale) { - var ctx = scale.ctx; - var opts = scale.options; - var angleLineOpts = opts.angleLines; - var gridLineOpts = opts.gridLines; - var pointLabelOpts = opts.pointLabels; - var lineWidth = valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth); - var lineColor = valueOrDefault$b(angleLineOpts.color, gridLineOpts.color); - var tickBackdropHeight = getTickBackdropHeight(opts); - - ctx.save(); - ctx.lineWidth = lineWidth; - ctx.strokeStyle = lineColor; - if (ctx.setLineDash) { - ctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []])); - ctx.lineDashOffset = resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]); - } - - var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); - - // Point Label Font - var plFont = helpers$1.options._parseFont(pointLabelOpts); - - ctx.font = plFont.string; - ctx.textBaseline = 'middle'; - - for (var i = getValueCount(scale) - 1; i >= 0; i--) { - if (angleLineOpts.display && lineWidth && lineColor) { - var outerPosition = scale.getPointPosition(i, outerDistance); - ctx.beginPath(); - ctx.moveTo(scale.xCenter, scale.yCenter); - ctx.lineTo(outerPosition.x, outerPosition.y); - ctx.stroke(); - } - - if (pointLabelOpts.display) { - // Extra pixels out for some label spacing - var extra = (i === 0 ? tickBackdropHeight / 2 : 0); - var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); - - // Keep this in loop since we may support array properties here - var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor); - ctx.fillStyle = pointLabelFontColor; - - var angleRadians = scale.getIndexAngle(i); - var angle = helpers$1.toDegrees(angleRadians); - ctx.textAlign = getTextAlignForAngle(angle); - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); - fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight); - } - } - ctx.restore(); -} - -function drawRadiusLine(scale, gridLineOpts, radius, index) { - var ctx = scale.ctx; - var circular = gridLineOpts.circular; - var valueCount = getValueCount(scale); - var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1); - var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1); - var pointPosition; - - if ((!circular && !valueCount) || !lineColor || !lineWidth) { - return; - } - - ctx.save(); - ctx.strokeStyle = lineColor; - ctx.lineWidth = lineWidth; - if (ctx.setLineDash) { - ctx.setLineDash(gridLineOpts.borderDash || []); - ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0; - } - - ctx.beginPath(); - if (circular) { - // Draw circular arcs between the points - ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); - } else { - // Draw straight lines connecting each index - pointPosition = scale.getPointPosition(0, radius); - ctx.moveTo(pointPosition.x, pointPosition.y); - - for (var i = 1; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, radius); - ctx.lineTo(pointPosition.x, pointPosition.y); - } - } - ctx.closePath(); - ctx.stroke(); - ctx.restore(); -} - -function numberOrZero(param) { - return helpers$1.isNumber(param) ? param : 0; -} - -var scale_radialLinear = scale_linearbase.extend({ - setDimensions: function() { - var me = this; - - // Set the unconstrained dimension before label rotation - me.width = me.maxWidth; - me.height = me.maxHeight; - me.paddingTop = getTickBackdropHeight(me.options) / 2; - me.xCenter = Math.floor(me.width / 2); - me.yCenter = Math.floor((me.height - me.paddingTop) / 2); - me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2; - }, - - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var min = Number.POSITIVE_INFINITY; - var max = Number.NEGATIVE_INFINITY; - - helpers$1.each(chart.data.datasets, function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - min = Math.min(value, min); - max = Math.max(value, max); - }); - } - }); - - me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); - me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); - - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - me.handleTickRangeOptions(); - }, - - // Returns the maximum number of ticks based on the scale dimension - _computeTickLimit: function() { - return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); - }, - - convertTicksToLabels: function() { - var me = this; - - scale_linearbase.prototype.convertTicksToLabels.call(me); - - // Point labels - me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); - }, - - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - fit: function() { - var me = this; - var opts = me.options; - - if (opts.display && opts.pointLabels.display) { - fitWithPointLabels(me); - } else { - me.setCenterPoint(0, 0, 0, 0); - } - }, - - /** - * Set radius reductions and determine new radius and center point - * @private - */ - setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { - var me = this; - var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); - var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); - var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); - var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b); - - radiusReductionLeft = numberOrZero(radiusReductionLeft); - radiusReductionRight = numberOrZero(radiusReductionRight); - radiusReductionTop = numberOrZero(radiusReductionTop); - radiusReductionBottom = numberOrZero(radiusReductionBottom); - - me.drawingArea = Math.min( - Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), - Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); - me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); - }, - - setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { - var me = this; - var maxRight = me.width - rightMovement - me.drawingArea; - var maxLeft = leftMovement + me.drawingArea; - var maxTop = topMovement + me.drawingArea; - var maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea; - - me.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left); - me.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop); - }, - - getIndexAngle: function(index) { - var angleMultiplier = (Math.PI * 2) / getValueCount(this); - var startAngle = this.chart.options && this.chart.options.startAngle ? - this.chart.options.startAngle : - 0; - - var startAngleRadians = startAngle * Math.PI * 2 / 360; - - // Start from the top instead of right, so remove a quarter of the circle - return index * angleMultiplier + startAngleRadians; - }, - - getDistanceFromCenterForValue: function(value) { - var me = this; - - if (value === null) { - return 0; // null always in center - } - - // Take into account half font size + the yPadding of the top value - var scalingFactor = me.drawingArea / (me.max - me.min); - if (me.options.ticks.reverse) { - return (me.max - value) * scalingFactor; - } - return (value - me.min) * scalingFactor; - }, - - getPointPosition: function(index, distanceFromCenter) { - var me = this; - var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); - return { - x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter, - y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter - }; - }, - - getPointPositionForValue: function(index, value) { - return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); - }, - - getBasePosition: function() { - var me = this; - var min = me.min; - var max = me.max; - - return me.getPointPositionForValue(0, - me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0); - }, - - draw: function() { - var me = this; - var opts = me.options; - var gridLineOpts = opts.gridLines; - var tickOpts = opts.ticks; - - if (opts.display) { - var ctx = me.ctx; - var startAngle = this.getIndexAngle(0); - var tickFont = helpers$1.options._parseFont(tickOpts); - - if (opts.angleLines.display || opts.pointLabels.display) { - drawPointLabels(me); - } - - helpers$1.each(me.ticks, function(label, index) { - // Don't draw a centre value (if it is minimum) - if (index > 0 || tickOpts.reverse) { - var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); - - // Draw circular lines around the scale - if (gridLineOpts.display && index !== 0) { - drawRadiusLine(me, gridLineOpts, yCenterOffset, index); - } - - if (tickOpts.display) { - var tickFontColor = valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor); - ctx.font = tickFont.string; - - ctx.save(); - ctx.translate(me.xCenter, me.yCenter); - ctx.rotate(startAngle); - - if (tickOpts.showLabelBackdrop) { - var labelWidth = ctx.measureText(label).width; - ctx.fillStyle = tickOpts.backdropColor; - ctx.fillRect( - -labelWidth / 2 - tickOpts.backdropPaddingX, - -yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY, - labelWidth + tickOpts.backdropPaddingX * 2, - tickFont.size + tickOpts.backdropPaddingY * 2 - ); - } - - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = tickFontColor; - ctx.fillText(label, 0, -yCenterOffset); - ctx.restore(); - } - } - }); - } - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$3 = defaultConfig$3; -scale_radialLinear._defaults = _defaults$3; - -var valueOrDefault$c = helpers$1.valueOrDefault; - -// Integer constants are from the ES6 spec. -var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; -var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -var INTERVALS = { - millisecond: { - common: true, - size: 1, - steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] - }, - second: { - common: true, - size: 1000, - steps: [1, 2, 5, 10, 15, 30] - }, - minute: { - common: true, - size: 60000, - steps: [1, 2, 5, 10, 15, 30] - }, - hour: { - common: true, - size: 3600000, - steps: [1, 2, 3, 6, 12] - }, - day: { - common: true, - size: 86400000, - steps: [1, 2, 5] - }, - week: { - common: false, - size: 604800000, - steps: [1, 2, 3, 4] - }, - month: { - common: true, - size: 2.628e9, - steps: [1, 2, 3] - }, - quarter: { - common: false, - size: 7.884e9, - steps: [1, 2, 3, 4] - }, - year: { - common: true, - size: 3.154e10 - } -}; - -var UNITS = Object.keys(INTERVALS); - -function sorter(a, b) { - return a - b; -} - -function arrayUnique(items) { - var hash = {}; - var out = []; - var i, ilen, item; - - for (i = 0, ilen = items.length; i < ilen; ++i) { - item = items[i]; - if (!hash[item]) { - hash[item] = true; - out.push(item); - } - } - - return out; -} - -/** - * Returns an array of {time, pos} objects used to interpolate a specific `time` or position - * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is - * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other - * extremity (left + width or top + height). Note that it would be more optimized to directly - * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need - * to create the lookup table. The table ALWAYS contains at least two items: min and max. - * - * @param {number[]} timestamps - timestamps sorted from lowest to highest. - * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min - * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. - * If 'series', timestamps will be positioned at the same distance from each other. In this - * case, only timestamps that break the time linearity are registered, meaning that in the - * best case, all timestamps are linear, the table contains only min and max. - */ -function buildLookupTable(timestamps, min, max, distribution) { - if (distribution === 'linear' || !timestamps.length) { - return [ - {time: min, pos: 0}, - {time: max, pos: 1} - ]; - } - - var table = []; - var items = [min]; - var i, ilen, prev, curr, next; - - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - curr = timestamps[i]; - if (curr > min && curr < max) { - items.push(curr); - } - } - - items.push(max); - - for (i = 0, ilen = items.length; i < ilen; ++i) { - next = items[i + 1]; - prev = items[i - 1]; - curr = items[i]; - - // only add points that breaks the scale linearity - if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { - table.push({time: curr, pos: i / (ilen - 1)}); - } - } - - return table; -} - -// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ -function lookup(table, key, value) { - var lo = 0; - var hi = table.length - 1; - var mid, i0, i1; - - while (lo >= 0 && lo <= hi) { - mid = (lo + hi) >> 1; - i0 = table[mid - 1] || null; - i1 = table[mid]; - - if (!i0) { - // given value is outside table (before first item) - return {lo: null, hi: i1}; - } else if (i1[key] < value) { - lo = mid + 1; - } else if (i0[key] > value) { - hi = mid - 1; - } else { - return {lo: i0, hi: i1}; - } - } - - // given value is outside table (after last item) - return {lo: i1, hi: null}; -} - -/** - * Linearly interpolates the given source `value` using the table items `skey` values and - * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') - * returns the position for a timestamp equal to 42. If value is out of bounds, values at - * index [0, 1] or [n - 1, n] are used for the interpolation. - */ -function interpolate$1(table, skey, sval, tkey) { - var range = lookup(table, skey, sval); - - // Note: the lookup table ALWAYS contains at least 2 items (min and max) - var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; - var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; - - var span = next[skey] - prev[skey]; - var ratio = span ? (sval - prev[skey]) / span : 0; - var offset = (next[tkey] - prev[tkey]) * ratio; - - return prev[tkey] + offset; -} - -function toTimestamp(scale, input) { - var adapter = scale._adapter; - var options = scale.options.time; - var parser = options.parser; - var format = parser || options.format; - var value = input; - - if (typeof parser === 'function') { - value = parser(value); - } - - // Only parse if its not a timestamp already - if (!helpers$1.isFinite(value)) { - value = typeof format === 'string' - ? adapter.parse(value, format) - : adapter.parse(value); - } - - if (value !== null) { - return +value; - } - - // Labels are in an incompatible format and no `parser` has been provided. - // The user might still use the deprecated `format` option for parsing. - if (!parser && typeof format === 'function') { - value = format(input); - - // `format` could return something else than a timestamp, if so, parse it - if (!helpers$1.isFinite(value)) { - value = adapter.parse(value); - } - } - - return value; -} - -function parse(scale, input) { - if (helpers$1.isNullOrUndef(input)) { - return null; - } - - var options = scale.options.time; - var value = toTimestamp(scale, scale.getRightValue(input)); - if (value === null) { - return value; - } - - if (options.round) { - value = +scale._adapter.startOf(value, options.round); - } - - return value; -} - -/** - * Returns the number of unit to skip to be able to display up to `capacity` number of ticks - * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. - */ -function determineStepSize(min, max, unit, capacity) { - var range = max - min; - var interval = INTERVALS[unit]; - var milliseconds = interval.size; - var steps = interval.steps; - var i, ilen, factor; - - if (!steps) { - return Math.ceil(range / (capacity * milliseconds)); - } - - for (i = 0, ilen = steps.length; i < ilen; ++i) { - factor = steps[i]; - if (Math.ceil(range / (milliseconds * factor)) <= capacity) { - break; - } - } - - return factor; -} - -/** - * Figures out what unit results in an appropriate number of auto-generated ticks - */ -function determineUnitForAutoTicks(minUnit, min, max, capacity) { - var ilen = UNITS.length; - var i, interval, factor; - - for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { - interval = INTERVALS[UNITS[i]]; - factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; - - if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { - return UNITS[i]; - } - } - - return UNITS[ilen - 1]; -} - -/** - * Figures out what unit to format a set of ticks with - */ -function determineUnitForFormatting(scale, ticks, minUnit, min, max) { - var ilen = UNITS.length; - var i, unit; - - for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { - unit = UNITS[i]; - if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= ticks.length) { - return unit; - } - } - - return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; -} - -function determineMajorUnit(unit) { - for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { - if (INTERVALS[UNITS[i]].common) { - return UNITS[i]; - } - } -} - -/** - * Generates a maximum of `capacity` timestamps between min and max, rounded to the - * `minor` unit, aligned on the `major` unit and using the given scale time `options`. - * Important: this method can return ticks outside the min and max range, it's the - * responsibility of the calling code to clamp values if needed. - */ -function generate(scale, min, max, capacity) { - var adapter = scale._adapter; - var options = scale.options; - var timeOpts = options.time; - var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); - var major = determineMajorUnit(minor); - var stepSize = valueOrDefault$c(timeOpts.stepSize, timeOpts.unitStepSize); - var weekday = minor === 'week' ? timeOpts.isoWeekday : false; - var majorTicksEnabled = options.ticks.major.enabled; - var interval = INTERVALS[minor]; - var first = min; - var last = max; - var ticks = []; - var time; - - if (!stepSize) { - stepSize = determineStepSize(min, max, minor, capacity); - } - - // For 'week' unit, handle the first day of week option - if (weekday) { - first = +adapter.startOf(first, 'isoWeek', weekday); - last = +adapter.startOf(last, 'isoWeek', weekday); - } - - // Align first/last ticks on unit - first = +adapter.startOf(first, weekday ? 'day' : minor); - last = +adapter.startOf(last, weekday ? 'day' : minor); - - // Make sure that the last tick include max - if (last < max) { - last = +adapter.add(last, 1, minor); - } - - time = first; - - if (majorTicksEnabled && major && !weekday && !timeOpts.round) { - // Align the first tick on the previous `minor` unit aligned on the `major` unit: - // we first aligned time on the previous `major` unit then add the number of full - // stepSize there is between first and the previous major time. - time = +adapter.startOf(time, major); - time = +adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor); - } - - for (; time < last; time = +adapter.add(time, stepSize, minor)) { - ticks.push(+time); - } - - ticks.push(+time); - - return ticks; -} - -/** - * Returns the start and end offsets from edges in the form of {start, end} - * where each value is a relative width to the scale and ranges between 0 and 1. - * They add extra margins on the both sides by scaling down the original scale. - * Offsets are added when the `offset` option is true. - */ -function computeOffsets(table, ticks, min, max, options) { - var start = 0; - var end = 0; - var first, last; - - if (options.offset && ticks.length) { - if (!options.time.min) { - first = interpolate$1(table, 'time', ticks[0], 'pos'); - if (ticks.length === 1) { - start = 1 - first; - } else { - start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2; - } - } - if (!options.time.max) { - last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos'); - if (ticks.length === 1) { - end = last; - } else { - end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2; - } - } - } - - return {start: start, end: end}; -} - -function ticksFromTimestamps(scale, values, majorUnit) { - var ticks = []; - var i, ilen, value, major; - - for (i = 0, ilen = values.length; i < ilen; ++i) { - value = values[i]; - major = majorUnit ? value === +scale._adapter.startOf(value, majorUnit) : false; - - ticks.push({ - value: value, - major: major - }); - } - - return ticks; -} - -var defaultConfig$4 = { - position: 'bottom', - - /** - * Data distribution along the scale: - * - 'linear': data are spread according to their time (distances can vary), - * - 'series': data are spread at the same distance from each other. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - distribution: 'linear', - - /** - * Scale boundary strategy (bypassed by min/max time options) - * - `data`: make sure data are fully visible, ticks outside are removed - * - `ticks`: make sure ticks are fully visible, data outside are truncated - * @see https://github.com/chartjs/Chart.js/pull/4556 - * @since 2.7.0 - */ - bounds: 'data', - - adapters: {}, - time: { - parser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment - format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/ - unit: false, // false == automatic or override with week, month, year, etc. - round: false, // none, or override with week, month, year, etc. - displayFormat: false, // DEPRECATED - isoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/ - minUnit: 'millisecond', - displayFormats: {} - }, - ticks: { - autoSkip: false, - - /** - * Ticks generation input values: - * - 'auto': generates "optimal" ticks based on scale size and time options. - * - 'data': generates ticks from data (including labels from data {t|x|y} objects). - * - 'labels': generates ticks from user given `data.labels` values ONLY. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - source: 'auto', - - major: { - enabled: false - } - } -}; - -var scale_time = core_scale.extend({ - initialize: function() { - this.mergeTicksOptions(); - core_scale.prototype.initialize.call(this); - }, - - update: function() { - var me = this; - var options = me.options; - var time = options.time || (options.time = {}); - var adapter = me._adapter = new core_adapters._date(options.adapters.date); - - // DEPRECATIONS: output a message only one time per update - if (time.format) { - console.warn('options.time.format is deprecated and replaced by options.time.parser.'); - } - - // Backward compatibility: before introducing adapter, `displayFormats` was - // supposed to contain *all* unit/string pairs but this can't be resolved - // when loading the scale (adapters are loaded afterward), so let's populate - // missing formats on update - helpers$1.mergeIf(time.displayFormats, adapter.formats()); - - return core_scale.prototype.update.apply(me, arguments); - }, - - /** - * Allows data to be referenced via 't' attribute - */ - getRightValue: function(rawValue) { - if (rawValue && rawValue.t !== undefined) { - rawValue = rawValue.t; - } - return core_scale.prototype.getRightValue.call(this, rawValue); - }, - - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var adapter = me._adapter; - var timeOpts = me.options.time; - var unit = timeOpts.unit || 'day'; - var min = MAX_INTEGER; - var max = MIN_INTEGER; - var timestamps = []; - var datasets = []; - var labels = []; - var i, j, ilen, jlen, data, timestamp; - var dataLabels = chart.data.labels || []; - - // Convert labels to timestamps - for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { - labels.push(parse(me, dataLabels[i])); - } - - // Convert data to timestamps - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - data = chart.data.datasets[i].data; - - // Let's consider that all data have the same format. - if (helpers$1.isObject(data[0])) { - datasets[i] = []; - - for (j = 0, jlen = data.length; j < jlen; ++j) { - timestamp = parse(me, data[j]); - timestamps.push(timestamp); - datasets[i][j] = timestamp; - } - } else { - for (j = 0, jlen = labels.length; j < jlen; ++j) { - timestamps.push(labels[j]); - } - datasets[i] = labels.slice(0); - } - } else { - datasets[i] = []; - } - } - - if (labels.length) { - // Sort labels **after** data have been converted - labels = arrayUnique(labels).sort(sorter); - min = Math.min(min, labels[0]); - max = Math.max(max, labels[labels.length - 1]); - } - - if (timestamps.length) { - timestamps = arrayUnique(timestamps).sort(sorter); - min = Math.min(min, timestamps[0]); - max = Math.max(max, timestamps[timestamps.length - 1]); - } - - min = parse(me, timeOpts.min) || min; - max = parse(me, timeOpts.max) || max; - - // In case there is no valid min/max, set limits based on unit time option - min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min; - max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; - - // Make sure that max is strictly higher than min (required by the lookup table) - me.min = Math.min(min, max); - me.max = Math.max(min + 1, max); - - // PRIVATE - me._horizontal = me.isHorizontal(); - me._table = []; - me._timestamps = { - data: timestamps, - datasets: datasets, - labels: labels - }; - }, - - buildTicks: function() { - var me = this; - var min = me.min; - var max = me.max; - var options = me.options; - var timeOpts = options.time; - var timestamps = []; - var ticks = []; - var i, ilen, timestamp; - - switch (options.ticks.source) { - case 'data': - timestamps = me._timestamps.data; - break; - case 'labels': - timestamps = me._timestamps.labels; - break; - case 'auto': - default: - timestamps = generate(me, min, max, me.getLabelCapacity(min), options); - } - - if (options.bounds === 'ticks' && timestamps.length) { - min = timestamps[0]; - max = timestamps[timestamps.length - 1]; - } - - // Enforce limits with user min/max options - min = parse(me, timeOpts.min) || min; - max = parse(me, timeOpts.max) || max; - - // Remove ticks outside the min/max range - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - timestamp = timestamps[i]; - if (timestamp >= min && timestamp <= max) { - ticks.push(timestamp); - } - } - - me.min = min; - me.max = max; - - // PRIVATE - me._unit = timeOpts.unit || determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max); - me._majorUnit = determineMajorUnit(me._unit); - me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); - me._offsets = computeOffsets(me._table, ticks, min, max, options); - - if (options.ticks.reverse) { - ticks.reverse(); - } - - return ticksFromTimestamps(me, ticks, me._majorUnit); - }, - - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var adapter = me._adapter; - var data = me.chart.data; - var timeOpts = me.options.time; - var label = data.labels && index < data.labels.length ? data.labels[index] : ''; - var value = data.datasets[datasetIndex].data[index]; - - if (helpers$1.isObject(value)) { - label = me.getRightValue(value); - } - if (timeOpts.tooltipFormat) { - return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat); - } - if (typeof label === 'string') { - return label; - } - return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime); - }, - - /** - * Function to format an individual tick mark - * @private - */ - tickFormatFunction: function(time, index, ticks, format) { - var me = this; - var adapter = me._adapter; - var options = me.options; - var formats = options.time.displayFormats; - var minorFormat = formats[me._unit]; - var majorUnit = me._majorUnit; - var majorFormat = formats[majorUnit]; - var majorTime = +adapter.startOf(time, majorUnit); - var majorTickOpts = options.ticks.major; - var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; - var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat); - var tickOpts = major ? majorTickOpts : options.ticks.minor; - var formatter = valueOrDefault$c(tickOpts.callback, tickOpts.userCallback); - - return formatter ? formatter(label, index, ticks) : label; - }, - - convertTicksToLabels: function(ticks) { - var labels = []; - var i, ilen; - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(this.tickFormatFunction(ticks[i].value, i, ticks)); - } - - return labels; - }, - - /** - * @private - */ - getPixelForOffset: function(time) { - var me = this; - var isReverse = me.options.ticks.reverse; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? isReverse ? me.right : me.left : isReverse ? me.bottom : me.top; - var pos = interpolate$1(me._table, 'time', time, 'pos'); - var offset = size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end); - - return isReverse ? start - offset : start + offset; - }, - - getPixelForValue: function(value, index, datasetIndex) { - var me = this; - var time = null; - - if (index !== undefined && datasetIndex !== undefined) { - time = me._timestamps.datasets[datasetIndex][index]; - } - - if (time === null) { - time = parse(me, value); - } - - if (time !== null) { - return me.getPixelForOffset(time); - } - }, - - getPixelForTick: function(index) { - var ticks = this.getTicks(); - return index >= 0 && index < ticks.length ? - this.getPixelForOffset(ticks[index].value) : - null; - }, - - getValueForPixel: function(pixel) { - var me = this; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? me.left : me.top; - var pos = (size ? (pixel - start) / size : 0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end; - var time = interpolate$1(me._table, 'pos', pos, 'time'); - - // DEPRECATION, we should return time directly - return me._adapter._create(time); - }, - - /** - * Crude approximation of what the label width might be - * @private - */ - getLabelWidth: function(label) { - var me = this; - var ticksOpts = me.options.ticks; - var tickLabelWidth = me.ctx.measureText(label).width; - var angle = helpers$1.toRadians(ticksOpts.maxRotation); - var cosRotation = Math.cos(angle); - var sinRotation = Math.sin(angle); - var tickFontSize = valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize); - - return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); - }, - - /** - * @private - */ - getLabelCapacity: function(exampleTime) { - var me = this; - - // pick the longest format (milliseconds) for guestimation - var format = me.options.time.displayFormats.millisecond; - var exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format); - var tickLabelWidth = me.getLabelWidth(exampleLabel); - var innerWidth = me.isHorizontal() ? me.width : me.height; - var capacity = Math.floor(innerWidth / tickLabelWidth); - - return capacity > 0 ? capacity : 1; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$4 = defaultConfig$4; -scale_time._defaults = _defaults$4; - -var scales = { - category: scale_category, - linear: scale_linear, - logarithmic: scale_logarithmic, - radialLinear: scale_radialLinear, - time: scale_time -}; - -var moment = createCommonjsModule(function (module, exports) { -(function (global, factory) { - module.exports = factory(); -}(commonjsGlobal, (function () { - var hookCallback; - - function hooks () { - return hookCallback.apply(null, arguments); - } - - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback (callback) { - hookCallback = callback; - } - - function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; - } - - function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; - } - - function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return (Object.getOwnPropertyNames(obj).length === 0); - } else { - var k; - for (k in obj) { - if (obj.hasOwnProperty(k)) { - return false; - } - } - return true; - } - } - - function isUndefined(input) { - return input === void 0; - } - - function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; - } - - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; - } - - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false - }; - } - - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - - var some; - if (Array.prototype.some) { - some = Array.prototype.some; - } else { - some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - - return false; - }; - } - - function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } - else { - return isNowValid; - } - } - return m._isValid; - } - - function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } - - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - var momentProperties = hooks.momentProperties = []; - - function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - - return to; - } - - var updateInProgress = false; - - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } - } - - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - function absFloor (number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; - - function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; - - function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; - } - - function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); - } - - function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; - } - - function Locale(config) { - if (config != null) { - this.set(config); - } - } - - var keys; - - if (Object.keys) { - keys = Object.keys; - } else { - keys = function (obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; - } - - var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }; - - function calendar (key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; - } - - var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); - } - - var aliases = {}; - - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } - - function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } - - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } - - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; - - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = '', i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match3to4 = /\d\d\d\d?/; // 999 - 9999 - var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf - - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z - - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; - - var regexes = {}; - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); - } - - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - var WEEK = 7; - var WEEKDAY = 8; - - // FORMATTING - - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; - }); - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PRIORITIES - - addUnitPriority('year', 1); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', true); - - function getIsLeapYear () { - return isLeapYear(this.year()); - } - - function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; - } - - function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; - } - - function set$1 (mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); - } - else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - } - - // MOMENTS - - function stringGet (units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } - - - function stringSet (units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } - - function mod(n, x) { - return ((n % x) + x) % x; - } - - var indexOf; - - if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; - } else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; - } - - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PRIORITY - - addUnitPriority('month', 8); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); - }); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - // LOCALES - - var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m, format) { - if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; - } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; - } - - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m, format) { - if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; - } - - function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } - } - - function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - - // MOMENTS - - function setMonth (mom, value) { - var dayOfMonth; - - if (!mom.isValid()) { - // No op - return mom; - } - - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } - } - - function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); - } - - var defaultMonthsShortRegex = matchWord; - function monthsShortRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; - } - } - - var defaultMonthsRegex = matchWord; - function monthsRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; - } - } - - function computeMonthsParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - } - - function createDate (y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date; - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - date = new Date(y + 400, m, d, h, M, s, ms); - if (isFinite(date.getFullYear())) { - date.setFullYear(y); - } - } else { - date = new Date(y, m, d, h, M, s, ms); - } - - return date; - } - - function createUTCDate (y) { - var date; - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - var args = Array.prototype.slice.call(arguments); - // preserve leap years using a full 400 year cycle, then reset - args[0] = y + 400; - date = new Date(Date.UTC.apply(null, args)); - if (isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - } else { - date = new Date(Date.UTC.apply(null, arguments)); - } - - return date; - } - - // start-of-first-week - start-of-year - function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - - return -fwdlw + fwd - 1; - } - - // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; - - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - - return { - year: resYear, - dayOfYear: resDayOfYear - }; - } - - function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; - - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } - - return { - week: resWeek, - year: resYear - }; - } - - function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; - } - - // FORMATTING - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PRIORITIES - - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 6th is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - // FORMATTING - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); - - // PARSING - - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); - }); - - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS - - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; - } - - function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; - } - - // LOCALES - function shiftWeekdays (ws, n) { - return ws.slice(n, 7).concat(ws.slice(0, n)); - } - - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m, format) { - var weekdays = isArray(this._weekdays) ? this._weekdays : - this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone']; - return (m === true) ? shiftWeekdays(weekdays, this._week.dow) - : (m) ? weekdays[m.day()] : weekdays; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow) - : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow) - : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; - } - - function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; - - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } - } - - function localeWeekdaysParse (weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); - } - if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - - // MOMENTS - - function getSetDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } - - function getSetLocaleDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } - } - - var defaultWeekdaysRegex = matchWord; - function weekdaysRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; - } - } - - var defaultWeekdaysShortRegex = matchWord; - function weekdaysShortRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } - } - - var defaultWeekdaysMinRegex = matchWord; - function weekdaysMinRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } - } - - - function computeWeekdaysParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; - - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); - } - - // FORMATTING - - function hFormat() { - return this.hours() % 12 || 12; - } - - function kFormat() { - return this.hours() || 24; - } - - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, hFormat); - addFormatToken('k', ['kk', 2], 0, kFormat); - - addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); - - addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); - }); - - addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PRIORITY - addUnitPriority('hour', 13); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - addRegexToken('kk', match1to2, match2); - - addRegexToken('hmm', match3to4); - addRegexToken('hmmss', match5to6); - addRegexToken('Hmm', match3to4); - addRegexToken('Hmmss', match5to6); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); - - // LOCALES - - function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - } - - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } - - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - - var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, - - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - - week: defaultLocaleWeek, - - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, - - meridiemParse: defaultLocaleMeridiemParse - }; - - // internal storage for locale config files - var locales = {}; - var localeFamilies = {}; - var globalLocale; - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return globalLocale; - } - - function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && ('object' !== 'undefined') && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - var aliasedRequire = commonjsRequire; - aliasedRequire('./locale/' + name); - getSetGlobalLocale(oldLocale); - } catch (e) {} - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - else { - if ((typeof console !== 'undefined') && console.warn) { - //warn user if arguments are passed but the locale could not be set - console.warn('Locale ' + key + ' not found. Did you forget to load it?'); - } - } - } - - return globalLocale._abbr; - } - - function defineLocale (name, config) { - if (config !== null) { - var locale, parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - locale = loadLocale(config.parentLocale); - if (locale != null) { - parentConfig = locale._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); - - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } - - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); - - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } - - function updateLocale(name, config) { - if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; - - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; - } - - // returns locale data - function getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - } - - function listLocales() { - return keys(locales); - } - - function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; - } - - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); - - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - - // check for mismatching day of week - if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from beginning of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to beginning of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; - - function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { - var result = [ - untruncateYear(yearStr), - defaultLocaleMonthsShort.indexOf(monthStr), - parseInt(dayStr, 10), - parseInt(hourStr, 10), - parseInt(minuteStr, 10) - ]; - - if (secondStr) { - result.push(parseInt(secondStr, 10)); - } - - return result; - } - - function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2000 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; - } - - function preprocessRFC2822(s) { - // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); - } - - function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; - } - } - return true; - } - - var obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 - }; - - function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - // the only allowed military tz is Z - return 0; - } else { - var hm = parseInt(numOffset, 10); - var m = hm % 100, h = (hm - m) / 100; - return h * 60 + m; - } - } - - // date and time from ref 2822 format - function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)); - if (match) { - var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } - - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); - - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); - } - - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // constant that refers to the ISO standard - hooks.ISO_8601 = function () {}; - - // constant that refers to the RFC 2822 form - hooks.RFC_2822 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - // console.log('token', token, 'parsedInput', parsedInput, - // 'regex', getParseRegexForToken(token, config)); - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); - } - - - function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } - - // date from string and array of format strings - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); - - configFromArray(config); - } - - function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; - } - - function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - - if (!isValid(config)) { - config._d = null; - } - - return config; - } - - function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } - } - - function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } - - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); - } - - function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - // TODO: Use [].sort instead? - function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - } - - function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - } - - var now = function () { - return Date.now ? Date.now() : +(new Date()); - }; - - var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; - - function isDurationValid(m) { - for (var key in m) { - if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { - return false; - } - } - - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } - - return true; - } - - function isValid$1() { - return this._isValid; - } - - function createInvalid$1() { - return createDuration(NaN); - } - - function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || normalizedInput.isoWeek || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - this._isValid = isDurationValid(normalizedInput); - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible to translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); - } - - function isDuration (obj) { - return obj instanceof Duration; - } - - function absRound (number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } - } - - // FORMATTING - - function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchShortOffset); - addRegexToken('ZZ', matchShortOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); - - if (matches === null) { - return null; - } - - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } - } - - function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - hooks.updateOffset = function () {}; - - // MOMENTS - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - - function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; - } - - function setOffsetToParsedOffset () { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } - else { - this.utcOffset(0, true); - } - } - return this; - } - - function hasAlignedHourOffset (input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted () { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; - } - - function isLocal () { - return this.isValid() ? !this._isUTC : false; - } - - function isUtcOffset () { - return this.isValid() ? this._isUTC : false; - } - - function isUtc () { - return this.isValid() ? this._isUTC && this._offset === 0 : false; - } - - // ASP.NET json date format regex - var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - - function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (isNumber(input)) { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; - } - - createDuration.fn = Duration.prototype; - createDuration.invalid = createInvalid$1; - - function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } - - function positiveMomentsDifference(base, other) { - var res = {}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; - } - - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; - } - - function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); - - if (!mom.isValid()) { - // No op - return; - } - - updateOffset = updateOffset == null ? true : updateOffset; - - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } - } - - var add = createAdder(1, 'add'); - var subtract = createAdder(-1, 'subtract'); - - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - } - - function calendar$1 (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); - } - - function clone () { - return new Moment(this); - } - - function isAfter (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } - } - - function isBefore (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } - } - - function isBetween (from, to, units, inclusivity) { - var localFrom = isMoment(from) ? from : createLocal(from), - localTo = isMoment(to) ? to : createLocal(to); - if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { - return false; - } - inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && - (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); - } - - function isSame (input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } - } - - function isSameOrAfter (input, units) { - return this.isSame(input, units) || this.isAfter(input, units); - } - - function isSameOrBefore (input, units) { - return this.isSame(input, units) || this.isBefore(input, units); - } - - function diff (input, units, asFloat) { - var that, - zoneDelta, - output; - - if (!this.isValid()) { - return NaN; - } - - that = cloneWithOffset(input, this); - - if (!that.isValid()) { - return NaN; - } - - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - - units = normalizeUnits(units); - - switch (units) { - case 'year': output = monthDiff(this, that) / 12; break; - case 'month': output = monthDiff(this, that); break; - case 'quarter': output = monthDiff(this, that) / 3; break; - case 'second': output = (this - that) / 1e3; break; // 1000 - case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 - case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 - case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst - case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: output = this - that; - } - - return asFloat ? output : absFloor(output); - } - - function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; - } - - hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - - function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - function toISOString(keepOffset) { - if (!this.isValid()) { - return null; - } - var utc = keepOffset !== true; - var m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); - } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - if (utc) { - return this.toDate().toISOString(); - } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); - } - } - return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); - } - - /** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ - function inspect () { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment'; - var zone = ''; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; - - return this.format(prefix + year + datetime + suffix); - } - - function format (inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); - } - - function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - - function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); - } - - function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - - function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); - } - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); - - function localeData () { - return this._locale; - } - - var MS_PER_SECOND = 1000; - var MS_PER_MINUTE = 60 * MS_PER_SECOND; - var MS_PER_HOUR = 60 * MS_PER_MINUTE; - var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; - - // actual modulo - handles negative numbers (for dates before 1970): - function mod$1(dividend, divisor) { - return (dividend % divisor + divisor) % divisor; - } - - function localStartOfDate(y, m, d) { - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return new Date(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return new Date(y, m, d).valueOf(); - } - } - - function utcStartOfDate(y, m, d) { - // Date.UTC remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return Date.UTC(y, m, d); - } - } - - function startOf (units) { - var time; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } - - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - - switch (units) { - case 'year': - time = startOfDate(this.year(), 0, 1); - break; - case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3, 1); - break; - case 'month': - time = startOfDate(this.year(), this.month(), 1); - break; - case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); - break; - case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date()); - break; - case 'hour': - time = this._d.valueOf(); - time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); - break; - case 'minute': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_MINUTE); - break; - case 'second': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_SECOND); - break; - } - - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } - - function endOf (units) { - var time; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } - - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - - switch (units) { - case 'year': - time = startOfDate(this.year() + 1, 0, 1) - 1; - break; - case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; - break; - case 'month': - time = startOfDate(this.year(), this.month() + 1, 1) - 1; - break; - case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; - break; - case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; - break; - case 'hour': - time = this._d.valueOf(); - time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; - break; - case 'minute': - time = this._d.valueOf(); - time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; - break; - case 'second': - time = this._d.valueOf(); - time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; - break; - } - - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } - - function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); - } - - function unix () { - return Math.floor(this.valueOf() / 1000); - } - - function toDate () { - return new Date(this.valueOf()); - } - - function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; - } - - function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; - } - - function toJSON () { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; - } - - function isValid$2 () { - return isValid(this); - } - - function parsingFlags () { - return extend({}, getParsingFlags(this)); - } - - function invalidAt () { - return getParsingFlags(this).overflow; - } - - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; - } - - // FORMATTING - - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - - function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - - // ALIASES - - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PRIORITY - - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); - - - // PARSING - - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); - }); - - // MOMENTS - - function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); - } - - function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); - } - - function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); - } - - function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - - function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } - } - - function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; - } - - // FORMATTING - - addFormatToken('Q', 0, 'Qo', 'quarter'); - - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PRIORITY - - addUnitPriority('quarter', 7); - - // PARSING - - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - - // MOMENTS - - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - - // FORMATTING - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PRIORITY - addUnitPriority('date', 9); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - // FORMATTING - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PRIORITY - addUnitPriority('dayOfYear', 4); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - } - - // FORMATTING - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PRIORITY - - addUnitPriority('minute', 14); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - // FORMATTING - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PRIORITY - - addUnitPriority('second', 15); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - - // MOMENTS - - var getSetSecond = makeGetSet('Seconds', false); - - // FORMATTING - - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); - - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); - - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; - }); - - - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PRIORITY - - addUnitPriority('millisecond', 16); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - - var token; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } - - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } - - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } - // MOMENTS - - var getSetMillisecond = makeGetSet('Milliseconds', false); - - // FORMATTING - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS - - function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; - } - - function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } - - var proto = Moment.prototype; - - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.year = getSetYear; - proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; - proto.isoWeekYear = getSetISOWeekYear; - proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; - proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; - proto.isoWeeksInYear = getISOWeeksInYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; - proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; - proto.hour = proto.hours = getSetHour; - proto.minute = proto.minutes = getSetMinute; - proto.second = proto.seconds = getSetSecond; - proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; - proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; - proto.zoneAbbr = getZoneAbbr; - proto.zoneName = getZoneName; - proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); - proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); - - function createUnix (input) { - return createLocal(input * 1000); - } - - function createInZone () { - return createLocal.apply(null, arguments).parseZone(); - } - - function preParsePostFormat (string) { - return string; - } - - var proto$1 = Locale.prototype; - - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; - proto$1.week = localeWeek; - proto$1.firstDayOfYear = localeFirstDayOfYear; - proto$1.firstDayOfWeek = localeFirstDayOfWeek; - - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; - - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; - - proto$1.isPM = localeIsPM; - proto$1.meridiem = localeMeridiem; - - function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); - } - - function listMonthsImpl (format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return get$1(format, index, field, 'month'); - } - - var i; - var out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; - } - - // () - // (5) - // (fmt, 5) - // (fmt) - // (true) - // (true, 5) - // (true, fmt, 5) - // (true, fmt) - function listWeekdaysImpl (localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; - - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } - - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; - - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } - - var i; - var out = []; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); - } - return out; - } - - function listMonths (format, index) { - return listMonthsImpl(format, index, 'months'); - } - - function listMonthsShort (format, index) { - return listMonthsImpl(format, index, 'monthsShort'); - } - - function listWeekdays (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); - } - - function listWeekdaysShort (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); - } - - function listWeekdaysMin (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); - } - - getSetGlobalLocale('en', { - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - // Side effect imports - - hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); - hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - - var mathAbs = Math.abs; - - function abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; - } - - function addSubtract$1 (duration, input, value, direction) { - var other = createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); - } - - // supports only 2.0-style add(1, 's') or add(duration) - function add$1 (input, value) { - return addSubtract$1(this, input, value, 1); - } - - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1 (input, value) { - return addSubtract$1(this, input, value, -1); - } - - function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } - - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; - } - - function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; - } - - function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; - } - - function as (units) { - if (!this.isValid()) { - return NaN; - } - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'quarter' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - switch (units) { - case 'month': return months; - case 'quarter': return months / 3; - case 'year': return months / 12; - } - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - } - - // TODO: Use this.as('ms')? - function valueOf$1 () { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - - function makeAs (alias) { - return function () { - return this.as(alias); - }; - } - - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asQuarters = makeAs('Q'); - var asYears = makeAs('y'); - - function clone$1 () { - return createDuration(this); - } - - function get$2 (units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; - } - - function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; - } - - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); - - function weeks () { - return absFloor(this.days() / 7); - } - - var round = Math.round; - var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year - }; - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - - // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding (roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof(roundingFunction) === 'function') { - round = roundingFunction; - return true; - } - return false; - } - - // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; - } - return true; - } - - function humanize (withSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); - } - - var abs$1 = Math.abs; - - function sign(x) { - return ((x > 0) - (x < 0)) || +x; - } - - function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - var totalSign = total < 0 ? '-' : ''; - var ymSign = sign(this._months) !== sign(total) ? '-' : ''; - var daysSign = sign(this._days) !== sign(total) ? '-' : ''; - var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - - return totalSign + 'P' + - (Y ? ymSign + Y + 'Y' : '') + - (M ? ymSign + M + 'M' : '') + - (D ? daysSign + D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? hmsSign + h + 'H' : '') + - (m ? hmsSign + m + 'M' : '') + - (s ? hmsSign + s + 'S' : ''); - } - - var proto$2 = Duration.prototype; - - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; - proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - - proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); - proto$2.lang = lang; - - // Side effect imports - - // FORMATTING - - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - - // PARSING - - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); - - // Side effect imports - - - hooks.version = '2.24.0'; - - setHookCallback(createLocal); - - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; - hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; - - // currently HTML5 input type only supports 24-hour formats - hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM' // - }; - - return hooks; - -}))); -}); - -var FORMATS = { - datetime: 'MMM D, YYYY, h:mm:ss a', - millisecond: 'h:mm:ss.SSS a', - second: 'h:mm:ss a', - minute: 'h:mm a', - hour: 'hA', - day: 'MMM D', - week: 'll', - month: 'MMM YYYY', - quarter: '[Q]Q - YYYY', - year: 'YYYY' -}; - -core_adapters._date.override(typeof moment === 'function' ? { - _id: 'moment', // DEBUG ONLY - - formats: function() { - return FORMATS; - }, - - parse: function(value, format) { - if (typeof value === 'string' && typeof format === 'string') { - value = moment(value, format); - } else if (!(value instanceof moment)) { - value = moment(value); - } - return value.isValid() ? value.valueOf() : null; - }, - - format: function(time, format) { - return moment(time).format(format); - }, - - add: function(time, amount, unit) { - return moment(time).add(amount, unit).valueOf(); - }, - - diff: function(max, min, unit) { - return moment.duration(moment(max).diff(moment(min))).as(unit); - }, - - startOf: function(time, unit, weekday) { - time = moment(time); - if (unit === 'isoWeek') { - return time.isoWeekday(weekday).valueOf(); - } - return time.startOf(unit).valueOf(); - }, - - endOf: function(time, unit) { - return moment(time).endOf(unit).valueOf(); - }, - - // DEPRECATIONS - - /** - * Provided for backward compatibility with scale.getValueForPixel(). - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ - _create: function(time) { - return moment(time); - }, -} : {}); - -core_defaults._set('global', { - plugins: { - filler: { - propagate: true - } - } -}); - -var mappers = { - dataset: function(source) { - var index = source.fill; - var chart = source.chart; - var meta = chart.getDatasetMeta(index); - var visible = meta && chart.isDatasetVisible(index); - var points = (visible && meta.dataset._children) || []; - var length = points.length || 0; - - return !length ? null : function(point, i) { - return (i < length && points[i]._view) || null; - }; - }, - - boundary: function(source) { - var boundary = source.boundary; - var x = boundary ? boundary.x : null; - var y = boundary ? boundary.y : null; - - return function(point) { - return { - x: x === null ? point.x : x, - y: y === null ? point.y : y, - }; - }; - } -}; - -// @todo if (fill[0] === '#') -function decodeFill(el, index, count) { - var model = el._model || {}; - var fill = model.fill; - var target; - - if (fill === undefined) { - fill = !!model.backgroundColor; - } - - if (fill === false || fill === null) { - return false; - } - - if (fill === true) { - return 'origin'; - } - - target = parseFloat(fill, 10); - if (isFinite(target) && Math.floor(target) === target) { - if (fill[0] === '-' || fill[0] === '+') { - target = index + target; - } - - if (target === index || target < 0 || target >= count) { - return false; - } - - return target; - } - - switch (fill) { - // compatibility - case 'bottom': - return 'start'; - case 'top': - return 'end'; - case 'zero': - return 'origin'; - // supported boundaries - case 'origin': - case 'start': - case 'end': - return fill; - // invalid fill values - default: - return false; - } -} - -function computeBoundary(source) { - var model = source.el._model || {}; - var scale = source.el._scale || {}; - var fill = source.fill; - var target = null; - var horizontal; - - if (isFinite(fill)) { - return null; - } - - // Backward compatibility: until v3, we still need to support boundary values set on - // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and - // controllers might still use it (e.g. the Smith chart). - - if (fill === 'start') { - target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; - } else if (fill === 'end') { - target = model.scaleTop === undefined ? scale.top : model.scaleTop; - } else if (model.scaleZero !== undefined) { - target = model.scaleZero; - } else if (scale.getBasePosition) { - target = scale.getBasePosition(); - } else if (scale.getBasePixel) { - target = scale.getBasePixel(); - } - - if (target !== undefined && target !== null) { - if (target.x !== undefined && target.y !== undefined) { - return target; - } - - if (helpers$1.isFinite(target)) { - horizontal = scale.isHorizontal(); - return { - x: horizontal ? target : null, - y: horizontal ? null : target - }; - } - } - - return null; -} - -function resolveTarget(sources, index, propagate) { - var source = sources[index]; - var fill = source.fill; - var visited = [index]; - var target; - - if (!propagate) { - return fill; - } - - while (fill !== false && visited.indexOf(fill) === -1) { - if (!isFinite(fill)) { - return fill; - } - - target = sources[fill]; - if (!target) { - return false; - } - - if (target.visible) { - return fill; - } - - visited.push(fill); - fill = target.fill; - } - - return false; -} - -function createMapper(source) { - var fill = source.fill; - var type = 'dataset'; - - if (fill === false) { - return null; - } - - if (!isFinite(fill)) { - type = 'boundary'; - } - - return mappers[type](source); -} - -function isDrawable(point) { - return point && !point.skip; -} - -function drawArea(ctx, curve0, curve1, len0, len1) { - var i; - - if (!len0 || !len1) { - return; - } - - // building first area curve (normal) - ctx.moveTo(curve0[0].x, curve0[0].y); - for (i = 1; i < len0; ++i) { - helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); - } - - // joining the two area curves - ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); - - // building opposite area curve (reverse) - for (i = len1 - 1; i > 0; --i) { - helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); - } -} - -function doFill(ctx, points, mapper, view, color, loop) { - var count = points.length; - var span = view.spanGaps; - var curve0 = []; - var curve1 = []; - var len0 = 0; - var len1 = 0; - var i, ilen, index, p0, p1, d0, d1; - - ctx.beginPath(); - - for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { - index = i % count; - p0 = points[index]._view; - p1 = mapper(p0, index, view); - d0 = isDrawable(p0); - d1 = isDrawable(p1); - - if (d0 && d1) { - len0 = curve0.push(p0); - len1 = curve1.push(p1); - } else if (len0 && len1) { - if (!span) { - drawArea(ctx, curve0, curve1, len0, len1); - len0 = len1 = 0; - curve0 = []; - curve1 = []; - } else { - if (d0) { - curve0.push(p0); - } - if (d1) { - curve1.push(p1); - } - } - } - } - - drawArea(ctx, curve0, curve1, len0, len1); - - ctx.closePath(); - ctx.fillStyle = color; - ctx.fill(); -} - -var plugin_filler = { - id: 'filler', - - afterDatasetsUpdate: function(chart, options) { - var count = (chart.data.datasets || []).length; - var propagate = options.propagate; - var sources = []; - var meta, i, el, source; - - for (i = 0; i < count; ++i) { - meta = chart.getDatasetMeta(i); - el = meta.dataset; - source = null; - - if (el && el._model && el instanceof elements.Line) { - source = { - visible: chart.isDatasetVisible(i), - fill: decodeFill(el, i, count), - chart: chart, - el: el - }; - } - - meta.$filler = source; - sources.push(source); - } - - for (i = 0; i < count; ++i) { - source = sources[i]; - if (!source) { - continue; - } - - source.fill = resolveTarget(sources, i, propagate); - source.boundary = computeBoundary(source); - source.mapper = createMapper(source); - } - }, - - beforeDatasetDraw: function(chart, args) { - var meta = args.meta.$filler; - if (!meta) { - return; - } - - var ctx = chart.ctx; - var el = meta.el; - var view = el._view; - var points = el._children || []; - var mapper = meta.mapper; - var color = view.backgroundColor || core_defaults.global.defaultColor; - - if (mapper && color && points.length) { - helpers$1.canvas.clipArea(ctx, chart.chartArea); - doFill(ctx, points, mapper, view, color, el._loop); - helpers$1.canvas.unclipArea(ctx); - } - } -}; - -var noop$1 = helpers$1.noop; -var valueOrDefault$d = helpers$1.valueOrDefault; - -core_defaults._set('global', { - legend: { - display: true, - position: 'top', - fullWidth: true, - reverse: false, - weight: 1000, - - // a callback that will handle - onClick: function(e, legendItem) { - var index = legendItem.datasetIndex; - var ci = this.chart; - var meta = ci.getDatasetMeta(index); - - // See controller.isDatasetVisible comment - meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; - - // We hid a dataset ... rerender the chart - ci.update(); - }, - - onHover: null, - onLeave: null, - - labels: { - boxWidth: 40, - padding: 10, - // Generates labels shown in the legend - // Valid properties to return: - // text : text to display - // fillStyle : fill of coloured box - // strokeStyle: stroke of coloured box - // hidden : if this legend item refers to a hidden item - // lineCap : cap style for line - // lineDash - // lineDashOffset : - // lineJoin : - // lineWidth : - generateLabels: function(chart) { - var data = chart.data; - return helpers$1.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { - return { - text: dataset.label, - fillStyle: (!helpers$1.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), - hidden: !chart.isDatasetVisible(i), - lineCap: dataset.borderCapStyle, - lineDash: dataset.borderDash, - lineDashOffset: dataset.borderDashOffset, - lineJoin: dataset.borderJoinStyle, - lineWidth: dataset.borderWidth, - strokeStyle: dataset.borderColor, - pointStyle: dataset.pointStyle, - - // Below is extra data used for toggling the datasets - datasetIndex: i - }; - }, this) : []; - } - } - }, - - legendCallback: function(chart) { - var text = []; - text.push('
    '); - for (var i = 0; i < chart.data.datasets.length; i++) { - text.push('
  • '); - if (chart.data.datasets[i].label) { - text.push(chart.data.datasets[i].label); - } - text.push('
  • '); - } - text.push('
'); - return text.join(''); - } -}); - -/** - * Helper function to get the box width based on the usePointStyle option - * @param {object} labelopts - the label options on the legend - * @param {number} fontSize - the label font size - * @return {number} width of the color box area - */ -function getBoxWidth(labelOpts, fontSize) { - return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? - fontSize : - labelOpts.boxWidth; -} - -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Legend = core_element.extend({ - - initialize: function(config) { - helpers$1.extend(this, config); - - // Contains hit boxes for each dataset (in dataset order) - this.legendHitBoxes = []; - - /** - * @private - */ - this._hoveredItem = null; - - // Are we in doughnut mode which has a different data type - this.doughnutMode = false; - }, - - // These methods are ordered by lifecycle. Utilities then follow. - // Any function defined here is inherited by all legend types. - // Any function can be extended by the legend type - - beforeUpdate: noop$1, - update: function(maxWidth, maxHeight, margins) { - var me = this; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); - - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - }, - afterUpdate: noop$1, - - // - - beforeSetDimensions: noop$1, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop$1, - - // - - beforeBuildLabels: noop$1, - buildLabels: function() { - var me = this; - var labelOpts = me.options.labels || {}; - var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || []; - - if (labelOpts.filter) { - legendItems = legendItems.filter(function(item) { - return labelOpts.filter(item, me.chart.data); - }); - } - - if (me.options.reverse) { - legendItems.reverse(); - } - - me.legendItems = legendItems; - }, - afterBuildLabels: noop$1, - - // - - beforeFit: noop$1, - fit: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var display = opts.display; - - var ctx = me.ctx; - - var labelFont = helpers$1.options._parseFont(labelOpts); - var fontSize = labelFont.size; - - // Reset hit boxes - var hitboxes = me.legendHitBoxes = []; - - var minSize = me.minSize; - var isHorizontal = me.isHorizontal(); - - if (isHorizontal) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = display ? 10 : 0; - } else { - minSize.width = display ? 10 : 0; - minSize.height = me.maxHeight; // fill all the height - } - - // Increase sizes here - if (display) { - ctx.font = labelFont.string; - - if (isHorizontal) { - // Labels - - // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one - var lineWidths = me.lineWidths = [0]; - var totalHeight = 0; - - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; - - helpers$1.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - - if (i === 0 || lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width) { - totalHeight += fontSize + labelOpts.padding; - lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = labelOpts.padding; - } - - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: width, - height: fontSize - }; - - lineWidths[lineWidths.length - 1] += width + labelOpts.padding; - }); - - minSize.height += totalHeight; - - } else { - var vPadding = labelOpts.padding; - var columnWidths = me.columnWidths = []; - var totalWidth = labelOpts.padding; - var currentColWidth = 0; - var currentColHeight = 0; - var itemHeight = fontSize + vPadding; - - helpers$1.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - - // If too tall, go to new column - if (i > 0 && currentColHeight + itemHeight > minSize.height - vPadding) { - totalWidth += currentColWidth + labelOpts.padding; - columnWidths.push(currentColWidth); // previous column width - - currentColWidth = 0; - currentColHeight = 0; - } - - // Get max width - currentColWidth = Math.max(currentColWidth, itemWidth); - currentColHeight += itemHeight; - - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: itemWidth, - height: fontSize - }; - }); - - totalWidth += currentColWidth; - columnWidths.push(currentColWidth); - minSize.width += totalWidth; - } - } - - me.width = minSize.width; - me.height = minSize.height; - }, - afterFit: noop$1, - - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - - // Actually draw the legend on the canvas - draw: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var globalDefaults = core_defaults.global; - var defaultColor = globalDefaults.defaultColor; - var lineDefault = globalDefaults.elements.line; - var legendWidth = me.width; - var lineWidths = me.lineWidths; - - if (opts.display) { - var ctx = me.ctx; - var fontColor = valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor); - var labelFont = helpers$1.options._parseFont(labelOpts); - var fontSize = labelFont.size; - var cursor; - - // Canvas setup - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - ctx.lineWidth = 0.5; - ctx.strokeStyle = fontColor; // for strikethrough effect - ctx.fillStyle = fontColor; // render in correct colour - ctx.font = labelFont.string; - - var boxWidth = getBoxWidth(labelOpts, fontSize); - var hitboxes = me.legendHitBoxes; - - // current position - var drawLegendBox = function(x, y, legendItem) { - if (isNaN(boxWidth) || boxWidth <= 0) { - return; - } - - // Set the ctx for the box - ctx.save(); - - var lineWidth = valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth); - ctx.fillStyle = valueOrDefault$d(legendItem.fillStyle, defaultColor); - ctx.lineCap = valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle); - ctx.lineDashOffset = valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset); - ctx.lineJoin = valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle); - ctx.lineWidth = lineWidth; - ctx.strokeStyle = valueOrDefault$d(legendItem.strokeStyle, defaultColor); - - if (ctx.setLineDash) { - // IE 9 and 10 do not support line dash - ctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash)); - } - - if (opts.labels && opts.labels.usePointStyle) { - // Recalculate x and y for drawPoint() because its expecting - // x and y to be center of figure (instead of top left) - var radius = boxWidth * Math.SQRT2 / 2; - var centerX = x + boxWidth / 2; - var centerY = y + fontSize / 2; - - // Draw pointStyle as legend symbol - helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); - } else { - // Draw box as legend symbol - if (lineWidth !== 0) { - ctx.strokeRect(x, y, boxWidth, fontSize); - } - ctx.fillRect(x, y, boxWidth, fontSize); - } - - ctx.restore(); - }; - var fillText = function(x, y, legendItem, textWidth) { - var halfFontSize = fontSize / 2; - var xLeft = boxWidth + halfFontSize + x; - var yMiddle = y + halfFontSize; - - ctx.fillText(legendItem.text, xLeft, yMiddle); - - if (legendItem.hidden) { - // Strikethrough the text if hidden - ctx.beginPath(); - ctx.lineWidth = 2; - ctx.moveTo(xLeft, yMiddle); - ctx.lineTo(xLeft + textWidth, yMiddle); - ctx.stroke(); - } - }; - - // Horizontal - var isHorizontal = me.isHorizontal(); - if (isHorizontal) { - cursor = { - x: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding, - y: me.top + labelOpts.padding, - line: 0 - }; - } else { - cursor = { - x: me.left + labelOpts.padding, - y: me.top + labelOpts.padding, - line: 0 - }; - } - - var itemHeight = fontSize + labelOpts.padding; - helpers$1.each(me.legendItems, function(legendItem, i) { - var textWidth = ctx.measureText(legendItem.text).width; - var width = boxWidth + (fontSize / 2) + textWidth; - var x = cursor.x; - var y = cursor.y; - - // Use (me.left + me.minSize.width) and (me.top + me.minSize.height) - // instead of me.right and me.bottom because me.width and me.height - // may have been changed since me.minSize was calculated - if (isHorizontal) { - if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) { - y = cursor.y += itemHeight; - cursor.line++; - x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding; - } - } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) { - x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; - y = cursor.y = me.top + labelOpts.padding; - cursor.line++; - } - - drawLegendBox(x, y, legendItem); - - hitboxes[i].left = x; - hitboxes[i].top = y; - - // Fill the actual label - fillText(x, y, legendItem, textWidth); - - if (isHorizontal) { - cursor.x += width + labelOpts.padding; - } else { - cursor.y += itemHeight; - } - - }); - } - }, - - /** - * @private - */ - _getLegendItemAt: function(x, y) { - var me = this; - var i, hitBox, lh; - - if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { - // See if we are touching one of the dataset boxes - lh = me.legendHitBoxes; - for (i = 0; i < lh.length; ++i) { - hitBox = lh[i]; - - if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { - // Touching an element - return me.legendItems[i]; - } - } - } - - return null; - }, - - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - */ - handleEvent: function(e) { - var me = this; - var opts = me.options; - var type = e.type === 'mouseup' ? 'click' : e.type; - var hoveredItem; - - if (type === 'mousemove') { - if (!opts.onHover && !opts.onLeave) { - return; - } - } else if (type === 'click') { - if (!opts.onClick) { - return; - } - } else { - return; - } - - // Chart event already has relative position in it - hoveredItem = me._getLegendItemAt(e.x, e.y); - - if (type === 'click') { - if (hoveredItem && opts.onClick) { - // use e.native for backwards compatibility - opts.onClick.call(me, e.native, hoveredItem); - } - } else { - if (opts.onLeave && hoveredItem !== me._hoveredItem) { - if (me._hoveredItem) { - opts.onLeave.call(me, e.native, me._hoveredItem); - } - me._hoveredItem = hoveredItem; - } - - if (opts.onHover && hoveredItem) { - // use e.native for backwards compatibility - opts.onHover.call(me, e.native, hoveredItem); - } - } - } -}); - -function createNewLegendAndAttach(chart, legendOpts) { - var legend = new Legend({ - ctx: chart.ctx, - options: legendOpts, - chart: chart - }); - - core_layouts.configure(chart, legend, legendOpts); - core_layouts.addBox(chart, legend); - chart.legend = legend; -} - -var plugin_legend = { - id: 'legend', - - /** - * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making - * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Legend, - - beforeInit: function(chart) { - var legendOpts = chart.options.legend; - - if (legendOpts) { - createNewLegendAndAttach(chart, legendOpts); - } - }, - - beforeUpdate: function(chart) { - var legendOpts = chart.options.legend; - var legend = chart.legend; - - if (legendOpts) { - helpers$1.mergeIf(legendOpts, core_defaults.global.legend); - - if (legend) { - core_layouts.configure(chart, legend, legendOpts); - legend.options = legendOpts; - } else { - createNewLegendAndAttach(chart, legendOpts); - } - } else if (legend) { - core_layouts.removeBox(chart, legend); - delete chart.legend; - } - }, - - afterEvent: function(chart, e) { - var legend = chart.legend; - if (legend) { - legend.handleEvent(e); - } - } -}; - -var noop$2 = helpers$1.noop; - -core_defaults._set('global', { - title: { - display: false, - fontStyle: 'bold', - fullWidth: true, - padding: 10, - position: 'top', - text: '', - weight: 2000 // by default greater than legend (1000) to be above - } -}); - -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Title = core_element.extend({ - initialize: function(config) { - var me = this; - helpers$1.extend(me, config); - - // Contains hit boxes for each dataset (in dataset order) - me.legendHitBoxes = []; - }, - - // These methods are ordered by lifecycle. Utilities then follow. - - beforeUpdate: noop$2, - update: function(maxWidth, maxHeight, margins) { - var me = this; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); - - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - - }, - afterUpdate: noop$2, - - // - - beforeSetDimensions: noop$2, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop$2, - - // - - beforeBuildLabels: noop$2, - buildLabels: noop$2, - afterBuildLabels: noop$2, - - // - - beforeFit: noop$2, - fit: function() { - var me = this; - var opts = me.options; - var display = opts.display; - var minSize = me.minSize; - var lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1; - var fontOpts = helpers$1.options._parseFont(opts); - var textSize = display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2) : 0; - - if (me.isHorizontal()) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = textSize; - } else { - minSize.width = textSize; - minSize.height = me.maxHeight; // fill all the height - } - - me.width = minSize.width; - me.height = minSize.height; - - }, - afterFit: noop$2, - - // Shared Methods - isHorizontal: function() { - var pos = this.options.position; - return pos === 'top' || pos === 'bottom'; - }, - - // Actually draw the title block on the canvas - draw: function() { - var me = this; - var ctx = me.ctx; - var opts = me.options; - - if (opts.display) { - var fontOpts = helpers$1.options._parseFont(opts); - var lineHeight = fontOpts.lineHeight; - var offset = lineHeight / 2 + opts.padding; - var rotation = 0; - var top = me.top; - var left = me.left; - var bottom = me.bottom; - var right = me.right; - var maxWidth, titleX, titleY; - - ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour - ctx.font = fontOpts.string; - - // Horizontal - if (me.isHorizontal()) { - titleX = left + ((right - left) / 2); // midpoint of the width - titleY = top + offset; - maxWidth = right - left; - } else { - titleX = opts.position === 'left' ? left + offset : right - offset; - titleY = top + ((bottom - top) / 2); - maxWidth = bottom - top; - rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); - } - - ctx.save(); - ctx.translate(titleX, titleY); - ctx.rotate(rotation); - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - - var text = opts.text; - if (helpers$1.isArray(text)) { - var y = 0; - for (var i = 0; i < text.length; ++i) { - ctx.fillText(text[i], 0, y, maxWidth); - y += lineHeight; - } - } else { - ctx.fillText(text, 0, 0, maxWidth); - } - - ctx.restore(); - } - } -}); - -function createNewTitleBlockAndAttach(chart, titleOpts) { - var title = new Title({ - ctx: chart.ctx, - options: titleOpts, - chart: chart - }); - - core_layouts.configure(chart, title, titleOpts); - core_layouts.addBox(chart, title); - chart.titleBlock = title; -} - -var plugin_title = { - id: 'title', - - /** - * Backward compatibility: since 2.1.5, the title is registered as a plugin, making - * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Title, - - beforeInit: function(chart) { - var titleOpts = chart.options.title; - - if (titleOpts) { - createNewTitleBlockAndAttach(chart, titleOpts); - } - }, - - beforeUpdate: function(chart) { - var titleOpts = chart.options.title; - var titleBlock = chart.titleBlock; - - if (titleOpts) { - helpers$1.mergeIf(titleOpts, core_defaults.global.title); - - if (titleBlock) { - core_layouts.configure(chart, titleBlock, titleOpts); - titleBlock.options = titleOpts; - } else { - createNewTitleBlockAndAttach(chart, titleOpts); - } - } else if (titleBlock) { - core_layouts.removeBox(chart, titleBlock); - delete chart.titleBlock; - } - } -}; - -var plugins = {}; -var filler = plugin_filler; -var legend = plugin_legend; -var title = plugin_title; -plugins.filler = filler; -plugins.legend = legend; -plugins.title = title; - -/** - * @namespace Chart - */ - - -core_controller.helpers = helpers$1; - -// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! -core_helpers(core_controller); - -core_controller._adapters = core_adapters; -core_controller.Animation = core_animation; -core_controller.animationService = core_animations; -core_controller.controllers = controllers; -core_controller.DatasetController = core_datasetController; -core_controller.defaults = core_defaults; -core_controller.Element = core_element; -core_controller.elements = elements; -core_controller.Interaction = core_interaction; -core_controller.layouts = core_layouts; -core_controller.platform = platform; -core_controller.plugins = core_plugins; -core_controller.Scale = core_scale; -core_controller.scaleService = core_scaleService; -core_controller.Ticks = core_ticks; -core_controller.Tooltip = core_tooltip; - -// Register built-in scales - -core_controller.helpers.each(scales, function(scale, type) { - core_controller.scaleService.registerScaleType(type, scale, scale._defaults); -}); - -// Load to register built-in adapters (as side effects) - - -// Loading built-in plugins - -for (var k in plugins) { - if (plugins.hasOwnProperty(k)) { - core_controller.plugins.register(plugins[k]); - } -} - -core_controller.platform.initialize(); - -var src = core_controller; -if (typeof window !== 'undefined') { - window.Chart = core_controller; -} - -// DEPRECATIONS - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Chart - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -core_controller.Chart = core_controller; - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Legend - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.Legend = plugins.legend._element; - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Title - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.Title = plugins.title._element; - -/** - * Provided for backward compatibility, use Chart.plugins instead - * @namespace Chart.pluginService - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.pluginService = core_controller.plugins; - -/** - * Provided for backward compatibility, inheriting from Chart.PlugingBase has no - * effect, instead simply create/register plugins via plain JavaScript objects. - * @interface Chart.PluginBase - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ -core_controller.PluginBase = core_controller.Element.extend({}); - -/** - * Provided for backward compatibility, use Chart.helpers.canvas instead. - * @namespace Chart.canvasHelpers - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -core_controller.canvasHelpers = core_controller.helpers.canvas; - -/** - * Provided for backward compatibility, use Chart.layouts instead. - * @namespace Chart.layoutService - * @deprecated since version 2.7.3 - * @todo remove at version 3 - * @private - */ -core_controller.layoutService = core_controller.layouts; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.LinearScaleBase - * @deprecated since version 2.8 - * @todo remove at version 3 - * @private - */ -core_controller.LinearScaleBase = scale_linearbase; - -/** - * Provided for backward compatibility, instead we should create a new Chart - * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`). - * @deprecated since version 2.8.0 - * @todo remove at version 3 - */ -core_controller.helpers.each( - [ - 'Bar', - 'Bubble', - 'Doughnut', - 'Line', - 'PolarArea', - 'Radar', - 'Scatter' - ], - function(klass) { - core_controller[klass] = function(ctx, cfg) { - return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, { - type: klass.charAt(0).toLowerCase() + klass.slice(1) - })); - }; - } -); - -return src; - -}))); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.min.js deleted file mode 100644 index 0bf9ea9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.bundle.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Chart.js v2.8.0 - * https://www.chartjs.org - * (c) 2019 Chart.js Contributors - * Released under the MIT License - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Chart=e()}(this,function(){"use strict";var t={rgb2hsl:e,rgb2hsv:i,rgb2hwb:n,rgb2cmyk:a,rgb2keyword:o,rgb2xyz:s,rgb2lab:l,rgb2lch:function(t){return v(l(t))},hsl2rgb:u,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return n(u(t))},hsl2cmyk:function(t){return a(u(t))},hsl2keyword:function(t){return o(u(t))},hsv2rgb:d,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,r=t[2]/100;return e=a*r,[n,100*(e=(e/=(i=(2-a)*r)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return n(d(t))},hsv2cmyk:function(t){return a(d(t))},hsv2keyword:function(t){return o(d(t))},hwb2rgb:h,hwb2hsl:function(t){return e(h(t))},hwb2hsv:function(t){return i(h(t))},hwb2cmyk:function(t){return a(h(t))},hwb2keyword:function(t){return o(h(t))},cmyk2rgb:c,cmyk2hsl:function(t){return e(c(t))},cmyk2hsv:function(t){return i(c(t))},cmyk2hwb:function(t){return n(c(t))},cmyk2keyword:function(t){return o(c(t))},keyword2rgb:_,keyword2hsl:function(t){return e(_(t))},keyword2hsv:function(t){return i(_(t))},keyword2hwb:function(t){return n(_(t))},keyword2cmyk:function(t){return a(_(t))},keyword2lab:function(t){return l(_(t))},keyword2xyz:function(t){return s(_(t))},xyz2rgb:f,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:p,lab2rgb:y,lab2lch:v,lch2lab:x,lch2xyz:function(t){return p(x(t))},lch2rgb:function(t){return y(x(t))}};function e(t){var e,i,n=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(o+s)/2,[e,100*(s==o?0:i<=.5?l/(s+o):l/(2-s-o)),100*i]}function i(t){var e,i,n=t[0],a=t[1],r=t[2],o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return i=0==s?0:l/s*1e3/10,s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function n(t){var i=t[0],n=t[1],a=t[2];return[e(t)[0],100*(1/255*Math.min(i,Math.min(n,a))),100*(a=1-1/255*Math.max(i,Math.max(n,a)))]}function a(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function o(t){return w[JSON.stringify(t)]}function s(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function l(t){var e=s(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function u(t){var e,i,n,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=o+1/3*-(u-1))<0&&n++,n>1&&n--,r=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*r;return a}function d(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*n*(1-i),s=255*n*(1-i*r),l=255*n*(1-i*(1-r));n*=255;switch(a){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}}function h(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function c(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function f(t){var e,i,n,a=t[0]/100,r=t[1]/100,o=t[2]/100;return i=-.9689*a+1.8758*r+.0415*o,n=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function m(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function p(t){var e,i,n,a,r=t[0],o=t[1],s=t[2];return r<=8?a=(i=100*r/903.3)/100*7.787+16/116:(i=100*Math.pow((r+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function v(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function y(t){return f(p(t))}function x(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function _(t){return k[t]}var k={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},w={};for(var M in k)w[JSON.stringify(k[M])]=M;var S=function(){return new O};for(var D in t){S[D+"Raw"]=function(e){return function(i){return"number"==typeof i&&(i=Array.prototype.slice.call(arguments)),t[e](i)}}(D);var C=/(\w+)2(\w+)/.exec(D),P=C[1],T=C[2];(S[P]=S[P]||{})[T]=S[D]=function(e){return function(i){"number"==typeof i&&(i=Array.prototype.slice.call(arguments));var n=t[e](i);if("string"==typeof n||void 0===n)return n;for(var a=0;a=0&&e<1?H(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return Y(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:Y,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return N(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:N,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return z(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:z,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return E[t.slice(0,3)]}};function R(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(n){a=(n=n[1])[3];for(var r=0;ri?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=t,n=void 0===e?.5:e,a=2*n-1,r=this.alpha()-i.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*i.red(),o*this.green()+s*i.green(),o*this.blue()+s*i.blue()).alpha(this.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new j,n=this.values,a=i.values;for(var r in n)n.hasOwnProperty(r)&&(t=n[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return i}},j.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},j.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},j.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n=0;a--)e.call(i,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-$.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*$.easeInBounce(2*t):.5*$.easeOutBounce(2*t-1)+.5}},X={effects:$};Z.easingEffects=$;var K=Math.PI,J=K/180,Q=2*K,tt=K/2,et=K/4,it=2*K/3,nt={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,r){if(r){var o=Math.min(r,a/2,n/2),s=e+o,l=i+o,u=e+n-o,d=i+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,i,n,a=this.animations,r=0;r=i?(ut.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},yt=ut.options.resolve,bt=["push","pop","shift","splice","unshift"];function xt(t,e){var i=t._chartjs;if(i){var n=i.listeners,a=n.indexOf(e);-1!==a&&n.splice(a,1),n.length>0||(bt.forEach(function(e){delete t[e]}),delete t._chartjs)}}var _t=function(t,e){this.initialize(t,e)};ut.extend(_t.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&xt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;ti&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;is;)a-=2*Math.PI;for(;a=o&&a<=s,u=r>=i.innerRadius&&r<=i.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t,e=this._chart.ctx,i=this._view,n=i.startAngle,a=i.endAngle,r="inner"===i.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(i.x,i.y,Math.max(i.outerRadius-r,0),n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.fillStyle=i.backgroundColor,e.fill(),i.borderWidth&&("inner"===i.borderAlign?(e.beginPath(),t=r/i.outerRadius,e.arc(i.x,i.y,i.outerRadius,n-t,a+t),i.innerRadius>r?(t=r/i.innerRadius,e.arc(i.x,i.y,i.innerRadius-r,a+t,n-t,!0)):e.arc(i.x,i.y,r,a+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(i.x,i.y,i.outerRadius,n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.lineWidth=2*i.borderWidth,e.lineJoin="round"):(e.lineWidth=i.borderWidth,e.lineJoin="bevel"),e.strokeStyle=i.borderColor,e.stroke()),e.restore()}}),Mt=ut.valueOrDefault,St=ot.global.defaultColor;ot._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Dt=gt.extend({draw:function(){var t,e,i,n,a=this._view,r=this._chart.ctx,o=a.spanGaps,s=this._children.slice(),l=ot.global,u=l.elements.line,d=-1;for(this._loop&&s.length&&s.push(s[0]),r.save(),r.lineCap=a.borderCapStyle||u.borderCapStyle,r.setLineDash&&r.setLineDash(a.borderDash||u.borderDash),r.lineDashOffset=Mt(a.borderDashOffset,u.borderDashOffset),r.lineJoin=a.borderJoinStyle||u.borderJoinStyle,r.lineWidth=Mt(a.borderWidth,u.borderWidth),r.strokeStyle=a.borderColor||l.defaultColor,r.beginPath(),d=-1,t=0;tt.x&&(e=Rt(e,"left","right")):t.basei?i:n,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>i?i:r,l:l.left||o<0?0:o>e?e:o}}function Wt(t,e,i){var n=null===e,a=null===i,r=!(!t||n&&a)&&Ft(t);return r&&(n||e>=r.left&&e<=r.right)&&(a||i>=r.top&&i<=r.bottom)}ot._set("global",{elements:{rectangle:{backgroundColor:It,borderColor:It,borderSkipped:"bottom",borderWidth:0}}});var Yt=gt.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=function(t){var e=Ft(t),i=e.right-e.left,n=e.bottom-e.top,a=Lt(t,i/2,n/2);return{outer:{x:e.left,y:e.top,w:i,h:n},inner:{x:e.left+a.l,y:e.top+a.t,w:i-a.l-a.r,h:n-a.t-a.b}}}(e),n=i.outer,a=i.inner;t.fillStyle=e.backgroundColor,t.fillRect(n.x,n.y,n.w,n.h),n.w===a.w&&n.h===a.h||(t.save(),t.beginPath(),t.rect(n.x,n.y,n.w,n.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Wt(this._view,t,e)},inLabelRange:function(t,e){var i=this._view;return At(i)?Wt(i,t,null):Wt(i,null,e)},inXRange:function(t){return Wt(this._view,t,null)},inYRange:function(t){return Wt(this._view,null,t)},getCenterPoint:function(){var t,e,i=this._view;return At(i)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return At(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),Nt={},zt=wt,Vt=Dt,Ht=Ot,Et=Yt;Nt.Arc=zt,Nt.Line=Vt,Nt.Point=Ht,Nt.Rectangle=Et;var Bt=ut.options.resolve;ot._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var jt=kt.extend({dataElementType:Nt.Rectangle,initialize:function(){var t;kt.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e0?Math.min(o,n-i):o,i=n;return o}(i,l):-1,pixels:l,start:o,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,r,o,s,l=this.chart,u=this.getMeta(),d=this._getValueScale(),h=d.isHorizontal(),c=l.data.datasets,f=+d.getRightValue(c[t].data[e]),g=d.options.minBarLength,m=d.options.stacked,p=u.stack,v=0;if(m||void 0===m&&void 0!==p)for(i=0;i=0&&a>0)&&(v+=a));return r=d.getPixelForValue(v),s=(o=d.getPixelForValue(v+f))-r,void 0!==g&&Math.abs(s)=0&&!h||f<0&&h?r-g:r+g),{size:s,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,i){var n=i.scale.options,a="flex"===n.barThickness?function(t,e,i){var n,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r'),a[r]&&e.push(a[r]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],o=a.data[n],s=o&&o.custom||{},l=t.options.elements.arc;return{text:i,fillStyle:Zt([s.backgroundColor,r.backgroundColor,l.backgroundColor],void 0,n),strokeStyle:Zt([s.borderColor,r.borderColor,l.borderColor],void 0,n),lineWidth:Zt([s.borderWidth,r.borderWidth,l.borderWidth],void 0,n),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i=Math.PI?-1:p<-Math.PI?1:0))+g,y={x:Math.cos(p),y:Math.sin(p)},b={x:Math.cos(v),y:Math.sin(v)},x=p<=0&&v>=0||p<=2*Math.PI&&2*Math.PI<=v,_=p<=.5*Math.PI&&.5*Math.PI<=v||p<=2.5*Math.PI&&2.5*Math.PI<=v,k=p<=-Math.PI&&-Math.PI<=v||p<=Math.PI&&Math.PI<=v,w=p<=.5*-Math.PI&&.5*-Math.PI<=v||p<=1.5*Math.PI&&1.5*Math.PI<=v,M=f/100,S={x:k?-1:Math.min(y.x*(y.x<0?1:M),b.x*(b.x<0?1:M)),y:w?-1:Math.min(y.y*(y.y<0?1:M),b.y*(b.y<0?1:M))},D={x:x?1:Math.max(y.x*(y.x>0?1:M),b.x*(b.x>0?1:M)),y:_?1:Math.max(y.y*(y.y>0?1:M),b.y*(b.y>0?1:M))},C={width:.5*(D.x-S.x),height:.5*(D.y-S.y)};u=Math.min(s/C.width,l/C.height),d={x:-.5*(D.x+S.x),y:-.5*(D.y+S.y)}}for(e=0,i=c.length;e0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,i,n,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,i=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=$t(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=$t(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=$t(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,r=this.chart,o=this.getDataset(),s=t.custom||{},l=r.options.elements.arc,u={},d={chart:r,dataIndex:e,dataset:o,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i0&&te(l[t-1]._model,s)&&(i.controlPointPreviousX=u(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=u(i.controlPointPreviousY,s.top,s.bottom)),t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r'),a[r]&&e.push(a[r]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],o=a.data[n].custom||{},s=t.options.elements.arc;return{text:i,fillStyle:ne([o.backgroundColor,r.backgroundColor,s.backgroundColor],void 0,n),strokeStyle:ne([o.borderColor,r.borderColor,s.borderColor],void 0,n),lineWidth:ne([o.borderWidth,r.borderWidth,s.borderWidth],void 0,n),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return me(t,e,{intersect:!1})},point:function(t,e){return ce(t,de(e,t))},nearest:function(t,e,i){var n=de(e,t);i.axis=i.axis||"xy";var a=ge(i.axis);return fe(t,n,i.intersect,a)},x:function(t,e,i){var n=de(e,t),a=[],r=!1;return he(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(r=!0)}),i.intersect&&!r&&(a=[]),a},y:function(t,e,i){var n=de(e,t),a=[],r=!1;return he(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(r=!0)}),i.intersect&&!r&&(a=[]),a}}};function ve(t,e){return ut.where(t,function(t){return t.position===e})}function ye(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}function be(t,e){ut.each(t,function(t){e[t.position]+=t.isHorizontal()?t.height:t.width})}ot._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var xe={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],r=a.length,o=0;odiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&ke.default||ke,Me="$chartjs",Se="chartjs-size-monitor",De="chartjs-render-monitor",Ce="chartjs-render-animation",Pe=["animationstart","webkitAnimationStart"],Te={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function Oe(t,e){var i=ut.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var Ie=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Ae(t,e,i){t.addEventListener(e,i,Ie)}function Fe(t,e,i){t.removeEventListener(e,i,Ie)}function Re(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Le(t){var e=document.createElement("div");return e.className=t||"",e}function We(t,e,i){var n,a,r,o,s=t[Me]||(t[Me]={}),l=s.resizer=function(t){var e=Le(Se),i=Le(Se+"-expand"),n=Le(Se+"-shrink");i.appendChild(Le()),n.appendChild(Le()),e.appendChild(i),e.appendChild(n),e._reset=function(){i.scrollLeft=1e6,i.scrollTop=1e6,n.scrollLeft=1e6,n.scrollTop=1e6};var a=function(){e._reset(),t()};return Ae(i,"scroll",a.bind(i,"expand")),Ae(n,"scroll",a.bind(n,"shrink")),e}((n=function(){if(s.resizer){var n=i.options.maintainAspectRatio&&t.parentNode,a=n?n.clientWidth:0;e(Re("resize",i)),n&&n.clientWidth0){var r=t[0];r.label?i=r.label:r.xLabel?i=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function qe(t){var e=ot.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Be(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Be(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Be(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Be(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Be(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Be(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Be(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Be(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Be(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ze(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function $e(t){return Ue([],Ge(t))}var Xe=gt.extend({initialize:function(){this._model=qe(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=Ue(a,Ge(e)),a=Ue(a,Ge(i)),a=Ue(a,Ge(n))},getBeforeBody:function(){return $e(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var i=this,n=i._options.callbacks,a=[];return ut.each(t,function(t){var r={before:[],lines:[],after:[]};Ue(r.before,Ge(n.beforeLabel.call(i,t,e))),Ue(r.lines,n.label.call(i,t,e)),Ue(r.after,Ge(n.afterLabel.call(i,t,e))),a.push(r)}),a},getAfterBody:function(){return $e(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=Ue(a,Ge(e)),a=Ue(a,Ge(i)),a=Ue(a,Ge(n))},update:function(t){var e,i,n,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=qe(c),m=h._active,p=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},b={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(m.length){g.opacity=1;var _=[],k=[];x=je[c.position].call(h,m,h._eventPosition);var w=[];for(e=0,i=m.length;en.width&&(a=n.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,b,v=function(t,e){var i,n,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):n(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,b),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=y.x,g.y=y.y,g.width=b.width,g.height=b.height,g.caretX=x.x,g.caretY=x.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,r,o,s,l,u=i.caretSize,d=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if("center"===c)s=g+p/2,"left"===h?(a=(n=f)-u,r=n,o=s+u,l=s-u):(a=(n=f+m)+u,r=n,o=s-u,l=s+u);else if("left"===h?(n=(a=f+d+u)-u,r=a+u):"right"===h?(n=(a=f+m-d-u)-u,r=a+u):(n=(a=i.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=n,n=v}return{x1:n,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,i){var n=e.title;if(n.length){t.x=Ze(e,e._titleAlign),i.textAlign=e._titleAlign,i.textBaseline="top";var a,r,o=e.titleFontSize,s=e.titleSpacing;for(i.fillStyle=e.titleFontColor,i.font=ut.fontString(o,e._titleFontStyle,e._titleFontFamily),a=0,r=n.length;a0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(n,e,t,i),n.y+=e.yPadding,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),t.restore())}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!ut.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),Ke=je,Je=Xe;Je.positioners=Ke;var Qe=ut.valueOrDefault;function ti(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,r,o,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?ut.merge(e[t][a],[Ee.getScaleDefaults(r),o]):ut.merge(e[t][a],o)}else ut._merger(t,e,i,n)}})}function ei(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){var a=e[t]||{},r=i[t];"scales"===t?e[t]=ti(a,r):"scale"===t?e[t]=ut.merge(a,[Ee.getScaleDefaults(r.type),r]):ut._merger(t,e,i,n)}})}function ii(t){return"top"===t||"bottom"===t}ot._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var ni=function(t,e){return this.construct(t,e),this};ut.extend(ni.prototype,{construct:function(t,e){var i=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ei(ot.global,ot[t.type],t.options||{}),t}(e);var n=Ve.acquireContext(t,e),a=n&&n.canvas,r=a&&a.height,o=a&&a.width;i.id=ut.uid(),i.ctx=n,i.canvas=a,i.config=e,i.width=o,i.height=r,i.aspectRatio=r?o/r:null,i.options=e.options,i._bufferedRender=!1,i.chart=i,i.controller=i,ni.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),n&&a?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return He.notify(t,"beforeInit"),ut.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),He.notify(t,"afterInit"),t},clear:function(){return ut.canvas.clear(this),this},stop:function(){return vt.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(ut.getMaximumWidth(n))),o=Math.max(0,Math.floor(a?r/a:ut.getMaximumHeight(n)));if((e.width!==r||e.height!==o)&&(n.width=e.width=r,n.height=e.height=o,n.style.width=r+"px",n.style.height=o+"px",ut.retinaScale(e,i.devicePixelRatio),!t)){var s={width:r,height:o};He.notify(e,"resize",[s]),i.onResize&&i.onResize(e,s),e.stop(),e.update({duration:i.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;ut.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),ut.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,i=t.scales||{},n=[],a=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});e.scales&&(n=n.concat((e.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(e.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),e.scale&&n.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ut.each(n,function(e){var n=e.options,r=n.id,o=Qe(n.type,e.dtype);ii(n.position)!==ii(e.dposition)&&(n.position=e.dposition),a[r]=!0;var s=null;if(r in i&&i[r].type===o)(s=i[r]).options=n,s.ctx=t.ctx,s.chart=t;else{var l=Ee.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:n,ctx:t.ctx,chart:t}),i[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)}),ut.each(a,function(t,e){t||delete i[e]}),t.scales=i,Ee.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return ut.each(t.data.datasets,function(i,n){var a=t.getDatasetMeta(n),r=i.type||t.config.type;if(a.type&&a.type!==r&&(t.destroyDatasetMeta(n),a=t.getDatasetMeta(n)),a.type=r,a.controller)a.controller.updateIndex(n),a.controller.linkScales();else{var o=ue[a.type];if(void 0===o)throw new Error('"'+a.type+'" is not a chart type.');a.controller=new o(t,n),e.push(a.controller)}},t),e},resetElements:function(){var t=this;ut.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,ut.each(e.scales,function(t){xe.removeBox(e,t)}),i=ei(ot.global,ot[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),He._invalidate(n),!1!==He.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();ut.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&ut.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],He.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==He.notify(this,"beforeLayout")&&(xe.update(this,this.width,this.height),He.notify(this,"afterScaleUpdate"),He.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==He.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);He.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==He.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),He.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==He.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),He.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return pe.modes.single(this,t)},getElementsAtEvent:function(t){return pe.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return pe.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=pe.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return pe.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=ut.log10(Math.abs(n)),r="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var o=ut.log10(Math.abs(t));r=t.toExponential(Math.floor(o)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(ut.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}},ui=ut.valueOrDefault,di=ut.valueAtIndexOrDefault;function hi(t){var e,i,n=[];for(e=0,i=t.length;eu&&rt.maxHeight){r--;break}r++,l=o*s}t.labelRotation=r},afterCalculateTickRotation:function(){ut.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ut.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=hi(t._ticks),n=t.options,a=n.ticks,r=n.scaleLabel,o=n.gridLines,s=t._isVisible(),l=n.position,u=t.isHorizontal(),d=ut.options._parseFont,h=d(a),c=n.gridLines.tickMarkLength;if(e.width=u?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&o.drawTicks?c:0,e.height=u?s&&o.drawTicks?c:0:t.maxHeight,r.display&&s){var f=d(r),g=ut.options.toPadding(r.padding),m=f.lineHeight+g.height;u?e.height+=m:e.width+=m}if(a.display&&s){var p=ut.longestText(t.ctx,h.string,i,t.longestTextCache),v=ut.numberOfLabelLines(i),y=.5*h.size,b=t.options.ticks.padding;if(t._maxLabelLines=v,t.longestLabelWidth=p,u){var x=ut.toRadians(t.labelRotation),_=Math.cos(x),k=Math.sin(x)*p+h.lineHeight*v+y;e.height=Math.min(t.maxHeight,e.height+k+b),t.ctx.font=h.string;var w,M,S=ci(t.ctx,i[0],h.string),D=ci(t.ctx,i[i.length-1],h.string),C=t.getPixelForTick(0)-t.left,P=t.right-t.getPixelForTick(i.length-1);0!==t.labelRotation?(w="bottom"===l?_*S:_*y,M="bottom"===l?_*y:_*D):(w=S/2,M=D/2),t.paddingLeft=Math.max(w-C,0)+3,t.paddingRight=Math.max(M-P,0)+3}else a.mirror?p=0:p+=b+y,e.width=Math.min(t.maxWidth,e.width+p),t.paddingTop=h.size/2,t.paddingBottom=h.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){ut.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ut.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:ut.noop,getPixelForValue:ut.noop,getValueForPixel:ut.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var r=e.left+a;return r+=e.isFullWidth()?e.margins.left:0}var o=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(o/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+i;return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n=this,a=n.isHorizontal(),r=n.options.ticks.minor,o=t.length,s=!1,l=r.maxTicksLimit,u=n._tickSize()*(o-1),d=a?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.PaddingBottom),h=[];for(u>d&&(s=1+Math.floor(u/d)),o>l&&(s=Math.max(s,1+Math.floor(o/l))),e=0;e1&&e%s>0&&delete i.label,h.push(i);return h},_tickSize:function(){var t=this,e=t.isHorizontal(),i=t.options.ticks.minor,n=ut.toRadians(t.labelRotation),a=Math.abs(Math.cos(n)),r=Math.abs(Math.sin(n)),o=i.autoSkipPadding||0,s=t.longestLabelWidth+o||0,l=ut.options._parseFont(i),u=t._maxLabelLines*l.lineHeight+o||0;return e?u*a>s*r?s/a:u/r:u*r0&&n>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,i=e.stepSize,n=e.maxTicksLimit;return i?t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1:(t=this._computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:pi,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:ut.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,m=ut.niceNum((g-f)/u/l)*l;if(m<1e-14&&vi(d)&&vi(h))return[f,g];(r=Math.ceil(g/m)-Math.floor(f/m))>u&&(m=ut.niceNum(r*m/u/l)*l),s||vi(c)?i=Math.pow(10,ut._decimalPlaces(m)):(i=Math.pow(10,c),m=Math.ceil(m*i)/i),n=Math.floor(f/m)*m,a=Math.ceil(g/m)*m,s&&(!vi(d)&&ut.almostWhole(d/m,m/1e3)&&(n=d),!vi(h)&&ut.almostWhole(h/m,m/1e3)&&(a=h)),r=(a-n)/m,r=ut.almostEquals(r,Math.round(r),m/1e3)?Math.round(r):Math.ceil(r),n=Math.round(n*i)/i,a=Math.round(a*i)/i,o.push(vi(d)?n:d);for(var p=1;pt.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=ut.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}}),_i=bi;xi._defaults=_i;var ki=ut.valueOrDefault;var wi={position:"left",ticks:{callback:li.formatters.logarithmic}};function Mi(t,e){return ut.isFinite(t)&&t>=0?t:e}var Si=fi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function r(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var o=e.stacked;if(void 0===o&&ut.each(n,function(t,e){if(!o){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&r(n)&&void 0!==n.stack&&(o=!0)}}),e.stacked||o){var s={};ut.each(n,function(n,a){var o=i.getDatasetMeta(a),l=[o.type,void 0===e.stacked&&void 0===o.stack?a:"",o.stack].join(".");i.isDatasetVisible(a)&&r(o)&&(void 0===s[l]&&(s[l]=[]),ut.each(n.data,function(e,i){var n=s[l],a=+t.getRightValue(e);isNaN(a)||o.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),ut.each(s,function(e){if(e.length>0){var i=ut.min(e),n=ut.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?n:Math.max(t.max,n)}})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&r(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||n<0||(null===t.min?t.min=n:nt.max&&(t.max=n),0!==n&&(null===t.minNotZero||n0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(ut.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:Mi(e.min),max:Mi(e.max)},a=t.ticks=function(t,e){var i,n,a=[],r=ki(t.min,Math.pow(10,Math.floor(ut.log10(e.min)))),o=Math.floor(ut.log10(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(i=Math.floor(ut.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(r),r=n*Math.pow(10,i)):(i=Math.floor(ut.log10(r)),n=Math.floor(r/Math.pow(10,i)));var l=i<0?Math.pow(10,Math.abs(i)):1;do{a.push(r),10==++n&&(n=1,l=++i>=0?1:l),r=Math.round(n*Math.pow(10,i)*l)/l}while(ia?{start:e-i,end:e}:{start:e,end:e+i}}function Ri(t){return 0===t||180===t?"center":t<180?"left":"right"}function Li(t,e,i,n){var a,r,o=i.y+n/2;if(ut.isArray(e))for(a=0,r=e.length;a270||t<90)&&(i.y-=e.h)}function Yi(t){return ut.isNumber(t)?t:0}var Ni=yi.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Ai(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;ut.each(e.data.datasets,function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);ut.each(a.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(i=Math.min(r,i),n=Math.max(r,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Ai(this.options))},convertTicksToLabels:function(){var t=this;yi.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,i,n,a=ut.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=Ii(t);for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,i){var n=this,a=e.l/Math.sin(i.l),r=Math.max(e.r-n.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),s=-Math.max(e.b-(n.height-n.paddingTop),0)/Math.cos(i.b);a=Yi(a),r=Yi(r),o=Yi(o),s=Yi(s),n.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),n.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,i,n){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=i+a.drawingArea,l=a.height-a.paddingTop-n-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/Ii(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(i)*e+this.xCenter,y:Math.sin(i)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,i=e.gridLines,n=e.ticks;if(e.display){var a=t.ctx,r=this.getIndexAngle(0),o=ut.options._parseFont(n);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.gridLines,r=i.pointLabels,o=Ci(n.lineWidth,a.lineWidth),s=Ci(n.color,a.color),l=Ai(i);e.save(),e.lineWidth=o,e.strokeStyle=s,e.setLineDash&&(e.setLineDash(Ti([n.borderDash,a.borderDash,[]])),e.lineDashOffset=Ti([n.borderDashOffset,a.borderDashOffset,0]));var u=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),d=ut.options._parseFont(r);e.font=d.string,e.textBaseline="middle";for(var h=Ii(t)-1;h>=0;h--){if(n.display&&o&&s){var c=t.getPointPosition(h,u);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke()}if(r.display){var f=0===h?l/2:0,g=t.getPointPosition(h,u+f+5),m=Pi(r.fontColor,h,ot.global.defaultFontColor);e.fillStyle=m;var p=t.getIndexAngle(h),v=ut.toDegrees(p);e.textAlign=Ri(v),Wi(v,t._pointLabelSizes[h],g),Li(e,t.pointLabels[h]||"",g,d.lineHeight)}}e.restore()}(t),ut.each(t.ticks,function(e,s){if(s>0||n.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,i,n){var a,r=t.ctx,o=e.circular,s=Ii(t),l=Pi(e.color,n-1),u=Pi(e.lineWidth,n-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI);else{a=t.getPointPosition(0,i),r.moveTo(a.x,a.y);for(var d=1;d=0&&o<=s;){if(a=t[(n=o+s>>1)-1]||null,r=t[n],!a)return{lo:null,hi:r};if(r[e]i))return{lo:a,hi:r};s=n-1}}return{lo:r,hi:null}}(t,e,i),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(i-r[e])/s:0,u=(o[n]-r[n])*l;return r[n]+u}function Zi(t,e){var i=t._adapter,n=t.options.time,a=n.parser,r=a||n.format,o=e;return"function"==typeof a&&(o=a(o)),ut.isFinite(o)||(o="string"==typeof r?i.parse(o,r):i.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),ut.isFinite(o)||(o=i.parse(o))),o)}function $i(t,e){if(ut.isNullOrUndef(e))return null;var i=t.options.time,n=Zi(t,t.getRightValue(e));return null===n?n:(i.round&&(n=+t._adapter.startOf(n,i.round)),n)}function Xi(t){for(var e=ji.indexOf(t)+1,i=ji.length;e=a&&i<=r&&u.push(i);return n.min=a,n.max=r,n._unit=s.unit||function(t,e,i,n,a){var r,o;for(r=ji.length-1;r>=ji.indexOf(i);r--)if(o=ji[r],Bi[o].common&&t._adapter.diff(a,n,o)>=e.length)return o;return ji[i?ji.indexOf(i):0]}(n,u,s.minUnit,n.min,n.max),n._majorUnit=Xi(n._unit),n._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,r,o,s,l,u=[],d=[e];for(a=0,r=t.length;ae&&s=0&&t0?o:1}}),Qi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};Ji._defaults=Qi;var tn,en={category:gi,linear:xi,logarithmic:Si,radialLinear:Ni,time:Ji},nn=(function(t,e){t.exports=function(){var e,i;function n(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){return void 0===t}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function u(t,e){var i,n=[];for(i=0;i>>0,n=0;n0)for(i=0;i=0;return(r?i?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+n}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,H={},E={};function B(t,e,i,n){var a=n;"string"==typeof n&&(a=function(){return this[n]()}),t&&(E[t]=a),e&&(E[e[0]]=function(){return N(a.apply(this,arguments),e[1],e[2])}),i&&(E[i]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function j(t,e){return t.isValid()?(e=U(e,t.localeData()),H[e]=H[e]||function(t){var e,i,n,a=t.match(z);for(e=0,i=a.length;e=0&&V.test(t);)t=t.replace(V,n),V.lastIndex=0,i-=1;return t}var G=/\d/,q=/\d\d/,Z=/\d{3}/,$=/\d{4}/,X=/[+-]?\d{6}/,K=/\d\d?/,J=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,tt=/\d{1,3}/,et=/\d{1,4}/,it=/[+-]?\d{1,6}/,nt=/\d+/,at=/[+-]?\d+/,rt=/Z|[+-]\d\d:?\d\d/gi,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,st=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,lt={};function ut(t,e,i){lt[t]=T(e)?e:function(t,n){return t&&i?i:e}}function dt(t,e){return d(lt,t)?lt[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,n,a){return e||i||n||a})))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ct={};function ft(t,e){var i,n=e;for("string"==typeof t&&(t=[t]),s(e)&&(n=function(t,i){i[e]=k(t)}),i=0;i68?1900:2e3)};var Ct,Pt=Tt("FullYear",!0);function Tt(t,e){return function(i){return null!=i?(It(this,t,i),n.updateOffset(this,e),this):Ot(this,t)}}function Ot(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function It(t,e,i){t.isValid()&&!isNaN(i)&&("FullYear"===e&&Dt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](i,t.month(),At(i,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](i))}function At(t,e){if(isNaN(t)||isNaN(e))return NaN;var i,n=(e%(i=12)+i)%i;return t+=(e-n)/12,1===n?Dt(t)?29:28:31-n%7%2}Ct=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e=0){var i=Array.prototype.slice.call(arguments);i[0]=t+400,e=new Date(Date.UTC.apply(null,i)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Et(t,e,i){var n=7+e-i,a=(7+Ht(t,0,n).getUTCDay()-e)%7;return-a+n-1}function Bt(t,e,i,n,a){var r,o,s=(7+i-n)%7,l=Et(t,n,a),u=1+7*(e-1)+s+l;return u<=0?o=St(r=t-1)+u:u>St(t)?(r=t+1,o=u-St(t)):(r=t,o=u),{year:r,dayOfYear:o}}function jt(t,e,i){var n,a,r=Et(t.year(),e,i),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?(a=t.year()-1,n=o+Ut(a,e,i)):o>Ut(t.year(),e,i)?(n=o-Ut(t.year(),e,i),a=t.year()+1):(a=t.year(),n=o),{week:n,year:a}}function Ut(t,e,i){var n=Et(t,e,i),a=Et(t+1,e,i);return(St(t)-n+a)/7}function Gt(t,e){return t.slice(e,7).concat(t.slice(0,e))}B("w",["ww",2],"wo","week"),B("W",["WW",2],"Wo","isoWeek"),F("week","w"),F("isoWeek","W"),Y("week",5),Y("isoWeek",5),ut("w",K),ut("ww",K,q),ut("W",K),ut("WW",K,q),gt(["w","ww","W","WW"],function(t,e,i,n){e[n.substr(0,1)]=k(t)}),B("d",0,"do","day"),B("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),B("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),B("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),B("e",0,0,"weekday"),B("E",0,0,"isoWeekday"),F("day","d"),F("weekday","e"),F("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),ut("d",K),ut("e",K),ut("E",K),ut("dd",function(t,e){return e.weekdaysMinRegex(t)}),ut("ddd",function(t,e){return e.weekdaysShortRegex(t)}),ut("dddd",function(t,e){return e.weekdaysRegex(t)}),gt(["dd","ddd","dddd"],function(t,e,i,n){var a=i._locale.weekdaysParse(t,n,i._strict);null!=a?e.d=a:f(i).invalidWeekday=t}),gt(["d","e","E"],function(t,e,i,n){e[n]=k(t)});var qt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$t="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=st,Kt=st,Jt=st;function Qt(){function t(t,e){return e.length-t.length}var e,i,n,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)i=c([2e3,1]).day(e),n=this.weekdaysMin(i,""),a=this.weekdaysShort(i,""),r=this.weekdays(i,""),o.push(n),s.push(a),l.push(r),u.push(n),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),l[e]=ht(l[e]),u[e]=ht(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function te(){return this.hours()%12||12}function ee(t,e){B(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ie(t,e){return e._meridiemParse}B("H",["HH",2],0,"hour"),B("h",["hh",2],0,te),B("k",["kk",2],0,function(){return this.hours()||24}),B("hmm",0,0,function(){return""+te.apply(this)+N(this.minutes(),2)}),B("hmmss",0,0,function(){return""+te.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)}),B("Hmm",0,0,function(){return""+this.hours()+N(this.minutes(),2)}),B("Hmmss",0,0,function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)}),ee("a",!0),ee("A",!1),F("hour","h"),Y("hour",13),ut("a",ie),ut("A",ie),ut("H",K),ut("h",K),ut("k",K),ut("HH",K,q),ut("hh",K,q),ut("kk",K,q),ut("hmm",J),ut("hmmss",Q),ut("Hmm",J),ut("Hmmss",Q),ft(["H","HH"],bt),ft(["k","kk"],function(t,e,i){var n=k(t);e[bt]=24===n?0:n}),ft(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),ft(["h","hh"],function(t,e,i){e[bt]=k(t),f(i).bigHour=!0}),ft("hmm",function(t,e,i){var n=t.length-2;e[bt]=k(t.substr(0,n)),e[xt]=k(t.substr(n)),f(i).bigHour=!0}),ft("hmmss",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=k(t.substr(0,n)),e[xt]=k(t.substr(n,2)),e[_t]=k(t.substr(a)),f(i).bigHour=!0}),ft("Hmm",function(t,e,i){var n=t.length-2;e[bt]=k(t.substr(0,n)),e[xt]=k(t.substr(n))}),ft("Hmmss",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=k(t.substr(0,n)),e[xt]=k(t.substr(n,2)),e[_t]=k(t.substr(a))});var ne,ae=Tt("Hours",!0),re={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Rt,monthsShort:Lt,week:{dow:0,doy:6},weekdays:qt,weekdaysMin:$t,weekdaysShort:Zt,meridiemParse:/[ap]\.?m?\.?/i},oe={},se={};function le(t){return t?t.toLowerCase().replace("_","-"):t}function ue(e){var i=null;if(!oe[e]&&t&&t.exports)try{i=ne._abbr;var n=_e;n("./locale/"+e),de(i)}catch(t){}return oe[e]}function de(t,e){var i;return t&&((i=o(e)?ce(t):he(t,e))?ne=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ne._abbr}function he(t,e){if(null!==e){var i,n=re;if(e.abbr=t,null!=oe[t])P("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=oe[t]._config;else if(null!=e.parentLocale)if(null!=oe[e.parentLocale])n=oe[e.parentLocale]._config;else{if(null==(i=ue(e.parentLocale)))return se[e.parentLocale]||(se[e.parentLocale]=[]),se[e.parentLocale].push({name:t,config:e}),null;n=i._config}return oe[t]=new I(O(n,e)),se[t]&&se[t].forEach(function(t){he(t.name,t.config)}),de(t),oe[t]}return delete oe[t],null}function ce(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ne;if(!a(t)){if(e=ue(t))return e;t=[t]}return function(t){for(var e,i,n,a,r=0;r0;){if(n=ue(a.slice(0,e).join("-")))return n;if(i&&i.length>=e&&w(a,i,!0)>=e-1)break;e--}r++}return ne}(t)}function fe(t){var e,i=t._a;return i&&-2===f(t).overflow&&(e=i[vt]<0||i[vt]>11?vt:i[yt]<1||i[yt]>At(i[pt],i[vt])?yt:i[bt]<0||i[bt]>24||24===i[bt]&&(0!==i[xt]||0!==i[_t]||0!==i[kt])?bt:i[xt]<0||i[xt]>59?xt:i[_t]<0||i[_t]>59?_t:i[kt]<0||i[kt]>999?kt:-1,f(t)._overflowDayOfYear&&(eyt)&&(e=yt),f(t)._overflowWeeks&&-1===e&&(e=wt),f(t)._overflowWeekday&&-1===e&&(e=Mt),f(t).overflow=e),t}function ge(t,e,i){return null!=t?t:null!=e?e:i}function me(t){var e,i,a,r,o,s=[];if(!t._d){for(a=function(t){var e=new Date(n.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[yt]&&null==t._a[vt]&&function(t){var e,i,n,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,i=ge(e.GG,t._a[pt],jt(Ie(),1,4).year),n=ge(e.W,1),((a=ge(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=jt(Ie(),r,o);i=ge(e.gg,t._a[pt],u.year),n=ge(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}n<1||n>Ut(i,r,o)?f(t)._overflowWeeks=!0:null!=l?f(t)._overflowWeekday=!0:(s=Bt(i,n,a,r,o),t._a[pt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ge(t._a[pt],a[pt]),(t._dayOfYear>St(o)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),i=Ht(o,0,t._dayOfYear),t._a[vt]=i.getUTCMonth(),t._a[yt]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=a[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[bt]&&0===t._a[xt]&&0===t._a[_t]&&0===t._a[kt]&&(t._nextDay=!0,t._a[bt]=0),t._d=(t._useUTC?Ht:function(t,e,i,n,a,r,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,i,n,a,r,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,i,n,a,r,o),s}).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[bt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(f(t).weekdayMismatch=!0)}}var pe=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ve=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ye=/Z|[+-]\d\d(?::?\d\d)?/,be=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],xe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ke=/^\/?Date\((\-?\d+)/i;function we(t){var e,i,n,a,r,o,s=t._i,l=pe.exec(s)||ve.exec(s);if(l){for(f(t).iso=!0,e=0,i=be.length;e0&&f(t).unusedInput.push(o),s=s.slice(s.indexOf(i)+i.length),u+=i.length),E[r]?(i?f(t).empty=!1:f(t).unusedTokens.push(r),mt(r,i,t)):t._strict&&!i&&f(t).unusedTokens.push(r);f(t).charsLeftOver=l-u,s.length>0&&f(t).unusedInput.push(s),t._a[bt]<=12&&!0===f(t).bigHour&&t._a[bt]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[bt]=(d=t._locale,h=t._a[bt],null==(c=t._meridiem)?h:null!=d.meridiemHour?d.meridiemHour(h,c):null!=d.isPM?((g=d.isPM(c))&&h<12&&(h+=12),g||12!==h||(h=0),h):h),me(t),fe(t)}else Ce(t);else we(t);var d,h,c,g}function Te(t){var e=t._i,i=t._f;return t._locale=t._locale||ce(t._l),null===e||void 0===i&&""===e?m({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new b(fe(e)):(l(e)?t._d=e:a(i)?function(t){var e,i,n,a,r;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;athis?this:t:m()});function Re(t,e){var i,n;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return Ie();for(i=e[0],n=1;n=0?new Date(t+400,e,i)-si:new Date(t,e,i).valueOf()}function di(t,e,i){return t<100&&t>=0?Date.UTC(t+400,e,i)-si:Date.UTC(t,e,i)}function hi(t,e){B(0,[t,t.length],0,e)}function ci(t,e,i,n,a){var r;return null==t?jt(this,n,a).year:(r=Ut(t,n,a),e>r&&(e=r),function(t,e,i,n,a){var r=Bt(t,e,i,n,a),o=Ht(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,i,n,a))}B(0,["gg",2],0,function(){return this.weekYear()%100}),B(0,["GG",2],0,function(){return this.isoWeekYear()%100}),hi("gggg","weekYear"),hi("ggggg","weekYear"),hi("GGGG","isoWeekYear"),hi("GGGGG","isoWeekYear"),F("weekYear","gg"),F("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),ut("G",at),ut("g",at),ut("GG",K,q),ut("gg",K,q),ut("GGGG",et,$),ut("gggg",et,$),ut("GGGGG",it,X),ut("ggggg",it,X),gt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,n){e[n.substr(0,2)]=k(t)}),gt(["gg","GG"],function(t,e,i,a){e[a]=n.parseTwoDigitYear(t)}),B("Q",0,"Qo","quarter"),F("quarter","Q"),Y("quarter",7),ut("Q",G),ft("Q",function(t,e){e[vt]=3*(k(t)-1)}),B("D",["DD",2],"Do","date"),F("date","D"),Y("date",9),ut("D",K),ut("DD",K,q),ut("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),ft(["D","DD"],yt),ft("Do",function(t,e){e[yt]=k(t.match(K)[0])});var fi=Tt("Date",!0);B("DDD",["DDDD",3],"DDDo","dayOfYear"),F("dayOfYear","DDD"),Y("dayOfYear",4),ut("DDD",tt),ut("DDDD",Z),ft(["DDD","DDDD"],function(t,e,i){i._dayOfYear=k(t)}),B("m",["mm",2],0,"minute"),F("minute","m"),Y("minute",14),ut("m",K),ut("mm",K,q),ft(["m","mm"],xt);var gi=Tt("Minutes",!1);B("s",["ss",2],0,"second"),F("second","s"),Y("second",15),ut("s",K),ut("ss",K,q),ft(["s","ss"],_t);var mi,pi=Tt("Seconds",!1);for(B("S",0,0,function(){return~~(this.millisecond()/100)}),B(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),B(0,["SSS",3],0,"millisecond"),B(0,["SSSS",4],0,function(){return 10*this.millisecond()}),B(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),B(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),B(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),B(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),B(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),F("millisecond","ms"),Y("millisecond",16),ut("S",tt,G),ut("SS",tt,q),ut("SSS",tt,Z),mi="SSSS";mi.length<=9;mi+="S")ut(mi,nt);function vi(t,e){e[kt]=k(1e3*("0."+t))}for(mi="S";mi.length<=9;mi+="S")ft(mi,vi);var yi=Tt("Milliseconds",!1);B("z",0,0,"zoneAbbr"),B("zz",0,0,"zoneName");var bi=b.prototype;function xi(t){return t}bi.add=Je,bi.calendar=function(t,e){var i=t||Ie(),a=Ee(i,this).startOf("day"),r=n.calendarFormat(this,a)||"sameElse",o=e&&(T(e[r])?e[r].call(this,i):e[r]);return this.format(o||this.localeData().calendar(r,this,Ie(i)))},bi.clone=function(){return new b(this)},bi.diff=function(t,e,i){var n,a,r;if(!this.isValid())return NaN;if(!(n=Ee(t,this)).isValid())return NaN;switch(a=6e4*(n.utcOffset()-this.utcOffset()),e=R(e)){case"year":r=ti(this,n)/12;break;case"month":r=ti(this,n);break;case"quarter":r=ti(this,n)/3;break;case"second":r=(this-n)/1e3;break;case"minute":r=(this-n)/6e4;break;case"hour":r=(this-n)/36e5;break;case"day":r=(this-n-a)/864e5;break;case"week":r=(this-n-a)/6048e5;break;default:r=this-n}return i?r:_(r)},bi.endOf=function(t){var e;if(void 0===(t=R(t))||"millisecond"===t||!this.isValid())return this;var i=this._isUTC?di:ui;switch(t){case"year":e=i(this.year()+1,0,1)-1;break;case"quarter":e=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=i(this.year(),this.month()+1,1)-1;break;case"week":e=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=i(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=oi-li(e+(this._isUTC?0:this.utcOffset()*ri),oi)-1;break;case"minute":e=this._d.valueOf(),e+=ri-li(e,ri)-1;break;case"second":e=this._d.valueOf(),e+=ai-li(e,ai)-1}return this._d.setTime(e),n.updateOffset(this,!0),this},bi.format=function(t){t||(t=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var e=j(this,t);return this.localeData().postformat(e)},bi.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ie(t).isValid())?qe({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bi.fromNow=function(t){return this.from(Ie(),t)},bi.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ie(t).isValid())?qe({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bi.toNow=function(t){return this.to(Ie(),t)},bi.get=function(t){return T(this[t=R(t)])?this[t]():this},bi.invalidAt=function(){return f(this).overflow},bi.isAfter=function(t,e){var i=x(t)?t:Ie(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=R(e)||"millisecond")?this.valueOf()>i.valueOf():i.valueOf()9999?j(i,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):T(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",j(i,"Z")):j(i,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},bi.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var i="["+t+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=e+'[")]';return this.format(i+n+"-MM-DD[T]HH:mm:ss.SSS"+a)},bi.toJSON=function(){return this.isValid()?this.toISOString():null},bi.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},bi.unix=function(){return Math.floor(this.valueOf()/1e3)},bi.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},bi.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},bi.year=Pt,bi.isLeapYear=function(){return Dt(this.year())},bi.weekYear=function(t){return ci.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},bi.isoWeekYear=function(t){return ci.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},bi.quarter=bi.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},bi.month=Yt,bi.daysInMonth=function(){return At(this.year(),this.month())},bi.week=bi.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},bi.isoWeek=bi.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},bi.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},bi.isoWeeksInYear=function(){return Ut(this.year(),1,4)},bi.date=fi,bi.day=bi.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},bi.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},bi.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},bi.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},bi.hour=bi.hours=ae,bi.minute=bi.minutes=gi,bi.second=bi.seconds=pi,bi.millisecond=bi.milliseconds=yi,bi.utcOffset=function(t,e,i){var a,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=He(ot,t)))return this}else Math.abs(t)<16&&!i&&(t*=60);return!this._isUTC&&e&&(a=Be(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),r!==t&&(!e||this._changeInProgress?Ke(this,qe(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Be(this)},bi.utc=function(t){return this.utcOffset(0,t)},bi.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Be(this),"m")),this},bi.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=He(rt,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},bi.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Ie(t).utcOffset():0,(this.utcOffset()-t)%60==0)},bi.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},bi.isLocal=function(){return!!this.isValid()&&!this._isUTC},bi.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},bi.isUtc=je,bi.isUTC=je,bi.zoneAbbr=function(){return this._isUTC?"UTC":""},bi.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},bi.dates=S("dates accessor is deprecated. Use date instead.",fi),bi.months=S("months accessor is deprecated. Use month instead",Yt),bi.years=S("years accessor is deprecated. Use year instead",Pt),bi.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),bi.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=Te(t))._a){var e=t._isUTC?c(t._a):Ie(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var _i=I.prototype;function ki(t,e,i,n){var a=ce(),r=c().set(n,e);return a[i](r,t)}function wi(t,e,i){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return ki(t,e,i,"month");var n,a=[];for(n=0;n<12;n++)a[n]=ki(t,n,i,"month");return a}function Mi(t,e,i,n){"boolean"==typeof t?(s(e)&&(i=e,e=void 0),e=e||""):(i=e=t,t=!1,s(e)&&(i=e,e=void 0),e=e||"");var a,r=ce(),o=t?r._week.dow:0;if(null!=i)return ki(e,(i+o)%7,n,"day");var l=[];for(a=0;a<7;a++)l[a]=ki(e,(a+o)%7,n,"day");return l}_i.calendar=function(t,e,i){var n=this._calendar[t]||this._calendar.sameElse;return T(n)?n.call(e,i):n},_i.longDateFormat=function(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])},_i.invalidDate=function(){return this._invalidDate},_i.ordinal=function(t){return this._ordinal.replace("%d",t)},_i.preparse=xi,_i.postformat=xi,_i.relativeTime=function(t,e,i,n){var a=this._relativeTime[i];return T(a)?a(t,e,i,n):a.replace(/%d/i,t)},_i.pastFuture=function(t,e){var i=this._relativeTime[t>0?"future":"past"];return T(i)?i(e):i.replace(/%s/i,e)},_i.set=function(t){var e,i;for(i in t)T(e=t[i])?this[i]=e:this["_"+i]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},_i.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Ft).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},_i.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Ft.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},_i.monthsParse=function(t,e,i){var n,a,r;if(this._monthsParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)r=c([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(r,"").toLocaleLowerCase();return i?"MMM"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null}.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(a=c([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[n]=new RegExp(r.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[n].test(t))return n;if(i&&"MMM"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}},_i.monthsRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Vt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=zt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},_i.monthsShortRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Vt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Nt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},_i.week=function(t){return jt(t,this._week.dow,this._week.doy).week},_i.firstDayOfYear=function(){return this._week.doy},_i.firstDayOfWeek=function(){return this._week.dow},_i.weekdays=function(t,e){var i=a(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Gt(i,this._week.dow):t?i[t.day()]:i},_i.weekdaysMin=function(t){return!0===t?Gt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},_i.weekdaysShort=function(t){return!0===t?Gt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},_i.weekdaysParse=function(t,e,i){var n,a,r;if(this._weekdaysParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=c([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,"").toLocaleLowerCase();return i?"dddd"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null}.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(a=c([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[n]=new RegExp(r.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&"ddd"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&"dd"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}},_i.weekdaysRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},_i.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Kt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},_i.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Jt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},_i.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},_i.meridiem=function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},de("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),n.lang=S("moment.lang is deprecated. Use moment.locale instead.",de),n.langData=S("moment.langData is deprecated. Use moment.localeData instead.",ce);var Si=Math.abs;function Di(t,e,i,n){var a=qe(e,i);return t._milliseconds+=n*a._milliseconds,t._days+=n*a._days,t._months+=n*a._months,t._bubble()}function Ci(t){return t<0?Math.floor(t):Math.ceil(t)}function Pi(t){return 4800*t/146097}function Ti(t){return 146097*t/4800}function Oi(t){return function(){return this.as(t)}}var Ii=Oi("ms"),Ai=Oi("s"),Fi=Oi("m"),Ri=Oi("h"),Li=Oi("d"),Wi=Oi("w"),Yi=Oi("M"),Ni=Oi("Q"),zi=Oi("y");function Vi(t){return function(){return this.isValid()?this._data[t]:NaN}}var Hi=Vi("milliseconds"),Ei=Vi("seconds"),Bi=Vi("minutes"),ji=Vi("hours"),Ui=Vi("days"),Gi=Vi("months"),qi=Vi("years"),Zi=Math.round,$i={ss:44,s:45,m:45,h:22,d:26,M:11},Xi=Math.abs;function Ki(t){return(t>0)-(t<0)||+t}function Ji(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i=Xi(this._milliseconds)/1e3,n=Xi(this._days),a=Xi(this._months);t=_(i/60),e=_(t/60),i%=60,t%=60;var r=_(a/12),o=a%=12,s=n,l=e,u=t,d=i?i.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Ki(this._months)!==Ki(h)?"-":"",g=Ki(this._days)!==Ki(h)?"-":"",m=Ki(this._milliseconds)!==Ki(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(o?f+o+"M":"")+(s?g+s+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var Qi=We.prototype;return Qi.isValid=function(){return this._isValid},Qi.abs=function(){var t=this._data;return this._milliseconds=Si(this._milliseconds),this._days=Si(this._days),this._months=Si(this._months),t.milliseconds=Si(t.milliseconds),t.seconds=Si(t.seconds),t.minutes=Si(t.minutes),t.hours=Si(t.hours),t.months=Si(t.months),t.years=Si(t.years),this},Qi.add=function(t,e){return Di(this,t,e,1)},Qi.subtract=function(t,e){return Di(this,t,e,-1)},Qi.as=function(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if("month"===(t=R(t))||"quarter"===t||"year"===t)switch(e=this._days+n/864e5,i=this._months+Pi(e),t){case"month":return i;case"quarter":return i/3;case"year":return i/12}else switch(e=this._days+Math.round(Ti(this._months)),t){case"week":return e/7+n/6048e5;case"day":return e+n/864e5;case"hour":return 24*e+n/36e5;case"minute":return 1440*e+n/6e4;case"second":return 86400*e+n/1e3;case"millisecond":return Math.floor(864e5*e)+n;default:throw new Error("Unknown unit "+t)}},Qi.asMilliseconds=Ii,Qi.asSeconds=Ai,Qi.asMinutes=Fi,Qi.asHours=Ri,Qi.asDays=Li,Qi.asWeeks=Wi,Qi.asMonths=Yi,Qi.asQuarters=Ni,Qi.asYears=zi,Qi.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},Qi._bubble=function(){var t,e,i,n,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*Ci(Ti(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=_(r/1e3),l.seconds=t%60,e=_(t/60),l.minutes=e%60,i=_(e/60),l.hours=i%24,o+=_(i/24),a=_(Pi(o)),s+=a,o-=Ci(Ti(a)),n=_(s/12),s%=12,l.days=o,l.months=s,l.years=n,this},Qi.clone=function(){return qe(this)},Qi.get=function(t){return t=R(t),this.isValid()?this[t+"s"]():NaN},Qi.milliseconds=Hi,Qi.seconds=Ei,Qi.minutes=Bi,Qi.hours=ji,Qi.days=Ui,Qi.weeks=function(){return _(this.days()/7)},Qi.months=Gi,Qi.years=qi,Qi.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),i=function(t,e,i){var n=qe(t).abs(),a=Zi(n.as("s")),r=Zi(n.as("m")),o=Zi(n.as("h")),s=Zi(n.as("d")),l=Zi(n.as("M")),u=Zi(n.as("y")),d=a<=$i.ss&&["s",a]||a<$i.s&&["ss",a]||r<=1&&["m"]||r<$i.m&&["mm",r]||o<=1&&["h"]||o<$i.h&&["hh",o]||s<=1&&["d"]||s<$i.d&&["dd",s]||l<=1&&["M"]||l<$i.M&&["MM",l]||u<=1&&["y"]||["yy",u];return d[2]=e,d[3]=+t>0,d[4]=i,function(t,e,i,n,a){return a.relativeTime(e||1,!!i,t,n)}.apply(null,d)}(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)},Qi.toISOString=Ji,Qi.toString=Ji,Qi.toJSON=Ji,Qi.locale=ei,Qi.localeData=ni,Qi.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ji),Qi.lang=ii,B("X",0,0,"unix"),B("x",0,0,"valueOf"),ut("x",at),ut("X",/[+-]?\d+(\.\d{1,3})?/),ft("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),ft("x",function(t,e,i){i._d=new Date(k(t))}),n.version="2.24.0",e=Ie,n.fn=bi,n.min=function(){return Re("isBefore",[].slice.call(arguments,0))},n.max=function(){return Re("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=c,n.unix=function(t){return Ie(1e3*t)},n.months=function(t,e){return wi(t,e,"months")},n.isDate=l,n.locale=de,n.invalid=m,n.duration=qe,n.isMoment=x,n.weekdays=function(t,e,i){return Mi(t,e,i,"weekdays")},n.parseZone=function(){return Ie.apply(null,arguments).parseZone()},n.localeData=ce,n.isDuration=Ye,n.monthsShort=function(t,e){return wi(t,e,"monthsShort")},n.weekdaysMin=function(t,e,i){return Mi(t,e,i,"weekdaysMin")},n.defineLocale=he,n.updateLocale=function(t,e){if(null!=e){var i,n,a=re;null!=(n=ue(t))&&(a=n._config),e=O(a,e),(i=new I(e)).parentLocale=oe[t],oe[t]=i,de(t)}else null!=oe[t]&&(null!=oe[t].parentLocale?oe[t]=oe[t].parentLocale:null!=oe[t]&&delete oe[t]);return oe[t]},n.locales=function(){return D(oe)},n.weekdaysShort=function(t,e,i){return Mi(t,e,i,"weekdaysShort")},n.normalizeUnits=R,n.relativeTimeRounding=function(t){return void 0===t?Zi:"function"==typeof t&&(Zi=t,!0)},n.relativeTimeThreshold=function(t,e){return void 0!==$i[t]&&(void 0===e?$i[t]:($i[t]=e,"s"===t&&($i.ss=e-1),!0))},n.calendarFormat=function(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"},n.prototype=bi,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}(tn={exports:{}},tn.exports),tn.exports),an={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};si._date.override("function"==typeof nn?{_id:"moment",formats:function(){return an},parse:function(t,e){return"string"==typeof t&&"string"==typeof e?t=nn(t,e):t instanceof nn||(t=nn(t)),t.isValid()?t.valueOf():null},format:function(t,e){return nn(t).format(e)},add:function(t,e,i){return nn(t).add(e,i).valueOf()},diff:function(t,e,i){return nn.duration(nn(t).diff(nn(e))).as(i)},startOf:function(t,e,i){return t=nn(t),"isoWeek"===e?t.isoWeekday(i).valueOf():t.startOf(e).valueOf()},endOf:function(t,e){return nn(t).endOf(e).valueOf()},_create:function(t){return nn(t)}}:{}),ot._set("global",{plugins:{filler:{propagate:!0}}});var rn={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],r=a.length||0;return r?function(t,e){return e=i)&&n;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function sn(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?r=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?r=i.scaleZero:n.getBasePosition?r=n.getBasePosition():n.getBasePixel&&(r=n.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if(ut.isFinite(r))return{x:(e=n.isHorizontal())?r:null,y:e?null:r}}return null}function ln(t,e,i){var n,a=t[e].fill,r=[e];if(!i)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;r.push(a),a=n.fill}return!1}function un(t){var e=t.fill,i="dataset";return!1===e?null:(isFinite(e)||(i="boundary"),rn[i](t))}function dn(t){return t&&!t.skip}function hn(t,e,i,n,a){var r;if(n&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r0;--r)ut.canvas.lineTo(t,i[r],i[r-1],!0)}}var cn={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,r,o=(t.data.datasets||[]).length,s=e.propagate,l=[];for(n=0;ne?e:t.boxWidth}ot._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return ut.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:ut.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('
    ');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push("
"),e.join("")}});var pn=gt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:fn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:fn,beforeSetDimensions:fn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:fn,beforeBuildLabels:fn,buildLabels:function(){var t=this,e=t.options.labels||{},i=ut.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:fn,beforeFit:fn,fit:function(){var t=this,e=t.options,i=e.labels,n=e.display,a=t.ctx,r=ut.options._parseFont(i),o=r.size,s=t.legendHitBoxes=[],l=t.minSize,u=t.isHorizontal();if(u?(l.width=t.maxWidth,l.height=n?10:0):(l.width=n?10:0,l.height=t.maxHeight),n)if(a.font=r.string,u){var d=t.lineWidths=[0],h=0;a.textAlign="left",a.textBaseline="top",ut.each(t.legendItems,function(t,e){var n=mn(i,o)+o/2+a.measureText(t.text).width;(0===e||d[d.length-1]+n+i.padding>l.width)&&(h+=o+i.padding,d[d.length-(e>0?0:1)]=i.padding),s[e]={left:0,top:0,width:n,height:o},d[d.length-1]+=n+i.padding}),l.height+=h}else{var c=i.padding,f=t.columnWidths=[],g=i.padding,m=0,p=0,v=o+c;ut.each(t.legendItems,function(t,e){var n=mn(i,o)+o/2+a.measureText(t.text).width;e>0&&p+v>l.height-c&&(g+=m+i.padding,f.push(m),m=0,p=0),m=Math.max(m,n),p+=v,s[e]={left:0,top:0,width:n,height:o}}),g+=m,f.push(m),l.width+=g}t.width=l.width,t.height=l.height},afterFit:fn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,n=ot.global,a=n.defaultColor,r=n.elements.line,o=t.width,s=t.lineWidths;if(e.display){var l,u=t.ctx,d=gn(i.fontColor,n.defaultFontColor),h=ut.options._parseFont(i),c=h.size;u.textAlign="left",u.textBaseline="middle",u.lineWidth=.5,u.strokeStyle=d,u.fillStyle=d,u.font=h.string;var f=mn(i,c),g=t.legendHitBoxes,m=t.isHorizontal();l=m?{x:t.left+(o-s[0])/2+i.padding,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var p=c+i.padding;ut.each(t.legendItems,function(n,d){var h=u.measureText(n.text).width,v=f+c/2+h,y=l.x,b=l.y;m?d>0&&y+v+i.padding>t.left+t.minSize.width&&(b=l.y+=p,l.line++,y=l.x=t.left+(o-s[l.line])/2+i.padding):d>0&&b+p>t.top+t.minSize.height&&(y=l.x=y+t.columnWidths[l.line]+i.padding,b=l.y=t.top+i.padding,l.line++),function(t,i,n){if(!(isNaN(f)||f<=0)){u.save();var o=gn(n.lineWidth,r.borderWidth);if(u.fillStyle=gn(n.fillStyle,a),u.lineCap=gn(n.lineCap,r.borderCapStyle),u.lineDashOffset=gn(n.lineDashOffset,r.borderDashOffset),u.lineJoin=gn(n.lineJoin,r.borderJoinStyle),u.lineWidth=o,u.strokeStyle=gn(n.strokeStyle,a),u.setLineDash&&u.setLineDash(gn(n.lineDash,r.borderDash)),e.labels&&e.labels.usePointStyle){var s=f*Math.SQRT2/2,l=t+f/2,d=i+c/2;ut.canvas.drawPoint(u,n.pointStyle,s,l,d)}else 0!==o&&u.strokeRect(t,i,f,c),u.fillRect(t,i,f,c);u.restore()}}(y,b,n),g[d].left=y,g[d].top=b,function(t,e,i,n){var a=c/2,r=f+a+t,o=e+a;u.fillText(i.text,r,o),i.hidden&&(u.beginPath(),u.lineWidth=2,u.moveTo(r,o),u.lineTo(r+n,o),u.stroke())}(y,b,n,h),m?l.x+=v+i.padding:l.y+=p})}},_getLegendItemAt:function(t,e){var i,n,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,i=0;i=(n=a[i]).left&&t<=n.left+n.width&&e>=n.top&&e<=n.top+n.height)return r.legendItems[i];return null},handleEvent:function(t){var e,i=this,n=i.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!n.onHover&&!n.onLeave)return}else{if("click"!==a)return;if(!n.onClick)return}e=i._getLegendItemAt(t.x,t.y),"click"===a?e&&n.onClick&&n.onClick.call(i,t.native,e):(n.onLeave&&e!==i._hoveredItem&&(i._hoveredItem&&n.onLeave.call(i,t.native,i._hoveredItem),i._hoveredItem=e),n.onHover&&e&&n.onHover.call(i,t.native,e))}});function vn(t,e){var i=new pn({ctx:t.ctx,options:e,chart:t});xe.configure(t,i,e),xe.addBox(t,i),t.legend=i}var yn={id:"legend",_element:pn,beforeInit:function(t){var e=t.options.legend;e&&vn(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(ut.mergeIf(e,ot.global.legend),i?(xe.configure(t,i,e),i.options=e):vn(t,e)):i&&(xe.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}},bn=ut.noop;ot._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var xn=gt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:bn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:bn,beforeSetDimensions:bn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:bn,beforeBuildLabels:bn,buildLabels:bn,afterBuildLabels:bn,beforeFit:bn,fit:function(){var t=this,e=t.options,i=e.display,n=t.minSize,a=ut.isArray(e.text)?e.text.length:1,r=ut.options._parseFont(e),o=i?a*r.lineHeight+2*e.padding:0;t.isHorizontal()?(n.width=t.maxWidth,n.height=o):(n.width=o,n.height=t.maxHeight),t.width=n.width,t.height=n.height},afterFit:bn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=t.options;if(i.display){var n,a,r,o=ut.options._parseFont(i),s=o.lineHeight,l=s/2+i.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=ut.valueOrDefault(i.fontColor,ot.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,n=f-h):(a="left"===i.position?h+l:f-l,r=d+(c-d)/2,n=c-d,u=Math.PI*("left"===i.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=i.text;if(ut.isArray(g))for(var m=0,p=0;p=0;n--){var a=t[n];if(e(a))return a}},ut.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},ut.almostEquals=function(t,e,i){return Math.abs(t-e)t},ut.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},ut.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},ut.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},ut.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},ut.toRadians=function(t){return t*(Math.PI/180)},ut.toDegrees=function(t){return t*(180/Math.PI)},ut._decimalPlaces=function(t){if(ut.isFinite(t)){for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}},ut.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),r=Math.atan2(n,i);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},ut.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},ut.aliasPixel=function(t){return t%2==0?0:.5},ut._alignPixel=function(t,e,i){var n=t.currentDevicePixelRatio,a=i/2;return Math.round((e-a)*n)/n+a},ut.splineCurve=function(t,e,i,n){var a=t.skip?e:t,r=e,o=i.skip?e:i,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=n*(u=isNaN(u)?0:u),c=n*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},ut.EPSILON=Number.EPSILON||1e-14,ut.splineCurveMonotone=function(t){var e,i,n,a,r,o,s,l,u,d=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},ut.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},ut.niceNum=function(t,e){var i=Math.floor(ut.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},ut.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},ut.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(i=s[0].clientX,n=s[0].clientY):(i=a.clientX,n=a.clientY);var l=parseFloat(ut.getStyle(r,"padding-left")),u=parseFloat(ut.getStyle(r,"padding-top")),d=parseFloat(ut.getStyle(r,"padding-right")),h=parseFloat(ut.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:i=Math.round((i-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:n=Math.round((n-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},ut.getConstraintWidth=function(t){return i(t,"max-width","clientWidth")},ut.getConstraintHeight=function(t){return i(t,"max-height","clientHeight")},ut._calculatePadding=function(t,e,i){return(e=ut.getStyle(t,e)).indexOf("%")>-1?i*parseInt(e,10)/100:parseInt(e,10)},ut._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},ut.getMaximumWidth=function(t){var e=ut._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-ut._calculatePadding(e,"padding-left",i)-ut._calculatePadding(e,"padding-right",i),a=ut.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},ut.getMaximumHeight=function(t){var e=ut._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-ut._calculatePadding(e,"padding-top",i)-ut._calculatePadding(e,"padding-bottom",i),a=ut.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},ut.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},ut.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,r=t.width;n.height=a*i,n.width=r*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=r+"px")}},ut.fontString=function(t,e,i){return e+" "+t+"px "+i},ut.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},r=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},r=n.garbageCollect=[],n.font=e),t.font=e;var o=0;ut.each(i,function(e){null!=e&&!0!==ut.isArray(e)?o=ut.measureText(t,a,r,o,e):ut.isArray(e)&&ut.each(e,function(e){null==e||ut.isArray(e)||(o=ut.measureText(t,a,r,o,e))})});var s=r.length/2;if(s>i.length){for(var l=0;ln&&(n=r),n},ut.numberOfLabelLines=function(t){var e=1;return ut.each(t,function(t){ut.isArray(t)&&t.length>e&&(e=t.length)}),e},ut.color=G?function(t){return t instanceof CanvasGradient&&(t=ot.global.defaultColor),G(t)}:function(t){return console.error("Color.js not found!"),t},ut.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:ut.color(t).saturate(.5).darken(.1).rgbString()}}(),ai._adapters=si,ai.Animation=pt,ai.animationService=vt,ai.controllers=ue,ai.DatasetController=kt,ai.defaults=ot,ai.Element=gt,ai.elements=Nt,ai.Interaction=pe,ai.layouts=xe,ai.platform=Ve,ai.plugins=He,ai.Scale=fi,ai.scaleService=Ee,ai.Ticks=li,ai.Tooltip=Je,ai.helpers.each(en,function(t,e){ai.scaleService.registerScaleType(e,t,t._defaults)}),kn)kn.hasOwnProperty(Dn)&&ai.plugins.register(kn[Dn]);ai.platform.initialize();var Cn=ai;return"undefined"!=typeof window&&(window.Chart=ai),ai.Chart=ai,ai.Legend=kn.legend._element,ai.Title=kn.title._element,ai.pluginService=ai.plugins,ai.PluginBase=ai.Element.extend({}),ai.canvasHelpers=ai.helpers.canvas,ai.layoutService=ai.layouts,ai.LinearScaleBase=yi,ai.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(t){ai[t]=function(e,i){return new ai(e,ai.helpers.merge(i||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}}),Cn}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.css b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.css deleted file mode 100644 index 5e74959..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * DOM element rendering detection - * https://davidwalsh.name/detect-node-insertion - */ -@keyframes chartjs-render-animation { - from { opacity: 0.99; } - to { opacity: 1; } -} - -.chartjs-render-monitor { - animation: chartjs-render-animation 0.001s; -} - -/* - * DOM element resizing detection - * https://github.com/marcj/css-element-queries - */ -.chartjs-size-monitor, -.chartjs-size-monitor-expand, -.chartjs-size-monitor-shrink { - position: absolute; - direction: ltr; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; - pointer-events: none; - visibility: hidden; - z-index: -1; -} - -.chartjs-size-monitor-expand > div { - position: absolute; - width: 1000000px; - height: 1000000px; - left: 0; - top: 0; -} - -.chartjs-size-monitor-shrink > div { - position: absolute; - width: 200%; - height: 200%; - left: 0; - top: 0; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.js b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.js deleted file mode 100644 index 6370857..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.js +++ /dev/null @@ -1,14680 +0,0 @@ -/*! - * Chart.js v2.8.0 - * https://www.chartjs.org - * (c) 2019 Chart.js Contributors - * Released under the MIT License - */ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) : -typeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) : -(global.Chart = factory(global.moment)); -}(this, (function (moment) { 'use strict'; - -moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment; - -/* MIT license */ - -var conversions = { - rgb2hsl: rgb2hsl, - rgb2hsv: rgb2hsv, - rgb2hwb: rgb2hwb, - rgb2cmyk: rgb2cmyk, - rgb2keyword: rgb2keyword, - rgb2xyz: rgb2xyz, - rgb2lab: rgb2lab, - rgb2lch: rgb2lch, - - hsl2rgb: hsl2rgb, - hsl2hsv: hsl2hsv, - hsl2hwb: hsl2hwb, - hsl2cmyk: hsl2cmyk, - hsl2keyword: hsl2keyword, - - hsv2rgb: hsv2rgb, - hsv2hsl: hsv2hsl, - hsv2hwb: hsv2hwb, - hsv2cmyk: hsv2cmyk, - hsv2keyword: hsv2keyword, - - hwb2rgb: hwb2rgb, - hwb2hsl: hwb2hsl, - hwb2hsv: hwb2hsv, - hwb2cmyk: hwb2cmyk, - hwb2keyword: hwb2keyword, - - cmyk2rgb: cmyk2rgb, - cmyk2hsl: cmyk2hsl, - cmyk2hsv: cmyk2hsv, - cmyk2hwb: cmyk2hwb, - cmyk2keyword: cmyk2keyword, - - keyword2rgb: keyword2rgb, - keyword2hsl: keyword2hsl, - keyword2hsv: keyword2hsv, - keyword2hwb: keyword2hwb, - keyword2cmyk: keyword2cmyk, - keyword2lab: keyword2lab, - keyword2xyz: keyword2xyz, - - xyz2rgb: xyz2rgb, - xyz2lab: xyz2lab, - xyz2lch: xyz2lch, - - lab2xyz: lab2xyz, - lab2rgb: lab2rgb, - lab2lch: lab2lch, - - lch2lab: lch2lab, - lch2xyz: lch2xyz, - lch2rgb: lch2rgb -}; - - -function rgb2hsl(rgb) { - var r = rgb[0]/255, - g = rgb[1]/255, - b = rgb[2]/255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, l; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g)/ delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - l = (min + max) / 2; - - if (max == min) - s = 0; - else if (l <= 0.5) - s = delta / (max + min); - else - s = delta / (2 - max - min); - - return [h, s * 100, l * 100]; -} - -function rgb2hsv(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, v; - - if (max == 0) - s = 0; - else - s = (delta/max * 1000)/10; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g) / delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; -} - -function rgb2hwb(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - h = rgb2hsl(rgb)[0], - w = 1/255 * Math.min(r, Math.min(g, b)), - b = 1 - 1/255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; -} - -function rgb2cmyk(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255, - c, m, y, k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - return [c * 100, m * 100, y * 100, k * 100]; -} - -function rgb2keyword(rgb) { - return reverseKeywords[JSON.stringify(rgb)]; -} - -function rgb2xyz(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y *100, z * 100]; -} - -function rgb2lab(rgb) { - var xyz = rgb2xyz(rgb), - x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function rgb2lch(args) { - return lab2lch(rgb2lab(args)); -} - -function hsl2rgb(hsl) { - var h = hsl[0] / 360, - s = hsl[1] / 100, - l = hsl[2] / 100, - t1, t2, t3, rgb, val; - - if (s == 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) - t2 = l * (1 + s); - else - t2 = l + s - l * s; - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * - (i - 1); - t3 < 0 && t3++; - t3 > 1 && t3--; - - if (6 * t3 < 1) - val = t1 + (t2 - t1) * 6 * t3; - else if (2 * t3 < 1) - val = t2; - else if (3 * t3 < 2) - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - else - val = t1; - - rgb[i] = val * 255; - } - - return rgb; -} - -function hsl2hsv(hsl) { - var h = hsl[0], - s = hsl[1] / 100, - l = hsl[2] / 100, - sv, v; - - if(l === 0) { - // no need to do calc on black - // also avoids divide by 0 error - return [0, 0, 0]; - } - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - v = (l + s) / 2; - sv = (2 * s) / (l + s); - return [h, sv * 100, v * 100]; -} - -function hsl2hwb(args) { - return rgb2hwb(hsl2rgb(args)); -} - -function hsl2cmyk(args) { - return rgb2cmyk(hsl2rgb(args)); -} - -function hsl2keyword(args) { - return rgb2keyword(hsl2rgb(args)); -} - - -function hsv2rgb(hsv) { - var h = hsv[0] / 60, - s = hsv[1] / 100, - v = hsv[2] / 100, - hi = Math.floor(h) % 6; - - var f = h - Math.floor(h), - p = 255 * v * (1 - s), - q = 255 * v * (1 - (s * f)), - t = 255 * v * (1 - (s * (1 - f))), - v = 255 * v; - - switch(hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -} - -function hsv2hsl(hsv) { - var h = hsv[0], - s = hsv[1] / 100, - v = hsv[2] / 100, - sl, l; - - l = (2 - s) * v; - sl = s * v; - sl /= (l <= 1) ? l : 2 - l; - sl = sl || 0; - l /= 2; - return [h, sl * 100, l * 100]; -} - -function hsv2hwb(args) { - return rgb2hwb(hsv2rgb(args)) -} - -function hsv2cmyk(args) { - return rgb2cmyk(hsv2rgb(args)); -} - -function hsv2keyword(args) { - return rgb2keyword(hsv2rgb(args)); -} - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -function hwb2rgb(hwb) { - var h = hwb[0] / 360, - wh = hwb[1] / 100, - bl = hwb[2] / 100, - ratio = wh + bl, - i, v, f, n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - if ((i & 0x01) != 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation - - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -} - -function hwb2hsl(args) { - return rgb2hsl(hwb2rgb(args)); -} - -function hwb2hsv(args) { - return rgb2hsv(hwb2rgb(args)); -} - -function hwb2cmyk(args) { - return rgb2cmyk(hwb2rgb(args)); -} - -function hwb2keyword(args) { - return rgb2keyword(hwb2rgb(args)); -} - -function cmyk2rgb(cmyk) { - var c = cmyk[0] / 100, - m = cmyk[1] / 100, - y = cmyk[2] / 100, - k = cmyk[3] / 100, - r, g, b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - return [r * 255, g * 255, b * 255]; -} - -function cmyk2hsl(args) { - return rgb2hsl(cmyk2rgb(args)); -} - -function cmyk2hsv(args) { - return rgb2hsv(cmyk2rgb(args)); -} - -function cmyk2hwb(args) { - return rgb2hwb(cmyk2rgb(args)); -} - -function cmyk2keyword(args) { - return rgb2keyword(cmyk2rgb(args)); -} - - -function xyz2rgb(xyz) { - var x = xyz[0] / 100, - y = xyz[1] / 100, - z = xyz[2] / 100, - r, g, b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92); - - g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92); - - b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92); - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; -} - -function xyz2lab(xyz) { - var x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function xyz2lch(args) { - return lab2lch(xyz2lab(args)); -} - -function lab2xyz(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - x, y, z, y2; - - if (l <= 8) { - y = (l * 100) / 903.3; - y2 = (7.787 * (y / 100)) + (16 / 116); - } else { - y = 100 * Math.pow((l + 16) / 116, 3); - y2 = Math.pow(y / 100, 1/3); - } - - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); - - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); - - return [x, y, z]; -} - -function lab2lch(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - hr, h, c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - if (h < 0) { - h += 360; - } - c = Math.sqrt(a * a + b * b); - return [l, c, h]; -} - -function lab2rgb(args) { - return xyz2rgb(lab2xyz(args)); -} - -function lch2lab(lch) { - var l = lch[0], - c = lch[1], - h = lch[2], - a, b, hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - return [l, a, b]; -} - -function lch2xyz(args) { - return lab2xyz(lch2lab(args)); -} - -function lch2rgb(args) { - return lab2rgb(lch2lab(args)); -} - -function keyword2rgb(keyword) { - return cssKeywords[keyword]; -} - -function keyword2hsl(args) { - return rgb2hsl(keyword2rgb(args)); -} - -function keyword2hsv(args) { - return rgb2hsv(keyword2rgb(args)); -} - -function keyword2hwb(args) { - return rgb2hwb(keyword2rgb(args)); -} - -function keyword2cmyk(args) { - return rgb2cmyk(keyword2rgb(args)); -} - -function keyword2lab(args) { - return rgb2lab(keyword2rgb(args)); -} - -function keyword2xyz(args) { - return rgb2xyz(keyword2rgb(args)); -} - -var cssKeywords = { - aliceblue: [240,248,255], - antiquewhite: [250,235,215], - aqua: [0,255,255], - aquamarine: [127,255,212], - azure: [240,255,255], - beige: [245,245,220], - bisque: [255,228,196], - black: [0,0,0], - blanchedalmond: [255,235,205], - blue: [0,0,255], - blueviolet: [138,43,226], - brown: [165,42,42], - burlywood: [222,184,135], - cadetblue: [95,158,160], - chartreuse: [127,255,0], - chocolate: [210,105,30], - coral: [255,127,80], - cornflowerblue: [100,149,237], - cornsilk: [255,248,220], - crimson: [220,20,60], - cyan: [0,255,255], - darkblue: [0,0,139], - darkcyan: [0,139,139], - darkgoldenrod: [184,134,11], - darkgray: [169,169,169], - darkgreen: [0,100,0], - darkgrey: [169,169,169], - darkkhaki: [189,183,107], - darkmagenta: [139,0,139], - darkolivegreen: [85,107,47], - darkorange: [255,140,0], - darkorchid: [153,50,204], - darkred: [139,0,0], - darksalmon: [233,150,122], - darkseagreen: [143,188,143], - darkslateblue: [72,61,139], - darkslategray: [47,79,79], - darkslategrey: [47,79,79], - darkturquoise: [0,206,209], - darkviolet: [148,0,211], - deeppink: [255,20,147], - deepskyblue: [0,191,255], - dimgray: [105,105,105], - dimgrey: [105,105,105], - dodgerblue: [30,144,255], - firebrick: [178,34,34], - floralwhite: [255,250,240], - forestgreen: [34,139,34], - fuchsia: [255,0,255], - gainsboro: [220,220,220], - ghostwhite: [248,248,255], - gold: [255,215,0], - goldenrod: [218,165,32], - gray: [128,128,128], - green: [0,128,0], - greenyellow: [173,255,47], - grey: [128,128,128], - honeydew: [240,255,240], - hotpink: [255,105,180], - indianred: [205,92,92], - indigo: [75,0,130], - ivory: [255,255,240], - khaki: [240,230,140], - lavender: [230,230,250], - lavenderblush: [255,240,245], - lawngreen: [124,252,0], - lemonchiffon: [255,250,205], - lightblue: [173,216,230], - lightcoral: [240,128,128], - lightcyan: [224,255,255], - lightgoldenrodyellow: [250,250,210], - lightgray: [211,211,211], - lightgreen: [144,238,144], - lightgrey: [211,211,211], - lightpink: [255,182,193], - lightsalmon: [255,160,122], - lightseagreen: [32,178,170], - lightskyblue: [135,206,250], - lightslategray: [119,136,153], - lightslategrey: [119,136,153], - lightsteelblue: [176,196,222], - lightyellow: [255,255,224], - lime: [0,255,0], - limegreen: [50,205,50], - linen: [250,240,230], - magenta: [255,0,255], - maroon: [128,0,0], - mediumaquamarine: [102,205,170], - mediumblue: [0,0,205], - mediumorchid: [186,85,211], - mediumpurple: [147,112,219], - mediumseagreen: [60,179,113], - mediumslateblue: [123,104,238], - mediumspringgreen: [0,250,154], - mediumturquoise: [72,209,204], - mediumvioletred: [199,21,133], - midnightblue: [25,25,112], - mintcream: [245,255,250], - mistyrose: [255,228,225], - moccasin: [255,228,181], - navajowhite: [255,222,173], - navy: [0,0,128], - oldlace: [253,245,230], - olive: [128,128,0], - olivedrab: [107,142,35], - orange: [255,165,0], - orangered: [255,69,0], - orchid: [218,112,214], - palegoldenrod: [238,232,170], - palegreen: [152,251,152], - paleturquoise: [175,238,238], - palevioletred: [219,112,147], - papayawhip: [255,239,213], - peachpuff: [255,218,185], - peru: [205,133,63], - pink: [255,192,203], - plum: [221,160,221], - powderblue: [176,224,230], - purple: [128,0,128], - rebeccapurple: [102, 51, 153], - red: [255,0,0], - rosybrown: [188,143,143], - royalblue: [65,105,225], - saddlebrown: [139,69,19], - salmon: [250,128,114], - sandybrown: [244,164,96], - seagreen: [46,139,87], - seashell: [255,245,238], - sienna: [160,82,45], - silver: [192,192,192], - skyblue: [135,206,235], - slateblue: [106,90,205], - slategray: [112,128,144], - slategrey: [112,128,144], - snow: [255,250,250], - springgreen: [0,255,127], - steelblue: [70,130,180], - tan: [210,180,140], - teal: [0,128,128], - thistle: [216,191,216], - tomato: [255,99,71], - turquoise: [64,224,208], - violet: [238,130,238], - wheat: [245,222,179], - white: [255,255,255], - whitesmoke: [245,245,245], - yellow: [255,255,0], - yellowgreen: [154,205,50] -}; - -var reverseKeywords = {}; -for (var key in cssKeywords) { - reverseKeywords[JSON.stringify(cssKeywords[key])] = key; -} - -var convert = function() { - return new Converter(); -}; - -for (var func in conversions) { - // export Raw versions - convert[func + "Raw"] = (function(func) { - // accept array or plain args - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - return conversions[func](arg); - } - })(func); - - var pair = /(\w+)2(\w+)/.exec(func), - from = pair[1], - to = pair[2]; - - // export rgb2hsl and ["rgb"]["hsl"] - convert[from] = convert[from] || {}; - - convert[from][to] = convert[func] = (function(func) { - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - - var val = conversions[func](arg); - if (typeof val == "string" || val === undefined) - return val; // keyword - - for (var i = 0; i < val.length; i++) - val[i] = Math.round(val[i]); - return val; - } - })(func); -} - - -/* Converter does lazy conversion and caching */ -var Converter = function() { - this.convs = {}; -}; - -/* Either get the values for a space or - set the values for a space, depending on args */ -Converter.prototype.routeSpace = function(space, args) { - var values = args[0]; - if (values === undefined) { - // color.rgb() - return this.getValues(space); - } - // color.rgb(10, 10, 10) - if (typeof values == "number") { - values = Array.prototype.slice.call(args); - } - - return this.setValues(space, values); -}; - -/* Set the values for a space, invalidating cache */ -Converter.prototype.setValues = function(space, values) { - this.space = space; - this.convs = {}; - this.convs[space] = values; - return this; -}; - -/* Get the values for a space. If there's already - a conversion for the space, fetch it, otherwise - compute it */ -Converter.prototype.getValues = function(space) { - var vals = this.convs[space]; - if (!vals) { - var fspace = this.space, - from = this.convs[fspace]; - vals = convert[fspace][space](from); - - this.convs[space] = vals; - } - return vals; -}; - -["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { - Converter.prototype[space] = function(vals) { - return this.routeSpace(space, arguments); - }; -}); - -var colorConvert = convert; - -var colorName = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; - -/* MIT license */ - - -var colorString = { - getRgba: getRgba, - getHsla: getHsla, - getRgb: getRgb, - getHsl: getHsl, - getHwb: getHwb, - getAlpha: getAlpha, - - hexString: hexString, - rgbString: rgbString, - rgbaString: rgbaString, - percentString: percentString, - percentaString: percentaString, - hslString: hslString, - hslaString: hslaString, - hwbString: hwbString, - keyword: keyword -}; - -function getRgba(string) { - if (!string) { - return; - } - var abbr = /^#([a-fA-F0-9]{3,4})$/i, - hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i, - rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, - keyword = /(\w+)/; - - var rgb = [0, 0, 0], - a = 1, - match = string.match(abbr), - hexAlpha = ""; - if (match) { - match = match[1]; - hexAlpha = match[3]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i] + match[i], 16); - } - if (hexAlpha) { - a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100; - } - } - else if (match = string.match(hex)) { - hexAlpha = match[2]; - match = match[1]; - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); - } - if (hexAlpha) { - a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100; - } - } - else if (match = string.match(rgba)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = parseInt(match[i + 1]); - } - a = parseFloat(match[4]); - } - else if (match = string.match(per)) { - for (var i = 0; i < rgb.length; i++) { - rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); - } - a = parseFloat(match[4]); - } - else if (match = string.match(keyword)) { - if (match[1] == "transparent") { - return [0, 0, 0, 0]; - } - rgb = colorName[match[1]]; - if (!rgb) { - return; - } - } - - for (var i = 0; i < rgb.length; i++) { - rgb[i] = scale(rgb[i], 0, 255); - } - if (!a && a != 0) { - a = 1; - } - else { - a = scale(a, 0, 1); - } - rgb[3] = a; - return rgb; -} - -function getHsla(string) { - if (!string) { - return; - } - var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hsl); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - s = scale(parseFloat(match[2]), 0, 100), - l = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, s, l, a]; - } -} - -function getHwb(string) { - if (!string) { - return; - } - var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; - var match = string.match(hwb); - if (match) { - var alpha = parseFloat(match[4]); - var h = scale(parseInt(match[1]), 0, 360), - w = scale(parseFloat(match[2]), 0, 100), - b = scale(parseFloat(match[3]), 0, 100), - a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); - return [h, w, b, a]; - } -} - -function getRgb(string) { - var rgba = getRgba(string); - return rgba && rgba.slice(0, 3); -} - -function getHsl(string) { - var hsla = getHsla(string); - return hsla && hsla.slice(0, 3); -} - -function getAlpha(string) { - var vals = getRgba(string); - if (vals) { - return vals[3]; - } - else if (vals = getHsla(string)) { - return vals[3]; - } - else if (vals = getHwb(string)) { - return vals[3]; - } -} - -// generators -function hexString(rgba, a) { - var a = (a !== undefined && rgba.length === 3) ? a : rgba[3]; - return "#" + hexDouble(rgba[0]) - + hexDouble(rgba[1]) - + hexDouble(rgba[2]) - + ( - (a >= 0 && a < 1) - ? hexDouble(Math.round(a * 255)) - : "" - ); -} - -function rgbString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return rgbaString(rgba, alpha); - } - return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; -} - -function rgbaString(rgba, alpha) { - if (alpha === undefined) { - alpha = (rgba[3] !== undefined ? rgba[3] : 1); - } - return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] - + ", " + alpha + ")"; -} - -function percentString(rgba, alpha) { - if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { - return percentaString(rgba, alpha); - } - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); - - return "rgb(" + r + "%, " + g + "%, " + b + "%)"; -} - -function percentaString(rgba, alpha) { - var r = Math.round(rgba[0]/255 * 100), - g = Math.round(rgba[1]/255 * 100), - b = Math.round(rgba[2]/255 * 100); - return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; -} - -function hslString(hsla, alpha) { - if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { - return hslaString(hsla, alpha); - } - return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; -} - -function hslaString(hsla, alpha) { - if (alpha === undefined) { - alpha = (hsla[3] !== undefined ? hsla[3] : 1); - } - return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " - + alpha + ")"; -} - -// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax -// (hwb have alpha optional & 1 is default value) -function hwbString(hwb, alpha) { - if (alpha === undefined) { - alpha = (hwb[3] !== undefined ? hwb[3] : 1); - } - return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" - + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; -} - -function keyword(rgb) { - return reverseNames[rgb.slice(0, 3)]; -} - -// helpers -function scale(num, min, max) { - return Math.min(Math.max(min, num), max); -} - -function hexDouble(num) { - var str = num.toString(16).toUpperCase(); - return (str.length < 2) ? "0" + str : str; -} - - -//create a list of reverse color names -var reverseNames = {}; -for (var name in colorName) { - reverseNames[colorName[name]] = name; -} - -/* MIT license */ - - - -var Color = function (obj) { - if (obj instanceof Color) { - return obj; - } - if (!(this instanceof Color)) { - return new Color(obj); - } - - this.valid = false; - this.values = { - rgb: [0, 0, 0], - hsl: [0, 0, 0], - hsv: [0, 0, 0], - hwb: [0, 0, 0], - cmyk: [0, 0, 0, 0], - alpha: 1 - }; - - // parse Color() argument - var vals; - if (typeof obj === 'string') { - vals = colorString.getRgba(obj); - if (vals) { - this.setValues('rgb', vals); - } else if (vals = colorString.getHsla(obj)) { - this.setValues('hsl', vals); - } else if (vals = colorString.getHwb(obj)) { - this.setValues('hwb', vals); - } - } else if (typeof obj === 'object') { - vals = obj; - if (vals.r !== undefined || vals.red !== undefined) { - this.setValues('rgb', vals); - } else if (vals.l !== undefined || vals.lightness !== undefined) { - this.setValues('hsl', vals); - } else if (vals.v !== undefined || vals.value !== undefined) { - this.setValues('hsv', vals); - } else if (vals.w !== undefined || vals.whiteness !== undefined) { - this.setValues('hwb', vals); - } else if (vals.c !== undefined || vals.cyan !== undefined) { - this.setValues('cmyk', vals); - } - } -}; - -Color.prototype = { - isValid: function () { - return this.valid; - }, - rgb: function () { - return this.setSpace('rgb', arguments); - }, - hsl: function () { - return this.setSpace('hsl', arguments); - }, - hsv: function () { - return this.setSpace('hsv', arguments); - }, - hwb: function () { - return this.setSpace('hwb', arguments); - }, - cmyk: function () { - return this.setSpace('cmyk', arguments); - }, - - rgbArray: function () { - return this.values.rgb; - }, - hslArray: function () { - return this.values.hsl; - }, - hsvArray: function () { - return this.values.hsv; - }, - hwbArray: function () { - var values = this.values; - if (values.alpha !== 1) { - return values.hwb.concat([values.alpha]); - } - return values.hwb; - }, - cmykArray: function () { - return this.values.cmyk; - }, - rgbaArray: function () { - var values = this.values; - return values.rgb.concat([values.alpha]); - }, - hslaArray: function () { - var values = this.values; - return values.hsl.concat([values.alpha]); - }, - alpha: function (val) { - if (val === undefined) { - return this.values.alpha; - } - this.setValues('alpha', val); - return this; - }, - - red: function (val) { - return this.setChannel('rgb', 0, val); - }, - green: function (val) { - return this.setChannel('rgb', 1, val); - }, - blue: function (val) { - return this.setChannel('rgb', 2, val); - }, - hue: function (val) { - if (val) { - val %= 360; - val = val < 0 ? 360 + val : val; - } - return this.setChannel('hsl', 0, val); - }, - saturation: function (val) { - return this.setChannel('hsl', 1, val); - }, - lightness: function (val) { - return this.setChannel('hsl', 2, val); - }, - saturationv: function (val) { - return this.setChannel('hsv', 1, val); - }, - whiteness: function (val) { - return this.setChannel('hwb', 1, val); - }, - blackness: function (val) { - return this.setChannel('hwb', 2, val); - }, - value: function (val) { - return this.setChannel('hsv', 2, val); - }, - cyan: function (val) { - return this.setChannel('cmyk', 0, val); - }, - magenta: function (val) { - return this.setChannel('cmyk', 1, val); - }, - yellow: function (val) { - return this.setChannel('cmyk', 2, val); - }, - black: function (val) { - return this.setChannel('cmyk', 3, val); - }, - - hexString: function () { - return colorString.hexString(this.values.rgb); - }, - rgbString: function () { - return colorString.rgbString(this.values.rgb, this.values.alpha); - }, - rgbaString: function () { - return colorString.rgbaString(this.values.rgb, this.values.alpha); - }, - percentString: function () { - return colorString.percentString(this.values.rgb, this.values.alpha); - }, - hslString: function () { - return colorString.hslString(this.values.hsl, this.values.alpha); - }, - hslaString: function () { - return colorString.hslaString(this.values.hsl, this.values.alpha); - }, - hwbString: function () { - return colorString.hwbString(this.values.hwb, this.values.alpha); - }, - keyword: function () { - return colorString.keyword(this.values.rgb, this.values.alpha); - }, - - rgbNumber: function () { - var rgb = this.values.rgb; - return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; - }, - - luminosity: function () { - // http://www.w3.org/TR/WCAG20/#relativeluminancedef - var rgb = this.values.rgb; - var lum = []; - for (var i = 0; i < rgb.length; i++) { - var chan = rgb[i] / 255; - lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); - } - return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; - }, - - contrast: function (color2) { - // http://www.w3.org/TR/WCAG20/#contrast-ratiodef - var lum1 = this.luminosity(); - var lum2 = color2.luminosity(); - if (lum1 > lum2) { - return (lum1 + 0.05) / (lum2 + 0.05); - } - return (lum2 + 0.05) / (lum1 + 0.05); - }, - - level: function (color2) { - var contrastRatio = this.contrast(color2); - if (contrastRatio >= 7.1) { - return 'AAA'; - } - - return (contrastRatio >= 4.5) ? 'AA' : ''; - }, - - dark: function () { - // YIQ equation from http://24ways.org/2010/calculating-color-contrast - var rgb = this.values.rgb; - var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; - return yiq < 128; - }, - - light: function () { - return !this.dark(); - }, - - negate: function () { - var rgb = []; - for (var i = 0; i < 3; i++) { - rgb[i] = 255 - this.values.rgb[i]; - } - this.setValues('rgb', rgb); - return this; - }, - - lighten: function (ratio) { - var hsl = this.values.hsl; - hsl[2] += hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - darken: function (ratio) { - var hsl = this.values.hsl; - hsl[2] -= hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - saturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] += hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - desaturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] -= hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - whiten: function (ratio) { - var hwb = this.values.hwb; - hwb[1] += hwb[1] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - blacken: function (ratio) { - var hwb = this.values.hwb; - hwb[2] += hwb[2] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - greyscale: function () { - var rgb = this.values.rgb; - // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale - var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; - this.setValues('rgb', [val, val, val]); - return this; - }, - - clearer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha - (alpha * ratio)); - return this; - }, - - opaquer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha + (alpha * ratio)); - return this; - }, - - rotate: function (degrees) { - var hsl = this.values.hsl; - var hue = (hsl[0] + degrees) % 360; - hsl[0] = hue < 0 ? 360 + hue : hue; - this.setValues('hsl', hsl); - return this; - }, - - /** - * Ported from sass implementation in C - * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 - */ - mix: function (mixinColor, weight) { - var color1 = this; - var color2 = mixinColor; - var p = weight === undefined ? 0.5 : weight; - - var w = 2 * p - 1; - var a = color1.alpha() - color2.alpha(); - - var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - - return this - .rgb( - w1 * color1.red() + w2 * color2.red(), - w1 * color1.green() + w2 * color2.green(), - w1 * color1.blue() + w2 * color2.blue() - ) - .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); - }, - - toJSON: function () { - return this.rgb(); - }, - - clone: function () { - // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, - // making the final build way to big to embed in Chart.js. So let's do it manually, - // assuming that values to clone are 1 dimension arrays containing only numbers, - // except 'alpha' which is a number. - var result = new Color(); - var source = this.values; - var target = result.values; - var value, type; - - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - value = source[prop]; - type = ({}).toString.call(value); - if (type === '[object Array]') { - target[prop] = value.slice(0); - } else if (type === '[object Number]') { - target[prop] = value; - } else { - console.error('unexpected color value:', value); - } - } - } - - return result; - } -}; - -Color.prototype.spaces = { - rgb: ['red', 'green', 'blue'], - hsl: ['hue', 'saturation', 'lightness'], - hsv: ['hue', 'saturation', 'value'], - hwb: ['hue', 'whiteness', 'blackness'], - cmyk: ['cyan', 'magenta', 'yellow', 'black'] -}; - -Color.prototype.maxes = { - rgb: [255, 255, 255], - hsl: [360, 100, 100], - hsv: [360, 100, 100], - hwb: [360, 100, 100], - cmyk: [100, 100, 100, 100] -}; - -Color.prototype.getValues = function (space) { - var values = this.values; - var vals = {}; - - for (var i = 0; i < space.length; i++) { - vals[space.charAt(i)] = values[space][i]; - } - - if (values.alpha !== 1) { - vals.a = values.alpha; - } - - // {r: 255, g: 255, b: 255, a: 0.4} - return vals; -}; - -Color.prototype.setValues = function (space, vals) { - var values = this.values; - var spaces = this.spaces; - var maxes = this.maxes; - var alpha = 1; - var i; - - this.valid = true; - - if (space === 'alpha') { - alpha = vals; - } else if (vals.length) { - // [10, 10, 10] - values[space] = vals.slice(0, space.length); - alpha = vals[space.length]; - } else if (vals[space.charAt(0)] !== undefined) { - // {r: 10, g: 10, b: 10} - for (i = 0; i < space.length; i++) { - values[space][i] = vals[space.charAt(i)]; - } - - alpha = vals.a; - } else if (vals[spaces[space][0]] !== undefined) { - // {red: 10, green: 10, blue: 10} - var chans = spaces[space]; - - for (i = 0; i < space.length; i++) { - values[space][i] = vals[chans[i]]; - } - - alpha = vals.alpha; - } - - values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); - - if (space === 'alpha') { - return false; - } - - var capped; - - // cap values of the space prior converting all values - for (i = 0; i < space.length; i++) { - capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); - values[space][i] = Math.round(capped); - } - - // convert to all the other color spaces - for (var sname in spaces) { - if (sname !== space) { - values[sname] = colorConvert[space][sname](values[space]); - } - } - - return true; -}; - -Color.prototype.setSpace = function (space, args) { - var vals = args[0]; - - if (vals === undefined) { - // color.rgb() - return this.getValues(space); - } - - // color.rgb(10, 10, 10) - if (typeof vals === 'number') { - vals = Array.prototype.slice.call(args); - } - - this.setValues(space, vals); - return this; -}; - -Color.prototype.setChannel = function (space, index, val) { - var svalues = this.values[space]; - if (val === undefined) { - // color.red() - return svalues[index]; - } else if (val === svalues[index]) { - // color.red(color.red()) - return this; - } - - // color.red(100) - svalues[index] = val; - this.setValues(space, svalues); - - return this; -}; - -if (typeof window !== 'undefined') { - window.Color = Color; -} - -var chartjsColor = Color; - -/** - * @namespace Chart.helpers - */ -var helpers = { - /** - * An empty function that can be used, for example, for optional callback. - */ - noop: function() {}, - - /** - * Returns a unique id, sequentially generated from a global variable. - * @returns {number} - * @function - */ - uid: (function() { - var id = 0; - return function() { - return id++; - }; - }()), - - /** - * Returns true if `value` is neither null nor undefined, else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @since 2.7.0 - */ - isNullOrUndef: function(value) { - return value === null || typeof value === 'undefined'; - }, - - /** - * Returns true if `value` is an array (including typed arrays), else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @function - */ - isArray: function(value) { - if (Array.isArray && Array.isArray(value)) { - return true; - } - var type = Object.prototype.toString.call(value); - if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { - return true; - } - return false; - }, - - /** - * Returns true if `value` is an object (excluding null), else returns false. - * @param {*} value - The value to test. - * @returns {boolean} - * @since 2.7.0 - */ - isObject: function(value) { - return value !== null && Object.prototype.toString.call(value) === '[object Object]'; - }, - - /** - * Returns true if `value` is a finite number, else returns false - * @param {*} value - The value to test. - * @returns {boolean} - */ - isFinite: function(value) { - return (typeof value === 'number' || value instanceof Number) && isFinite(value); - }, - - /** - * Returns `value` if defined, else returns `defaultValue`. - * @param {*} value - The value to return if defined. - * @param {*} defaultValue - The value to return if `value` is undefined. - * @returns {*} - */ - valueOrDefault: function(value, defaultValue) { - return typeof value === 'undefined' ? defaultValue : value; - }, - - /** - * Returns value at the given `index` in array if defined, else returns `defaultValue`. - * @param {Array} value - The array to lookup for value at `index`. - * @param {number} index - The index in `value` to lookup for value. - * @param {*} defaultValue - The value to return if `value[index]` is undefined. - * @returns {*} - */ - valueAtIndexOrDefault: function(value, index, defaultValue) { - return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); - }, - - /** - * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the - * value returned by `fn`. If `fn` is not a function, this method returns undefined. - * @param {function} fn - The function to call. - * @param {Array|undefined|null} args - The arguments with which `fn` should be called. - * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. - * @returns {*} - */ - callback: function(fn, args, thisArg) { - if (fn && typeof fn.call === 'function') { - return fn.apply(thisArg, args); - } - }, - - /** - * Note(SB) for performance sake, this method should only be used when loopable type - * is unknown or in none intensive code (not called often and small loopable). Else - * it's preferable to use a regular for() loop and save extra function calls. - * @param {object|Array} loopable - The object or array to be iterated. - * @param {function} fn - The function to call for each item. - * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. - * @param {boolean} [reverse] - If true, iterates backward on the loopable. - */ - each: function(loopable, fn, thisArg, reverse) { - var i, len, keys; - if (helpers.isArray(loopable)) { - len = loopable.length; - if (reverse) { - for (i = len - 1; i >= 0; i--) { - fn.call(thisArg, loopable[i], i); - } - } else { - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[i], i); - } - } - } else if (helpers.isObject(loopable)) { - keys = Object.keys(loopable); - len = keys.length; - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[keys[i]], keys[i]); - } - } - }, - - /** - * Returns true if the `a0` and `a1` arrays have the same content, else returns false. - * @see https://stackoverflow.com/a/14853974 - * @param {Array} a0 - The array to compare - * @param {Array} a1 - The array to compare - * @returns {boolean} - */ - arrayEquals: function(a0, a1) { - var i, ilen, v0, v1; - - if (!a0 || !a1 || a0.length !== a1.length) { - return false; - } - - for (i = 0, ilen = a0.length; i < ilen; ++i) { - v0 = a0[i]; - v1 = a1[i]; - - if (v0 instanceof Array && v1 instanceof Array) { - if (!helpers.arrayEquals(v0, v1)) { - return false; - } - } else if (v0 !== v1) { - // NOTE: two different object instances will never be equal: {x:20} != {x:20} - return false; - } - } - - return true; - }, - - /** - * Returns a deep copy of `source` without keeping references on objects and arrays. - * @param {*} source - The value to clone. - * @returns {*} - */ - clone: function(source) { - if (helpers.isArray(source)) { - return source.map(helpers.clone); - } - - if (helpers.isObject(source)) { - var target = {}; - var keys = Object.keys(source); - var klen = keys.length; - var k = 0; - - for (; k < klen; ++k) { - target[keys[k]] = helpers.clone(source[keys[k]]); - } - - return target; - } - - return source; - }, - - /** - * The default merger when Chart.helpers.merge is called without merger option. - * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback. - * @private - */ - _merger: function(key, target, source, options) { - var tval = target[key]; - var sval = source[key]; - - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.merge(tval, sval, options); - } else { - target[key] = helpers.clone(sval); - } - }, - - /** - * Merges source[key] in target[key] only if target[key] is undefined. - * @private - */ - _mergerIf: function(key, target, source) { - var tval = target[key]; - var sval = source[key]; - - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.mergeIf(tval, sval); - } else if (!target.hasOwnProperty(key)) { - target[key] = helpers.clone(sval); - } - }, - - /** - * Recursively deep copies `source` properties into `target` with the given `options`. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {object} target - The target object in which all sources are merged into. - * @param {object|object[]} source - Object(s) to merge into `target`. - * @param {object} [options] - Merging options: - * @param {function} [options.merger] - The merge method (key, target, source, options) - * @returns {object} The `target` object. - */ - merge: function(target, source, options) { - var sources = helpers.isArray(source) ? source : [source]; - var ilen = sources.length; - var merge, i, keys, klen, k; - - if (!helpers.isObject(target)) { - return target; - } - - options = options || {}; - merge = options.merger || helpers._merger; - - for (i = 0; i < ilen; ++i) { - source = sources[i]; - if (!helpers.isObject(source)) { - continue; - } - - keys = Object.keys(source); - for (k = 0, klen = keys.length; k < klen; ++k) { - merge(keys[k], target, source, options); - } - } - - return target; - }, - - /** - * Recursively deep copies `source` properties into `target` *only* if not defined in target. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {object} target - The target object in which all sources are merged into. - * @param {object|object[]} source - Object(s) to merge into `target`. - * @returns {object} The `target` object. - */ - mergeIf: function(target, source) { - return helpers.merge(target, source, {merger: helpers._mergerIf}); - }, - - /** - * Applies the contents of two or more objects together into the first object. - * @param {object} target - The target object in which all objects are merged into. - * @param {object} arg1 - Object containing additional properties to merge in target. - * @param {object} argN - Additional objects containing properties to merge in target. - * @returns {object} The `target` object. - */ - extend: function(target) { - var setFn = function(value, key) { - target[key] = value; - }; - for (var i = 1, ilen = arguments.length; i < ilen; ++i) { - helpers.each(arguments[i], setFn); - } - return target; - }, - - /** - * Basic javascript inheritance based on the model created in Backbone.js - */ - inherits: function(extensions) { - var me = this; - var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { - return me.apply(this, arguments); - }; - - var Surrogate = function() { - this.constructor = ChartElement; - }; - - Surrogate.prototype = me.prototype; - ChartElement.prototype = new Surrogate(); - ChartElement.extend = helpers.inherits; - - if (extensions) { - helpers.extend(ChartElement.prototype, extensions); - } - - ChartElement.__super__ = me.prototype; - return ChartElement; - } -}; - -var helpers_core = helpers; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.callback instead. - * @function Chart.helpers.callCallback - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -helpers.callCallback = helpers.callback; - -/** - * Provided for backward compatibility, use Array.prototype.indexOf instead. - * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ - * @function Chart.helpers.indexOf - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.indexOf = function(array, item, fromIndex) { - return Array.prototype.indexOf.call(array, item, fromIndex); -}; - -/** - * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. - * @function Chart.helpers.getValueOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueOrDefault = helpers.valueOrDefault; - -/** - * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. - * @function Chart.helpers.getValueAtIndexOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - -/** - * Easing functions adapted from Robert Penner's easing equations. - * @namespace Chart.helpers.easingEffects - * @see http://www.robertpenner.com/easing/ - */ -var effects = { - linear: function(t) { - return t; - }, - - easeInQuad: function(t) { - return t * t; - }, - - easeOutQuad: function(t) { - return -t * (t - 2); - }, - - easeInOutQuad: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t; - } - return -0.5 * ((--t) * (t - 2) - 1); - }, - - easeInCubic: function(t) { - return t * t * t; - }, - - easeOutCubic: function(t) { - return (t = t - 1) * t * t + 1; - }, - - easeInOutCubic: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t; - } - return 0.5 * ((t -= 2) * t * t + 2); - }, - - easeInQuart: function(t) { - return t * t * t * t; - }, - - easeOutQuart: function(t) { - return -((t = t - 1) * t * t * t - 1); - }, - - easeInOutQuart: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t; - } - return -0.5 * ((t -= 2) * t * t * t - 2); - }, - - easeInQuint: function(t) { - return t * t * t * t * t; - }, - - easeOutQuint: function(t) { - return (t = t - 1) * t * t * t * t + 1; - }, - - easeInOutQuint: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t * t; - } - return 0.5 * ((t -= 2) * t * t * t * t + 2); - }, - - easeInSine: function(t) { - return -Math.cos(t * (Math.PI / 2)) + 1; - }, - - easeOutSine: function(t) { - return Math.sin(t * (Math.PI / 2)); - }, - - easeInOutSine: function(t) { - return -0.5 * (Math.cos(Math.PI * t) - 1); - }, - - easeInExpo: function(t) { - return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); - }, - - easeOutExpo: function(t) { - return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; - }, - - easeInOutExpo: function(t) { - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if ((t /= 0.5) < 1) { - return 0.5 * Math.pow(2, 10 * (t - 1)); - } - return 0.5 * (-Math.pow(2, -10 * --t) + 2); - }, - - easeInCirc: function(t) { - if (t >= 1) { - return t; - } - return -(Math.sqrt(1 - t * t) - 1); - }, - - easeOutCirc: function(t) { - return Math.sqrt(1 - (t = t - 1) * t); - }, - - easeInOutCirc: function(t) { - if ((t /= 0.5) < 1) { - return -0.5 * (Math.sqrt(1 - t * t) - 1); - } - return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, - - easeInElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - }, - - easeOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; - }, - - easeInOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if ((t /= 0.5) === 2) { - return 1; - } - if (!p) { - p = 0.45; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - if (t < 1) { - return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - } - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - easeInBack: function(t) { - var s = 1.70158; - return t * t * ((s + 1) * t - s); - }, - - easeOutBack: function(t) { - var s = 1.70158; - return (t = t - 1) * t * ((s + 1) * t + s) + 1; - }, - - easeInOutBack: function(t) { - var s = 1.70158; - if ((t /= 0.5) < 1) { - return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); - } - return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); - }, - - easeInBounce: function(t) { - return 1 - effects.easeOutBounce(1 - t); - }, - - easeOutBounce: function(t) { - if (t < (1 / 2.75)) { - return 7.5625 * t * t; - } - if (t < (2 / 2.75)) { - return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; - } - if (t < (2.5 / 2.75)) { - return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; - } - return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; - }, - - easeInOutBounce: function(t) { - if (t < 0.5) { - return effects.easeInBounce(t * 2) * 0.5; - } - return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; - } -}; - -var helpers_easing = { - effects: effects -}; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.easing.effects instead. - * @function Chart.helpers.easingEffects - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.easingEffects = effects; - -var PI = Math.PI; -var RAD_PER_DEG = PI / 180; -var DOUBLE_PI = PI * 2; -var HALF_PI = PI / 2; -var QUARTER_PI = PI / 4; -var TWO_THIRDS_PI = PI * 2 / 3; - -/** - * @namespace Chart.helpers.canvas - */ -var exports$1 = { - /** - * Clears the entire canvas associated to the given `chart`. - * @param {Chart} chart - The chart for which to clear the canvas. - */ - clear: function(chart) { - chart.ctx.clearRect(0, 0, chart.width, chart.height); - }, - - /** - * Creates a "path" for a rectangle with rounded corners at position (x, y) with a - * given size (width, height) and the same `radius` for all corners. - * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. - * @param {number} x - The x axis of the coordinate for the rectangle starting point. - * @param {number} y - The y axis of the coordinate for the rectangle starting point. - * @param {number} width - The rectangle's width. - * @param {number} height - The rectangle's height. - * @param {number} radius - The rounded amount (in pixels) for the four corners. - * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? - */ - roundedRect: function(ctx, x, y, width, height, radius) { - if (radius) { - var r = Math.min(radius, height / 2, width / 2); - var left = x + r; - var top = y + r; - var right = x + width - r; - var bottom = y + height - r; - - ctx.moveTo(x, top); - if (left < right && top < bottom) { - ctx.arc(left, top, r, -PI, -HALF_PI); - ctx.arc(right, top, r, -HALF_PI, 0); - ctx.arc(right, bottom, r, 0, HALF_PI); - ctx.arc(left, bottom, r, HALF_PI, PI); - } else if (left < right) { - ctx.moveTo(left, y); - ctx.arc(right, top, r, -HALF_PI, HALF_PI); - ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); - } else if (top < bottom) { - ctx.arc(left, top, r, -PI, 0); - ctx.arc(left, bottom, r, 0, PI); - } else { - ctx.arc(left, top, r, -PI, PI); - } - ctx.closePath(); - ctx.moveTo(x, y); - } else { - ctx.rect(x, y, width, height); - } - }, - - drawPoint: function(ctx, style, radius, x, y, rotation) { - var type, xOffset, yOffset, size, cornerRadius; - var rad = (rotation || 0) * RAD_PER_DEG; - - if (style && typeof style === 'object') { - type = style.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); - return; - } - } - - if (isNaN(radius) || radius <= 0) { - return; - } - - ctx.beginPath(); - - switch (style) { - // Default includes circle - default: - ctx.arc(x, y, radius, 0, DOUBLE_PI); - ctx.closePath(); - break; - case 'triangle': - ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); - ctx.closePath(); - break; - case 'rectRounded': - // NOTE: the rounded rect implementation changed to use `arc` instead of - // `quadraticCurveTo` since it generates better results when rect is - // almost a circle. 0.516 (instead of 0.5) produces results with visually - // closer proportion to the previous impl and it is inscribed in the - // circle with `radius`. For more details, see the following PRs: - // https://github.com/chartjs/Chart.js/issues/5597 - // https://github.com/chartjs/Chart.js/issues/5858 - cornerRadius = radius * 0.516; - size = radius - cornerRadius; - xOffset = Math.cos(rad + QUARTER_PI) * size; - yOffset = Math.sin(rad + QUARTER_PI) * size; - ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); - ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); - ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); - ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); - ctx.closePath(); - break; - case 'rect': - if (!rotation) { - size = Math.SQRT1_2 * radius; - ctx.rect(x - size, y - size, 2 * size, 2 * size); - break; - } - rad += QUARTER_PI; - /* falls through */ - case 'rectRot': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + yOffset, y - xOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.lineTo(x - yOffset, y + xOffset); - ctx.closePath(); - break; - case 'crossRot': - rad += QUARTER_PI; - /* falls through */ - case 'cross': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - break; - case 'star': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - rad += QUARTER_PI; - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x + yOffset, y - xOffset); - ctx.lineTo(x - yOffset, y + xOffset); - break; - case 'line': - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - break; - case 'dash': - ctx.moveTo(x, y); - ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); - break; - } - - ctx.fill(); - ctx.stroke(); - }, - - /** - * Returns true if the point is inside the rectangle - * @param {object} point - The point to test - * @param {object} area - The rectangle - * @returns {boolean} - * @private - */ - _isPointInArea: function(point, area) { - var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. - - return point.x > area.left - epsilon && point.x < area.right + epsilon && - point.y > area.top - epsilon && point.y < area.bottom + epsilon; - }, - - clipArea: function(ctx, area) { - ctx.save(); - ctx.beginPath(); - ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); - ctx.clip(); - }, - - unclipArea: function(ctx) { - ctx.restore(); - }, - - lineTo: function(ctx, previous, target, flip) { - var stepped = target.steppedLine; - if (stepped) { - if (stepped === 'middle') { - var midpoint = (previous.x + target.x) / 2.0; - ctx.lineTo(midpoint, flip ? target.y : previous.y); - ctx.lineTo(midpoint, flip ? previous.y : target.y); - } else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) { - ctx.lineTo(previous.x, target.y); - } else { - ctx.lineTo(target.x, previous.y); - } - ctx.lineTo(target.x, target.y); - return; - } - - if (!target.tension) { - ctx.lineTo(target.x, target.y); - return; - } - - ctx.bezierCurveTo( - flip ? previous.controlPointPreviousX : previous.controlPointNextX, - flip ? previous.controlPointPreviousY : previous.controlPointNextY, - flip ? target.controlPointNextX : target.controlPointPreviousX, - flip ? target.controlPointNextY : target.controlPointPreviousY, - target.x, - target.y); - } -}; - -var helpers_canvas = exports$1; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. - * @namespace Chart.helpers.clear - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.clear = exports$1.clear; - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. - * @namespace Chart.helpers.drawRoundedRectangle - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers_core.drawRoundedRectangle = function(ctx) { - ctx.beginPath(); - exports$1.roundedRect.apply(exports$1, arguments); -}; - -var defaults = { - /** - * @private - */ - _set: function(scope, values) { - return helpers_core.merge(this[scope] || (this[scope] = {}), values); - } -}; - -defaults._set('global', { - defaultColor: 'rgba(0,0,0,0.1)', - defaultFontColor: '#666', - defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - defaultFontSize: 12, - defaultFontStyle: 'normal', - defaultLineHeight: 1.2, - showLines: true -}); - -var core_defaults = defaults; - -var valueOrDefault = helpers_core.valueOrDefault; - -/** - * Converts the given font object into a CSS font string. - * @param {object} font - A font object. - * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font - * @private - */ -function toFontString(font) { - if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) { - return null; - } - - return (font.style ? font.style + ' ' : '') - + (font.weight ? font.weight + ' ' : '') - + font.size + 'px ' - + font.family; -} - -/** - * @alias Chart.helpers.options - * @namespace - */ -var helpers_options = { - /** - * Converts the given line height `value` in pixels for a specific font `size`. - * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). - * @param {number} size - The font size (in pixels) used to resolve relative `value`. - * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid). - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height - * @since 2.7.0 - */ - toLineHeight: function(value, size) { - var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); - if (!matches || matches[1] === 'normal') { - return size * 1.2; - } - - value = +matches[2]; - - switch (matches[3]) { - case 'px': - return value; - case '%': - value /= 100; - break; - default: - break; - } - - return size * value; - }, - - /** - * Converts the given value into a padding object with pre-computed width/height. - * @param {number|object} value - If a number, set the value to all TRBL component, - * else, if and object, use defined properties and sets undefined ones to 0. - * @returns {object} The padding values (top, right, bottom, left, width, height) - * @since 2.7.0 - */ - toPadding: function(value) { - var t, r, b, l; - - if (helpers_core.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } - - return { - top: t, - right: r, - bottom: b, - left: l, - height: t + b, - width: l + r - }; - }, - - /** - * Parses font options and returns the font object. - * @param {object} options - A object that contains font options to be parsed. - * @return {object} The font object. - * @todo Support font.* options and renamed to toFont(). - * @private - */ - _parseFont: function(options) { - var globalDefaults = core_defaults.global; - var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); - var font = { - family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily), - lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size), - size: size, - style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle), - weight: null, - string: '' - }; - - font.string = toFontString(font); - return font; - }, - - /** - * Evaluates the given `inputs` sequentially and returns the first defined value. - * @param {Array} inputs - An array of values, falling back to the last value. - * @param {object} [context] - If defined and the current value is a function, the value - * is called with `context` as first argument and the result becomes the new input. - * @param {number} [index] - If defined and the current value is an array, the value - * at `index` become the new input. - * @since 2.7.0 - */ - resolve: function(inputs, context, index) { - var i, ilen, value; - - for (i = 0, ilen = inputs.length; i < ilen; ++i) { - value = inputs[i]; - if (value === undefined) { - continue; - } - if (context !== undefined && typeof value === 'function') { - value = value(context); - } - if (index !== undefined && helpers_core.isArray(value)) { - value = value[index]; - } - if (value !== undefined) { - return value; - } - } - } -}; - -var helpers$1 = helpers_core; -var easing = helpers_easing; -var canvas = helpers_canvas; -var options = helpers_options; -helpers$1.easing = easing; -helpers$1.canvas = canvas; -helpers$1.options = options; - -function interpolate(start, view, model, ease) { - var keys = Object.keys(model); - var i, ilen, key, actual, origin, target, type, c0, c1; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - - target = model[key]; - - // if a value is added to the model after pivot() has been called, the view - // doesn't contain it, so let's initialize the view to the target value. - if (!view.hasOwnProperty(key)) { - view[key] = target; - } - - actual = view[key]; - - if (actual === target || key[0] === '_') { - continue; - } - - if (!start.hasOwnProperty(key)) { - start[key] = actual; - } - - origin = start[key]; - - type = typeof target; - - if (type === typeof origin) { - if (type === 'string') { - c0 = chartjsColor(origin); - if (c0.valid) { - c1 = chartjsColor(target); - if (c1.valid) { - view[key] = c1.mix(c0, ease).rgbString(); - continue; - } - } - } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) { - view[key] = origin + (target - origin) * ease; - continue; - } - } - - view[key] = target; - } -} - -var Element = function(configuration) { - helpers$1.extend(this, configuration); - this.initialize.apply(this, arguments); -}; - -helpers$1.extend(Element.prototype, { - - initialize: function() { - this.hidden = false; - }, - - pivot: function() { - var me = this; - if (!me._view) { - me._view = helpers$1.clone(me._model); - } - me._start = {}; - return me; - }, - - transition: function(ease) { - var me = this; - var model = me._model; - var start = me._start; - var view = me._view; - - // No animation -> No Transition - if (!model || ease === 1) { - me._view = model; - me._start = null; - return me; - } - - if (!view) { - view = me._view = {}; - } - - if (!start) { - start = me._start = {}; - } - - interpolate(start, view, model, ease); - - return me; - }, - - tooltipPosition: function() { - return { - x: this._model.x, - y: this._model.y - }; - }, - - hasValue: function() { - return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y); - } -}); - -Element.extend = helpers$1.inherits; - -var core_element = Element; - -var exports$2 = core_element.extend({ - chart: null, // the animation associated chart instance - currentStep: 0, // the current animation step - numSteps: 60, // default number of steps - easing: '', // the easing to use for this animation - render: null, // render function used by the animation service - - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null, // user specified callback to fire when the animation finishes -}); - -var core_animation = exports$2; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.Animation instead - * @prop Chart.Animation#animationObject - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports$2.prototype, 'animationObject', { - get: function() { - return this; - } -}); - -/** - * Provided for backward compatibility, use Chart.Animation#chart instead - * @prop Chart.Animation#chartInstance - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports$2.prototype, 'chartInstance', { - get: function() { - return this.chart; - }, - set: function(value) { - this.chart = value; - } -}); - -core_defaults._set('global', { - animation: { - duration: 1000, - easing: 'easeOutQuart', - onProgress: helpers$1.noop, - onComplete: helpers$1.noop - } -}); - -var core_animations = { - animations: [], - request: null, - - /** - * @param {Chart} chart - The chart to animate. - * @param {Chart.Animation} animation - The animation that we will animate. - * @param {number} duration - The animation duration in ms. - * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions - */ - addAnimation: function(chart, animation, duration, lazy) { - var animations = this.animations; - var i, ilen; - - animation.chart = chart; - animation.startTime = Date.now(); - animation.duration = duration; - - if (!lazy) { - chart.animating = true; - } - - for (i = 0, ilen = animations.length; i < ilen; ++i) { - if (animations[i].chart === chart) { - animations[i] = animation; - return; - } - } - - animations.push(animation); - - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (animations.length === 1) { - this.requestAnimationFrame(); - } - }, - - cancelAnimation: function(chart) { - var index = helpers$1.findIndex(this.animations, function(animation) { - return animation.chart === chart; - }); - - if (index !== -1) { - this.animations.splice(index, 1); - chart.animating = false; - } - }, - - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers$1.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); - }); - } - }, - - /** - * @private - */ - startDigest: function() { - var me = this; - - me.advance(); - - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - }, - - /** - * @private - */ - advance: function() { - var animations = this.animations; - var animation, chart, numSteps, nextStep; - var i = 0; - - // 1 animation per chart, so we are looping charts here - while (i < animations.length) { - animation = animations[i]; - chart = animation.chart; - numSteps = animation.numSteps; - - // Make sure that currentStep starts at 1 - // https://github.com/chartjs/Chart.js/issues/6104 - nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1; - animation.currentStep = Math.min(nextStep, numSteps); - - helpers$1.callback(animation.render, [chart, animation], chart); - helpers$1.callback(animation.onAnimationProgress, [animation], chart); - - if (animation.currentStep >= numSteps) { - helpers$1.callback(animation.onAnimationComplete, [animation], chart); - chart.animating = false; - animations.splice(i, 1); - } else { - ++i; - } - } - } -}; - -var resolve = helpers$1.options.resolve; - -var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; - -/** - * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', - * 'unshift') and notify the listener AFTER the array has been altered. Listeners are - * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. - */ -function listenArrayEvents(array, listener) { - if (array._chartjs) { - array._chartjs.listeners.push(listener); - return; - } - - Object.defineProperty(array, '_chartjs', { - configurable: true, - enumerable: false, - value: { - listeners: [listener] - } - }); - - arrayEvents.forEach(function(key) { - var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); - var base = array[key]; - - Object.defineProperty(array, key, { - configurable: true, - enumerable: false, - value: function() { - var args = Array.prototype.slice.call(arguments); - var res = base.apply(this, args); - - helpers$1.each(array._chartjs.listeners, function(object) { - if (typeof object[method] === 'function') { - object[method].apply(object, args); - } - }); - - return res; - } - }); - }); -} - -/** - * Removes the given array event listener and cleanup extra attached properties (such as - * the _chartjs stub and overridden methods) if array doesn't have any more listeners. - */ -function unlistenArrayEvents(array, listener) { - var stub = array._chartjs; - if (!stub) { - return; - } - - var listeners = stub.listeners; - var index = listeners.indexOf(listener); - if (index !== -1) { - listeners.splice(index, 1); - } - - if (listeners.length > 0) { - return; - } - - arrayEvents.forEach(function(key) { - delete array[key]; - }); - - delete array._chartjs; -} - -// Base class for all dataset controllers (line, bar, etc) -var DatasetController = function(chart, datasetIndex) { - this.initialize(chart, datasetIndex); -}; - -helpers$1.extend(DatasetController.prototype, { - - /** - * Element type used to generate a meta dataset (e.g. Chart.element.Line). - * @type {Chart.core.element} - */ - datasetElementType: null, - - /** - * Element type used to generate a meta data (e.g. Chart.element.Point). - * @type {Chart.core.element} - */ - dataElementType: null, - - initialize: function(chart, datasetIndex) { - var me = this; - me.chart = chart; - me.index = datasetIndex; - me.linkScales(); - me.addElements(); - }, - - updateIndex: function(datasetIndex) { - this.index = datasetIndex; - }, - - linkScales: function() { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); - - if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { - meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; - } - if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { - meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; - } - }, - - getDataset: function() { - return this.chart.data.datasets[this.index]; - }, - - getMeta: function() { - return this.chart.getDatasetMeta(this.index); - }, - - getScaleForId: function(scaleID) { - return this.chart.scales[scaleID]; - }, - - /** - * @private - */ - _getValueScaleId: function() { - return this.getMeta().yAxisID; - }, - - /** - * @private - */ - _getIndexScaleId: function() { - return this.getMeta().xAxisID; - }, - - /** - * @private - */ - _getValueScale: function() { - return this.getScaleForId(this._getValueScaleId()); - }, - - /** - * @private - */ - _getIndexScale: function() { - return this.getScaleForId(this._getIndexScaleId()); - }, - - reset: function() { - this.update(true); - }, - - /** - * @private - */ - destroy: function() { - if (this._data) { - unlistenArrayEvents(this._data, this); - } - }, - - createMetaDataset: function() { - var me = this; - var type = me.datasetElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index - }); - }, - - createMetaData: function(index) { - var me = this; - var type = me.dataElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index, - _index: index - }); - }, - - addElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data || []; - var metaData = meta.data; - var i, ilen; - - for (i = 0, ilen = data.length; i < ilen; ++i) { - metaData[i] = metaData[i] || me.createMetaData(i); - } - - meta.dataset = meta.dataset || me.createMetaDataset(); - }, - - addElementAndReset: function(index) { - var element = this.createMetaData(index); - this.getMeta().data.splice(index, 0, element); - this.updateElement(element, index, true); - }, - - buildOrUpdateElements: function() { - var me = this; - var dataset = me.getDataset(); - var data = dataset.data || (dataset.data = []); - - // In order to correctly handle data addition/deletion animation (an thus simulate - // real-time charts), we need to monitor these data modifications and synchronize - // the internal meta data accordingly. - if (me._data !== data) { - if (me._data) { - // This case happens when the user replaced the data array instance. - unlistenArrayEvents(me._data, me); - } - - if (data && Object.isExtensible(data)) { - listenArrayEvents(data, me); - } - me._data = data; - } - - // Re-sync meta data in case the user replaced the data array or if we missed - // any updates and so make sure that we handle number of datapoints changing. - me.resyncElements(); - }, - - update: helpers$1.noop, - - transition: function(easingValue) { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; - - for (; i < ilen; ++i) { - elements[i].transition(easingValue); - } - - if (meta.dataset) { - meta.dataset.transition(easingValue); - } - }, - - draw: function() { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; - - if (meta.dataset) { - meta.dataset.draw(); - } - - for (; i < ilen; ++i) { - elements[i].draw(); - } - }, - - removeHoverStyle: function(element) { - helpers$1.merge(element._model, element.$previousStyle || {}); - delete element.$previousStyle; - }, - - setHoverStyle: function(element) { - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var model = element._model; - var getHoverColor = helpers$1.getHoverColor; - - element.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth - }; - - model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); - model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index); - model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index); - }, - - /** - * @private - */ - resyncElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data; - var numMeta = meta.data.length; - var numData = data.length; - - if (numData < numMeta) { - meta.data.splice(numData, numMeta - numData); - } else if (numData > numMeta) { - me.insertElements(numMeta, numData - numMeta); - } - }, - - /** - * @private - */ - insertElements: function(start, count) { - for (var i = 0; i < count; ++i) { - this.addElementAndReset(start + i); - } - }, - - /** - * @private - */ - onDataPush: function() { - var count = arguments.length; - this.insertElements(this.getDataset().data.length - count, count); - }, - - /** - * @private - */ - onDataPop: function() { - this.getMeta().data.pop(); - }, - - /** - * @private - */ - onDataShift: function() { - this.getMeta().data.shift(); - }, - - /** - * @private - */ - onDataSplice: function(start, count) { - this.getMeta().data.splice(start, count); - this.insertElements(start, arguments.length - 2); - }, - - /** - * @private - */ - onDataUnshift: function() { - this.insertElements(0, arguments.length); - } -}); - -DatasetController.extend = helpers$1.inherits; - -var core_datasetController = DatasetController; - -core_defaults._set('global', { - elements: { - arc: { - backgroundColor: core_defaults.global.defaultColor, - borderColor: '#fff', - borderWidth: 2, - borderAlign: 'center' - } - } -}); - -var element_arc = core_element.extend({ - inLabelRange: function(mouseX) { - var vm = this._view; - - if (vm) { - return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); - } - return false; - }, - - inRange: function(chartX, chartY) { - var vm = this._view; - - if (vm) { - var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY}); - var angle = pointRelativePosition.angle; - var distance = pointRelativePosition.distance; - - // Sanitise angle range - var startAngle = vm.startAngle; - var endAngle = vm.endAngle; - while (endAngle < startAngle) { - endAngle += 2.0 * Math.PI; - } - while (angle > endAngle) { - angle -= 2.0 * Math.PI; - } - while (angle < startAngle) { - angle += 2.0 * Math.PI; - } - - // Check if within the range of the open/close angle - var betweenAngles = (angle >= startAngle && angle <= endAngle); - var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); - - return (betweenAngles && withinRadius); - } - return false; - }, - - getCenterPoint: function() { - var vm = this._view; - var halfAngle = (vm.startAngle + vm.endAngle) / 2; - var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; - return { - x: vm.x + Math.cos(halfAngle) * halfRadius, - y: vm.y + Math.sin(halfAngle) * halfRadius - }; - }, - - getArea: function() { - var vm = this._view; - return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); - }, - - tooltipPosition: function() { - var vm = this._view; - var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); - var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; - - return { - x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), - y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) - }; - }, - - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var sA = vm.startAngle; - var eA = vm.endAngle; - var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; - var angleMargin; - - ctx.save(); - - ctx.beginPath(); - ctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - ctx.closePath(); - - ctx.fillStyle = vm.backgroundColor; - ctx.fill(); - - if (vm.borderWidth) { - if (vm.borderAlign === 'inner') { - // Draw an inner border by cliping the arc and drawing a double-width border - // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders - ctx.beginPath(); - angleMargin = pixelMargin / vm.outerRadius; - ctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin); - if (vm.innerRadius > pixelMargin) { - angleMargin = pixelMargin / vm.innerRadius; - ctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true); - } else { - ctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2); - } - ctx.closePath(); - ctx.clip(); - - ctx.beginPath(); - ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - ctx.closePath(); - - ctx.lineWidth = vm.borderWidth * 2; - ctx.lineJoin = 'round'; - } else { - ctx.lineWidth = vm.borderWidth; - ctx.lineJoin = 'bevel'; - } - - ctx.strokeStyle = vm.borderColor; - ctx.stroke(); - } - - ctx.restore(); - } -}); - -var valueOrDefault$1 = helpers$1.valueOrDefault; - -var defaultColor = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - line: { - tension: 0.4, - backgroundColor: defaultColor, - borderWidth: 3, - borderColor: defaultColor, - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - capBezierPoints: true, - fill: true, // do we fill in the area between the line and its base axis - } - } -}); - -var element_line = core_element.extend({ - draw: function() { - var me = this; - var vm = me._view; - var ctx = me._chart.ctx; - var spanGaps = vm.spanGaps; - var points = me._children.slice(); // clone array - var globalDefaults = core_defaults.global; - var globalOptionLineElements = globalDefaults.elements.line; - var lastDrawnIndex = -1; - var index, current, previous, currentVM; - - // If we are looping, adding the first point again - if (me._loop && points.length) { - points.push(points[0]); - } - - ctx.save(); - - // Stroke Line Options - ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; - - // IE 9 and 10 do not support line dash - if (ctx.setLineDash) { - ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); - } - - ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset); - ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; - ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth); - ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; - - // Stroke Line - ctx.beginPath(); - lastDrawnIndex = -1; - - for (index = 0; index < points.length; ++index) { - current = points[index]; - previous = helpers$1.previousItem(points, index); - currentVM = current._view; - - // First point moves to it's starting position no matter what - if (index === 0) { - if (!currentVM.skip) { - ctx.moveTo(currentVM.x, currentVM.y); - lastDrawnIndex = index; - } - } else { - previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; - - if (!currentVM.skip) { - if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { - // There was a gap and this is the first point after the gap - ctx.moveTo(currentVM.x, currentVM.y); - } else { - // Line to next point - helpers$1.canvas.lineTo(ctx, previous._view, current._view); - } - lastDrawnIndex = index; - } - } - } - - ctx.stroke(); - ctx.restore(); - } -}); - -var valueOrDefault$2 = helpers$1.valueOrDefault; - -var defaultColor$1 = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - point: { - radius: 3, - pointStyle: 'circle', - backgroundColor: defaultColor$1, - borderColor: defaultColor$1, - borderWidth: 1, - // Hover - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1 - } - } -}); - -function xRange(mouseX) { - var vm = this._view; - return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; -} - -function yRange(mouseY) { - var vm = this._view; - return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; -} - -var element_point = core_element.extend({ - inRange: function(mouseX, mouseY) { - var vm = this._view; - return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; - }, - - inLabelRange: xRange, - inXRange: xRange, - inYRange: yRange, - - getCenterPoint: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - }, - - getArea: function() { - return Math.PI * Math.pow(this._view.radius, 2); - }, - - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y, - padding: vm.radius + vm.borderWidth - }; - }, - - draw: function(chartArea) { - var vm = this._view; - var ctx = this._chart.ctx; - var pointStyle = vm.pointStyle; - var rotation = vm.rotation; - var radius = vm.radius; - var x = vm.x; - var y = vm.y; - var globalDefaults = core_defaults.global; - var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow - - if (vm.skip) { - return; - } - - // Clipping for Points. - if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) { - ctx.strokeStyle = vm.borderColor || defaultColor; - ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth); - ctx.fillStyle = vm.backgroundColor || defaultColor; - helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); - } - } -}); - -var defaultColor$2 = core_defaults.global.defaultColor; - -core_defaults._set('global', { - elements: { - rectangle: { - backgroundColor: defaultColor$2, - borderColor: defaultColor$2, - borderSkipped: 'bottom', - borderWidth: 0 - } - } -}); - -function isVertical(vm) { - return vm && vm.width !== undefined; -} - -/** - * Helper function to get the bounds of the bar regardless of the orientation - * @param bar {Chart.Element.Rectangle} the bar - * @return {Bounds} bounds of the bar - * @private - */ -function getBarBounds(vm) { - var x1, x2, y1, y2, half; - - if (isVertical(vm)) { - half = vm.width / 2; - x1 = vm.x - half; - x2 = vm.x + half; - y1 = Math.min(vm.y, vm.base); - y2 = Math.max(vm.y, vm.base); - } else { - half = vm.height / 2; - x1 = Math.min(vm.x, vm.base); - x2 = Math.max(vm.x, vm.base); - y1 = vm.y - half; - y2 = vm.y + half; - } - - return { - left: x1, - top: y1, - right: x2, - bottom: y2 - }; -} - -function swap(orig, v1, v2) { - return orig === v1 ? v2 : orig === v2 ? v1 : orig; -} - -function parseBorderSkipped(vm) { - var edge = vm.borderSkipped; - var res = {}; - - if (!edge) { - return res; - } - - if (vm.horizontal) { - if (vm.base > vm.x) { - edge = swap(edge, 'left', 'right'); - } - } else if (vm.base < vm.y) { - edge = swap(edge, 'bottom', 'top'); - } - - res[edge] = true; - return res; -} - -function parseBorderWidth(vm, maxW, maxH) { - var value = vm.borderWidth; - var skip = parseBorderSkipped(vm); - var t, r, b, l; - - if (helpers$1.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } - - return { - t: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t, - r: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r, - b: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b, - l: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l - }; -} - -function boundingRects(vm) { - var bounds = getBarBounds(vm); - var width = bounds.right - bounds.left; - var height = bounds.bottom - bounds.top; - var border = parseBorderWidth(vm, width / 2, height / 2); - - return { - outer: { - x: bounds.left, - y: bounds.top, - w: width, - h: height - }, - inner: { - x: bounds.left + border.l, - y: bounds.top + border.t, - w: width - border.l - border.r, - h: height - border.t - border.b - } - }; -} - -function inRange(vm, x, y) { - var skipX = x === null; - var skipY = y === null; - var bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm); - - return bounds - && (skipX || x >= bounds.left && x <= bounds.right) - && (skipY || y >= bounds.top && y <= bounds.bottom); -} - -var element_rectangle = core_element.extend({ - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var rects = boundingRects(vm); - var outer = rects.outer; - var inner = rects.inner; - - ctx.fillStyle = vm.backgroundColor; - ctx.fillRect(outer.x, outer.y, outer.w, outer.h); - - if (outer.w === inner.w && outer.h === inner.h) { - return; - } - - ctx.save(); - ctx.beginPath(); - ctx.rect(outer.x, outer.y, outer.w, outer.h); - ctx.clip(); - ctx.fillStyle = vm.borderColor; - ctx.rect(inner.x, inner.y, inner.w, inner.h); - ctx.fill('evenodd'); - ctx.restore(); - }, - - height: function() { - var vm = this._view; - return vm.base - vm.y; - }, - - inRange: function(mouseX, mouseY) { - return inRange(this._view, mouseX, mouseY); - }, - - inLabelRange: function(mouseX, mouseY) { - var vm = this._view; - return isVertical(vm) - ? inRange(vm, mouseX, null) - : inRange(vm, null, mouseY); - }, - - inXRange: function(mouseX) { - return inRange(this._view, mouseX, null); - }, - - inYRange: function(mouseY) { - return inRange(this._view, null, mouseY); - }, - - getCenterPoint: function() { - var vm = this._view; - var x, y; - if (isVertical(vm)) { - x = vm.x; - y = (vm.y + vm.base) / 2; - } else { - x = (vm.x + vm.base) / 2; - y = vm.y; - } - - return {x: x, y: y}; - }, - - getArea: function() { - var vm = this._view; - - return isVertical(vm) - ? vm.width * Math.abs(vm.y - vm.base) - : vm.height * Math.abs(vm.x - vm.base); - }, - - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - } -}); - -var elements = {}; -var Arc = element_arc; -var Line = element_line; -var Point = element_point; -var Rectangle = element_rectangle; -elements.Arc = Arc; -elements.Line = Line; -elements.Point = Point; -elements.Rectangle = Rectangle; - -var resolve$1 = helpers$1.options.resolve; - -core_defaults._set('bar', { - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - categoryPercentage: 0.8, - barPercentage: 0.9, - offset: true, - gridLines: { - offsetGridLines: true - } - }], - - yAxes: [{ - type: 'linear' - }] - } -}); - -/** - * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. - * @private - */ -function computeMinSampleSize(scale, pixels) { - var min = scale.isHorizontal() ? scale.width : scale.height; - var ticks = scale.getTicks(); - var prev, curr, i, ilen; - - for (i = 1, ilen = pixels.length; i < ilen; ++i) { - min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1])); - } - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - curr = scale.getPixelForTick(i); - min = i > 0 ? Math.min(min, curr - prev) : min; - prev = curr; - } - - return min; -} - -/** - * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, - * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This - * mode currently always generates bars equally sized (until we introduce scriptable options?). - * @private - */ -function computeFitCategoryTraits(index, ruler, options) { - var thickness = options.barThickness; - var count = ruler.stackCount; - var curr = ruler.pixels[index]; - var size, ratio; - - if (helpers$1.isNullOrUndef(thickness)) { - size = ruler.min * options.categoryPercentage; - ratio = options.barPercentage; - } else { - // When bar thickness is enforced, category and bar percentages are ignored. - // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') - // and deprecate barPercentage since this value is ignored when thickness is absolute. - size = thickness * count; - ratio = 1; - } - - return { - chunk: size / count, - ratio: ratio, - start: curr - (size / 2) - }; -} - -/** - * Computes an "optimal" category that globally arranges bars side by side (no gap when - * percentage options are 1), based on the previous and following categories. This mode - * generates bars with different widths when data are not evenly spaced. - * @private - */ -function computeFlexCategoryTraits(index, ruler, options) { - var pixels = ruler.pixels; - var curr = pixels[index]; - var prev = index > 0 ? pixels[index - 1] : null; - var next = index < pixels.length - 1 ? pixels[index + 1] : null; - var percent = options.categoryPercentage; - var start, size; - - if (prev === null) { - // first data: its size is double based on the next point or, - // if it's also the last data, we use the scale size. - prev = curr - (next === null ? ruler.end - ruler.start : next - curr); - } - - if (next === null) { - // last data: its size is also double based on the previous point. - next = curr + curr - prev; - } - - start = curr - (curr - Math.min(prev, next)) / 2 * percent; - size = Math.abs(next - prev) / 2 * percent; - - return { - chunk: size / ruler.stackCount, - ratio: options.barPercentage, - start: start - }; -} - -var controller_bar = core_datasetController.extend({ - - dataElementType: elements.Rectangle, - - initialize: function() { - var me = this; - var meta; - - core_datasetController.prototype.initialize.apply(me, arguments); - - meta = me.getMeta(); - meta.stack = me.getDataset().stack; - meta.bar = true; - }, - - update: function(reset) { - var me = this; - var rects = me.getMeta().data; - var i, ilen; - - me._ruler = me.getRuler(); - - for (i = 0, ilen = rects.length; i < ilen; ++i) { - me.updateElement(rects[i], i, reset); - } - }, - - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); - var options = me._resolveElementOptions(rectangle, index); - - rectangle._xScale = me.getScaleForId(meta.xAxisID); - rectangle._yScale = me.getScaleForId(meta.yAxisID); - rectangle._datasetIndex = me.index; - rectangle._index = index; - rectangle._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderSkipped: options.borderSkipped, - borderWidth: options.borderWidth, - datasetLabel: dataset.label, - label: me.chart.data.labels[index] - }; - - me._updateElementGeometry(rectangle, index, reset); - - rectangle.pivot(); - }, - - /** - * @private - */ - _updateElementGeometry: function(rectangle, index, reset) { - var me = this; - var model = rectangle._model; - var vscale = me._getValueScale(); - var base = vscale.getBasePixel(); - var horizontal = vscale.isHorizontal(); - var ruler = me._ruler || me.getRuler(); - var vpixels = me.calculateBarValuePixels(me.index, index); - var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); - - model.horizontal = horizontal; - model.base = reset ? base : vpixels.base; - model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; - model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; - model.height = horizontal ? ipixels.size : undefined; - model.width = horizontal ? undefined : ipixels.size; - }, - - /** - * Returns the stacks based on groups and bar visibility. - * @param {number} [last] - The dataset index - * @returns {string[]} The list of stack IDs - * @private - */ - _getStacks: function(last) { - var me = this; - var chart = me.chart; - var scale = me._getIndexScale(); - var stacked = scale.options.stacked; - var ilen = last === undefined ? chart.data.datasets.length : last + 1; - var stacks = []; - var i, meta; - - for (i = 0; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - if (meta.bar && chart.isDatasetVisible(i) && - (stacked === false || - (stacked === true && stacks.indexOf(meta.stack) === -1) || - (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { - stacks.push(meta.stack); - } - } - - return stacks; - }, - - /** - * Returns the effective number of stacks based on groups and bar visibility. - * @private - */ - getStackCount: function() { - return this._getStacks().length; - }, - - /** - * Returns the stack index for the given dataset based on groups and bar visibility. - * @param {number} [datasetIndex] - The dataset index - * @param {string} [name] - The stack name to find - * @returns {number} The stack index - * @private - */ - getStackIndex: function(datasetIndex, name) { - var stacks = this._getStacks(datasetIndex); - var index = (name !== undefined) - ? stacks.indexOf(name) - : -1; // indexOf returns -1 if element is not present - - return (index === -1) - ? stacks.length - 1 - : index; - }, - - /** - * @private - */ - getRuler: function() { - var me = this; - var scale = me._getIndexScale(); - var stackCount = me.getStackCount(); - var datasetIndex = me.index; - var isHorizontal = scale.isHorizontal(); - var start = isHorizontal ? scale.left : scale.top; - var end = start + (isHorizontal ? scale.width : scale.height); - var pixels = []; - var i, ilen, min; - - for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { - pixels.push(scale.getPixelForValue(null, i, datasetIndex)); - } - - min = helpers$1.isNullOrUndef(scale.options.barThickness) - ? computeMinSampleSize(scale, pixels) - : -1; - - return { - min: min, - pixels: pixels, - start: start, - end: end, - stackCount: stackCount, - scale: scale - }; - }, - - /** - * Note: pixel values are not clamped to the scale area. - * @private - */ - calculateBarValuePixels: function(datasetIndex, index) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var scale = me._getValueScale(); - var isHorizontal = scale.isHorizontal(); - var datasets = chart.data.datasets; - var value = +scale.getRightValue(datasets[datasetIndex].data[index]); - var minBarLength = scale.options.minBarLength; - var stacked = scale.options.stacked; - var stack = meta.stack; - var start = 0; - var i, imeta, ivalue, base, head, size; - - if (stacked || (stacked === undefined && stack !== undefined)) { - for (i = 0; i < datasetIndex; ++i) { - imeta = chart.getDatasetMeta(i); - - if (imeta.bar && - imeta.stack === stack && - imeta.controller._getValueScaleId() === scale.id && - chart.isDatasetVisible(i)) { - - ivalue = +scale.getRightValue(datasets[i].data[index]); - if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { - start += ivalue; - } - } - } - } - - base = scale.getPixelForValue(start); - head = scale.getPixelForValue(start + value); - size = head - base; - - if (minBarLength !== undefined && Math.abs(size) < minBarLength) { - size = minBarLength; - if (value >= 0 && !isHorizontal || value < 0 && isHorizontal) { - head = base - minBarLength; - } else { - head = base + minBarLength; - } - } - - return { - size: size, - base: base, - head: head, - center: head + size / 2 - }; - }, - - /** - * @private - */ - calculateBarIndexPixels: function(datasetIndex, index, ruler) { - var me = this; - var options = ruler.scale.options; - var range = options.barThickness === 'flex' - ? computeFlexCategoryTraits(index, ruler, options) - : computeFitCategoryTraits(index, ruler, options); - - var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); - var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); - var size = Math.min( - helpers$1.valueOrDefault(options.maxBarThickness, Infinity), - range.chunk * range.ratio); - - return { - base: center - size / 2, - head: center + size / 2, - center: center, - size: size - }; - }, - - draw: function() { - var me = this; - var chart = me.chart; - var scale = me._getValueScale(); - var rects = me.getMeta().data; - var dataset = me.getDataset(); - var ilen = rects.length; - var i = 0; - - helpers$1.canvas.clipArea(chart.ctx, chart.chartArea); - - for (; i < ilen; ++i) { - if (!isNaN(scale.getRightValue(dataset.data[i]))) { - rects[i].draw(); - } - } - - helpers$1.canvas.unclipArea(chart.ctx); - }, - - /** - * @private - */ - _resolveElementOptions: function(rectangle, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = rectangle.custom || {}; - var options = chart.options.elements.rectangle; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderSkipped', - 'borderWidth' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$1([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - } -}); - -var valueOrDefault$3 = helpers$1.valueOrDefault; -var resolve$2 = helpers$1.options.resolve; - -core_defaults._set('bubble', { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - type: 'linear', // bubble should probably use a linear scale by default - position: 'bottom', - id: 'x-axis-0' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-0' - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - var dataPoint = data.datasets[item.datasetIndex].data[item.index]; - return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; - } - } - } -}); - -var controller_bubble = core_datasetController.extend({ - /** - * @protected - */ - dataElementType: elements.Point, - - /** - * @protected - */ - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; - - // Update Points - helpers$1.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, - - /** - * @protected - */ - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var options = me._resolveElementOptions(point, index); - var data = me.getDataset().data[index]; - var dsIndex = me.index; - - var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); - var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); - - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = dsIndex; - point._index = index; - point._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - hitRadius: options.hitRadius, - pointStyle: options.pointStyle, - rotation: options.rotation, - radius: reset ? 0 : options.radius, - skip: custom.skip || isNaN(x) || isNaN(y), - x: x, - y: y, - }; - - point.pivot(); - }, - - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$3(options.hoverBorderWidth, options.borderWidth); - model.radius = options.radius + options.hoverRadius; - }, - - /** - * @private - */ - _resolveElementOptions: function(point, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = point.custom || {}; - var options = chart.options.elements.point; - var data = dataset.data[index]; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - 'hoverRadius', - 'hitRadius', - 'pointStyle', - 'rotation' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$2([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - // Custom radius resolution - values.radius = resolve$2([ - custom.radius, - data ? data.r : undefined, - dataset.radius, - options.radius - ], context, index); - - return values; - } -}); - -var resolve$3 = helpers$1.options.resolve; -var valueOrDefault$4 = helpers$1.valueOrDefault; - -core_defaults._set('doughnut', { - animation: { - // Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - // Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var arcOpts = chart.options.elements.arc; - var fill = resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); - var stroke = resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); - var bw = resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - // toggle visibility of index if exists - if (meta.data[index]) { - meta.data[index].hidden = !meta.data[index].hidden; - } - } - - chart.update(); - } - }, - - // The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, - - // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, - - // The total circumference of the chart. - circumference: Math.PI * 2.0, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - var dataLabel = data.labels[tooltipItem.index]; - var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - - if (helpers$1.isArray(dataLabel)) { - // show value on first line of multiline label - // need to clone because we are changing the value - dataLabel = dataLabel.slice(); - dataLabel[0] += value; - } else { - dataLabel += value; - } - - return dataLabel; - } - } - } -}); - -var controller_doughnut = core_datasetController.extend({ - - dataElementType: elements.Arc, - - linkScales: helpers$1.noop, - - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; - - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } - - return ringIndex; - }, - - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var availableWidth = chartArea.right - chartArea.left; - var availableHeight = chartArea.bottom - chartArea.top; - var minSize = Math.min(availableWidth, availableHeight); - var offset = {x: 0, y: 0}; - var meta = me.getMeta(); - var arcs = meta.data; - var cutoutPercentage = opts.cutoutPercentage; - var circumference = opts.circumference; - var chartWeight = me._getRingWeight(me.index); - var i, ilen; - - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arcs[i]._options = me._resolveElementOptions(arcs[i], i); - } - - chart.borderWidth = me.getMaxBorderWidth(); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; - - meta.total = me.calculateTotal(); - - me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index); - me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0); - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - me.updateElement(arcs[i], i, reset); - } - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var animationOpts = opts.animation; - var centerX = (chartArea.left + chartArea.right) / 2; - var centerY = (chartArea.top + chartArea.bottom) / 2; - var startAngle = opts.rotation; // non reset case handled later - var endAngle = opts.rotation; // non reset case handled later - var dataset = me.getDataset(); - var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); - var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; - var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; - var options = arc._options || {}; - - helpers$1.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - borderAlign: options.borderAlign, - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); - - var model = arc._model; - - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } - - model.endAngle = model.startAngle + model.circumference; - } - - arc.pivot(); - }, - - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; - - helpers$1.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); - - /* if (total === 0) { - total = NaN; - }*/ - - return total; - }, - - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (Math.abs(value) / total); - } - return 0; - }, - - // gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function(arcs) { - var me = this; - var max = 0; - var chart = me.chart; - var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; - - if (!arcs) { - // Find the outmost visible dataset - for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - meta = chart.getDatasetMeta(i); - arcs = meta.data; - if (i !== me.index) { - controller = meta.controller; - } - break; - } - } - } - - if (!arcs) { - return 0; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arc = arcs[i]; - options = controller ? controller._resolveElementOptions(arc, i) : arc._options; - if (options.borderAlign !== 'inner') { - borderWidth = options.borderWidth; - hoverWidth = options.hoverBorderWidth; - - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; - } - } - return max; - }, - - /** - * @protected - */ - setHoverStyle: function(arc) { - var model = arc._model; - var options = arc._options; - var getHoverColor = helpers$1.getHoverColor; - - arc.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - }; - - model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth); - }, - - /** - * @private - */ - _resolveElementOptions: function(arc, index) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var custom = arc.custom || {}; - var options = chart.options.elements.arc; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'borderAlign', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$3([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly - * @private - */ - _getRingWeightOffset: function(datasetIndex) { - var ringWeightOffset = 0; - - for (var i = 0; i < datasetIndex; ++i) { - if (this.chart.isDatasetVisible(i)) { - ringWeightOffset += this._getRingWeight(i); - } - } - - return ringWeightOffset; - }, - - /** - * @private - */ - _getRingWeight: function(dataSetIndex) { - return Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0); - }, - - /** - * Returns the sum of all visibile data set weights. This value can be 0. - * @private - */ - _getVisibleDatasetWeightTotal: function() { - return this._getRingWeightOffset(this.chart.data.datasets.length); - } -}); - -core_defaults._set('horizontalBar', { - hover: { - mode: 'index', - axis: 'y' - }, - - scales: { - xAxes: [{ - type: 'linear', - position: 'bottom' - }], - - yAxes: [{ - type: 'category', - position: 'left', - categoryPercentage: 0.8, - barPercentage: 0.9, - offset: true, - gridLines: { - offsetGridLines: true - } - }] - }, - - elements: { - rectangle: { - borderSkipped: 'left' - } - }, - - tooltips: { - mode: 'index', - axis: 'y' - } -}); - -var controller_horizontalBar = controller_bar.extend({ - /** - * @private - */ - _getValueScaleId: function() { - return this.getMeta().xAxisID; - }, - - /** - * @private - */ - _getIndexScaleId: function() { - return this.getMeta().yAxisID; - } -}); - -var valueOrDefault$5 = helpers$1.valueOrDefault; -var resolve$4 = helpers$1.options.resolve; -var isPointInArea = helpers$1.canvas._isPointInArea; - -core_defaults._set('line', { - showLines: true, - spanGaps: false, - - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - id: 'x-axis-0' - }], - yAxes: [{ - type: 'linear', - id: 'y-axis-0' - }] - } -}); - -function lineEnabled(dataset, options) { - return valueOrDefault$5(dataset.showLine, options.showLines); -} - -var controller_line = core_datasetController.extend({ - - datasetElementType: elements.Line, - - dataElementType: elements.Point, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var scale = me.getScaleForId(meta.yAxisID); - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, me.chart.options); - var i, ilen; - - // Update Line - if (showLine) { - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = me._resolveLineOptions(line); - - line.pivot(); - } - - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } - - if (showLine && line._model.tension !== 0) { - me.updateBezierControlPoints(); - } - - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, - - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var dataset = me.getDataset(); - var datasetIndex = me.index; - var value = dataset.data[index]; - var yScale = me.getScaleForId(meta.yAxisID); - var xScale = me.getScaleForId(meta.xAxisID); - var lineModel = meta.dataset._model; - var x, y; - - var options = me._resolvePointOptions(point, index); - - x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); - y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); - - // Utility - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = datasetIndex; - point._index = index; - - // Desired view properties - point._model = { - x: x, - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: options.radius, - pointStyle: options.pointStyle, - rotation: options.rotation, - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - tension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension : 0), - steppedLine: lineModel ? lineModel.steppedLine : false, - // Tooltip - hitRadius: options.hitRadius - }; - }, - - /** - * @private - */ - _resolvePointOptions: function(element, index) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.point; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var ELEMENT_OPTIONS = { - backgroundColor: 'pointBackgroundColor', - borderColor: 'pointBorderColor', - borderWidth: 'pointBorderWidth', - hitRadius: 'pointHitRadius', - hoverBackgroundColor: 'pointHoverBackgroundColor', - hoverBorderColor: 'pointHoverBorderColor', - hoverBorderWidth: 'pointHoverBorderWidth', - hoverRadius: 'pointHoverRadius', - pointStyle: 'pointStyle', - radius: 'pointRadius', - rotation: 'pointRotation' - }; - var keys = Object.keys(ELEMENT_OPTIONS); - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$4([ - custom[key], - dataset[ELEMENT_OPTIONS[key]], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _resolveLineOptions: function(element) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options; - var elementOptions = options.elements.line; - var values = {}; - var i, ilen, key; - - var keys = [ - 'backgroundColor', - 'borderWidth', - 'borderColor', - 'borderCapStyle', - 'borderDash', - 'borderDashOffset', - 'borderJoinStyle', - 'fill', - 'cubicInterpolationMode' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$4([ - custom[key], - dataset[key], - elementOptions[key] - ]); - } - - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives lines the ability to span gaps - values.spanGaps = valueOrDefault$5(dataset.spanGaps, options.spanGaps); - values.tension = valueOrDefault$5(dataset.lineTension, elementOptions.tension); - values.steppedLine = resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]); - - return values; - }, - - calculatePointY: function(value, index, datasetIndex) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var sumPos = 0; - var sumNeg = 0; - var i, ds, dsMeta; - - if (yScale.options.stacked) { - for (i = 0; i < datasetIndex; i++) { - ds = chart.data.datasets[i]; - dsMeta = chart.getDatasetMeta(i); - if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); - if (stackedRightValue < 0) { - sumNeg += stackedRightValue || 0; - } else { - sumPos += stackedRightValue || 0; - } - } - } - - var rightValue = Number(yScale.getRightValue(value)); - if (rightValue < 0) { - return yScale.getPixelForValue(sumNeg + rightValue); - } - return yScale.getPixelForValue(sumPos + rightValue); - } - - return yScale.getPixelForValue(value); - }, - - updateBezierControlPoints: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var lineModel = meta.dataset._model; - var area = chart.chartArea; - var points = meta.data || []; - var i, ilen, model, controlPoints; - - // Only consider points that are drawn in case the spanGaps option is used - if (lineModel.spanGaps) { - points = points.filter(function(pt) { - return !pt._model.skip; - }); - } - - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } - - if (lineModel.cubicInterpolationMode === 'monotone') { - helpers$1.splineCurveMonotone(points); - } else { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - controlPoints = helpers$1.splineCurve( - helpers$1.previousItem(points, i)._model, - model, - helpers$1.nextItem(points, i)._model, - lineModel.tension - ); - model.controlPointPreviousX = controlPoints.previous.x; - model.controlPointPreviousY = controlPoints.previous.y; - model.controlPointNextX = controlPoints.next.x; - model.controlPointNextY = controlPoints.next.y; - } - } - - if (chart.options.elements.line.capBezierPoints) { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - if (isPointInArea(model, area)) { - if (i > 0 && isPointInArea(points[i - 1]._model, area)) { - model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); - model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); - } - if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) { - model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); - model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); - } - } - } - } - }, - - draw: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var points = meta.data || []; - var area = chart.chartArea; - var ilen = points.length; - var halfBorderWidth; - var i = 0; - - if (lineEnabled(me.getDataset(), chart.options)) { - halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; - - helpers$1.canvas.clipArea(chart.ctx, { - left: area.left, - right: area.right, - top: area.top - halfBorderWidth, - bottom: area.bottom + halfBorderWidth - }); - - meta.dataset.draw(); - - helpers$1.canvas.unclipArea(chart.ctx); - } - - // Draw the points - for (; i < ilen; ++i) { - points[i].draw(area); - } - }, - - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth); - model.radius = valueOrDefault$5(options.hoverRadius, options.radius); - }, -}); - -var resolve$5 = helpers$1.options.resolve; - -core_defaults._set('polarArea', { - scale: { - type: 'radialLinear', - angleLines: { - display: false - }, - gridLines: { - circular: true - }, - pointLabels: { - display: false - }, - ticks: { - beginAtZero: true - } - }, - - // Boolean - Whether to animate the rotation of the chart - animation: { - animateRotate: true, - animateScale: true - }, - - startAngle: -0.5 * Math.PI, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var arcOpts = chart.options.elements.arc; - var fill = resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i); - var stroke = resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i); - var bw = resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; - } - - chart.update(); - } - }, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(item, data) { - return data.labels[item.index] + ': ' + item.yLabel; - } - } - } -}); - -var controller_polarArea = core_datasetController.extend({ - - dataElementType: elements.Arc, - - linkScales: helpers$1.noop, - - update: function(reset) { - var me = this; - var dataset = me.getDataset(); - var meta = me.getMeta(); - var start = me.chart.options.startAngle || 0; - var starts = me._starts = []; - var angles = me._angles = []; - var arcs = meta.data; - var i, ilen, angle; - - me._updateRadius(); - - meta.count = me.countVisibleElements(); - - for (i = 0, ilen = dataset.data.length; i < ilen; i++) { - starts[i] = start; - angle = me._computeAngle(i); - angles[i] = angle; - start += angle; - } - - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - arcs[i]._options = me._resolveElementOptions(arcs[i], i); - me.updateElement(arcs[i], i, reset); - } - }, - - /** - * @private - */ - _updateRadius: function() { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - - chart.outerRadius = Math.max(minSize / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var labels = chart.data.labels; - - var centerX = scale.xCenter; - var centerY = scale.yCenter; - - // var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = me._starts[index]; - var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); - - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var options = arc._options || {}; - - helpers$1.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - borderAlign: options.borderAlign, - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index]) - } - }); - - arc.pivot(); - }, - - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; - - helpers$1.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; - } - }); - - return count; - }, - - /** - * @protected - */ - setHoverStyle: function(arc) { - var model = arc._model; - var options = arc._options; - var getHoverColor = helpers$1.getHoverColor; - var valueOrDefault = helpers$1.valueOrDefault; - - arc.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - }; - - model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); - }, - - /** - * @private - */ - _resolveElementOptions: function(arc, index) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var custom = arc.custom || {}; - var options = chart.options.elements.arc; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'borderAlign', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$5([ - custom[key], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _computeAngle: function(index) { - var me = this; - var count = this.getMeta().count; - var dataset = me.getDataset(); - var meta = me.getMeta(); - - if (isNaN(dataset.data[index]) || meta.data[index].hidden) { - return 0; - } - - // Scriptable options - var context = { - chart: me.chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - return resolve$5([ - me.chart.options.elements.arc.angle, - (2 * Math.PI) / count - ], context, index); - } -}); - -core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut)); -core_defaults._set('pie', { - cutoutPercentage: 0 -}); - -// Pie charts are Doughnut chart with different defaults -var controller_pie = controller_doughnut; - -var valueOrDefault$6 = helpers$1.valueOrDefault; -var resolve$6 = helpers$1.options.resolve; - -core_defaults._set('radar', { - scale: { - type: 'radialLinear' - }, - elements: { - line: { - tension: 0 // no bezier in radar - } - } -}); - -var controller_radar = core_datasetController.extend({ - - datasetElementType: elements.Line, - - dataElementType: elements.Point, - - linkScales: helpers$1.noop, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var scale = me.chart.scale; - var dataset = me.getDataset(); - var i, ilen; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - line._loop = true; - // Model - line._model = me._resolveLineOptions(line); - - line.pivot(); - - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } - - // Update bezier control points - me.updateBezierControlPoints(); - - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, - - updateElement: function(point, index, reset) { - var me = this; - var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - var options = me._resolvePointOptions(point, index); - var lineModel = me.getMeta().dataset._model; - var x = reset ? scale.xCenter : pointPosition.x; - var y = reset ? scale.yCenter : pointPosition.y; - - // Utility - point._scale = scale; - point._options = options; - point._datasetIndex = me.index; - point._index = index; - - // Desired view properties - point._model = { - x: x, // value not used in dataset scale, but we want a consistent API between scales - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: options.radius, - pointStyle: options.pointStyle, - rotation: options.rotation, - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0), - - // Tooltip - hitRadius: options.hitRadius - }; - }, - - /** - * @private - */ - _resolvePointOptions: function(element, index) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.point; - var values = {}; - var i, ilen, key; - - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; - - var ELEMENT_OPTIONS = { - backgroundColor: 'pointBackgroundColor', - borderColor: 'pointBorderColor', - borderWidth: 'pointBorderWidth', - hitRadius: 'pointHitRadius', - hoverBackgroundColor: 'pointHoverBackgroundColor', - hoverBorderColor: 'pointHoverBorderColor', - hoverBorderWidth: 'pointHoverBorderWidth', - hoverRadius: 'pointHoverRadius', - pointStyle: 'pointStyle', - radius: 'pointRadius', - rotation: 'pointRotation' - }; - var keys = Object.keys(ELEMENT_OPTIONS); - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$6([ - custom[key], - dataset[ELEMENT_OPTIONS[key]], - dataset[key], - options[key] - ], context, index); - } - - return values; - }, - - /** - * @private - */ - _resolveLineOptions: function(element) { - var me = this; - var chart = me.chart; - var dataset = chart.data.datasets[me.index]; - var custom = element.custom || {}; - var options = chart.options.elements.line; - var values = {}; - var i, ilen, key; - - var keys = [ - 'backgroundColor', - 'borderWidth', - 'borderColor', - 'borderCapStyle', - 'borderDash', - 'borderDashOffset', - 'borderJoinStyle', - 'fill' - ]; - - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve$6([ - custom[key], - dataset[key], - options[key] - ]); - } - - values.tension = valueOrDefault$6(dataset.lineTension, options.tension); - - return values; - }, - - updateBezierControlPoints: function() { - var me = this; - var meta = me.getMeta(); - var area = me.chart.chartArea; - var points = meta.data || []; - var i, ilen, model, controlPoints; - - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } - - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - controlPoints = helpers$1.splineCurve( - helpers$1.previousItem(points, i, true)._model, - model, - helpers$1.nextItem(points, i, true)._model, - model.tension - ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); - model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); - model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); - model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); - } - }, - - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - var getHoverColor = helpers$1.getHoverColor; - - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - - model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); - model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor)); - model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth); - model.radius = valueOrDefault$6(options.hoverRadius, options.radius); - } -}); - -core_defaults._set('scatter', { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - id: 'x-axis-1', // need an ID so datasets can reference the scale - type: 'linear', // scatter should not use a category axis - position: 'bottom' - }], - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left' - }] - }, - - showLines: false, - - tooltips: { - callbacks: { - title: function() { - return ''; // doesn't make sense for scatter since data are formatted as a point - }, - label: function(item) { - return '(' + item.xLabel + ', ' + item.yLabel + ')'; - } - } - } -}); - -// Scatter charts use line controllers -var controller_scatter = controller_line; - -// NOTE export a map in which the key represents the controller type, not -// the class, and so must be CamelCase in order to be correctly retrieved -// by the controller in core.controller.js (`controllers[meta.type]`). - -var controllers = { - bar: controller_bar, - bubble: controller_bubble, - doughnut: controller_doughnut, - horizontalBar: controller_horizontalBar, - line: controller_line, - polarArea: controller_polarArea, - pie: controller_pie, - radar: controller_radar, - scatter: controller_scatter -}; - -/** - * Helper function to get relative position for an event - * @param {Event|IEvent} event - The event to get the position for - * @param {Chart} chart - The chart - * @returns {object} the event position - */ -function getRelativePosition(e, chart) { - if (e.native) { - return { - x: e.x, - y: e.y - }; - } - - return helpers$1.getRelativePosition(e, chart); -} - -/** - * Helper function to traverse all of the visible elements in the chart - * @param {Chart} chart - the chart - * @param {function} handler - the callback to execute for each visible item - */ -function parseVisibleItems(chart, handler) { - var datasets = chart.data.datasets; - var meta, i, j, ilen, jlen; - - for (i = 0, ilen = datasets.length; i < ilen; ++i) { - if (!chart.isDatasetVisible(i)) { - continue; - } - - meta = chart.getDatasetMeta(i); - for (j = 0, jlen = meta.data.length; j < jlen; ++j) { - var element = meta.data[j]; - if (!element._view.skip) { - handler(element); - } - } - } -} - -/** - * Helper function to get the items that intersect the event position - * @param {ChartElement[]} items - elements to filter - * @param {object} position - the point to be nearest to - * @return {ChartElement[]} the nearest items - */ -function getIntersectItems(chart, position) { - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - } - }); - - return elements; -} - -/** - * Helper function to get the items nearest to the event position considering all visible items in teh chart - * @param {Chart} chart - the chart to look at elements from - * @param {object} position - the point to be nearest to - * @param {boolean} intersect - if true, only consider items that intersect the position - * @param {function} distanceMetric - function to provide the distance between points - * @return {ChartElement[]} the nearest items - */ -function getNearestItems(chart, position, intersect, distanceMetric) { - var minDistance = Number.POSITIVE_INFINITY; - var nearestItems = []; - - parseVisibleItems(chart, function(element) { - if (intersect && !element.inRange(position.x, position.y)) { - return; - } - - var center = element.getCenterPoint(); - var distance = distanceMetric(position, center); - if (distance < minDistance) { - nearestItems = [element]; - minDistance = distance; - } else if (distance === minDistance) { - // Can have multiple items at the same distance in which case we sort by size - nearestItems.push(element); - } - }); - - return nearestItems; -} - -/** - * Get a distance metric function for two points based on the - * axis mode setting - * @param {string} axis - the axis mode. x|y|xy - */ -function getDistanceMetricForAxis(axis) { - var useX = axis.indexOf('x') !== -1; - var useY = axis.indexOf('y') !== -1; - - return function(pt1, pt2) { - var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; - var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; - return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); - }; -} - -function indexMode(chart, e, options) { - var position = getRelativePosition(e, chart); - // Default axis for index mode is 'x' to match old behaviour - options.axis = options.axis || 'x'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - var elements = []; - - if (!items.length) { - return []; - } - - chart.data.datasets.forEach(function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - var element = meta.data[items[0]._index]; - - // don't count items that are skipped (null data) - if (element && !element._view.skip) { - elements.push(element); - } - } - }); - - return elements; -} - -/** - * @interface IInteractionOptions - */ -/** - * If true, only consider items that intersect the point - * @name IInterfaceOptions#boolean - * @type Boolean - */ - -/** - * Contains interaction related functions - * @namespace Chart.Interaction - */ -var core_interaction = { - // Helper function for different modes - modes: { - single: function(chart, e) { - var position = getRelativePosition(e, chart); - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - return elements; - } - }); - - return elements.slice(0, 1); - }, - - /** - * @function Chart.Interaction.modes.label - * @deprecated since version 2.4.0 - * @todo remove at version 3 - * @private - */ - label: indexMode, - - /** - * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item - * @function Chart.Interaction.modes.index - * @since v2.4.0 - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - index: indexMode, - - /** - * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect is false, we find the nearest item and return the items in that dataset - * @function Chart.Interaction.modes.dataset - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - dataset: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - - if (items.length > 0) { - items = chart.getDatasetMeta(items[0]._datasetIndex).data; - } - - return items; - }, - - /** - * @function Chart.Interaction.modes.x-axis - * @deprecated since version 2.4.0. Use index mode and intersect == true - * @todo remove at version 3 - * @private - */ - 'x-axis': function(chart, e) { - return indexMode(chart, e, {intersect: false}); - }, - - /** - * Point mode returns all elements that hit test based on the event position - * of the event - * @function Chart.Interaction.modes.intersect - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - point: function(chart, e) { - var position = getRelativePosition(e, chart); - return getIntersectItems(chart, position); - }, - - /** - * nearest mode returns the element closest to the point - * @function Chart.Interaction.modes.intersect - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - nearest: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - return getNearestItems(chart, position, options.intersect, distanceMetric); - }, - - /** - * x mode returns the elements that hit-test at the current x coordinate - * @function Chart.Interaction.modes.x - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - x: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; - - parseVisibleItems(chart, function(element) { - if (element.inXRange(position.x)) { - items.push(element); - } - - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); - - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; - } - return items; - }, - - /** - * y mode returns the elements that hit-test at the current y coordinate - * @function Chart.Interaction.modes.y - * @param {Chart} chart - the chart we are returning items from - * @param {Event} e - the event we are find things at - * @param {IInteractionOptions} options - options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - y: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; - - parseVisibleItems(chart, function(element) { - if (element.inYRange(position.y)) { - items.push(element); - } - - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); - - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; - } - return items; - } - } -}; - -function filterByPosition(array, position) { - return helpers$1.where(array, function(v) { - return v.position === position; - }); -} - -function sortByWeight(array, reverse) { - array.forEach(function(v, i) { - v._tmpIndex_ = i; - return v; - }); - array.sort(function(a, b) { - var v0 = reverse ? b : a; - var v1 = reverse ? a : b; - return v0.weight === v1.weight ? - v0._tmpIndex_ - v1._tmpIndex_ : - v0.weight - v1.weight; - }); - array.forEach(function(v) { - delete v._tmpIndex_; - }); -} - -function findMaxPadding(boxes) { - var top = 0; - var left = 0; - var bottom = 0; - var right = 0; - helpers$1.each(boxes, function(box) { - if (box.getPadding) { - var boxPadding = box.getPadding(); - top = Math.max(top, boxPadding.top); - left = Math.max(left, boxPadding.left); - bottom = Math.max(bottom, boxPadding.bottom); - right = Math.max(right, boxPadding.right); - } - }); - return { - top: top, - left: left, - bottom: bottom, - right: right - }; -} - -function addSizeByPosition(boxes, size) { - helpers$1.each(boxes, function(box) { - size[box.position] += box.isHorizontal() ? box.height : box.width; - }); -} - -core_defaults._set('global', { - layout: { - padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - } -}); - -/** - * @interface ILayoutItem - * @prop {string} position - The position of the item in the chart layout. Possible values are - * 'left', 'top', 'right', 'bottom', and 'chartArea' - * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area - * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down - * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) - * @prop {function} update - Takes two parameters: width and height. Returns size of item - * @prop {function} getPadding - Returns an object with padding on the edges - * @prop {number} width - Width of item. Must be valid after update() - * @prop {number} height - Height of item. Must be valid after update() - * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update - * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update - * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update - * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update - */ - -// The layout service is very self explanatory. It's responsible for the layout within a chart. -// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need -// It is this service's responsibility of carrying out that layout. -var core_layouts = { - defaults: {}, - - /** - * Register a box to a chart. - * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. - * @param {Chart} chart - the chart to use - * @param {ILayoutItem} item - the item to add to be layed out - */ - addBox: function(chart, item) { - if (!chart.boxes) { - chart.boxes = []; - } - - // initialize item with default values - item.fullWidth = item.fullWidth || false; - item.position = item.position || 'top'; - item.weight = item.weight || 0; - - chart.boxes.push(item); - }, - - /** - * Remove a layoutItem from a chart - * @param {Chart} chart - the chart to remove the box from - * @param {ILayoutItem} layoutItem - the item to remove from the layout - */ - removeBox: function(chart, layoutItem) { - var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; - if (index !== -1) { - chart.boxes.splice(index, 1); - } - }, - - /** - * Sets (or updates) options on the given `item`. - * @param {Chart} chart - the chart in which the item lives (or will be added to) - * @param {ILayoutItem} item - the item to configure with the given options - * @param {object} options - the new item options. - */ - configure: function(chart, item, options) { - var props = ['fullWidth', 'position', 'weight']; - var ilen = props.length; - var i = 0; - var prop; - - for (; i < ilen; ++i) { - prop = props[i]; - if (options.hasOwnProperty(prop)) { - item[prop] = options[prop]; - } - } - }, - - /** - * Fits boxes of the given chart into the given size by having each box measure itself - * then running a fitting algorithm - * @param {Chart} chart - the chart - * @param {number} width - the width to fit into - * @param {number} height - the height to fit into - */ - update: function(chart, width, height) { - if (!chart) { - return; - } - - var layoutOptions = chart.options.layout || {}; - var padding = helpers$1.options.toPadding(layoutOptions.padding); - var leftPadding = padding.left; - var rightPadding = padding.right; - var topPadding = padding.top; - var bottomPadding = padding.bottom; - - var leftBoxes = filterByPosition(chart.boxes, 'left'); - var rightBoxes = filterByPosition(chart.boxes, 'right'); - var topBoxes = filterByPosition(chart.boxes, 'top'); - var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); - var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); - - // Sort boxes by weight. A higher weight is further away from the chart area - sortByWeight(leftBoxes, true); - sortByWeight(rightBoxes, false); - sortByWeight(topBoxes, true); - sortByWeight(bottomBoxes, false); - - var verticalBoxes = leftBoxes.concat(rightBoxes); - var horizontalBoxes = topBoxes.concat(bottomBoxes); - var outerBoxes = verticalBoxes.concat(horizontalBoxes); - - // Essentially we now have any number of boxes on each of the 4 sides. - // Our canvas looks like the following. - // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and - // B1 is the bottom axis - // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays - // These locations are single-box locations only, when trying to register a chartArea location that is already taken, - // an error will be thrown. - // - // |----------------------------------------------------| - // | T1 (Full Width) | - // |----------------------------------------------------| - // | | | T2 | | - // | |----|-------------------------------------|----| - // | | | C1 | | C2 | | - // | | |----| |----| | - // | | | | | - // | L1 | L2 | ChartArea (C0) | R1 | - // | | | | | - // | | |----| |----| | - // | | | C3 | | C4 | | - // | |----|-------------------------------------|----| - // | | | B1 | | - // |----------------------------------------------------| - // | B2 (Full Width) | - // |----------------------------------------------------| - // - // What we do to find the best sizing, we do the following - // 1. Determine the minimum size of the chart area. - // 2. Split the remaining width equally between each vertical axis - // 3. Split the remaining height equally between each horizontal axis - // 4. Give each layout the maximum size it can be. The layout will return it's minimum size - // 5. Adjust the sizes of each axis based on it's minimum reported size. - // 6. Refit each axis - // 7. Position each axis in the final location - // 8. Tell the chart the final location of the chart area - // 9. Tell any axes that overlay the chart area the positions of the chart area - - // Step 1 - var chartWidth = width - leftPadding - rightPadding; - var chartHeight = height - topPadding - bottomPadding; - var chartAreaWidth = chartWidth / 2; // min 50% - - // Step 2 - var verticalBoxWidth = (width - chartAreaWidth) / verticalBoxes.length; - - // Step 3 - // TODO re-limit horizontal axis height (this limit has affected only padding calculation since PR 1837) - // var horizontalBoxHeight = (height - chartAreaHeight) / horizontalBoxes.length; - - // Step 4 - var maxChartAreaWidth = chartWidth; - var maxChartAreaHeight = chartHeight; - var outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; - var minBoxSizes = []; - var maxPadding; - - function getMinimumBoxSize(box) { - var minSize; - var isHorizontal = box.isHorizontal(); - - if (isHorizontal) { - minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2); - maxChartAreaHeight -= minSize.height; - } else { - minSize = box.update(verticalBoxWidth, maxChartAreaHeight); - maxChartAreaWidth -= minSize.width; - } - - minBoxSizes.push({ - horizontal: isHorizontal, - width: minSize.width, - box: box, - }); - } - - helpers$1.each(outerBoxes, getMinimumBoxSize); - - // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) - maxPadding = findMaxPadding(outerBoxes); - - // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could - // be if the axes are drawn at their minimum sizes. - // Steps 5 & 6 - - // Function to fit a box - function fitBox(box) { - var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minBox) { - return minBox.box === box; - }); - - if (minBoxSize) { - if (minBoxSize.horizontal) { - var scaleMargin = { - left: Math.max(outerBoxSizes.left, maxPadding.left), - right: Math.max(outerBoxSizes.right, maxPadding.right), - top: 0, - bottom: 0 - }; - - // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends - // on the margin. Sometimes they need to increase in size slightly - box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); - } else { - box.update(minBoxSize.width, maxChartAreaHeight); - } - } - } - - // Update, and calculate the left and right margins for the horizontal boxes - helpers$1.each(verticalBoxes, fitBox); - addSizeByPosition(verticalBoxes, outerBoxSizes); - - // Set the Left and Right margins for the horizontal boxes - helpers$1.each(horizontalBoxes, fitBox); - addSizeByPosition(horizontalBoxes, outerBoxSizes); - - function finalFitVerticalBox(box) { - var minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minSize) { - return minSize.box === box; - }); - - var scaleMargin = { - left: 0, - right: 0, - top: outerBoxSizes.top, - bottom: outerBoxSizes.bottom - }; - - if (minBoxSize) { - box.update(minBoxSize.width, maxChartAreaHeight, scaleMargin); - } - } - - // Let the left layout know the final margin - helpers$1.each(verticalBoxes, finalFitVerticalBox); - - // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) - outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding}; - addSizeByPosition(outerBoxes, outerBoxSizes); - - // We may be adding some padding to account for rotated x axis labels - var leftPaddingAddition = Math.max(maxPadding.left - outerBoxSizes.left, 0); - outerBoxSizes.left += leftPaddingAddition; - outerBoxSizes.right += Math.max(maxPadding.right - outerBoxSizes.right, 0); - - var topPaddingAddition = Math.max(maxPadding.top - outerBoxSizes.top, 0); - outerBoxSizes.top += topPaddingAddition; - outerBoxSizes.bottom += Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0); - - // Figure out if our chart area changed. This would occur if the dataset layout label rotation - // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do - // without calling `fit` again - var newMaxChartAreaHeight = height - outerBoxSizes.top - outerBoxSizes.bottom; - var newMaxChartAreaWidth = width - outerBoxSizes.left - outerBoxSizes.right; - - if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { - helpers$1.each(verticalBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); - - helpers$1.each(horizontalBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); - - maxChartAreaHeight = newMaxChartAreaHeight; - maxChartAreaWidth = newMaxChartAreaWidth; - } - - // Step 7 - Position the boxes - var left = leftPadding + leftPaddingAddition; - var top = topPadding + topPaddingAddition; - - function placeBox(box) { - if (box.isHorizontal()) { - box.left = box.fullWidth ? leftPadding : outerBoxSizes.left; - box.right = box.fullWidth ? width - rightPadding : outerBoxSizes.left + maxChartAreaWidth; - box.top = top; - box.bottom = top + box.height; - - // Move to next point - top = box.bottom; - - } else { - - box.left = left; - box.right = left + box.width; - box.top = outerBoxSizes.top; - box.bottom = outerBoxSizes.top + maxChartAreaHeight; - - // Move to next point - left = box.right; - } - } - - helpers$1.each(leftBoxes.concat(topBoxes), placeBox); - - // Account for chart width and height - left += maxChartAreaWidth; - top += maxChartAreaHeight; - - helpers$1.each(rightBoxes, placeBox); - helpers$1.each(bottomBoxes, placeBox); - - // Step 8 - chart.chartArea = { - left: outerBoxSizes.left, - top: outerBoxSizes.top, - right: outerBoxSizes.left + maxChartAreaWidth, - bottom: outerBoxSizes.top + maxChartAreaHeight - }; - - // Step 9 - helpers$1.each(chartAreaBoxes, function(box) { - box.left = chart.chartArea.left; - box.top = chart.chartArea.top; - box.right = chart.chartArea.right; - box.bottom = chart.chartArea.bottom; - - box.update(maxChartAreaWidth, maxChartAreaHeight); - }); - } -}; - -/** - * Platform fallback implementation (minimal). - * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 - */ - -var platform_basic = { - acquireContext: function(item) { - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } - - return item && item.getContext('2d') || null; - } -}; - -var platform_dom = "/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n/*\n * DOM element resizing detection\n * https://github.com/marcj/css-element-queries\n */\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"; - -var platform_dom$1 = /*#__PURE__*/Object.freeze({ -default: platform_dom -}); - -function getCjsExportFromNamespace (n) { - return n && n.default || n; -} - -var stylesheet = getCjsExportFromNamespace(platform_dom$1); - -var EXPANDO_KEY = '$chartjs'; -var CSS_PREFIX = 'chartjs-'; -var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor'; -var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; -var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; -var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; - -/** - * DOM event types -> Chart.js event types. - * Note: only events with different types are mapped. - * @see https://developer.mozilla.org/en-US/docs/Web/Events - */ -var EVENT_TYPES = { - touchstart: 'mousedown', - touchmove: 'mousemove', - touchend: 'mouseup', - pointerenter: 'mouseenter', - pointerdown: 'mousedown', - pointermove: 'mousemove', - pointerup: 'mouseup', - pointerleave: 'mouseout', - pointerout: 'mouseout' -}; - -/** - * The "used" size is the final value of a dimension property after all calculations have - * been performed. This method uses the computed style of `element` but returns undefined - * if the computed style is not expressed in pixels. That can happen in some cases where - * `element` has a size relative to its parent and this last one is not yet displayed, - * for example because of `display: none` on a parent node. - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value - * @returns {number} Size in pixels or undefined if unknown. - */ -function readUsedSize(element, property) { - var value = helpers$1.getStyle(element, property); - var matches = value && value.match(/^(\d+)(\.\d+)?px$/); - return matches ? Number(matches[1]) : undefined; -} - -/** - * Initializes the canvas style and render size without modifying the canvas display size, - * since responsiveness is handled by the controller.resize() method. The config is used - * to determine the aspect ratio to apply in case no explicit height has been specified. - */ -function initCanvas(canvas, config) { - var style = canvas.style; - - // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it - // returns null or '' if no explicit value has been set to the canvas attribute. - var renderHeight = canvas.getAttribute('height'); - var renderWidth = canvas.getAttribute('width'); - - // Chart.js modifies some canvas values that we want to restore on destroy - canvas[EXPANDO_KEY] = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } - } - }; - - // Force canvas to display as block to avoid extra space caused by inline - // elements, which would interfere with the responsive resize process. - // https://github.com/chartjs/Chart.js/issues/2538 - style.display = style.display || 'block'; - - if (renderWidth === null || renderWidth === '') { - var displayWidth = readUsedSize(canvas, 'width'); - if (displayWidth !== undefined) { - canvas.width = displayWidth; - } - } - - if (renderHeight === null || renderHeight === '') { - if (canvas.style.height === '') { - // If no explicit render height and style height, let's apply the aspect ratio, - // which one can be specified by the user but also by charts as default option - // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. - canvas.height = canvas.width / (config.options.aspectRatio || 2); - } else { - var displayHeight = readUsedSize(canvas, 'height'); - if (displayWidth !== undefined) { - canvas.height = displayHeight; - } - } - } - - return canvas; -} - -/** - * Detects support for options object argument in addEventListener. - * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support - * @private - */ -var supportsEventListenerOptions = (function() { - var supports = false; - try { - var options = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line getter-return - get: function() { - supports = true; - } - }); - window.addEventListener('e', null, options); - } catch (e) { - // continue regardless of error - } - return supports; -}()); - -// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. -// https://github.com/chartjs/Chart.js/issues/4287 -var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; - -function addListener(node, type, listener) { - node.addEventListener(type, listener, eventListenerOptions); -} - -function removeListener(node, type, listener) { - node.removeEventListener(type, listener, eventListenerOptions); -} - -function createEvent(type, chart, x, y, nativeEvent) { - return { - type: type, - chart: chart, - native: nativeEvent || null, - x: x !== undefined ? x : null, - y: y !== undefined ? y : null, - }; -} - -function fromNativeEvent(event, chart) { - var type = EVENT_TYPES[event.type] || event.type; - var pos = helpers$1.getRelativePosition(event, chart); - return createEvent(type, chart, pos.x, pos.y, event); -} - -function throttled(fn, thisArg) { - var ticking = false; - var args = []; - - return function() { - args = Array.prototype.slice.call(arguments); - thisArg = thisArg || this; - - if (!ticking) { - ticking = true; - helpers$1.requestAnimFrame.call(window, function() { - ticking = false; - fn.apply(thisArg, args); - }); - } - }; -} - -function createDiv(cls) { - var el = document.createElement('div'); - el.className = cls || ''; - return el; -} - -// Implementation based on https://github.com/marcj/css-element-queries -function createResizer(handler) { - var maxSize = 1000000; - - // NOTE(SB) Don't use innerHTML because it could be considered unsafe. - // https://github.com/chartjs/Chart.js/issues/5902 - var resizer = createDiv(CSS_SIZE_MONITOR); - var expand = createDiv(CSS_SIZE_MONITOR + '-expand'); - var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink'); - - expand.appendChild(createDiv()); - shrink.appendChild(createDiv()); - - resizer.appendChild(expand); - resizer.appendChild(shrink); - resizer._reset = function() { - expand.scrollLeft = maxSize; - expand.scrollTop = maxSize; - shrink.scrollLeft = maxSize; - shrink.scrollTop = maxSize; - }; - - var onScroll = function() { - resizer._reset(); - handler(); - }; - - addListener(expand, 'scroll', onScroll.bind(expand, 'expand')); - addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); - - return resizer; -} - -// https://davidwalsh.name/detect-node-insertion -function watchForRender(node, handler) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - var proxy = expando.renderProxy = function(e) { - if (e.animationName === CSS_RENDER_ANIMATION) { - handler(); - } - }; - - helpers$1.each(ANIMATION_START_EVENTS, function(type) { - addListener(node, type, proxy); - }); - - // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class - // is removed then added back immediately (same animation frame?). Accessing the - // `offsetParent` property will force a reflow and re-evaluate the CSS animation. - // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics - // https://github.com/chartjs/Chart.js/issues/4737 - expando.reflow = !!node.offsetParent; - - node.classList.add(CSS_RENDER_MONITOR); -} - -function unwatchForRender(node) { - var expando = node[EXPANDO_KEY] || {}; - var proxy = expando.renderProxy; - - if (proxy) { - helpers$1.each(ANIMATION_START_EVENTS, function(type) { - removeListener(node, type, proxy); - }); - - delete expando.renderProxy; - } - - node.classList.remove(CSS_RENDER_MONITOR); -} - -function addResizeListener(node, listener, chart) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - - // Let's keep track of this added resizer and thus avoid DOM query when removing it. - var resizer = expando.resizer = createResizer(throttled(function() { - if (expando.resizer) { - var container = chart.options.maintainAspectRatio && node.parentNode; - var w = container ? container.clientWidth : 0; - listener(createEvent('resize', chart)); - if (container && container.clientWidth < w && chart.canvas) { - // If the container size shrank during chart resize, let's assume - // scrollbar appeared. So we resize again with the scrollbar visible - - // effectively making chart smaller and the scrollbar hidden again. - // Because we are inside `throttled`, and currently `ticking`, scroll - // events are ignored during this whole 2 resize process. - // If we assumed wrong and something else happened, we are resizing - // twice in a frame (potential performance issue) - listener(createEvent('resize', chart)); - } - } - })); - - // The resizer needs to be attached to the node parent, so we first need to be - // sure that `node` is attached to the DOM before injecting the resizer element. - watchForRender(node, function() { - if (expando.resizer) { - var container = node.parentNode; - if (container && container !== resizer.parentNode) { - container.insertBefore(resizer, container.firstChild); - } - - // The container size might have changed, let's reset the resizer state. - resizer._reset(); - } - }); -} - -function removeResizeListener(node) { - var expando = node[EXPANDO_KEY] || {}; - var resizer = expando.resizer; - - delete expando.resizer; - unwatchForRender(node); - - if (resizer && resizer.parentNode) { - resizer.parentNode.removeChild(resizer); - } -} - -function injectCSS(platform, css) { - // https://stackoverflow.com/q/3922139 - var style = platform._style || document.createElement('style'); - if (!platform._style) { - platform._style = style; - css = '/* Chart.js */\n' + css; - style.setAttribute('type', 'text/css'); - document.getElementsByTagName('head')[0].appendChild(style); - } - - style.appendChild(document.createTextNode(css)); -} - -var platform_dom$2 = { - /** - * When `true`, prevents the automatic injection of the stylesheet required to - * correctly detect when the chart is added to the DOM and then resized. This - * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`) - * to be manually imported to make this library compatible with any CSP. - * See https://github.com/chartjs/Chart.js/issues/5208 - */ - disableCSSInjection: false, - - /** - * This property holds whether this platform is enabled for the current environment. - * Currently used by platform.js to select the proper implementation. - * @private - */ - _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', - - /** - * @private - */ - _ensureLoaded: function() { - if (this._loaded) { - return; - } - - this._loaded = true; - - // https://github.com/chartjs/Chart.js/issues/5208 - if (!this.disableCSSInjection) { - injectCSS(this, stylesheet); - } - }, - - acquireContext: function(item, config) { - if (typeof item === 'string') { - item = document.getElementById(item); - } else if (item.length) { - // Support for array based queries (such as jQuery) - item = item[0]; - } - - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } - - // To prevent canvas fingerprinting, some add-ons undefine the getContext - // method, for example: https://github.com/kkapsner/CanvasBlocker - // https://github.com/chartjs/Chart.js/issues/2807 - var context = item && item.getContext && item.getContext('2d'); - - // Load platform resources on first chart creation, to make possible to change - // platform options after importing the library (e.g. `disableCSSInjection`). - this._ensureLoaded(); - - // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is - // inside an iframe or when running in a protected environment. We could guess the - // types from their toString() value but let's keep things flexible and assume it's - // a sufficient condition if the item has a context2D which has item as `canvas`. - // https://github.com/chartjs/Chart.js/issues/3887 - // https://github.com/chartjs/Chart.js/issues/4102 - // https://github.com/chartjs/Chart.js/issues/4152 - if (context && context.canvas === item) { - initCanvas(item, config); - return context; - } - - return null; - }, - - releaseContext: function(context) { - var canvas = context.canvas; - if (!canvas[EXPANDO_KEY]) { - return; - } - - var initial = canvas[EXPANDO_KEY].initial; - ['height', 'width'].forEach(function(prop) { - var value = initial[prop]; - if (helpers$1.isNullOrUndef(value)) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); - - helpers$1.each(initial.style || {}, function(value, key) { - canvas.style[key] = value; - }); - - // The canvas render size might have been changed (and thus the state stack discarded), - // we can't use save() and restore() to restore the initial state. So make sure that at - // least the canvas context is reset to the default state by setting the canvas width. - // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html - // eslint-disable-next-line no-self-assign - canvas.width = canvas.width; - - delete canvas[EXPANDO_KEY]; - }, - - addEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - addResizeListener(canvas, listener, chart); - return; - } - - var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); - var proxies = expando.proxies || (expando.proxies = {}); - var proxy = proxies[chart.id + '_' + type] = function(event) { - listener(fromNativeEvent(event, chart)); - }; - - addListener(canvas, type, proxy); - }, - - removeEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - removeResizeListener(canvas); - return; - } - - var expando = listener[EXPANDO_KEY] || {}; - var proxies = expando.proxies || {}; - var proxy = proxies[chart.id + '_' + type]; - if (!proxy) { - return; - } - - removeListener(canvas, type, proxy); - } -}; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use EventTarget.addEventListener instead. - * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener - * @function Chart.helpers.addEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers$1.addEvent = addListener; - -/** - * Provided for backward compatibility, use EventTarget.removeEventListener instead. - * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener - * @function Chart.helpers.removeEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers$1.removeEvent = removeListener; - -// @TODO Make possible to select another platform at build time. -var implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic; - -/** - * @namespace Chart.platform - * @see https://chartjs.gitbooks.io/proposals/content/Platform.html - * @since 2.4.0 - */ -var platform = helpers$1.extend({ - /** - * @since 2.7.0 - */ - initialize: function() {}, - - /** - * Called at chart construction time, returns a context2d instance implementing - * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. - * @param {*} item - The native item from which to acquire context (platform specific) - * @param {object} options - The chart options - * @returns {CanvasRenderingContext2D} context2d instance - */ - acquireContext: function() {}, - - /** - * Called at chart destruction time, releases any resources associated to the context - * previously returned by the acquireContext() method. - * @param {CanvasRenderingContext2D} context - The context2d instance - * @returns {boolean} true if the method succeeded, else false - */ - releaseContext: function() {}, - - /** - * Registers the specified listener on the given chart. - * @param {Chart} chart - Chart from which to listen for event - * @param {string} type - The ({@link IEvent}) type to listen for - * @param {function} listener - Receives a notification (an object that implements - * the {@link IEvent} interface) when an event of the specified type occurs. - */ - addEventListener: function() {}, - - /** - * Removes the specified listener previously registered with addEventListener. - * @param {Chart} chart - Chart from which to remove the listener - * @param {string} type - The ({@link IEvent}) type to remove - * @param {function} listener - The listener function to remove from the event target. - */ - removeEventListener: function() {} - -}, implementation); - -core_defaults._set('global', { - plugins: {} -}); - -/** - * The plugin service singleton - * @namespace Chart.plugins - * @since 2.1.0 - */ -var core_plugins = { - /** - * Globally registered plugins. - * @private - */ - _plugins: [], - - /** - * This identifier is used to invalidate the descriptors cache attached to each chart - * when a global plugin is registered or unregistered. In this case, the cache ID is - * incremented and descriptors are regenerated during following API calls. - * @private - */ - _cacheId: 0, - - /** - * Registers the given plugin(s) if not already registered. - * @param {IPlugin[]|IPlugin} plugins plugin instance(s). - */ - register: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - if (p.indexOf(plugin) === -1) { - p.push(plugin); - } - }); - - this._cacheId++; - }, - - /** - * Unregisters the given plugin(s) only if registered. - * @param {IPlugin[]|IPlugin} plugins plugin instance(s). - */ - unregister: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - var idx = p.indexOf(plugin); - if (idx !== -1) { - p.splice(idx, 1); - } - }); - - this._cacheId++; - }, - - /** - * Remove all registered plugins. - * @since 2.1.5 - */ - clear: function() { - this._plugins = []; - this._cacheId++; - }, - - /** - * Returns the number of registered plugins? - * @returns {number} - * @since 2.1.5 - */ - count: function() { - return this._plugins.length; - }, - - /** - * Returns all registered plugin instances. - * @returns {IPlugin[]} array of plugin objects. - * @since 2.1.5 - */ - getAll: function() { - return this._plugins; - }, - - /** - * Calls enabled plugins for `chart` on the specified hook and with the given args. - * This method immediately returns as soon as a plugin explicitly returns false. The - * returned value can be used, for instance, to interrupt the current action. - * @param {Chart} chart - The chart instance for which plugins should be called. - * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). - * @param {Array} [args] - Extra arguments to apply to the hook call. - * @returns {boolean} false if any of the plugins return false, else returns true. - */ - notify: function(chart, hook, args) { - var descriptors = this.descriptors(chart); - var ilen = descriptors.length; - var i, descriptor, plugin, params, method; - - for (i = 0; i < ilen; ++i) { - descriptor = descriptors[i]; - plugin = descriptor.plugin; - method = plugin[hook]; - if (typeof method === 'function') { - params = [chart].concat(args || []); - params.push(descriptor.options); - if (method.apply(plugin, params) === false) { - return false; - } - } - } - - return true; - }, - - /** - * Returns descriptors of enabled plugins for the given chart. - * @returns {object[]} [{ plugin, options }] - * @private - */ - descriptors: function(chart) { - var cache = chart.$plugins || (chart.$plugins = {}); - if (cache.id === this._cacheId) { - return cache.descriptors; - } - - var plugins = []; - var descriptors = []; - var config = (chart && chart.config) || {}; - var options = (config.options && config.options.plugins) || {}; - - this._plugins.concat(config.plugins || []).forEach(function(plugin) { - var idx = plugins.indexOf(plugin); - if (idx !== -1) { - return; - } - - var id = plugin.id; - var opts = options[id]; - if (opts === false) { - return; - } - - if (opts === true) { - opts = helpers$1.clone(core_defaults.global.plugins[id]); - } - - plugins.push(plugin); - descriptors.push({ - plugin: plugin, - options: opts || {} - }); - }); - - cache.descriptors = descriptors; - cache.id = this._cacheId; - return descriptors; - }, - - /** - * Invalidates cache for the given chart: descriptors hold a reference on plugin option, - * but in some cases, this reference can be changed by the user when updating options. - * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - * @private - */ - _invalidate: function(chart) { - delete chart.$plugins; - } -}; - -var core_scaleService = { - // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then - // use the new chart options to grab the correct scale - constructors: {}, - // Use a registration function so that we can move to an ES6 map when we no longer need to support - // old browsers - - // Scale config defaults - defaults: {}, - registerScaleType: function(type, scaleConstructor, scaleDefaults) { - this.constructors[type] = scaleConstructor; - this.defaults[type] = helpers$1.clone(scaleDefaults); - }, - getScaleConstructor: function(type) { - return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; - }, - getScaleDefaults: function(type) { - // Return the scale defaults merged with the global settings so that we always use the latest ones - return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {}; - }, - updateScaleDefaults: function(type, additions) { - var me = this; - if (me.defaults.hasOwnProperty(type)) { - me.defaults[type] = helpers$1.extend(me.defaults[type], additions); - } - }, - addScalesToLayout: function(chart) { - // Adds each scale to the chart.boxes array to be sized accordingly - helpers$1.each(chart.scales, function(scale) { - // Set ILayoutItem parameters for backwards compatibility - scale.fullWidth = scale.options.fullWidth; - scale.position = scale.options.position; - scale.weight = scale.options.weight; - core_layouts.addBox(chart, scale); - }); - } -}; - -var valueOrDefault$7 = helpers$1.valueOrDefault; - -core_defaults._set('global', { - tooltips: { - enabled: true, - custom: null, - mode: 'nearest', - position: 'average', - intersect: true, - backgroundColor: 'rgba(0,0,0,0.8)', - titleFontStyle: 'bold', - titleSpacing: 2, - titleMarginBottom: 6, - titleFontColor: '#fff', - titleAlign: 'left', - bodySpacing: 2, - bodyFontColor: '#fff', - bodyAlign: 'left', - footerFontStyle: 'bold', - footerSpacing: 2, - footerMarginTop: 6, - footerFontColor: '#fff', - footerAlign: 'left', - yPadding: 6, - xPadding: 6, - caretPadding: 2, - caretSize: 5, - cornerRadius: 6, - multiKeyBackground: '#fff', - displayColors: true, - borderColor: 'rgba(0,0,0,0)', - borderWidth: 0, - callbacks: { - // Args are: (tooltipItems, data) - beforeTitle: helpers$1.noop, - title: function(tooltipItems, data) { - var title = ''; - var labels = data.labels; - var labelCount = labels ? labels.length : 0; - - if (tooltipItems.length > 0) { - var item = tooltipItems[0]; - if (item.label) { - title = item.label; - } else if (item.xLabel) { - title = item.xLabel; - } else if (labelCount > 0 && item.index < labelCount) { - title = labels[item.index]; - } - } - - return title; - }, - afterTitle: helpers$1.noop, - - // Args are: (tooltipItems, data) - beforeBody: helpers$1.noop, - - // Args are: (tooltipItem, data) - beforeLabel: helpers$1.noop, - label: function(tooltipItem, data) { - var label = data.datasets[tooltipItem.datasetIndex].label || ''; - - if (label) { - label += ': '; - } - if (!helpers$1.isNullOrUndef(tooltipItem.value)) { - label += tooltipItem.value; - } else { - label += tooltipItem.yLabel; - } - return label; - }, - labelColor: function(tooltipItem, chart) { - var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); - var activeElement = meta.data[tooltipItem.index]; - var view = activeElement._view; - return { - borderColor: view.borderColor, - backgroundColor: view.backgroundColor - }; - }, - labelTextColor: function() { - return this._options.bodyFontColor; - }, - afterLabel: helpers$1.noop, - - // Args are: (tooltipItems, data) - afterBody: helpers$1.noop, - - // Args are: (tooltipItems, data) - beforeFooter: helpers$1.noop, - footer: helpers$1.noop, - afterFooter: helpers$1.noop - } - } -}); - -var positioners = { - /** - * Average mode places the tooltip at the average position of the elements shown - * @function Chart.Tooltip.positioners.average - * @param elements {ChartElement[]} the elements being displayed in the tooltip - * @returns {object} tooltip position - */ - average: function(elements) { - if (!elements.length) { - return false; - } - - var i, len; - var x = 0; - var y = 0; - var count = 0; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var pos = el.tooltipPosition(); - x += pos.x; - y += pos.y; - ++count; - } - } - - return { - x: x / count, - y: y / count - }; - }, - - /** - * Gets the tooltip position nearest of the item nearest to the event position - * @function Chart.Tooltip.positioners.nearest - * @param elements {Chart.Element[]} the tooltip elements - * @param eventPosition {object} the position of the event in canvas coordinates - * @returns {object} the tooltip position - */ - nearest: function(elements, eventPosition) { - var x = eventPosition.x; - var y = eventPosition.y; - var minDistance = Number.POSITIVE_INFINITY; - var i, len, nearestElement; - - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var center = el.getCenterPoint(); - var d = helpers$1.distanceBetweenPoints(eventPosition, center); - - if (d < minDistance) { - minDistance = d; - nearestElement = el; - } - } - } - - if (nearestElement) { - var tp = nearestElement.tooltipPosition(); - x = tp.x; - y = tp.y; - } - - return { - x: x, - y: y - }; - } -}; - -// Helper to push or concat based on if the 2nd parameter is an array or not -function pushOrConcat(base, toPush) { - if (toPush) { - if (helpers$1.isArray(toPush)) { - // base = base.concat(toPush); - Array.prototype.push.apply(base, toPush); - } else { - base.push(toPush); - } - } - - return base; -} - -/** - * Returns array of strings split by newline - * @param {string} value - The value to split by newline. - * @returns {string[]} value if newline present - Returned from String split() method - * @function - */ -function splitNewlines(str) { - if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { - return str.split('\n'); - } - return str; -} - - -/** - * Private helper to create a tooltip item model - * @param element - the chart element (point, arc, bar) to create the tooltip item for - * @return new tooltip item - */ -function createTooltipItem(element) { - var xScale = element._xScale; - var yScale = element._yScale || element._scale; // handle radar || polarArea charts - var index = element._index; - var datasetIndex = element._datasetIndex; - var controller = element._chart.getDatasetMeta(datasetIndex).controller; - var indexScale = controller._getIndexScale(); - var valueScale = controller._getValueScale(); - - return { - xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', - yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', - label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '', - value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '', - index: index, - datasetIndex: datasetIndex, - x: element._model.x, - y: element._model.y - }; -} - -/** - * Helper to get the reset model for the tooltip - * @param tooltipOpts {object} the tooltip options - */ -function getBaseModel(tooltipOpts) { - var globalDefaults = core_defaults.global; - - return { - // Positioning - xPadding: tooltipOpts.xPadding, - yPadding: tooltipOpts.yPadding, - xAlign: tooltipOpts.xAlign, - yAlign: tooltipOpts.yAlign, - - // Body - bodyFontColor: tooltipOpts.bodyFontColor, - _bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), - _bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), - _bodyAlign: tooltipOpts.bodyAlign, - bodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), - bodySpacing: tooltipOpts.bodySpacing, - - // Title - titleFontColor: tooltipOpts.titleFontColor, - _titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), - _titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), - titleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), - _titleAlign: tooltipOpts.titleAlign, - titleSpacing: tooltipOpts.titleSpacing, - titleMarginBottom: tooltipOpts.titleMarginBottom, - - // Footer - footerFontColor: tooltipOpts.footerFontColor, - _footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), - _footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), - footerFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), - _footerAlign: tooltipOpts.footerAlign, - footerSpacing: tooltipOpts.footerSpacing, - footerMarginTop: tooltipOpts.footerMarginTop, - - // Appearance - caretSize: tooltipOpts.caretSize, - cornerRadius: tooltipOpts.cornerRadius, - backgroundColor: tooltipOpts.backgroundColor, - opacity: 0, - legendColorBackground: tooltipOpts.multiKeyBackground, - displayColors: tooltipOpts.displayColors, - borderColor: tooltipOpts.borderColor, - borderWidth: tooltipOpts.borderWidth - }; -} - -/** - * Get the size of the tooltip - */ -function getTooltipSize(tooltip, model) { - var ctx = tooltip._chart.ctx; - - var height = model.yPadding * 2; // Tooltip Padding - var width = 0; - - // Count of all lines in the body - var body = model.body; - var combinedBodyLength = body.reduce(function(count, bodyItem) { - return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; - }, 0); - combinedBodyLength += model.beforeBody.length + model.afterBody.length; - - var titleLineCount = model.title.length; - var footerLineCount = model.footer.length; - var titleFontSize = model.titleFontSize; - var bodyFontSize = model.bodyFontSize; - var footerFontSize = model.footerFontSize; - - height += titleLineCount * titleFontSize; // Title Lines - height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing - height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin - height += combinedBodyLength * bodyFontSize; // Body Lines - height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing - height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin - height += footerLineCount * (footerFontSize); // Footer Lines - height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing - - // Title width - var widthPadding = 0; - var maxLineWidth = function(line) { - width = Math.max(width, ctx.measureText(line).width + widthPadding); - }; - - ctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); - helpers$1.each(model.title, maxLineWidth); - - // Body width - ctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); - helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth); - - // Body lines may include some extra width due to the color box - widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; - helpers$1.each(body, function(bodyItem) { - helpers$1.each(bodyItem.before, maxLineWidth); - helpers$1.each(bodyItem.lines, maxLineWidth); - helpers$1.each(bodyItem.after, maxLineWidth); - }); - - // Reset back to 0 - widthPadding = 0; - - // Footer width - ctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); - helpers$1.each(model.footer, maxLineWidth); - - // Add padding - width += 2 * model.xPadding; - - return { - width: width, - height: height - }; -} - -/** - * Helper to get the alignment of a tooltip given the size - */ -function determineAlignment(tooltip, size) { - var model = tooltip._model; - var chart = tooltip._chart; - var chartArea = tooltip._chart.chartArea; - var xAlign = 'center'; - var yAlign = 'center'; - - if (model.y < size.height) { - yAlign = 'top'; - } else if (model.y > (chart.height - size.height)) { - yAlign = 'bottom'; - } - - var lf, rf; // functions to determine left, right alignment - var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart - var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges - var midX = (chartArea.left + chartArea.right) / 2; - var midY = (chartArea.top + chartArea.bottom) / 2; - - if (yAlign === 'center') { - lf = function(x) { - return x <= midX; - }; - rf = function(x) { - return x > midX; - }; - } else { - lf = function(x) { - return x <= (size.width / 2); - }; - rf = function(x) { - return x >= (chart.width - (size.width / 2)); - }; - } - - olf = function(x) { - return x + size.width + model.caretSize + model.caretPadding > chart.width; - }; - orf = function(x) { - return x - size.width - model.caretSize - model.caretPadding < 0; - }; - yf = function(y) { - return y <= midY ? 'top' : 'bottom'; - }; - - if (lf(model.x)) { - xAlign = 'left'; - - // Is tooltip too wide and goes over the right side of the chart.? - if (olf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } else if (rf(model.x)) { - xAlign = 'right'; - - // Is tooltip too wide and goes outside left edge of canvas? - if (orf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } - - var opts = tooltip._options; - return { - xAlign: opts.xAlign ? opts.xAlign : xAlign, - yAlign: opts.yAlign ? opts.yAlign : yAlign - }; -} - -/** - * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment - */ -function getBackgroundPoint(vm, size, alignment, chart) { - // Background Position - var x = vm.x; - var y = vm.y; - - var caretSize = vm.caretSize; - var caretPadding = vm.caretPadding; - var cornerRadius = vm.cornerRadius; - var xAlign = alignment.xAlign; - var yAlign = alignment.yAlign; - var paddingAndSize = caretSize + caretPadding; - var radiusAndPadding = cornerRadius + caretPadding; - - if (xAlign === 'right') { - x -= size.width; - } else if (xAlign === 'center') { - x -= (size.width / 2); - if (x + size.width > chart.width) { - x = chart.width - size.width; - } - if (x < 0) { - x = 0; - } - } - - if (yAlign === 'top') { - y += paddingAndSize; - } else if (yAlign === 'bottom') { - y -= size.height + paddingAndSize; - } else { - y -= (size.height / 2); - } - - if (yAlign === 'center') { - if (xAlign === 'left') { - x += paddingAndSize; - } else if (xAlign === 'right') { - x -= paddingAndSize; - } - } else if (xAlign === 'left') { - x -= radiusAndPadding; - } else if (xAlign === 'right') { - x += radiusAndPadding; - } - - return { - x: x, - y: y - }; -} - -function getAlignedX(vm, align) { - return align === 'center' - ? vm.x + vm.width / 2 - : align === 'right' - ? vm.x + vm.width - vm.xPadding - : vm.x + vm.xPadding; -} - -/** - * Helper to build before and after body lines - */ -function getBeforeAfterBodyLines(callback) { - return pushOrConcat([], splitNewlines(callback)); -} - -var exports$3 = core_element.extend({ - initialize: function() { - this._model = getBaseModel(this._options); - this._lastActive = []; - }, - - // Get the title - // Args are: (tooltipItem, data) - getTitle: function() { - var me = this; - var opts = me._options; - var callbacks = opts.callbacks; - - var beforeTitle = callbacks.beforeTitle.apply(me, arguments); - var title = callbacks.title.apply(me, arguments); - var afterTitle = callbacks.afterTitle.apply(me, arguments); - - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeTitle)); - lines = pushOrConcat(lines, splitNewlines(title)); - lines = pushOrConcat(lines, splitNewlines(afterTitle)); - - return lines; - }, - - // Args are: (tooltipItem, data) - getBeforeBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); - }, - - // Args are: (tooltipItem, data) - getBody: function(tooltipItems, data) { - var me = this; - var callbacks = me._options.callbacks; - var bodyItems = []; - - helpers$1.each(tooltipItems, function(tooltipItem) { - var bodyItem = { - before: [], - lines: [], - after: [] - }; - pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); - pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); - pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); - - bodyItems.push(bodyItem); - }); - - return bodyItems; - }, - - // Args are: (tooltipItem, data) - getAfterBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); - }, - - // Get the footer and beforeFooter and afterFooter lines - // Args are: (tooltipItem, data) - getFooter: function() { - var me = this; - var callbacks = me._options.callbacks; - - var beforeFooter = callbacks.beforeFooter.apply(me, arguments); - var footer = callbacks.footer.apply(me, arguments); - var afterFooter = callbacks.afterFooter.apply(me, arguments); - - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeFooter)); - lines = pushOrConcat(lines, splitNewlines(footer)); - lines = pushOrConcat(lines, splitNewlines(afterFooter)); - - return lines; - }, - - update: function(changed) { - var me = this; - var opts = me._options; - - // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition - // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time - // which breaks any animations. - var existingModel = me._model; - var model = me._model = getBaseModel(opts); - var active = me._active; - - var data = me._data; - - // In the case where active.length === 0 we need to keep these at existing values for good animations - var alignment = { - xAlign: existingModel.xAlign, - yAlign: existingModel.yAlign - }; - var backgroundPoint = { - x: existingModel.x, - y: existingModel.y - }; - var tooltipSize = { - width: existingModel.width, - height: existingModel.height - }; - var tooltipPosition = { - x: existingModel.caretX, - y: existingModel.caretY - }; - - var i, len; - - if (active.length) { - model.opacity = 1; - - var labelColors = []; - var labelTextColors = []; - tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); - - var tooltipItems = []; - for (i = 0, len = active.length; i < len; ++i) { - tooltipItems.push(createTooltipItem(active[i])); - } - - // If the user provided a filter function, use it to modify the tooltip items - if (opts.filter) { - tooltipItems = tooltipItems.filter(function(a) { - return opts.filter(a, data); - }); - } - - // If the user provided a sorting function, use it to modify the tooltip items - if (opts.itemSort) { - tooltipItems = tooltipItems.sort(function(a, b) { - return opts.itemSort(a, b, data); - }); - } - - // Determine colors for boxes - helpers$1.each(tooltipItems, function(tooltipItem) { - labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); - labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); - }); - - - // Build the Text Lines - model.title = me.getTitle(tooltipItems, data); - model.beforeBody = me.getBeforeBody(tooltipItems, data); - model.body = me.getBody(tooltipItems, data); - model.afterBody = me.getAfterBody(tooltipItems, data); - model.footer = me.getFooter(tooltipItems, data); - - // Initial positioning and colors - model.x = tooltipPosition.x; - model.y = tooltipPosition.y; - model.caretPadding = opts.caretPadding; - model.labelColors = labelColors; - model.labelTextColors = labelTextColors; - - // data points - model.dataPoints = tooltipItems; - - // We need to determine alignment of the tooltip - tooltipSize = getTooltipSize(this, model); - alignment = determineAlignment(this, tooltipSize); - // Final Size and Position - backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); - } else { - model.opacity = 0; - } - - model.xAlign = alignment.xAlign; - model.yAlign = alignment.yAlign; - model.x = backgroundPoint.x; - model.y = backgroundPoint.y; - model.width = tooltipSize.width; - model.height = tooltipSize.height; - - // Point where the caret on the tooltip points to - model.caretX = tooltipPosition.x; - model.caretY = tooltipPosition.y; - - me._model = model; - - if (changed && opts.custom) { - opts.custom.call(me, model); - } - - return me; - }, - - drawCaret: function(tooltipPoint, size) { - var ctx = this._chart.ctx; - var vm = this._view; - var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); - - ctx.lineTo(caretPosition.x1, caretPosition.y1); - ctx.lineTo(caretPosition.x2, caretPosition.y2); - ctx.lineTo(caretPosition.x3, caretPosition.y3); - }, - getCaretPosition: function(tooltipPoint, size, vm) { - var x1, x2, x3, y1, y2, y3; - var caretSize = vm.caretSize; - var cornerRadius = vm.cornerRadius; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var ptX = tooltipPoint.x; - var ptY = tooltipPoint.y; - var width = size.width; - var height = size.height; - - if (yAlign === 'center') { - y2 = ptY + (height / 2); - - if (xAlign === 'left') { - x1 = ptX; - x2 = x1 - caretSize; - x3 = x1; - - y1 = y2 + caretSize; - y3 = y2 - caretSize; - } else { - x1 = ptX + width; - x2 = x1 + caretSize; - x3 = x1; - - y1 = y2 - caretSize; - y3 = y2 + caretSize; - } - } else { - if (xAlign === 'left') { - x2 = ptX + cornerRadius + (caretSize); - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else if (xAlign === 'right') { - x2 = ptX + width - cornerRadius - caretSize; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else { - x2 = vm.caretX; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } - if (yAlign === 'top') { - y1 = ptY; - y2 = y1 - caretSize; - y3 = y1; - } else { - y1 = ptY + height; - y2 = y1 + caretSize; - y3 = y1; - // invert drawing order - var tmp = x3; - x3 = x1; - x1 = tmp; - } - } - return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; - }, - - drawTitle: function(pt, vm, ctx) { - var title = vm.title; - - if (title.length) { - pt.x = getAlignedX(vm, vm._titleAlign); - - ctx.textAlign = vm._titleAlign; - ctx.textBaseline = 'top'; - - var titleFontSize = vm.titleFontSize; - var titleSpacing = vm.titleSpacing; - - ctx.fillStyle = vm.titleFontColor; - ctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); - - var i, len; - for (i = 0, len = title.length; i < len; ++i) { - ctx.fillText(title[i], pt.x, pt.y); - pt.y += titleFontSize + titleSpacing; // Line Height and spacing - - if (i + 1 === title.length) { - pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing - } - } - } - }, - - drawBody: function(pt, vm, ctx) { - var bodyFontSize = vm.bodyFontSize; - var bodySpacing = vm.bodySpacing; - var bodyAlign = vm._bodyAlign; - var body = vm.body; - var drawColorBoxes = vm.displayColors; - var labelColors = vm.labelColors; - var xLinePadding = 0; - var colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0; - var textColor; - - ctx.textAlign = bodyAlign; - ctx.textBaseline = 'top'; - ctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); - - pt.x = getAlignedX(vm, bodyAlign); - - // Before Body - var fillLineOfText = function(line) { - ctx.fillText(line, pt.x + xLinePadding, pt.y); - pt.y += bodyFontSize + bodySpacing; - }; - - // Before body lines - ctx.fillStyle = vm.bodyFontColor; - helpers$1.each(vm.beforeBody, fillLineOfText); - - xLinePadding = drawColorBoxes && bodyAlign !== 'right' - ? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2) - : 0; - - // Draw body lines now - helpers$1.each(body, function(bodyItem, i) { - textColor = vm.labelTextColors[i]; - ctx.fillStyle = textColor; - helpers$1.each(bodyItem.before, fillLineOfText); - - helpers$1.each(bodyItem.lines, function(line) { - // Draw Legend-like boxes if needed - if (drawColorBoxes) { - // Fill a white rect so that colours merge nicely if the opacity is < 1 - ctx.fillStyle = vm.legendColorBackground; - ctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize); - - // Border - ctx.lineWidth = 1; - ctx.strokeStyle = labelColors[i].borderColor; - ctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize); - - // Inner square - ctx.fillStyle = labelColors[i].backgroundColor; - ctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); - ctx.fillStyle = textColor; - } - - fillLineOfText(line); - }); - - helpers$1.each(bodyItem.after, fillLineOfText); - }); - - // Reset back to 0 for after body - xLinePadding = 0; - - // After body lines - helpers$1.each(vm.afterBody, fillLineOfText); - pt.y -= bodySpacing; // Remove last body spacing - }, - - drawFooter: function(pt, vm, ctx) { - var footer = vm.footer; - - if (footer.length) { - pt.x = getAlignedX(vm, vm._footerAlign); - pt.y += vm.footerMarginTop; - - ctx.textAlign = vm._footerAlign; - ctx.textBaseline = 'top'; - - ctx.fillStyle = vm.footerFontColor; - ctx.font = helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); - - helpers$1.each(footer, function(line) { - ctx.fillText(line, pt.x, pt.y); - pt.y += vm.footerFontSize + vm.footerSpacing; - }); - } - }, - - drawBackground: function(pt, vm, ctx, tooltipSize) { - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var x = pt.x; - var y = pt.y; - var width = tooltipSize.width; - var height = tooltipSize.height; - var radius = vm.cornerRadius; - - ctx.beginPath(); - ctx.moveTo(x + radius, y); - if (yAlign === 'top') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - if (yAlign === 'center' && xAlign === 'right') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - if (yAlign === 'bottom') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - if (yAlign === 'center' && xAlign === 'left') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); - - ctx.fill(); - - if (vm.borderWidth > 0) { - ctx.stroke(); - } - }, - - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - - if (vm.opacity === 0) { - return; - } - - var tooltipSize = { - width: vm.width, - height: vm.height - }; - var pt = { - x: vm.x, - y: vm.y - }; - - // IE11/Edge does not like very small opacities, so snap to 0 - var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; - - // Truthy/falsey value for empty tooltip - var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; - - if (this._options.enabled && hasTooltipContent) { - ctx.save(); - ctx.globalAlpha = opacity; - - // Draw Background - this.drawBackground(pt, vm, ctx, tooltipSize); - - // Draw Title, Body, and Footer - pt.y += vm.yPadding; - - // Titles - this.drawTitle(pt, vm, ctx); - - // Body - this.drawBody(pt, vm, ctx); - - // Footer - this.drawFooter(pt, vm, ctx); - - ctx.restore(); - } - }, - - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - * @returns {boolean} true if the tooltip changed - */ - handleEvent: function(e) { - var me = this; - var options = me._options; - var changed = false; - - me._lastActive = me._lastActive || []; - - // Find Active Elements for tooltips - if (e.type === 'mouseout') { - me._active = []; - } else { - me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); - } - - // Remember Last Actives - changed = !helpers$1.arrayEquals(me._active, me._lastActive); - - // Only handle target event on tooltip change - if (changed) { - me._lastActive = me._active; - - if (options.enabled || options.custom) { - me._eventPosition = { - x: e.x, - y: e.y - }; - - me.update(true); - me.pivot(); - } - } - - return changed; - } -}); - -/** - * @namespace Chart.Tooltip.positioners - */ -var positioners_1 = positioners; - -var core_tooltip = exports$3; -core_tooltip.positioners = positioners_1; - -var valueOrDefault$8 = helpers$1.valueOrDefault; - -core_defaults._set('global', { - elements: {}, - events: [ - 'mousemove', - 'mouseout', - 'click', - 'touchstart', - 'touchmove' - ], - hover: { - onHover: null, - mode: 'nearest', - intersect: true, - animationDuration: 400 - }, - onClick: null, - maintainAspectRatio: true, - responsive: true, - responsiveAnimationDuration: 0 -}); - -/** - * Recursively merge the given config objects representing the `scales` option - * by incorporating scale defaults in `xAxes` and `yAxes` array items, then - * returns a deep copy of the result, thus doesn't alter inputs. - */ -function mergeScaleConfig(/* config objects ... */) { - return helpers$1.merge({}, [].slice.call(arguments), { - merger: function(key, target, source, options) { - if (key === 'xAxes' || key === 'yAxes') { - var slen = source[key].length; - var i, type, scale; - - if (!target[key]) { - target[key] = []; - } - - for (i = 0; i < slen; ++i) { - scale = source[key][i]; - type = valueOrDefault$8(scale.type, key === 'xAxes' ? 'category' : 'linear'); - - if (i >= target[key].length) { - target[key].push({}); - } - - if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { - // new/untyped scale or type changed: let's apply the new defaults - // then merge source scale to correctly overwrite the defaults. - helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]); - } else { - // scales type are the same - helpers$1.merge(target[key][i], scale); - } - } - } else { - helpers$1._merger(key, target, source, options); - } - } - }); -} - -/** - * Recursively merge the given config objects as the root options by handling - * default scale options for the `scales` and `scale` properties, then returns - * a deep copy of the result, thus doesn't alter inputs. - */ -function mergeConfig(/* config objects ... */) { - return helpers$1.merge({}, [].slice.call(arguments), { - merger: function(key, target, source, options) { - var tval = target[key] || {}; - var sval = source[key]; - - if (key === 'scales') { - // scale config merging is complex. Add our own function here for that - target[key] = mergeScaleConfig(tval, sval); - } else if (key === 'scale') { - // used in polar area & radar charts since there is only one scale - target[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]); - } else { - helpers$1._merger(key, target, source, options); - } - } - }); -} - -function initConfig(config) { - config = config || {}; - - // Do NOT use mergeConfig for the data object because this method merges arrays - // and so would change references to labels and datasets, preventing data updates. - var data = config.data = config.data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; - - config.options = mergeConfig( - core_defaults.global, - core_defaults[config.type], - config.options || {}); - - return config; -} - -function updateConfig(chart) { - var newOptions = chart.options; - - helpers$1.each(chart.scales, function(scale) { - core_layouts.removeBox(chart, scale); - }); - - newOptions = mergeConfig( - core_defaults.global, - core_defaults[chart.config.type], - newOptions); - - chart.options = chart.config.options = newOptions; - chart.ensureScalesHaveIDs(); - chart.buildOrUpdateScales(); - - // Tooltip - chart.tooltip._options = newOptions.tooltips; - chart.tooltip.initialize(); -} - -function positionIsHorizontal(position) { - return position === 'top' || position === 'bottom'; -} - -var Chart = function(item, config) { - this.construct(item, config); - return this; -}; - -helpers$1.extend(Chart.prototype, /** @lends Chart */ { - /** - * @private - */ - construct: function(item, config) { - var me = this; - - config = initConfig(config); - - var context = platform.acquireContext(item, config); - var canvas = context && context.canvas; - var height = canvas && canvas.height; - var width = canvas && canvas.width; - - me.id = helpers$1.uid(); - me.ctx = context; - me.canvas = canvas; - me.config = config; - me.width = width; - me.height = height; - me.aspectRatio = height ? width / height : null; - me.options = config.options; - me._bufferedRender = false; - - /** - * Provided for backward compatibility, Chart and Chart.Controller have been merged, - * the "instance" still need to be defined since it might be called from plugins. - * @prop Chart#chart - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - me.chart = me; - me.controller = me; // chart.chart.controller #inception - - // Add the chart instance to the global namespace - Chart.instances[me.id] = me; - - // Define alias to the config data: `chart.data === chart.config.data` - Object.defineProperty(me, 'data', { - get: function() { - return me.config.data; - }, - set: function(value) { - me.config.data = value; - } - }); - - if (!context || !canvas) { - // The given item is not a compatible context2d element, let's return before finalizing - // the chart initialization but after setting basic chart / controller properties that - // can help to figure out that the chart is not valid (e.g chart.canvas !== null); - // https://github.com/chartjs/Chart.js/issues/2807 - console.error("Failed to create chart: can't acquire context from the given item"); - return; - } - - me.initialize(); - me.update(); - }, - - /** - * @private - */ - initialize: function() { - var me = this; - - // Before init plugin notification - core_plugins.notify(me, 'beforeInit'); - - helpers$1.retinaScale(me, me.options.devicePixelRatio); - - me.bindEvents(); - - if (me.options.responsive) { - // Initial resize before chart draws (must be silent to preserve initial animations). - me.resize(true); - } - - // Make sure scales have IDs and are built before we build any controllers. - me.ensureScalesHaveIDs(); - me.buildOrUpdateScales(); - me.initToolTip(); - - // After init plugin notification - core_plugins.notify(me, 'afterInit'); - - return me; - }, - - clear: function() { - helpers$1.canvas.clear(this); - return this; - }, - - stop: function() { - // Stops any current animation loop occurring - core_animations.cancelAnimation(this); - return this; - }, - - resize: function(silent) { - var me = this; - var options = me.options; - var canvas = me.canvas; - var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; - - // the canvas render width and height will be casted to integers so make sure that - // the canvas display style uses the same integer values to avoid blurring effect. - - // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed - var newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas))); - var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas))); - - if (me.width === newWidth && me.height === newHeight) { - return; - } - - canvas.width = me.width = newWidth; - canvas.height = me.height = newHeight; - canvas.style.width = newWidth + 'px'; - canvas.style.height = newHeight + 'px'; - - helpers$1.retinaScale(me, options.devicePixelRatio); - - if (!silent) { - // Notify any plugins about the resize - var newSize = {width: newWidth, height: newHeight}; - core_plugins.notify(me, 'resize', [newSize]); - - // Notify of resize - if (options.onResize) { - options.onResize(me, newSize); - } - - me.stop(); - me.update({ - duration: options.responsiveAnimationDuration - }); - } - }, - - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; - - helpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); - - helpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); - - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; - } - }, - - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildOrUpdateScales: function() { - var me = this; - var options = me.options; - var scales = me.scales || {}; - var items = []; - var updated = Object.keys(scales).reduce(function(obj, id) { - obj[id] = false; - return obj; - }, {}); - - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; - }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; - }) - ); - } - - if (options.scale) { - items.push({ - options: options.scale, - dtype: 'radialLinear', - isDefault: true, - dposition: 'chartArea' - }); - } - - helpers$1.each(items, function(item) { - var scaleOptions = item.options; - var id = scaleOptions.id; - var scaleType = valueOrDefault$8(scaleOptions.type, item.dtype); - - if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { - scaleOptions.position = item.dposition; - } - - updated[id] = true; - var scale = null; - if (id in scales && scales[id].type === scaleType) { - scale = scales[id]; - scale.options = scaleOptions; - scale.ctx = me.ctx; - scale.chart = me; - } else { - var scaleClass = core_scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - scale = new scaleClass({ - id: id, - type: scaleType, - options: scaleOptions, - ctx: me.ctx, - chart: me - }); - scales[scale.id] = scale; - } - - scale.mergeTicksOptions(); - - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - // clear up discarded scales - helpers$1.each(updated, function(hasUpdated, id) { - if (!hasUpdated) { - delete scales[id]; - } - }); - - me.scales = scales; - - core_scaleService.addScalesToLayout(this); - }, - - buildOrUpdateControllers: function() { - var me = this; - var newControllers = []; - - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - var type = dataset.type || me.config.type; - - if (meta.type && meta.type !== type) { - me.destroyDatasetMeta(datasetIndex); - meta = me.getDatasetMeta(datasetIndex); - } - meta.type = type; - - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - meta.controller.linkScales(); - } else { - var ControllerClass = controllers[meta.type]; - if (ControllerClass === undefined) { - throw new Error('"' + meta.type + '" is not a chart type.'); - } - - meta.controller = new ControllerClass(me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); - - return newControllers; - }, - - /** - * Reset the elements of all datasets - * @private - */ - resetElements: function() { - var me = this; - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); - }, - - /** - * Resets the chart back to it's state before the initial animation - */ - reset: function() { - this.resetElements(); - this.tooltip.initialize(); - }, - - update: function(config) { - var me = this; - - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } - - updateConfig(me); - - // plugins options references might have change, let's invalidate the cache - // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - core_plugins._invalidate(me); - - if (core_plugins.notify(me, 'beforeUpdate') === false) { - return; - } - - // In case the entire data object changed - me.tooltip._data = me.data; - - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); - - // Make sure all dataset controllers have correct meta data counts - helpers$1.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); - - me.updateLayout(); - - // Can only reset the new controllers after the scales have been updated - if (me.options.animation && me.options.animation.duration) { - helpers$1.each(newControllers, function(controller) { - controller.reset(); - }); - } - - me.updateDatasets(); - - // Need to reset tooltip in case it is displayed with elements that are removed - // after update. - me.tooltip.initialize(); - - // Last active contains items that were previously in the tooltip. - // When we reset the tooltip, we need to clear it - me.lastActive = []; - - // Do this before render so that any plugins that need final scale updates can use it - core_plugins.notify(me, 'afterUpdate'); - - if (me._bufferedRender) { - me._bufferedRequest = { - duration: config.duration, - easing: config.easing, - lazy: config.lazy - }; - } else { - me.render(config); - } - }, - - /** - * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` - * hook, in which case, plugins will not be called on `afterLayout`. - * @private - */ - updateLayout: function() { - var me = this; - - if (core_plugins.notify(me, 'beforeLayout') === false) { - return; - } - - core_layouts.update(this, this.width, this.height); - - /** - * Provided for backward compatibility, use `afterLayout` instead. - * @method IPlugin#afterScaleUpdate - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ - core_plugins.notify(me, 'afterScaleUpdate'); - core_plugins.notify(me, 'afterLayout'); - }, - - /** - * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` - * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. - * @private - */ - updateDatasets: function() { - var me = this; - - if (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) { - return; - } - - for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.updateDataset(i); - } - - core_plugins.notify(me, 'afterDatasetsUpdate'); - }, - - /** - * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` - * hook, in which case, plugins will not be called on `afterDatasetUpdate`. - * @private - */ - updateDataset: function(index) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index - }; - - if (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { - return; - } - - meta.controller.update(); - - core_plugins.notify(me, 'afterDatasetUpdate', [args]); - }, - - render: function(config) { - var me = this; - - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } - - var animationOptions = me.options.animation; - var duration = valueOrDefault$8(config.duration, animationOptions && animationOptions.duration); - var lazy = config.lazy; - - if (core_plugins.notify(me, 'beforeRender') === false) { - return; - } - - var onComplete = function(animation) { - core_plugins.notify(me, 'afterRender'); - helpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me); - }; - - if (animationOptions && duration) { - var animation = new core_animation({ - numSteps: duration / 16.66, // 60 fps - easing: config.easing || animationOptions.easing, - - render: function(chart, animationObject) { - var easingFunction = helpers$1.easing.effects[animationObject.easing]; - var currentStep = animationObject.currentStep; - var stepDecimal = currentStep / animationObject.numSteps; - - chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); - }, - - onAnimationProgress: animationOptions.onProgress, - onAnimationComplete: onComplete - }); - - core_animations.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); - - // See https://github.com/chartjs/Chart.js/issues/3781 - onComplete(new core_animation({numSteps: 0, chart: me})); - } - - return me; - }, - - draw: function(easingValue) { - var me = this; - - me.clear(); - - if (helpers$1.isNullOrUndef(easingValue)) { - easingValue = 1; - } - - me.transition(easingValue); - - if (me.width <= 0 || me.height <= 0) { - return; - } - - if (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) { - return; - } - - // Draw all the scales - helpers$1.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); - - me.drawDatasets(easingValue); - me._drawTooltip(easingValue); - - core_plugins.notify(me, 'afterDraw', [easingValue]); - }, - - /** - * @private - */ - transition: function(easingValue) { - var me = this; - - for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { - if (me.isDatasetVisible(i)) { - me.getDatasetMeta(i).controller.transition(easingValue); - } - } - - me.tooltip.transition(easingValue); - }, - - /** - * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` - * hook, in which case, plugins will not be called on `afterDatasetsDraw`. - * @private - */ - drawDatasets: function(easingValue) { - var me = this; - - if (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { - return; - } - - // Draw datasets reversed to support proper line stacking - for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { - if (me.isDatasetVisible(i)) { - me.drawDataset(i, easingValue); - } - } - - core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]); - }, - - /** - * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` - * hook, in which case, plugins will not be called on `afterDatasetDraw`. - * @private - */ - drawDataset: function(index, easingValue) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index, - easingValue: easingValue - }; - - if (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { - return; - } - - meta.controller.draw(easingValue); - - core_plugins.notify(me, 'afterDatasetDraw', [args]); - }, - - /** - * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` - * hook, in which case, plugins will not be called on `afterTooltipDraw`. - * @private - */ - _drawTooltip: function(easingValue) { - var me = this; - var tooltip = me.tooltip; - var args = { - tooltip: tooltip, - easingValue: easingValue - }; - - if (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { - return; - } - - tooltip.draw(); - - core_plugins.notify(me, 'afterTooltipDraw', [args]); - }, - - /** - * Get the single element that was clicked on - * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - */ - getElementAtEvent: function(e) { - return core_interaction.modes.single(this, e); - }, - - getElementsAtEvent: function(e) { - return core_interaction.modes.label(this, e, {intersect: true}); - }, - - getElementsAtXAxis: function(e) { - return core_interaction.modes['x-axis'](this, e, {intersect: true}); - }, - - getElementsAtEventForMode: function(e, mode, options) { - var method = core_interaction.modes[mode]; - if (typeof method === 'function') { - return method(this, e, options); - } - - return []; - }, - - getDatasetAtEvent: function(e) { - return core_interaction.modes.dataset(this, e, {intersect: true}); - }, - - getDatasetMeta: function(datasetIndex) { - var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } - - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; - } - - return meta; - }, - - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - if (this.isDatasetVisible(i)) { - count++; - } - } - return count; - }, - - isDatasetVisible: function(datasetIndex) { - var meta = this.getDatasetMeta(datasetIndex); - - // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, - // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. - return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; - }, - - generateLegend: function() { - return this.options.legendCallback(this); - }, - - /** - * @private - */ - destroyDatasetMeta: function(datasetIndex) { - var id = this.id; - var dataset = this.data.datasets[datasetIndex]; - var meta = dataset._meta && dataset._meta[id]; - - if (meta) { - meta.controller.destroy(); - delete dataset._meta[id]; - } - }, - - destroy: function() { - var me = this; - var canvas = me.canvas; - var i, ilen; - - me.stop(); - - // dataset controllers need to cleanup associated data - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.destroyDatasetMeta(i); - } - - if (canvas) { - me.unbindEvents(); - helpers$1.canvas.clear(me); - platform.releaseContext(me.ctx); - me.canvas = null; - me.ctx = null; - } - - core_plugins.notify(me, 'destroy'); - - delete Chart.instances[me.id]; - }, - - toBase64Image: function() { - return this.canvas.toDataURL.apply(this.canvas, arguments); - }, - - initToolTip: function() { - var me = this; - me.tooltip = new core_tooltip({ - _chart: me, - _chartInstance: me, // deprecated, backward compatibility - _data: me.data, - _options: me.options.tooltips - }, me); - }, - - /** - * @private - */ - bindEvents: function() { - var me = this; - var listeners = me._listeners = {}; - var listener = function() { - me.eventHandler.apply(me, arguments); - }; - - helpers$1.each(me.options.events, function(type) { - platform.addEventListener(me, type, listener); - listeners[type] = listener; - }); - - // Elements used to detect size change should not be injected for non responsive charts. - // See https://github.com/chartjs/Chart.js/issues/2210 - if (me.options.responsive) { - listener = function() { - me.resize(); - }; - - platform.addEventListener(me, 'resize', listener); - listeners.resize = listener; - } - }, - - /** - * @private - */ - unbindEvents: function() { - var me = this; - var listeners = me._listeners; - if (!listeners) { - return; - } - - delete me._listeners; - helpers$1.each(listeners, function(listener, type) { - platform.removeEventListener(me, type, listener); - }); - }, - - updateHoverStyle: function(elements, mode, enabled) { - var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; - var element, i, ilen; - - for (i = 0, ilen = elements.length; i < ilen; ++i) { - element = elements[i]; - if (element) { - this.getDatasetMeta(element._datasetIndex).controller[method](element); - } - } - }, - - /** - * @private - */ - eventHandler: function(e) { - var me = this; - var tooltip = me.tooltip; - - if (core_plugins.notify(me, 'beforeEvent', [e]) === false) { - return; - } - - // Buffer any update calls so that renders do not occur - me._bufferedRender = true; - me._bufferedRequest = null; - - var changed = me.handleEvent(e); - // for smooth tooltip animations issue #4989 - // the tooltip should be the source of change - // Animation check workaround: - // tooltip._start will be null when tooltip isn't animating - if (tooltip) { - changed = tooltip._start - ? tooltip.handleEvent(e) - : changed | tooltip.handleEvent(e); - } - - core_plugins.notify(me, 'afterEvent', [e]); - - var bufferedRequest = me._bufferedRequest; - if (bufferedRequest) { - // If we have an update that was triggered, we need to do a normal render - me.render(bufferedRequest); - } else if (changed && !me.animating) { - // If entering, leaving, or changing elements, animate the change via pivot - me.stop(); - - // We only need to render at this point. Updating will cause scales to be - // recomputed generating flicker & using more memory than necessary. - me.render({ - duration: me.options.hover.animationDuration, - lazy: true - }); - } - - me._bufferedRender = false; - me._bufferedRequest = null; - - return me; - }, - - /** - * Handle an event - * @private - * @param {IEvent} event the event to handle - * @return {boolean} true if the chart needs to re-render - */ - handleEvent: function(e) { - var me = this; - var options = me.options || {}; - var hoverOptions = options.hover; - var changed = false; - - me.lastActive = me.lastActive || []; - - // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me.active = []; - } else { - me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); - } - - // Invoke onHover hook - // Need to call with native event here to not break backwards compatibility - helpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); - - if (e.type === 'mouseup' || e.type === 'click') { - if (options.onClick) { - // Use e.native here for backwards compatibility - options.onClick.call(me, e.native, me.active); - } - } - - // Remove styling for last active (even if it may still be active) - if (me.lastActive.length) { - me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); - } - - // Built in hover styling - if (me.active.length && hoverOptions.mode) { - me.updateHoverStyle(me.active, hoverOptions.mode, true); - } - - changed = !helpers$1.arrayEquals(me.active, me.lastActive); - - // Remember Last Actives - me.lastActive = me.active; - - return changed; - } -}); - -/** - * NOTE(SB) We actually don't use this container anymore but we need to keep it - * for backward compatibility. Though, it can still be useful for plugins that - * would need to work on multiple charts?! - */ -Chart.instances = {}; - -var core_controller = Chart; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart instead. - * @class Chart.Controller - * @deprecated since version 2.6 - * @todo remove at version 3 - * @private - */ -Chart.Controller = Chart; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart - * @deprecated since version 2.8 - * @todo remove at version 3 - * @private - */ -Chart.types = {}; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.helpers.configMerge - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -helpers$1.configMerge = mergeConfig; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.helpers.scaleMerge - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -helpers$1.scaleMerge = mergeScaleConfig; - -var core_helpers = function() { - - // -- Basic js utility methods - - helpers$1.where = function(collection, filterCallback) { - if (helpers$1.isArray(collection) && Array.prototype.filter) { - return collection.filter(filterCallback); - } - var filtered = []; - - helpers$1.each(collection, function(item) { - if (filterCallback(item)) { - filtered.push(item); - } - }); - - return filtered; - }; - helpers$1.findIndex = Array.prototype.findIndex ? - function(array, callback, scope) { - return array.findIndex(callback, scope); - } : - function(array, callback, scope) { - scope = scope === undefined ? array : scope; - for (var i = 0, ilen = array.length; i < ilen; ++i) { - if (callback.call(scope, array[i], i, array)) { - return i; - } - } - return -1; - }; - helpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to start of the array - if (helpers$1.isNullOrUndef(startIndex)) { - startIndex = -1; - } - for (var i = startIndex + 1; i < arrayToSearch.length; i++) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; - helpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to end of the array - if (helpers$1.isNullOrUndef(startIndex)) { - startIndex = arrayToSearch.length; - } - for (var i = startIndex - 1; i >= 0; i--) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; - } - } - }; - - // -- Math methods - helpers$1.isNumber = function(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - }; - helpers$1.almostEquals = function(x, y, epsilon) { - return Math.abs(x - y) < epsilon; - }; - helpers$1.almostWhole = function(x, epsilon) { - var rounded = Math.round(x); - return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); - }; - helpers$1.max = function(array) { - return array.reduce(function(max, value) { - if (!isNaN(value)) { - return Math.max(max, value); - } - return max; - }, Number.NEGATIVE_INFINITY); - }; - helpers$1.min = function(array) { - return array.reduce(function(min, value) { - if (!isNaN(value)) { - return Math.min(min, value); - } - return min; - }, Number.POSITIVE_INFINITY); - }; - helpers$1.sign = Math.sign ? - function(x) { - return Math.sign(x); - } : - function(x) { - x = +x; // convert to a number - if (x === 0 || isNaN(x)) { - return x; - } - return x > 0 ? 1 : -1; - }; - helpers$1.log10 = Math.log10 ? - function(x) { - return Math.log10(x); - } : - function(x) { - var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. - // Check for whole powers of 10, - // which due to floating point rounding error should be corrected. - var powerOf10 = Math.round(exponent); - var isPowerOf10 = x === Math.pow(10, powerOf10); - - return isPowerOf10 ? powerOf10 : exponent; - }; - helpers$1.toRadians = function(degrees) { - return degrees * (Math.PI / 180); - }; - helpers$1.toDegrees = function(radians) { - return radians * (180 / Math.PI); - }; - - /** - * Returns the number of decimal places - * i.e. the number of digits after the decimal point, of the value of this Number. - * @param {number} x - A number. - * @returns {number} The number of decimal places. - * @private - */ - helpers$1._decimalPlaces = function(x) { - if (!helpers$1.isFinite(x)) { - return; - } - var e = 1; - var p = 0; - while (Math.round(x * e) / e !== x) { - e *= 10; - p++; - } - return p; - }; - - // Gets the angle from vertical upright to the point about a centre. - helpers$1.getAngleFromPoint = function(centrePoint, anglePoint) { - var distanceFromXCenter = anglePoint.x - centrePoint.x; - var distanceFromYCenter = anglePoint.y - centrePoint.y; - var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - - var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); - - if (angle < (-0.5 * Math.PI)) { - angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] - } - - return { - angle: angle, - distance: radialDistanceFromCenter - }; - }; - helpers$1.distanceBetweenPoints = function(pt1, pt2) { - return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); - }; - - /** - * Provided for backward compatibility, not available anymore - * @function Chart.helpers.aliasPixel - * @deprecated since version 2.8.0 - * @todo remove at version 3 - */ - helpers$1.aliasPixel = function(pixelWidth) { - return (pixelWidth % 2 === 0) ? 0 : 0.5; - }; - - /** - * Returns the aligned pixel value to avoid anti-aliasing blur - * @param {Chart} chart - The chart instance. - * @param {number} pixel - A pixel value. - * @param {number} width - The width of the element. - * @returns {number} The aligned pixel value. - * @private - */ - helpers$1._alignPixel = function(chart, pixel, width) { - var devicePixelRatio = chart.currentDevicePixelRatio; - var halfWidth = width / 2; - return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; - }; - - helpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { - // Props to Rob Spencer at scaled innovation for his post on splining between points - // http://scaledinnovation.com/analytics/splines/aboutSplines.html - - // This function must also respect "skipped" points - - var previous = firstPoint.skip ? middlePoint : firstPoint; - var current = middlePoint; - var next = afterPoint.skip ? middlePoint : afterPoint; - - var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); - var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); - - var s01 = d01 / (d01 + d12); - var s12 = d12 / (d01 + d12); - - // If all points are the same, s01 & s02 will be inf - s01 = isNaN(s01) ? 0 : s01; - s12 = isNaN(s12) ? 0 : s12; - - var fa = t * s01; // scaling factor for triangle Ta - var fb = t * s12; - - return { - previous: { - x: current.x - fa * (next.x - previous.x), - y: current.y - fa * (next.y - previous.y) - }, - next: { - x: current.x + fb * (next.x - previous.x), - y: current.y + fb * (next.y - previous.y) - } - }; - }; - helpers$1.EPSILON = Number.EPSILON || 1e-14; - helpers$1.splineCurveMonotone = function(points) { - // This function calculates Bézier control points in a similar way than |splineCurve|, - // but preserves monotonicity of the provided data and ensures no local extremums are added - // between the dataset discrete points due to the interpolation. - // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation - - var pointsWithTangents = (points || []).map(function(point) { - return { - model: point._model, - deltaK: 0, - mK: 0 - }; - }); - - // Calculate slopes (deltaK) and initialize tangents (mK) - var pointsLen = pointsWithTangents.length; - var i, pointBefore, pointCurrent, pointAfter; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } - - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointAfter && !pointAfter.model.skip) { - var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); - - // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 - pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; - } - - if (!pointBefore || pointBefore.model.skip) { - pointCurrent.mK = pointCurrent.deltaK; - } else if (!pointAfter || pointAfter.model.skip) { - pointCurrent.mK = pointBefore.deltaK; - } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { - pointCurrent.mK = 0; - } else { - pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; - } - } - - // Adjust tangents to ensure monotonic properties - var alphaK, betaK, tauK, squaredMagnitude; - for (i = 0; i < pointsLen - 1; ++i) { - pointCurrent = pointsWithTangents[i]; - pointAfter = pointsWithTangents[i + 1]; - if (pointCurrent.model.skip || pointAfter.model.skip) { - continue; - } - - if (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { - pointCurrent.mK = pointAfter.mK = 0; - continue; - } - - alphaK = pointCurrent.mK / pointCurrent.deltaK; - betaK = pointAfter.mK / pointCurrent.deltaK; - squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); - if (squaredMagnitude <= 9) { - continue; - } - - tauK = 3 / Math.sqrt(squaredMagnitude); - pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; - pointAfter.mK = betaK * tauK * pointCurrent.deltaK; - } - - // Compute control points - var deltaX; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } - - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointBefore && !pointBefore.model.skip) { - deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; - pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; - pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; - } - if (pointAfter && !pointAfter.model.skip) { - deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; - pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; - pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; - } - } - }; - helpers$1.nextItem = function(collection, index, loop) { - if (loop) { - return index >= collection.length - 1 ? collection[0] : collection[index + 1]; - } - return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; - }; - helpers$1.previousItem = function(collection, index, loop) { - if (loop) { - return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; - } - return index <= 0 ? collection[0] : collection[index - 1]; - }; - // Implementation of the nice number algorithm used in determining where axis labels will go - helpers$1.niceNum = function(range, round) { - var exponent = Math.floor(helpers$1.log10(range)); - var fraction = range / Math.pow(10, exponent); - var niceFraction; - - if (round) { - if (fraction < 1.5) { - niceFraction = 1; - } else if (fraction < 3) { - niceFraction = 2; - } else if (fraction < 7) { - niceFraction = 5; - } else { - niceFraction = 10; - } - } else if (fraction <= 1.0) { - niceFraction = 1; - } else if (fraction <= 2) { - niceFraction = 2; - } else if (fraction <= 5) { - niceFraction = 5; - } else { - niceFraction = 10; - } - - return niceFraction * Math.pow(10, exponent); - }; - // Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ - helpers$1.requestAnimFrame = (function() { - if (typeof window === 'undefined') { - return function(callback) { - callback(); - }; - } - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { - return window.setTimeout(callback, 1000 / 60); - }; - }()); - // -- DOM methods - helpers$1.getRelativePosition = function(evt, chart) { - var mouseX, mouseY; - var e = evt.originalEvent || evt; - var canvas = evt.target || evt.srcElement; - var boundingRect = canvas.getBoundingClientRect(); - - var touches = e.touches; - if (touches && touches.length > 0) { - mouseX = touches[0].clientX; - mouseY = touches[0].clientY; - - } else { - mouseX = e.clientX; - mouseY = e.clientY; - } - - // Scale mouse coordinates into canvas coordinates - // by following the pattern laid out by 'jerryj' in the comments of - // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ - var paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left')); - var paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top')); - var paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right')); - var paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom')); - var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; - var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; - - // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However - // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here - mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); - mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); - - return { - x: mouseX, - y: mouseY - }; - - }; - - // Private helper function to convert max-width/max-height values that may be percentages into a number - function parseMaxStyle(styleValue, node, parentProperty) { - var valueInPixels; - if (typeof styleValue === 'string') { - valueInPixels = parseInt(styleValue, 10); - - if (styleValue.indexOf('%') !== -1) { - // percentage * size in dimension - valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; - } - } else { - valueInPixels = styleValue; - } - - return valueInPixels; - } - - /** - * Returns if the given value contains an effective constraint. - * @private - */ - function isConstrainedValue(value) { - return value !== undefined && value !== null && value !== 'none'; - } - - /** - * Returns the max width or height of the given DOM node in a cross-browser compatible fashion - * @param {HTMLElement} domNode - the node to check the constraint on - * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height') - * @param {string} percentageProperty - property of parent to use when calculating width as a percentage - * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser} - */ - function getConstraintDimension(domNode, maxStyle, percentageProperty) { - var view = document.defaultView; - var parentNode = helpers$1._getParentNode(domNode); - var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; - var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; - var hasCNode = isConstrainedValue(constrainedNode); - var hasCContainer = isConstrainedValue(constrainedContainer); - var infinity = Number.POSITIVE_INFINITY; - - if (hasCNode || hasCContainer) { - return Math.min( - hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, - hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); - } - - return 'none'; - } - // returns Number or undefined if no constraint - helpers$1.getConstraintWidth = function(domNode) { - return getConstraintDimension(domNode, 'max-width', 'clientWidth'); - }; - // returns Number or undefined if no constraint - helpers$1.getConstraintHeight = function(domNode) { - return getConstraintDimension(domNode, 'max-height', 'clientHeight'); - }; - /** - * @private - */ - helpers$1._calculatePadding = function(container, padding, parentDimension) { - padding = helpers$1.getStyle(container, padding); - - return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10); - }; - /** - * @private - */ - helpers$1._getParentNode = function(domNode) { - var parent = domNode.parentNode; - if (parent && parent.toString() === '[object ShadowRoot]') { - parent = parent.host; - } - return parent; - }; - helpers$1.getMaximumWidth = function(domNode) { - var container = helpers$1._getParentNode(domNode); - if (!container) { - return domNode.clientWidth; - } - - var clientWidth = container.clientWidth; - var paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth); - var paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth); - - var w = clientWidth - paddingLeft - paddingRight; - var cw = helpers$1.getConstraintWidth(domNode); - return isNaN(cw) ? w : Math.min(w, cw); - }; - helpers$1.getMaximumHeight = function(domNode) { - var container = helpers$1._getParentNode(domNode); - if (!container) { - return domNode.clientHeight; - } - - var clientHeight = container.clientHeight; - var paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight); - var paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight); - - var h = clientHeight - paddingTop - paddingBottom; - var ch = helpers$1.getConstraintHeight(domNode); - return isNaN(ch) ? h : Math.min(h, ch); - }; - helpers$1.getStyle = function(el, property) { - return el.currentStyle ? - el.currentStyle[property] : - document.defaultView.getComputedStyle(el, null).getPropertyValue(property); - }; - helpers$1.retinaScale = function(chart, forceRatio) { - var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; - if (pixelRatio === 1) { - return; - } - - var canvas = chart.canvas; - var height = chart.height; - var width = chart.width; - - canvas.height = height * pixelRatio; - canvas.width = width * pixelRatio; - chart.ctx.scale(pixelRatio, pixelRatio); - - // If no style has been set on the canvas, the render size is used as display size, - // making the chart visually bigger, so let's enforce it to the "correct" values. - // See https://github.com/chartjs/Chart.js/issues/3575 - if (!canvas.style.height && !canvas.style.width) { - canvas.style.height = height + 'px'; - canvas.style.width = width + 'px'; - } - }; - // -- Canvas methods - helpers$1.fontString = function(pixelSize, fontStyle, fontFamily) { - return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; - }; - helpers$1.longestText = function(ctx, font, arrayOfThings, cache) { - cache = cache || {}; - var data = cache.data = cache.data || {}; - var gc = cache.garbageCollect = cache.garbageCollect || []; - - if (cache.font !== font) { - data = cache.data = {}; - gc = cache.garbageCollect = []; - cache.font = font; - } - - ctx.font = font; - var longest = 0; - helpers$1.each(arrayOfThings, function(thing) { - // Undefined strings and arrays should not be measured - if (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) { - longest = helpers$1.measureText(ctx, data, gc, longest, thing); - } else if (helpers$1.isArray(thing)) { - // if it is an array lets measure each element - // to do maybe simplify this function a bit so we can do this more recursively? - helpers$1.each(thing, function(nestedThing) { - // Undefined strings and arrays should not be measured - if (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) { - longest = helpers$1.measureText(ctx, data, gc, longest, nestedThing); - } - }); - } - }); - - var gcLen = gc.length / 2; - if (gcLen > arrayOfThings.length) { - for (var i = 0; i < gcLen; i++) { - delete data[gc[i]]; - } - gc.splice(0, gcLen); - } - return longest; - }; - helpers$1.measureText = function(ctx, data, gc, longest, string) { - var textWidth = data[string]; - if (!textWidth) { - textWidth = data[string] = ctx.measureText(string).width; - gc.push(string); - } - if (textWidth > longest) { - longest = textWidth; - } - return longest; - }; - helpers$1.numberOfLabelLines = function(arrayOfThings) { - var numberOfLines = 1; - helpers$1.each(arrayOfThings, function(thing) { - if (helpers$1.isArray(thing)) { - if (thing.length > numberOfLines) { - numberOfLines = thing.length; - } - } - }); - return numberOfLines; - }; - - helpers$1.color = !chartjsColor ? - function(value) { - console.error('Color.js not found!'); - return value; - } : - function(value) { - /* global CanvasGradient */ - if (value instanceof CanvasGradient) { - value = core_defaults.global.defaultColor; - } - - return chartjsColor(value); - }; - - helpers$1.getHoverColor = function(colorValue) { - /* global CanvasPattern */ - return (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ? - colorValue : - helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString(); - }; -}; - -function abstract() { - throw new Error( - 'This method is not implemented: either no adapter can ' + - 'be found or an incomplete integration was provided.' - ); -} - -/** - * Date adapter (current used by the time scale) - * @namespace Chart._adapters._date - * @memberof Chart._adapters - * @private - */ - -/** - * Currently supported unit string values. - * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')} - * @memberof Chart._adapters._date - * @name Unit - */ - -/** - * @class - */ -function DateAdapter(options) { - this.options = options || {}; -} - -helpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ { - /** - * Returns a map of time formats for the supported formatting units defined - * in Unit as well as 'datetime' representing a detailed date/time string. - * @returns {{string: string}} - */ - formats: abstract, - - /** - * Parses the given `value` and return the associated timestamp. - * @param {any} value - the value to parse (usually comes from the data) - * @param {string} [format] - the expected data format - * @returns {(number|null)} - * @function - */ - parse: abstract, - - /** - * Returns the formatted date in the specified `format` for a given `timestamp`. - * @param {number} timestamp - the timestamp to format - * @param {string} format - the date/time token - * @return {string} - * @function - */ - format: abstract, - - /** - * Adds the specified `amount` of `unit` to the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {number} amount - the amount to add - * @param {Unit} unit - the unit as string - * @return {number} - * @function - */ - add: abstract, - - /** - * Returns the number of `unit` between the given timestamps. - * @param {number} max - the input timestamp (reference) - * @param {number} min - the timestamp to substract - * @param {Unit} unit - the unit as string - * @return {number} - * @function - */ - diff: abstract, - - /** - * Returns start of `unit` for the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {Unit} unit - the unit as string - * @param {number} [weekday] - the ISO day of the week with 1 being Monday - * and 7 being Sunday (only needed if param *unit* is `isoWeek`). - * @function - */ - startOf: abstract, - - /** - * Returns end of `unit` for the given `timestamp`. - * @param {number} timestamp - the input timestamp - * @param {Unit} unit - the unit as string - * @function - */ - endOf: abstract, - - // DEPRECATIONS - - /** - * Provided for backward compatibility for scale.getValueForPixel(), - * this method should be overridden only by the moment adapter. - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ - _create: function(value) { - return value; - } -}); - -DateAdapter.override = function(members) { - helpers$1.extend(DateAdapter.prototype, members); -}; - -var _date = DateAdapter; - -var core_adapters = { - _date: _date -}; - -/** - * Namespace to hold static tick generation functions - * @namespace Chart.Ticks - */ -var core_ticks = { - /** - * Namespace to hold formatters for different types of ticks - * @namespace Chart.Ticks.formatters - */ - formatters: { - /** - * Formatter for value labels - * @method Chart.Ticks.formatters.values - * @param value the value to display - * @return {string|string[]} the label to display - */ - values: function(value) { - return helpers$1.isArray(value) ? value : '' + value; - }, - - /** - * Formatter for linear numeric ticks - * @method Chart.Ticks.formatters.linear - * @param tickValue {number} the value to be formatted - * @param index {number} the position of the tickValue parameter in the ticks array - * @param ticks {number[]} the list of ticks being converted - * @return {string} string representation of the tickValue parameter - */ - linear: function(tickValue, index, ticks) { - // If we have lots of ticks, don't use the ones - var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; - - // If we have a number like 2.5 as the delta, figure out how many decimal places we need - if (Math.abs(delta) > 1) { - if (tickValue !== Math.floor(tickValue)) { - // not an integer - delta = tickValue - Math.floor(tickValue); - } - } - - var logDelta = helpers$1.log10(Math.abs(delta)); - var tickString = ''; - - if (tickValue !== 0) { - var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); - if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation - var logTick = helpers$1.log10(Math.abs(tickValue)); - tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); - } else { - var numDecimal = -1 * Math.floor(logDelta); - numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places - tickString = tickValue.toFixed(numDecimal); - } - } else { - tickString = '0'; // never show decimal places for 0 - } - - return tickString; - }, - - logarithmic: function(tickValue, index, ticks) { - var remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue)))); - - if (tickValue === 0) { - return '0'; - } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { - return tickValue.toExponential(); - } - return ''; - } - } -}; - -var valueOrDefault$9 = helpers$1.valueOrDefault; -var valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault; - -core_defaults._set('scale', { - display: true, - position: 'left', - offset: false, - - // grid line settings - gridLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - drawBorder: true, - drawOnChartArea: true, - drawTicks: true, - tickMarkLength: 10, - zeroLineWidth: 1, - zeroLineColor: 'rgba(0,0,0,0.25)', - zeroLineBorderDash: [], - zeroLineBorderDashOffset: 0.0, - offsetGridLines: false, - borderDash: [], - borderDashOffset: 0.0 - }, - - // scale label - scaleLabel: { - // display property - display: false, - - // actual label - labelString: '', - - // top/bottom padding - padding: { - top: 4, - bottom: 4 - } - }, - - // label settings - ticks: { - beginAtZero: false, - minRotation: 0, - maxRotation: 50, - mirror: false, - padding: 0, - reverse: false, - display: true, - autoSkip: true, - autoSkipPadding: 0, - labelOffset: 0, - // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. - callback: core_ticks.formatters.values, - minor: {}, - major: {} - } -}); - -function labelsFromTicks(ticks) { - var labels = []; - var i, ilen; - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(ticks[i].label); - } - - return labels; -} - -function getPixelForGridLine(scale, index, offsetGridLines) { - var lineValue = scale.getPixelForTick(index); - - if (offsetGridLines) { - if (scale.getTicks().length === 1) { - lineValue -= scale.isHorizontal() ? - Math.max(lineValue - scale.left, scale.right - lineValue) : - Math.max(lineValue - scale.top, scale.bottom - lineValue); - } else if (index === 0) { - lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; - } else { - lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; - } - } - return lineValue; -} - -function computeTextSize(context, tick, font) { - return helpers$1.isArray(tick) ? - helpers$1.longestText(context, font, tick) : - context.measureText(tick).width; -} - -var core_scale = core_element.extend({ - /** - * Get the padding needed for the scale - * @method getPadding - * @private - * @returns {Padding} the necessary padding - */ - getPadding: function() { - var me = this; - return { - left: me.paddingLeft || 0, - top: me.paddingTop || 0, - right: me.paddingRight || 0, - bottom: me.paddingBottom || 0 - }; - }, - - /** - * Returns the scale tick objects ({label, major}) - * @since 2.7 - */ - getTicks: function() { - return this._ticks; - }, - - // These methods are ordered by lifecyle. Utilities then follow. - // Any function defined here is inherited by all scale types. - // Any function can be extended by the scale type - - mergeTicksOptions: function() { - var ticks = this.options.ticks; - if (ticks.minor === false) { - ticks.minor = { - display: false - }; - } - if (ticks.major === false) { - ticks.major = { - display: false - }; - } - for (var key in ticks) { - if (key !== 'major' && key !== 'minor') { - if (typeof ticks.minor[key] === 'undefined') { - ticks.minor[key] = ticks[key]; - } - if (typeof ticks.major[key] === 'undefined') { - ticks.major[key] = ticks[key]; - } - } - } - }, - beforeUpdate: function() { - helpers$1.callback(this.options.beforeUpdate, [this]); - }, - - update: function(maxWidth, maxHeight, margins) { - var me = this; - var i, ilen, labels, label, ticks, tick; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = helpers$1.extend({ - left: 0, - right: 0, - top: 0, - bottom: 0 - }, margins); - - me._maxLabelLines = 0; - me.longestLabelWidth = 0; - me.longestTextCache = me.longestTextCache || {}; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - - // Data min/max - me.beforeDataLimits(); - me.determineDataLimits(); - me.afterDataLimits(); - - // Ticks - `this.ticks` is now DEPRECATED! - // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member - // and must not be accessed directly from outside this class. `this.ticks` being - // around for long time and not marked as private, we can't change its structure - // without unexpected breaking changes. If you need to access the scale ticks, - // use scale.getTicks() instead. - - me.beforeBuildTicks(); - - // New implementations should return an array of objects but for BACKWARD COMPAT, - // we still support no return (`this.ticks` internally set by calling this method). - ticks = me.buildTicks() || []; - - // Allow modification of ticks in callback. - ticks = me.afterBuildTicks(ticks) || ticks; - - me.beforeTickToLabelConversion(); - - // New implementations should return the formatted tick labels but for BACKWARD - // COMPAT, we still support no return (`this.ticks` internally changed by calling - // this method and supposed to contain only string values). - labels = me.convertTicksToLabels(ticks) || me.ticks; - - me.afterTickToLabelConversion(); - - me.ticks = labels; // BACKWARD COMPATIBILITY - - // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! - - // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) - for (i = 0, ilen = labels.length; i < ilen; ++i) { - label = labels[i]; - tick = ticks[i]; - if (!tick) { - ticks.push(tick = { - label: label, - major: false - }); - } else { - tick.label = label; - } - } - - me._ticks = ticks; - - // Tick Rotation - me.beforeCalculateTickRotation(); - me.calculateTickRotation(); - me.afterCalculateTickRotation(); - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - - }, - afterUpdate: function() { - helpers$1.callback(this.options.afterUpdate, [this]); - }, - - // - - beforeSetDimensions: function() { - helpers$1.callback(this.options.beforeSetDimensions, [this]); - }, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - }, - afterSetDimensions: function() { - helpers$1.callback(this.options.afterSetDimensions, [this]); - }, - - // Data limits - beforeDataLimits: function() { - helpers$1.callback(this.options.beforeDataLimits, [this]); - }, - determineDataLimits: helpers$1.noop, - afterDataLimits: function() { - helpers$1.callback(this.options.afterDataLimits, [this]); - }, - - // - beforeBuildTicks: function() { - helpers$1.callback(this.options.beforeBuildTicks, [this]); - }, - buildTicks: helpers$1.noop, - afterBuildTicks: function(ticks) { - var me = this; - // ticks is empty for old axis implementations here - if (helpers$1.isArray(ticks) && ticks.length) { - return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]); - } - // Support old implementations (that modified `this.ticks` directly in buildTicks) - me.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks; - return ticks; - }, - - beforeTickToLabelConversion: function() { - helpers$1.callback(this.options.beforeTickToLabelConversion, [this]); - }, - convertTicksToLabels: function() { - var me = this; - // Convert ticks to strings - var tickOpts = me.options.ticks; - me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); - }, - afterTickToLabelConversion: function() { - helpers$1.callback(this.options.afterTickToLabelConversion, [this]); - }, - - // - - beforeCalculateTickRotation: function() { - helpers$1.callback(this.options.beforeCalculateTickRotation, [this]); - }, - calculateTickRotation: function() { - var me = this; - var context = me.ctx; - var tickOpts = me.options.ticks; - var labels = labelsFromTicks(me._ticks); - - // Get the width of each grid by calculating the difference - // between x offsets between 0 and 1. - var tickFont = helpers$1.options._parseFont(tickOpts); - context.font = tickFont.string; - - var labelRotation = tickOpts.minRotation || 0; - - if (labels.length && me.options.display && me.isHorizontal()) { - var originalLabelWidth = helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache); - var labelWidth = originalLabelWidth; - var cosRotation, sinRotation; - - // Allow 3 pixels x2 padding either side for label readability - var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; - - // Max label rotation can be set or default to 90 - also act as a loop counter - while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { - var angleRadians = helpers$1.toRadians(labelRotation); - cosRotation = Math.cos(angleRadians); - sinRotation = Math.sin(angleRadians); - - if (sinRotation * originalLabelWidth > me.maxHeight) { - // go back one step - labelRotation--; - break; - } - - labelRotation++; - labelWidth = cosRotation * originalLabelWidth; - } - } - - me.labelRotation = labelRotation; - }, - afterCalculateTickRotation: function() { - helpers$1.callback(this.options.afterCalculateTickRotation, [this]); - }, - - // - - beforeFit: function() { - helpers$1.callback(this.options.beforeFit, [this]); - }, - fit: function() { - var me = this; - // Reset - var minSize = me.minSize = { - width: 0, - height: 0 - }; - - var labels = labelsFromTicks(me._ticks); - - var opts = me.options; - var tickOpts = opts.ticks; - var scaleLabelOpts = opts.scaleLabel; - var gridLineOpts = opts.gridLines; - var display = me._isVisible(); - var position = opts.position; - var isHorizontal = me.isHorizontal(); - - var parseFont = helpers$1.options._parseFont; - var tickFont = parseFont(tickOpts); - var tickMarkLength = opts.gridLines.tickMarkLength; - - // Width - if (isHorizontal) { - // subtract the margins to line up with the chartArea if we are a full width scale - minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; - } else { - minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } - - // height - if (isHorizontal) { - minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } else { - minSize.height = me.maxHeight; // fill all the height - } - - // Are we showing a title for the scale? - if (scaleLabelOpts.display && display) { - var scaleLabelFont = parseFont(scaleLabelOpts); - var scaleLabelPadding = helpers$1.options.toPadding(scaleLabelOpts.padding); - var deltaHeight = scaleLabelFont.lineHeight + scaleLabelPadding.height; - - if (isHorizontal) { - minSize.height += deltaHeight; - } else { - minSize.width += deltaHeight; - } - } - - // Don't bother fitting the ticks if we are not showing the labels - if (tickOpts.display && display) { - var largestTextWidth = helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache); - var tallestLabelHeightInLines = helpers$1.numberOfLabelLines(labels); - var lineSpace = tickFont.size * 0.5; - var tickPadding = me.options.ticks.padding; - - // Store max number of lines and widest label for _autoSkip - me._maxLabelLines = tallestLabelHeightInLines; - me.longestLabelWidth = largestTextWidth; - - if (isHorizontal) { - var angleRadians = helpers$1.toRadians(me.labelRotation); - var cosRotation = Math.cos(angleRadians); - var sinRotation = Math.sin(angleRadians); - - // TODO - improve this calculation - var labelHeight = (sinRotation * largestTextWidth) - + (tickFont.lineHeight * tallestLabelHeightInLines) - + lineSpace; // padding - - minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); - - me.ctx.font = tickFont.string; - var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.string); - var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string); - var offsetLeft = me.getPixelForTick(0) - me.left; - var offsetRight = me.right - me.getPixelForTick(labels.length - 1); - var paddingLeft, paddingRight; - - // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned - // which means that the right padding is dominated by the font height - if (me.labelRotation !== 0) { - paddingLeft = position === 'bottom' ? (cosRotation * firstLabelWidth) : (cosRotation * lineSpace); - paddingRight = position === 'bottom' ? (cosRotation * lineSpace) : (cosRotation * lastLabelWidth); - } else { - paddingLeft = firstLabelWidth / 2; - paddingRight = lastLabelWidth / 2; - } - me.paddingLeft = Math.max(paddingLeft - offsetLeft, 0) + 3; // add 3 px to move away from canvas edges - me.paddingRight = Math.max(paddingRight - offsetRight, 0) + 3; - } else { - // A vertical axis is more constrained by the width. Labels are the - // dominant factor here, so get that length first and account for padding - if (tickOpts.mirror) { - largestTextWidth = 0; - } else { - // use lineSpace for consistency with horizontal axis - // tickPadding is not implemented for horizontal - largestTextWidth += tickPadding + lineSpace; - } - - minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); - - me.paddingTop = tickFont.size / 2; - me.paddingBottom = tickFont.size / 2; - } - } - - me.handleMargins(); - - me.width = minSize.width; - me.height = minSize.height; - }, - - /** - * Handle margins and padding interactions - * @private - */ - handleMargins: function() { - var me = this; - if (me.margins) { - me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); - me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); - me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); - me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); - } - }, - - afterFit: function() { - helpers$1.callback(this.options.afterFit, [this]); - }, - - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - isFullWidth: function() { - return (this.options.fullWidth); - }, - - // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not - getRightValue: function(rawValue) { - // Null and undefined values first - if (helpers$1.isNullOrUndef(rawValue)) { - return NaN; - } - // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values - if ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) { - return NaN; - } - // If it is in fact an object, dive in one more level - if (rawValue) { - if (this.isHorizontal()) { - if (rawValue.x !== undefined) { - return this.getRightValue(rawValue.x); - } - } else if (rawValue.y !== undefined) { - return this.getRightValue(rawValue.y); - } - } - - // Value is good, return it - return rawValue; - }, - - /** - * Used to get the value to display in the tooltip for the data at the given index - * @param index - * @param datasetIndex - */ - getLabelForIndex: helpers$1.noop, - - /** - * Returns the location of the given data point. Value can either be an index or a numerical value - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param value - * @param index - * @param datasetIndex - */ - getPixelForValue: helpers$1.noop, - - /** - * Used to get the data value from a given pixel. This is the inverse of getPixelForValue - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param pixel - */ - getValueForPixel: helpers$1.noop, - - /** - * Returns the location of the tick at the given index - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForTick: function(index) { - var me = this; - var offset = me.options.offset; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var pixel = (tickWidth * index) + me.paddingLeft; - - if (offset) { - pixel += tickWidth / 2; - } - - var finalVal = me.left + pixel; - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - var innerHeight = me.height - (me.paddingTop + me.paddingBottom); - return me.top + (index * (innerHeight / (me._ticks.length - 1))); - }, - - /** - * Utility for getting the pixel location of a percentage of scale - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getPixelForDecimal: function(decimal) { - var me = this; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var valueOffset = (innerWidth * decimal) + me.paddingLeft; - - var finalVal = me.left + valueOffset; - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - return me.top + (decimal * me.height); - }, - - /** - * Returns the pixel for the minimum chart value - * The coordinate (0, 0) is at the upper-left corner of the canvas - */ - getBasePixel: function() { - return this.getPixelForValue(this.getBaseValue()); - }, - - getBaseValue: function() { - var me = this; - var min = me.min; - var max = me.max; - - return me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0; - }, - - /** - * Returns a subset of ticks to be plotted to avoid overlapping labels. - * @private - */ - _autoSkip: function(ticks) { - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - var tickCount = ticks.length; - var skipRatio = false; - var maxTicks = optionTicks.maxTicksLimit; - - // Total space needed to display all ticks. First and last ticks are - // drawn as their center at end of axis, so tickCount-1 - var ticksLength = me._tickSize() * (tickCount - 1); - - // Axis length - var axisLength = isHorizontal - ? me.width - (me.paddingLeft + me.paddingRight) - : me.height - (me.paddingTop + me.PaddingBottom); - - var result = []; - var i, tick; - - if (ticksLength > axisLength) { - skipRatio = 1 + Math.floor(ticksLength / axisLength); - } - - // if they defined a max number of optionTicks, - // increase skipRatio until that number is met - if (tickCount > maxTicks) { - skipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks)); - } - - for (i = 0; i < tickCount; i++) { - tick = ticks[i]; - - if (skipRatio > 1 && i % skipRatio > 0) { - // leave tick in place but make sure it's not displayed (#4635) - delete tick.label; - } - result.push(tick); - } - return result; - }, - - /** - * @private - */ - _tickSize: function() { - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - - // Calculate space needed by label in axis direction. - var rot = helpers$1.toRadians(me.labelRotation); - var cos = Math.abs(Math.cos(rot)); - var sin = Math.abs(Math.sin(rot)); - - var padding = optionTicks.autoSkipPadding || 0; - var w = (me.longestLabelWidth + padding) || 0; - - var tickFont = helpers$1.options._parseFont(optionTicks); - var h = (me._maxLabelLines * tickFont.lineHeight + padding) || 0; - - // Calculate space needed for 1 tick in axis direction. - return isHorizontal - ? h * cos > w * sin ? w / cos : h / sin - : h * sin < w * cos ? h / cos : w / sin; - }, - - /** - * @private - */ - _isVisible: function() { - var me = this; - var chart = me.chart; - var display = me.options.display; - var i, ilen, meta; - - if (display !== 'auto') { - return !!display; - } - - // When 'auto', the scale is visible if at least one associated dataset is visible. - for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - meta = chart.getDatasetMeta(i); - if (meta.xAxisID === me.id || meta.yAxisID === me.id) { - return true; - } - } - } - - return false; - }, - - /** - * Actually draw the scale on the canvas - * @param {object} chartArea - the area of the chart to draw full grid lines on - */ - draw: function(chartArea) { - var me = this; - var options = me.options; - - if (!me._isVisible()) { - return; - } - - var chart = me.chart; - var context = me.ctx; - var globalDefaults = core_defaults.global; - var defaultFontColor = globalDefaults.defaultFontColor; - var optionTicks = options.ticks.minor; - var optionMajorTicks = options.ticks.major || optionTicks; - var gridLines = options.gridLines; - var scaleLabel = options.scaleLabel; - var position = options.position; - - var isRotated = me.labelRotation !== 0; - var isMirrored = optionTicks.mirror; - var isHorizontal = me.isHorizontal(); - - var parseFont = helpers$1.options._parseFont; - var ticks = optionTicks.display && optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); - var tickFontColor = valueOrDefault$9(optionTicks.fontColor, defaultFontColor); - var tickFont = parseFont(optionTicks); - var lineHeight = tickFont.lineHeight; - var majorTickFontColor = valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor); - var majorTickFont = parseFont(optionMajorTicks); - var tickPadding = optionTicks.padding; - var labelOffset = optionTicks.labelOffset; - - var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; - - var scaleLabelFontColor = valueOrDefault$9(scaleLabel.fontColor, defaultFontColor); - var scaleLabelFont = parseFont(scaleLabel); - var scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding); - var labelRotationRadians = helpers$1.toRadians(me.labelRotation); - - var itemsToDraw = []; - - var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0; - var alignPixel = helpers$1._alignPixel; - var borderValue, tickStart, tickEnd; - - if (position === 'top') { - borderValue = alignPixel(chart, me.bottom, axisWidth); - tickStart = me.bottom - tl; - tickEnd = borderValue - axisWidth / 2; - } else if (position === 'bottom') { - borderValue = alignPixel(chart, me.top, axisWidth); - tickStart = borderValue + axisWidth / 2; - tickEnd = me.top + tl; - } else if (position === 'left') { - borderValue = alignPixel(chart, me.right, axisWidth); - tickStart = me.right - tl; - tickEnd = borderValue - axisWidth / 2; - } else { - borderValue = alignPixel(chart, me.left, axisWidth); - tickStart = borderValue + axisWidth / 2; - tickEnd = me.left + tl; - } - - var epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error. - - helpers$1.each(ticks, function(tick, index) { - // autoskipper skipped this tick (#4635) - if (helpers$1.isNullOrUndef(tick.label)) { - return; - } - - var label = tick.label; - var lineWidth, lineColor, borderDash, borderDashOffset; - if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { - // Draw the first index specially - lineWidth = gridLines.zeroLineWidth; - lineColor = gridLines.zeroLineColor; - borderDash = gridLines.zeroLineBorderDash || []; - borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0; - } else { - lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index); - lineColor = valueAtIndexOrDefault(gridLines.color, index); - borderDash = gridLines.borderDash || []; - borderDashOffset = gridLines.borderDashOffset || 0.0; - } - - // Common properties - var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign; - var labelCount = helpers$1.isArray(label) ? label.length : 1; - var lineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines); - - if (isHorizontal) { - var labelYOffset = tl + tickPadding; - - if (lineValue < me.left - epsilon) { - lineColor = 'rgba(0,0,0,0)'; - } - - tx1 = tx2 = x1 = x2 = alignPixel(chart, lineValue, lineWidth); - ty1 = tickStart; - ty2 = tickEnd; - labelX = me.getPixelForTick(index) + labelOffset; // x values for optionTicks (need to consider offsetLabel option) - - if (position === 'top') { - y1 = alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2; - y2 = chartArea.bottom; - textOffset = ((!isRotated ? 0.5 : 1) - labelCount) * lineHeight; - textAlign = !isRotated ? 'center' : 'left'; - labelY = me.bottom - labelYOffset; - } else { - y1 = chartArea.top; - y2 = alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2; - textOffset = (!isRotated ? 0.5 : 0) * lineHeight; - textAlign = !isRotated ? 'center' : 'right'; - labelY = me.top + labelYOffset; - } - } else { - var labelXOffset = (isMirrored ? 0 : tl) + tickPadding; - - if (lineValue < me.top - epsilon) { - lineColor = 'rgba(0,0,0,0)'; - } - - tx1 = tickStart; - tx2 = tickEnd; - ty1 = ty2 = y1 = y2 = alignPixel(chart, lineValue, lineWidth); - labelY = me.getPixelForTick(index) + labelOffset; - textOffset = (1 - labelCount) * lineHeight / 2; - - if (position === 'left') { - x1 = alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2; - x2 = chartArea.right; - textAlign = isMirrored ? 'left' : 'right'; - labelX = me.right - labelXOffset; - } else { - x1 = chartArea.left; - x2 = alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2; - textAlign = isMirrored ? 'right' : 'left'; - labelX = me.left + labelXOffset; - } - } - - itemsToDraw.push({ - tx1: tx1, - ty1: ty1, - tx2: tx2, - ty2: ty2, - x1: x1, - y1: y1, - x2: x2, - y2: y2, - labelX: labelX, - labelY: labelY, - glWidth: lineWidth, - glColor: lineColor, - glBorderDash: borderDash, - glBorderDashOffset: borderDashOffset, - rotation: -1 * labelRotationRadians, - label: label, - major: tick.major, - textOffset: textOffset, - textAlign: textAlign - }); - }); - - // Draw all of the tick labels, tick marks, and grid lines at the correct places - helpers$1.each(itemsToDraw, function(itemToDraw) { - var glWidth = itemToDraw.glWidth; - var glColor = itemToDraw.glColor; - - if (gridLines.display && glWidth && glColor) { - context.save(); - context.lineWidth = glWidth; - context.strokeStyle = glColor; - if (context.setLineDash) { - context.setLineDash(itemToDraw.glBorderDash); - context.lineDashOffset = itemToDraw.glBorderDashOffset; - } - - context.beginPath(); - - if (gridLines.drawTicks) { - context.moveTo(itemToDraw.tx1, itemToDraw.ty1); - context.lineTo(itemToDraw.tx2, itemToDraw.ty2); - } - - if (gridLines.drawOnChartArea) { - context.moveTo(itemToDraw.x1, itemToDraw.y1); - context.lineTo(itemToDraw.x2, itemToDraw.y2); - } - - context.stroke(); - context.restore(); - } - - if (optionTicks.display) { - // Make sure we draw text in the correct color and font - context.save(); - context.translate(itemToDraw.labelX, itemToDraw.labelY); - context.rotate(itemToDraw.rotation); - context.font = itemToDraw.major ? majorTickFont.string : tickFont.string; - context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; - context.textBaseline = 'middle'; - context.textAlign = itemToDraw.textAlign; - - var label = itemToDraw.label; - var y = itemToDraw.textOffset; - if (helpers$1.isArray(label)) { - for (var i = 0; i < label.length; ++i) { - // We just make sure the multiline element is a string here.. - context.fillText('' + label[i], 0, y); - y += lineHeight; - } - } else { - context.fillText(label, 0, y); - } - context.restore(); - } - }); - - if (scaleLabel.display) { - // Draw the scale label - var scaleLabelX; - var scaleLabelY; - var rotation = 0; - var halfLineHeight = scaleLabelFont.lineHeight / 2; - - if (isHorizontal) { - scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width - scaleLabelY = position === 'bottom' - ? me.bottom - halfLineHeight - scaleLabelPadding.bottom - : me.top + halfLineHeight + scaleLabelPadding.top; - } else { - var isLeft = position === 'left'; - scaleLabelX = isLeft - ? me.left + halfLineHeight + scaleLabelPadding.top - : me.right - halfLineHeight - scaleLabelPadding.top; - scaleLabelY = me.top + ((me.bottom - me.top) / 2); - rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; - } - - context.save(); - context.translate(scaleLabelX, scaleLabelY); - context.rotate(rotation); - context.textAlign = 'center'; - context.textBaseline = 'middle'; - context.fillStyle = scaleLabelFontColor; // render in correct colour - context.font = scaleLabelFont.string; - context.fillText(scaleLabel.labelString, 0, 0); - context.restore(); - } - - if (axisWidth) { - // Draw the line at the edge of the axis - var firstLineWidth = axisWidth; - var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0); - var x1, x2, y1, y2; - - if (isHorizontal) { - x1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2; - x2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2; - y1 = y2 = borderValue; - } else { - y1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2; - y2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2; - x1 = x2 = borderValue; - } - - context.lineWidth = axisWidth; - context.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0); - context.beginPath(); - context.moveTo(x1, y1); - context.lineTo(x2, y2); - context.stroke(); - } - } -}); - -var defaultConfig = { - position: 'bottom' -}; - -var scale_category = core_scale.extend({ - /** - * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those - * else fall back to data.labels - * @private - */ - getLabels: function() { - var data = this.chart.data; - return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; - }, - - determineDataLimits: function() { - var me = this; - var labels = me.getLabels(); - me.minIndex = 0; - me.maxIndex = labels.length - 1; - var findIndex; - - if (me.options.ticks.min !== undefined) { - // user specified min value - findIndex = labels.indexOf(me.options.ticks.min); - me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; - } - - if (me.options.ticks.max !== undefined) { - // user specified max value - findIndex = labels.indexOf(me.options.ticks.max); - me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; - } - - me.min = labels[me.minIndex]; - me.max = labels[me.maxIndex]; - }, - - buildTicks: function() { - var me = this; - var labels = me.getLabels(); - // If we are viewing some subset of labels, slice the original array - me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); - }, - - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var chart = me.chart; - - if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) { - return me.getRightValue(chart.data.datasets[datasetIndex].data[index]); - } - - return me.ticks[index - me.minIndex]; - }, - - // Used to get data value locations. Value can either be an index or a numerical value - getPixelForValue: function(value, index) { - var me = this; - var offset = me.options.offset; - // 1 is added because we need the length but we have the indexes - var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); - - // If value is a data object, then index is the index in the data array, - // not the index of the scale. We need to change that. - var valueCategory; - if (value !== undefined && value !== null) { - valueCategory = me.isHorizontal() ? value.x : value.y; - } - if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { - var labels = me.getLabels(); - value = valueCategory || value; - var idx = labels.indexOf(value); - index = idx !== -1 ? idx : index; - } - - if (me.isHorizontal()) { - var valueWidth = me.width / offsetAmt; - var widthOffset = (valueWidth * (index - me.minIndex)); - - if (offset) { - widthOffset += (valueWidth / 2); - } - - return me.left + widthOffset; - } - var valueHeight = me.height / offsetAmt; - var heightOffset = (valueHeight * (index - me.minIndex)); - - if (offset) { - heightOffset += (valueHeight / 2); - } - - return me.top + heightOffset; - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); - }, - - getValueForPixel: function(pixel) { - var me = this; - var offset = me.options.offset; - var value; - var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var horz = me.isHorizontal(); - var valueDimension = (horz ? me.width : me.height) / offsetAmt; - - pixel -= horz ? me.left : me.top; - - if (offset) { - pixel -= (valueDimension / 2); - } - - if (pixel <= 0) { - value = 0; - } else { - value = Math.round(pixel / valueDimension); - } - - return value + me.minIndex; - }, - - getBasePixel: function() { - return this.bottom; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults = defaultConfig; -scale_category._defaults = _defaults; - -var noop = helpers$1.noop; -var isNullOrUndef = helpers$1.isNullOrUndef; - -/** - * Generate a set of linear ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {number[]} array of tick values - */ -function generateTicks(generationOptions, dataRange) { - var ticks = []; - // To get a "nice" value for the tick spacing, we will use the appropriately named - // "nice number" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks - // for details. - - var MIN_SPACING = 1e-14; - var stepSize = generationOptions.stepSize; - var unit = stepSize || 1; - var maxNumSpaces = generationOptions.maxTicks - 1; - var min = generationOptions.min; - var max = generationOptions.max; - var precision = generationOptions.precision; - var rmin = dataRange.min; - var rmax = dataRange.max; - var spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit; - var factor, niceMin, niceMax, numSpaces; - - // Beyond MIN_SPACING floating point numbers being to lose precision - // such that we can't do the math necessary to generate ticks - if (spacing < MIN_SPACING && isNullOrUndef(min) && isNullOrUndef(max)) { - return [rmin, rmax]; - } - - numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); - if (numSpaces > maxNumSpaces) { - // If the calculated num of spaces exceeds maxNumSpaces, recalculate it - spacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit; - } - - if (stepSize || isNullOrUndef(precision)) { - // If a precision is not specified, calculate factor based on spacing - factor = Math.pow(10, helpers$1._decimalPlaces(spacing)); - } else { - // If the user specified a precision, round to that number of decimal places - factor = Math.pow(10, precision); - spacing = Math.ceil(spacing * factor) / factor; - } - - niceMin = Math.floor(rmin / spacing) * spacing; - niceMax = Math.ceil(rmax / spacing) * spacing; - - // If min, max and stepSize is set and they make an evenly spaced scale use it. - if (stepSize) { - // If very close to our whole number, use it. - if (!isNullOrUndef(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) { - niceMin = min; - } - if (!isNullOrUndef(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) { - niceMax = max; - } - } - - numSpaces = (niceMax - niceMin) / spacing; - // If very close to our rounded value, use it. - if (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { - numSpaces = Math.round(numSpaces); - } else { - numSpaces = Math.ceil(numSpaces); - } - - niceMin = Math.round(niceMin * factor) / factor; - niceMax = Math.round(niceMax * factor) / factor; - ticks.push(isNullOrUndef(min) ? niceMin : min); - for (var j = 1; j < numSpaces; ++j) { - ticks.push(Math.round((niceMin + j * spacing) * factor) / factor); - } - ticks.push(isNullOrUndef(max) ? niceMax : max); - - return ticks; -} - -var scale_linearbase = core_scale.extend({ - getRightValue: function(value) { - if (typeof value === 'string') { - return +value; - } - return core_scale.prototype.getRightValue.call(this, value); - }, - - handleTickRangeOptions: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, - // do nothing since that would make the chart weird. If the user really wants a weird chart - // axis, they can manually override it - if (tickOpts.beginAtZero) { - var minSign = helpers$1.sign(me.min); - var maxSign = helpers$1.sign(me.max); - - if (minSign < 0 && maxSign < 0) { - // move the top up to 0 - me.max = 0; - } else if (minSign > 0 && maxSign > 0) { - // move the bottom down to 0 - me.min = 0; - } - } - - var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; - var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; - - if (tickOpts.min !== undefined) { - me.min = tickOpts.min; - } else if (tickOpts.suggestedMin !== undefined) { - if (me.min === null) { - me.min = tickOpts.suggestedMin; - } else { - me.min = Math.min(me.min, tickOpts.suggestedMin); - } - } - - if (tickOpts.max !== undefined) { - me.max = tickOpts.max; - } else if (tickOpts.suggestedMax !== undefined) { - if (me.max === null) { - me.max = tickOpts.suggestedMax; - } else { - me.max = Math.max(me.max, tickOpts.suggestedMax); - } - } - - if (setMin !== setMax) { - // We set the min or the max but not both. - // So ensure that our range is good - // Inverted or 0 length range can happen when - // ticks.min is set, and no datasets are visible - if (me.min >= me.max) { - if (setMin) { - me.max = me.min + 1; - } else { - me.min = me.max - 1; - } - } - } - - if (me.min === me.max) { - me.max++; - - if (!tickOpts.beginAtZero) { - me.min--; - } - } - }, - - getTickLimit: function() { - var me = this; - var tickOpts = me.options.ticks; - var stepSize = tickOpts.stepSize; - var maxTicksLimit = tickOpts.maxTicksLimit; - var maxTicks; - - if (stepSize) { - maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1; - } else { - maxTicks = me._computeTickLimit(); - maxTicksLimit = maxTicksLimit || 11; - } - - if (maxTicksLimit) { - maxTicks = Math.min(maxTicksLimit, maxTicks); - } - - return maxTicks; - }, - - _computeTickLimit: function() { - return Number.POSITIVE_INFINITY; - }, - - handleDirectionalChanges: noop, - - buildTicks: function() { - var me = this; - var opts = me.options; - var tickOpts = opts.ticks; - - // Figure out what the max number of ticks we can support it is based on the size of - // the axis area. For now, we say that the minimum tick spacing in pixels must be 40 - // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on - // the graph. Make sure we always have at least 2 ticks - var maxTicks = me.getTickLimit(); - maxTicks = Math.max(2, maxTicks); - - var numericGeneratorOptions = { - maxTicks: maxTicks, - min: tickOpts.min, - max: tickOpts.max, - precision: tickOpts.precision, - stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) - }; - var ticks = me.ticks = generateTicks(numericGeneratorOptions, me); - - me.handleDirectionalChanges(); - - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers$1.max(ticks); - me.min = helpers$1.min(ticks); - - if (tickOpts.reverse) { - ticks.reverse(); - - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - }, - - convertTicksToLabels: function() { - var me = this; - me.ticksAsNumbers = me.ticks.slice(); - me.zeroLineIndex = me.ticks.indexOf(0); - - core_scale.prototype.convertTicksToLabels.call(me); - } -}); - -var defaultConfig$1 = { - position: 'left', - ticks: { - callback: core_ticks.formatters.linear - } -}; - -var scale_linear = scale_linearbase.extend({ - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - var DEFAULT_MIN = 0; - var DEFAULT_MAX = 1; - - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } - - // First Calculate the range - me.min = null; - me.max = null; - - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers$1.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } - - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } - - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; - - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); - - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = { - positiveValues: [], - negativeValues: [] - }; - } - - // Store these per type - var positiveValues = valuesPerStack[key].positiveValues; - var negativeValues = valuesPerStack[key].negativeValues; - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - positiveValues[index] = positiveValues[index] || 0; - negativeValues[index] = negativeValues[index] || 0; - - if (opts.relativePoints) { - positiveValues[index] = 100; - } else if (value < 0) { - negativeValues[index] += value; - } else { - positiveValues[index] += value; - } - }); - } - }); - - helpers$1.each(valuesPerStack, function(valuesForType) { - var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); - var minVal = helpers$1.min(values); - var maxVal = helpers$1.max(values); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - }); - - } else { - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - }); - } - }); - } - - me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; - me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; - - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - this.handleTickRangeOptions(); - }, - - // Returns the maximum number of ticks based on the scale dimension - _computeTickLimit: function() { - var me = this; - var tickFont; - - if (me.isHorizontal()) { - return Math.ceil(me.width / 40); - } - tickFont = helpers$1.options._parseFont(me.options.ticks); - return Math.ceil(me.height / tickFont.lineHeight); - }, - - // Called after the ticks are built. We need - handleDirectionalChanges: function() { - if (!this.isHorizontal()) { - // We are in a vertical orientation. The top value is the highest. So reverse the array - this.ticks.reverse(); - } - }, - - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - // Utils - getPixelForValue: function(value) { - // This must be called after fit has been run so that - // this.left, this.top, this.right, and this.bottom have been defined - var me = this; - var start = me.start; - - var rightValue = +me.getRightValue(value); - var pixel; - var range = me.end - start; - - if (me.isHorizontal()) { - pixel = me.left + (me.width / range * (rightValue - start)); - } else { - pixel = me.bottom - (me.height / range * (rightValue - start)); - } - return pixel; - }, - - getValueForPixel: function(pixel) { - var me = this; - var isHorizontal = me.isHorizontal(); - var innerDimension = isHorizontal ? me.width : me.height; - var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; - return me.start + ((me.end - me.start) * offset); - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.ticksAsNumbers[index]); - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$1 = defaultConfig$1; -scale_linear._defaults = _defaults$1; - -var valueOrDefault$a = helpers$1.valueOrDefault; - -/** - * Generate a set of logarithmic ticks - * @param generationOptions the options used to generate the ticks - * @param dataRange the range of the data - * @returns {number[]} array of tick values - */ -function generateTicks$1(generationOptions, dataRange) { - var ticks = []; - - var tickVal = valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min)))); - - var endExp = Math.floor(helpers$1.log10(dataRange.max)); - var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); - var exp, significand; - - if (tickVal === 0) { - exp = Math.floor(helpers$1.log10(dataRange.minNotZero)); - significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); - - ticks.push(tickVal); - tickVal = significand * Math.pow(10, exp); - } else { - exp = Math.floor(helpers$1.log10(tickVal)); - significand = Math.floor(tickVal / Math.pow(10, exp)); - } - var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - - do { - ticks.push(tickVal); - - ++significand; - if (significand === 10) { - significand = 1; - ++exp; - precision = exp >= 0 ? 1 : precision; - } - - tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; - } while (exp < endExp || (exp === endExp && significand < endSignificand)); - - var lastTick = valueOrDefault$a(generationOptions.max, tickVal); - ticks.push(lastTick); - - return ticks; -} - -var defaultConfig$2 = { - position: 'left', - - // label settings - ticks: { - callback: core_ticks.formatters.logarithmic - } -}; - -// TODO(v3): change this to positiveOrDefault -function nonNegativeOrDefault(value, defaultValue) { - return helpers$1.isFinite(value) && value >= 0 ? value : defaultValue; -} - -var scale_logarithmic = core_scale.extend({ - determineDataLimits: function() { - var me = this; - var opts = me.options; - var chart = me.chart; - var data = chart.data; - var datasets = data.datasets; - var isHorizontal = me.isHorizontal(); - function IDMatches(meta) { - return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; - } - - // Calculate Range - me.min = null; - me.max = null; - me.minNotZero = null; - - var hasStacks = opts.stacked; - if (hasStacks === undefined) { - helpers$1.each(datasets, function(dataset, datasetIndex) { - if (hasStacks) { - return; - } - - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && - meta.stack !== undefined) { - hasStacks = true; - } - }); - } - - if (opts.stacked || hasStacks) { - var valuesPerStack = {}; - - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - var key = [ - meta.type, - // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined - ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), - meta.stack - ].join('.'); - - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - if (valuesPerStack[key] === undefined) { - valuesPerStack[key] = []; - } - - helpers$1.each(dataset.data, function(rawValue, index) { - var values = valuesPerStack[key]; - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - values[index] = values[index] || 0; - values[index] += value; - }); - } - }); - - helpers$1.each(valuesPerStack, function(valuesForType) { - if (valuesForType.length > 0) { - var minVal = helpers$1.min(valuesForType); - var maxVal = helpers$1.max(valuesForType); - me.min = me.min === null ? minVal : Math.min(me.min, minVal); - me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); - } - }); - - } else { - helpers$1.each(datasets, function(dataset, datasetIndex) { - var meta = chart.getDatasetMeta(datasetIndex); - if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - // invalid, hidden and negative values are ignored - if (isNaN(value) || meta.data[index].hidden || value < 0) { - return; - } - - if (me.min === null) { - me.min = value; - } else if (value < me.min) { - me.min = value; - } - - if (me.max === null) { - me.max = value; - } else if (value > me.max) { - me.max = value; - } - - if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { - me.minNotZero = value; - } - }); - } - }); - } - - // Common base implementation to handle ticks.min, ticks.max - this.handleTickRangeOptions(); - }, - - handleTickRangeOptions: function() { - var me = this; - var tickOpts = me.options.ticks; - var DEFAULT_MIN = 1; - var DEFAULT_MAX = 10; - - me.min = nonNegativeOrDefault(tickOpts.min, me.min); - me.max = nonNegativeOrDefault(tickOpts.max, me.max); - - if (me.min === me.max) { - if (me.min !== 0 && me.min !== null) { - me.min = Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1); - me.max = Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1); - } else { - me.min = DEFAULT_MIN; - me.max = DEFAULT_MAX; - } - } - if (me.min === null) { - me.min = Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1); - } - if (me.max === null) { - me.max = me.min !== 0 - ? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1) - : DEFAULT_MAX; - } - if (me.minNotZero === null) { - if (me.min > 0) { - me.minNotZero = me.min; - } else if (me.max < 1) { - me.minNotZero = Math.pow(10, Math.floor(helpers$1.log10(me.max))); - } else { - me.minNotZero = DEFAULT_MIN; - } - } - }, - - buildTicks: function() { - var me = this; - var tickOpts = me.options.ticks; - var reverse = !me.isHorizontal(); - - var generationOptions = { - min: nonNegativeOrDefault(tickOpts.min), - max: nonNegativeOrDefault(tickOpts.max) - }; - var ticks = me.ticks = generateTicks$1(generationOptions, me); - - // At this point, we need to update our max and min given the tick values since we have expanded the - // range of the scale - me.max = helpers$1.max(ticks); - me.min = helpers$1.min(ticks); - - if (tickOpts.reverse) { - reverse = !reverse; - me.start = me.max; - me.end = me.min; - } else { - me.start = me.min; - me.end = me.max; - } - if (reverse) { - ticks.reverse(); - } - }, - - convertTicksToLabels: function() { - this.tickValues = this.ticks.slice(); - - core_scale.prototype.convertTicksToLabels.call(this); - }, - - // Get the correct tooltip label - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - getPixelForTick: function(index) { - return this.getPixelForValue(this.tickValues[index]); - }, - - /** - * Returns the value of the first tick. - * @param {number} value - The minimum not zero value. - * @return {number} The first tick value. - * @private - */ - _getFirstTickValue: function(value) { - var exp = Math.floor(helpers$1.log10(value)); - var significand = Math.floor(value / Math.pow(10, exp)); - - return significand * Math.pow(10, exp); - }, - - getPixelForValue: function(value) { - var me = this; - var tickOpts = me.options.ticks; - var reverse = tickOpts.reverse; - var log10 = helpers$1.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var offset = 0; - var innerDimension, pixel, start, end, sign; - - value = +me.getRightValue(value); - if (reverse) { - start = me.end; - end = me.start; - sign = -1; - } else { - start = me.start; - end = me.end; - sign = 1; - } - if (me.isHorizontal()) { - innerDimension = me.width; - pixel = reverse ? me.right : me.left; - } else { - innerDimension = me.height; - sign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0) - pixel = reverse ? me.top : me.bottom; - } - if (value !== start) { - if (start === 0) { // include zero tick - offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); - innerDimension -= offset; - start = firstTickValue; - } - if (value !== 0) { - offset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start)); - } - pixel += sign * offset; - } - return pixel; - }, - - getValueForPixel: function(pixel) { - var me = this; - var tickOpts = me.options.ticks; - var reverse = tickOpts.reverse; - var log10 = helpers$1.log10; - var firstTickValue = me._getFirstTickValue(me.minNotZero); - var innerDimension, start, end, value; - - if (reverse) { - start = me.end; - end = me.start; - } else { - start = me.start; - end = me.end; - } - if (me.isHorizontal()) { - innerDimension = me.width; - value = reverse ? me.right - pixel : pixel - me.left; - } else { - innerDimension = me.height; - value = reverse ? pixel - me.top : me.bottom - pixel; - } - if (value !== start) { - if (start === 0) { // include zero tick - var offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize); - value -= offset; - innerDimension -= offset; - start = firstTickValue; - } - value *= log10(end) - log10(start); - value /= innerDimension; - value = Math.pow(10, log10(start) + value); - } - return value; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$2 = defaultConfig$2; -scale_logarithmic._defaults = _defaults$2; - -var valueOrDefault$b = helpers$1.valueOrDefault; -var valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault; -var resolve$7 = helpers$1.options.resolve; - -var defaultConfig$3 = { - display: true, - - // Boolean - Whether to animate scaling the chart from the centre - animate: true, - position: 'chartArea', - - angleLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - borderDash: [], - borderDashOffset: 0.0 - }, - - gridLines: { - circular: false - }, - - // label settings - ticks: { - // Boolean - Show a backdrop to the scale label - showLabelBackdrop: true, - - // String - The colour of the label backdrop - backdropColor: 'rgba(255,255,255,0.75)', - - // Number - The backdrop padding above & below the label in pixels - backdropPaddingY: 2, - - // Number - The backdrop padding to the side of the label in pixels - backdropPaddingX: 2, - - callback: core_ticks.formatters.linear - }, - - pointLabels: { - // Boolean - if true, show point labels - display: true, - - // Number - Point label font size in pixels - fontSize: 10, - - // Function - Used to convert point labels - callback: function(label) { - return label; - } - } -}; - -function getValueCount(scale) { - var opts = scale.options; - return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; -} - -function getTickBackdropHeight(opts) { - var tickOpts = opts.ticks; - - if (tickOpts.display && opts.display) { - return valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2; - } - return 0; -} - -function measureLabelSize(ctx, lineHeight, label) { - if (helpers$1.isArray(label)) { - return { - w: helpers$1.longestText(ctx, ctx.font, label), - h: label.length * lineHeight - }; - } - - return { - w: ctx.measureText(label).width, - h: lineHeight - }; -} - -function determineLimits(angle, pos, size, min, max) { - if (angle === min || angle === max) { - return { - start: pos - (size / 2), - end: pos + (size / 2) - }; - } else if (angle < min || angle > max) { - return { - start: pos - size, - end: pos - }; - } - - return { - start: pos, - end: pos + size - }; -} - -/** - * Helper function to fit a radial linear scale with point labels - */ -function fitWithPointLabels(scale) { - - // Right, this is really confusing and there is a lot of maths going on here - // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 - // - // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif - // - // Solution: - // - // We assume the radius of the polygon is half the size of the canvas at first - // at each index we check if the text overlaps. - // - // Where it does, we store that angle and that index. - // - // After finding the largest index and angle we calculate how much we need to remove - // from the shape radius to move the point inwards by that x. - // - // We average the left and right distances to get the maximum shape radius that can fit in the box - // along with labels. - // - // Once we have that, we can find the centre point for the chart, by taking the x text protrusion - // on each side, removing that from the size, halving it and adding the left x protrusion width. - // - // This will mean we have a shape fitted to the canvas, as large as it can be with the labels - // and position it in the most space efficient manner - // - // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif - - var plFont = helpers$1.options._parseFont(scale.options.pointLabels); - - // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. - // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points - var furthestLimits = { - l: 0, - r: scale.width, - t: 0, - b: scale.height - scale.paddingTop - }; - var furthestAngles = {}; - var i, textSize, pointPosition; - - scale.ctx.font = plFont.string; - scale._pointLabelSizes = []; - - var valueCount = getValueCount(scale); - for (i = 0; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, scale.drawingArea + 5); - textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || ''); - scale._pointLabelSizes[i] = textSize; - - // Add quarter circle to make degree 0 mean top of circle - var angleRadians = scale.getIndexAngle(i); - var angle = helpers$1.toDegrees(angleRadians) % 360; - var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); - var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); - - if (hLimits.start < furthestLimits.l) { - furthestLimits.l = hLimits.start; - furthestAngles.l = angleRadians; - } - - if (hLimits.end > furthestLimits.r) { - furthestLimits.r = hLimits.end; - furthestAngles.r = angleRadians; - } - - if (vLimits.start < furthestLimits.t) { - furthestLimits.t = vLimits.start; - furthestAngles.t = angleRadians; - } - - if (vLimits.end > furthestLimits.b) { - furthestLimits.b = vLimits.end; - furthestAngles.b = angleRadians; - } - } - - scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles); -} - -function getTextAlignForAngle(angle) { - if (angle === 0 || angle === 180) { - return 'center'; - } else if (angle < 180) { - return 'left'; - } - - return 'right'; -} - -function fillText(ctx, text, position, lineHeight) { - var y = position.y + lineHeight / 2; - var i, ilen; - - if (helpers$1.isArray(text)) { - for (i = 0, ilen = text.length; i < ilen; ++i) { - ctx.fillText(text[i], position.x, y); - y += lineHeight; - } - } else { - ctx.fillText(text, position.x, y); - } -} - -function adjustPointPositionForLabelHeight(angle, textSize, position) { - if (angle === 90 || angle === 270) { - position.y -= (textSize.h / 2); - } else if (angle > 270 || angle < 90) { - position.y -= textSize.h; - } -} - -function drawPointLabels(scale) { - var ctx = scale.ctx; - var opts = scale.options; - var angleLineOpts = opts.angleLines; - var gridLineOpts = opts.gridLines; - var pointLabelOpts = opts.pointLabels; - var lineWidth = valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth); - var lineColor = valueOrDefault$b(angleLineOpts.color, gridLineOpts.color); - var tickBackdropHeight = getTickBackdropHeight(opts); - - ctx.save(); - ctx.lineWidth = lineWidth; - ctx.strokeStyle = lineColor; - if (ctx.setLineDash) { - ctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []])); - ctx.lineDashOffset = resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]); - } - - var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); - - // Point Label Font - var plFont = helpers$1.options._parseFont(pointLabelOpts); - - ctx.font = plFont.string; - ctx.textBaseline = 'middle'; - - for (var i = getValueCount(scale) - 1; i >= 0; i--) { - if (angleLineOpts.display && lineWidth && lineColor) { - var outerPosition = scale.getPointPosition(i, outerDistance); - ctx.beginPath(); - ctx.moveTo(scale.xCenter, scale.yCenter); - ctx.lineTo(outerPosition.x, outerPosition.y); - ctx.stroke(); - } - - if (pointLabelOpts.display) { - // Extra pixels out for some label spacing - var extra = (i === 0 ? tickBackdropHeight / 2 : 0); - var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5); - - // Keep this in loop since we may support array properties here - var pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor); - ctx.fillStyle = pointLabelFontColor; - - var angleRadians = scale.getIndexAngle(i); - var angle = helpers$1.toDegrees(angleRadians); - ctx.textAlign = getTextAlignForAngle(angle); - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); - fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight); - } - } - ctx.restore(); -} - -function drawRadiusLine(scale, gridLineOpts, radius, index) { - var ctx = scale.ctx; - var circular = gridLineOpts.circular; - var valueCount = getValueCount(scale); - var lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1); - var lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1); - var pointPosition; - - if ((!circular && !valueCount) || !lineColor || !lineWidth) { - return; - } - - ctx.save(); - ctx.strokeStyle = lineColor; - ctx.lineWidth = lineWidth; - if (ctx.setLineDash) { - ctx.setLineDash(gridLineOpts.borderDash || []); - ctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0; - } - - ctx.beginPath(); - if (circular) { - // Draw circular arcs between the points - ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); - } else { - // Draw straight lines connecting each index - pointPosition = scale.getPointPosition(0, radius); - ctx.moveTo(pointPosition.x, pointPosition.y); - - for (var i = 1; i < valueCount; i++) { - pointPosition = scale.getPointPosition(i, radius); - ctx.lineTo(pointPosition.x, pointPosition.y); - } - } - ctx.closePath(); - ctx.stroke(); - ctx.restore(); -} - -function numberOrZero(param) { - return helpers$1.isNumber(param) ? param : 0; -} - -var scale_radialLinear = scale_linearbase.extend({ - setDimensions: function() { - var me = this; - - // Set the unconstrained dimension before label rotation - me.width = me.maxWidth; - me.height = me.maxHeight; - me.paddingTop = getTickBackdropHeight(me.options) / 2; - me.xCenter = Math.floor(me.width / 2); - me.yCenter = Math.floor((me.height - me.paddingTop) / 2); - me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2; - }, - - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var min = Number.POSITIVE_INFINITY; - var max = Number.NEGATIVE_INFINITY; - - helpers$1.each(chart.data.datasets, function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - - helpers$1.each(dataset.data, function(rawValue, index) { - var value = +me.getRightValue(rawValue); - if (isNaN(value) || meta.data[index].hidden) { - return; - } - - min = Math.min(value, min); - max = Math.max(value, max); - }); - } - }); - - me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); - me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); - - // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero - me.handleTickRangeOptions(); - }, - - // Returns the maximum number of ticks based on the scale dimension - _computeTickLimit: function() { - return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); - }, - - convertTicksToLabels: function() { - var me = this; - - scale_linearbase.prototype.convertTicksToLabels.call(me); - - // Point labels - me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); - }, - - getLabelForIndex: function(index, datasetIndex) { - return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); - }, - - fit: function() { - var me = this; - var opts = me.options; - - if (opts.display && opts.pointLabels.display) { - fitWithPointLabels(me); - } else { - me.setCenterPoint(0, 0, 0, 0); - } - }, - - /** - * Set radius reductions and determine new radius and center point - * @private - */ - setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { - var me = this; - var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); - var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); - var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); - var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b); - - radiusReductionLeft = numberOrZero(radiusReductionLeft); - radiusReductionRight = numberOrZero(radiusReductionRight); - radiusReductionTop = numberOrZero(radiusReductionTop); - radiusReductionBottom = numberOrZero(radiusReductionBottom); - - me.drawingArea = Math.min( - Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), - Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); - me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); - }, - - setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { - var me = this; - var maxRight = me.width - rightMovement - me.drawingArea; - var maxLeft = leftMovement + me.drawingArea; - var maxTop = topMovement + me.drawingArea; - var maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea; - - me.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left); - me.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop); - }, - - getIndexAngle: function(index) { - var angleMultiplier = (Math.PI * 2) / getValueCount(this); - var startAngle = this.chart.options && this.chart.options.startAngle ? - this.chart.options.startAngle : - 0; - - var startAngleRadians = startAngle * Math.PI * 2 / 360; - - // Start from the top instead of right, so remove a quarter of the circle - return index * angleMultiplier + startAngleRadians; - }, - - getDistanceFromCenterForValue: function(value) { - var me = this; - - if (value === null) { - return 0; // null always in center - } - - // Take into account half font size + the yPadding of the top value - var scalingFactor = me.drawingArea / (me.max - me.min); - if (me.options.ticks.reverse) { - return (me.max - value) * scalingFactor; - } - return (value - me.min) * scalingFactor; - }, - - getPointPosition: function(index, distanceFromCenter) { - var me = this; - var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); - return { - x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter, - y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter - }; - }, - - getPointPositionForValue: function(index, value) { - return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); - }, - - getBasePosition: function() { - var me = this; - var min = me.min; - var max = me.max; - - return me.getPointPositionForValue(0, - me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0); - }, - - draw: function() { - var me = this; - var opts = me.options; - var gridLineOpts = opts.gridLines; - var tickOpts = opts.ticks; - - if (opts.display) { - var ctx = me.ctx; - var startAngle = this.getIndexAngle(0); - var tickFont = helpers$1.options._parseFont(tickOpts); - - if (opts.angleLines.display || opts.pointLabels.display) { - drawPointLabels(me); - } - - helpers$1.each(me.ticks, function(label, index) { - // Don't draw a centre value (if it is minimum) - if (index > 0 || tickOpts.reverse) { - var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); - - // Draw circular lines around the scale - if (gridLineOpts.display && index !== 0) { - drawRadiusLine(me, gridLineOpts, yCenterOffset, index); - } - - if (tickOpts.display) { - var tickFontColor = valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor); - ctx.font = tickFont.string; - - ctx.save(); - ctx.translate(me.xCenter, me.yCenter); - ctx.rotate(startAngle); - - if (tickOpts.showLabelBackdrop) { - var labelWidth = ctx.measureText(label).width; - ctx.fillStyle = tickOpts.backdropColor; - ctx.fillRect( - -labelWidth / 2 - tickOpts.backdropPaddingX, - -yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY, - labelWidth + tickOpts.backdropPaddingX * 2, - tickFont.size + tickOpts.backdropPaddingY * 2 - ); - } - - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = tickFontColor; - ctx.fillText(label, 0, -yCenterOffset); - ctx.restore(); - } - } - }); - } - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$3 = defaultConfig$3; -scale_radialLinear._defaults = _defaults$3; - -var valueOrDefault$c = helpers$1.valueOrDefault; - -// Integer constants are from the ES6 spec. -var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; -var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -var INTERVALS = { - millisecond: { - common: true, - size: 1, - steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] - }, - second: { - common: true, - size: 1000, - steps: [1, 2, 5, 10, 15, 30] - }, - minute: { - common: true, - size: 60000, - steps: [1, 2, 5, 10, 15, 30] - }, - hour: { - common: true, - size: 3600000, - steps: [1, 2, 3, 6, 12] - }, - day: { - common: true, - size: 86400000, - steps: [1, 2, 5] - }, - week: { - common: false, - size: 604800000, - steps: [1, 2, 3, 4] - }, - month: { - common: true, - size: 2.628e9, - steps: [1, 2, 3] - }, - quarter: { - common: false, - size: 7.884e9, - steps: [1, 2, 3, 4] - }, - year: { - common: true, - size: 3.154e10 - } -}; - -var UNITS = Object.keys(INTERVALS); - -function sorter(a, b) { - return a - b; -} - -function arrayUnique(items) { - var hash = {}; - var out = []; - var i, ilen, item; - - for (i = 0, ilen = items.length; i < ilen; ++i) { - item = items[i]; - if (!hash[item]) { - hash[item] = true; - out.push(item); - } - } - - return out; -} - -/** - * Returns an array of {time, pos} objects used to interpolate a specific `time` or position - * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is - * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other - * extremity (left + width or top + height). Note that it would be more optimized to directly - * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need - * to create the lookup table. The table ALWAYS contains at least two items: min and max. - * - * @param {number[]} timestamps - timestamps sorted from lowest to highest. - * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min - * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. - * If 'series', timestamps will be positioned at the same distance from each other. In this - * case, only timestamps that break the time linearity are registered, meaning that in the - * best case, all timestamps are linear, the table contains only min and max. - */ -function buildLookupTable(timestamps, min, max, distribution) { - if (distribution === 'linear' || !timestamps.length) { - return [ - {time: min, pos: 0}, - {time: max, pos: 1} - ]; - } - - var table = []; - var items = [min]; - var i, ilen, prev, curr, next; - - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - curr = timestamps[i]; - if (curr > min && curr < max) { - items.push(curr); - } - } - - items.push(max); - - for (i = 0, ilen = items.length; i < ilen; ++i) { - next = items[i + 1]; - prev = items[i - 1]; - curr = items[i]; - - // only add points that breaks the scale linearity - if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { - table.push({time: curr, pos: i / (ilen - 1)}); - } - } - - return table; -} - -// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ -function lookup(table, key, value) { - var lo = 0; - var hi = table.length - 1; - var mid, i0, i1; - - while (lo >= 0 && lo <= hi) { - mid = (lo + hi) >> 1; - i0 = table[mid - 1] || null; - i1 = table[mid]; - - if (!i0) { - // given value is outside table (before first item) - return {lo: null, hi: i1}; - } else if (i1[key] < value) { - lo = mid + 1; - } else if (i0[key] > value) { - hi = mid - 1; - } else { - return {lo: i0, hi: i1}; - } - } - - // given value is outside table (after last item) - return {lo: i1, hi: null}; -} - -/** - * Linearly interpolates the given source `value` using the table items `skey` values and - * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') - * returns the position for a timestamp equal to 42. If value is out of bounds, values at - * index [0, 1] or [n - 1, n] are used for the interpolation. - */ -function interpolate$1(table, skey, sval, tkey) { - var range = lookup(table, skey, sval); - - // Note: the lookup table ALWAYS contains at least 2 items (min and max) - var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; - var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; - - var span = next[skey] - prev[skey]; - var ratio = span ? (sval - prev[skey]) / span : 0; - var offset = (next[tkey] - prev[tkey]) * ratio; - - return prev[tkey] + offset; -} - -function toTimestamp(scale, input) { - var adapter = scale._adapter; - var options = scale.options.time; - var parser = options.parser; - var format = parser || options.format; - var value = input; - - if (typeof parser === 'function') { - value = parser(value); - } - - // Only parse if its not a timestamp already - if (!helpers$1.isFinite(value)) { - value = typeof format === 'string' - ? adapter.parse(value, format) - : adapter.parse(value); - } - - if (value !== null) { - return +value; - } - - // Labels are in an incompatible format and no `parser` has been provided. - // The user might still use the deprecated `format` option for parsing. - if (!parser && typeof format === 'function') { - value = format(input); - - // `format` could return something else than a timestamp, if so, parse it - if (!helpers$1.isFinite(value)) { - value = adapter.parse(value); - } - } - - return value; -} - -function parse(scale, input) { - if (helpers$1.isNullOrUndef(input)) { - return null; - } - - var options = scale.options.time; - var value = toTimestamp(scale, scale.getRightValue(input)); - if (value === null) { - return value; - } - - if (options.round) { - value = +scale._adapter.startOf(value, options.round); - } - - return value; -} - -/** - * Returns the number of unit to skip to be able to display up to `capacity` number of ticks - * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. - */ -function determineStepSize(min, max, unit, capacity) { - var range = max - min; - var interval = INTERVALS[unit]; - var milliseconds = interval.size; - var steps = interval.steps; - var i, ilen, factor; - - if (!steps) { - return Math.ceil(range / (capacity * milliseconds)); - } - - for (i = 0, ilen = steps.length; i < ilen; ++i) { - factor = steps[i]; - if (Math.ceil(range / (milliseconds * factor)) <= capacity) { - break; - } - } - - return factor; -} - -/** - * Figures out what unit results in an appropriate number of auto-generated ticks - */ -function determineUnitForAutoTicks(minUnit, min, max, capacity) { - var ilen = UNITS.length; - var i, interval, factor; - - for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { - interval = INTERVALS[UNITS[i]]; - factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; - - if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { - return UNITS[i]; - } - } - - return UNITS[ilen - 1]; -} - -/** - * Figures out what unit to format a set of ticks with - */ -function determineUnitForFormatting(scale, ticks, minUnit, min, max) { - var ilen = UNITS.length; - var i, unit; - - for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { - unit = UNITS[i]; - if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= ticks.length) { - return unit; - } - } - - return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; -} - -function determineMajorUnit(unit) { - for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { - if (INTERVALS[UNITS[i]].common) { - return UNITS[i]; - } - } -} - -/** - * Generates a maximum of `capacity` timestamps between min and max, rounded to the - * `minor` unit, aligned on the `major` unit and using the given scale time `options`. - * Important: this method can return ticks outside the min and max range, it's the - * responsibility of the calling code to clamp values if needed. - */ -function generate(scale, min, max, capacity) { - var adapter = scale._adapter; - var options = scale.options; - var timeOpts = options.time; - var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); - var major = determineMajorUnit(minor); - var stepSize = valueOrDefault$c(timeOpts.stepSize, timeOpts.unitStepSize); - var weekday = minor === 'week' ? timeOpts.isoWeekday : false; - var majorTicksEnabled = options.ticks.major.enabled; - var interval = INTERVALS[minor]; - var first = min; - var last = max; - var ticks = []; - var time; - - if (!stepSize) { - stepSize = determineStepSize(min, max, minor, capacity); - } - - // For 'week' unit, handle the first day of week option - if (weekday) { - first = +adapter.startOf(first, 'isoWeek', weekday); - last = +adapter.startOf(last, 'isoWeek', weekday); - } - - // Align first/last ticks on unit - first = +adapter.startOf(first, weekday ? 'day' : minor); - last = +adapter.startOf(last, weekday ? 'day' : minor); - - // Make sure that the last tick include max - if (last < max) { - last = +adapter.add(last, 1, minor); - } - - time = first; - - if (majorTicksEnabled && major && !weekday && !timeOpts.round) { - // Align the first tick on the previous `minor` unit aligned on the `major` unit: - // we first aligned time on the previous `major` unit then add the number of full - // stepSize there is between first and the previous major time. - time = +adapter.startOf(time, major); - time = +adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor); - } - - for (; time < last; time = +adapter.add(time, stepSize, minor)) { - ticks.push(+time); - } - - ticks.push(+time); - - return ticks; -} - -/** - * Returns the start and end offsets from edges in the form of {start, end} - * where each value is a relative width to the scale and ranges between 0 and 1. - * They add extra margins on the both sides by scaling down the original scale. - * Offsets are added when the `offset` option is true. - */ -function computeOffsets(table, ticks, min, max, options) { - var start = 0; - var end = 0; - var first, last; - - if (options.offset && ticks.length) { - if (!options.time.min) { - first = interpolate$1(table, 'time', ticks[0], 'pos'); - if (ticks.length === 1) { - start = 1 - first; - } else { - start = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2; - } - } - if (!options.time.max) { - last = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos'); - if (ticks.length === 1) { - end = last; - } else { - end = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2; - } - } - } - - return {start: start, end: end}; -} - -function ticksFromTimestamps(scale, values, majorUnit) { - var ticks = []; - var i, ilen, value, major; - - for (i = 0, ilen = values.length; i < ilen; ++i) { - value = values[i]; - major = majorUnit ? value === +scale._adapter.startOf(value, majorUnit) : false; - - ticks.push({ - value: value, - major: major - }); - } - - return ticks; -} - -var defaultConfig$4 = { - position: 'bottom', - - /** - * Data distribution along the scale: - * - 'linear': data are spread according to their time (distances can vary), - * - 'series': data are spread at the same distance from each other. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - distribution: 'linear', - - /** - * Scale boundary strategy (bypassed by min/max time options) - * - `data`: make sure data are fully visible, ticks outside are removed - * - `ticks`: make sure ticks are fully visible, data outside are truncated - * @see https://github.com/chartjs/Chart.js/pull/4556 - * @since 2.7.0 - */ - bounds: 'data', - - adapters: {}, - time: { - parser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment - format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/ - unit: false, // false == automatic or override with week, month, year, etc. - round: false, // none, or override with week, month, year, etc. - displayFormat: false, // DEPRECATED - isoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/ - minUnit: 'millisecond', - displayFormats: {} - }, - ticks: { - autoSkip: false, - - /** - * Ticks generation input values: - * - 'auto': generates "optimal" ticks based on scale size and time options. - * - 'data': generates ticks from data (including labels from data {t|x|y} objects). - * - 'labels': generates ticks from user given `data.labels` values ONLY. - * @see https://github.com/chartjs/Chart.js/pull/4507 - * @since 2.7.0 - */ - source: 'auto', - - major: { - enabled: false - } - } -}; - -var scale_time = core_scale.extend({ - initialize: function() { - this.mergeTicksOptions(); - core_scale.prototype.initialize.call(this); - }, - - update: function() { - var me = this; - var options = me.options; - var time = options.time || (options.time = {}); - var adapter = me._adapter = new core_adapters._date(options.adapters.date); - - // DEPRECATIONS: output a message only one time per update - if (time.format) { - console.warn('options.time.format is deprecated and replaced by options.time.parser.'); - } - - // Backward compatibility: before introducing adapter, `displayFormats` was - // supposed to contain *all* unit/string pairs but this can't be resolved - // when loading the scale (adapters are loaded afterward), so let's populate - // missing formats on update - helpers$1.mergeIf(time.displayFormats, adapter.formats()); - - return core_scale.prototype.update.apply(me, arguments); - }, - - /** - * Allows data to be referenced via 't' attribute - */ - getRightValue: function(rawValue) { - if (rawValue && rawValue.t !== undefined) { - rawValue = rawValue.t; - } - return core_scale.prototype.getRightValue.call(this, rawValue); - }, - - determineDataLimits: function() { - var me = this; - var chart = me.chart; - var adapter = me._adapter; - var timeOpts = me.options.time; - var unit = timeOpts.unit || 'day'; - var min = MAX_INTEGER; - var max = MIN_INTEGER; - var timestamps = []; - var datasets = []; - var labels = []; - var i, j, ilen, jlen, data, timestamp; - var dataLabels = chart.data.labels || []; - - // Convert labels to timestamps - for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { - labels.push(parse(me, dataLabels[i])); - } - - // Convert data to timestamps - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - data = chart.data.datasets[i].data; - - // Let's consider that all data have the same format. - if (helpers$1.isObject(data[0])) { - datasets[i] = []; - - for (j = 0, jlen = data.length; j < jlen; ++j) { - timestamp = parse(me, data[j]); - timestamps.push(timestamp); - datasets[i][j] = timestamp; - } - } else { - for (j = 0, jlen = labels.length; j < jlen; ++j) { - timestamps.push(labels[j]); - } - datasets[i] = labels.slice(0); - } - } else { - datasets[i] = []; - } - } - - if (labels.length) { - // Sort labels **after** data have been converted - labels = arrayUnique(labels).sort(sorter); - min = Math.min(min, labels[0]); - max = Math.max(max, labels[labels.length - 1]); - } - - if (timestamps.length) { - timestamps = arrayUnique(timestamps).sort(sorter); - min = Math.min(min, timestamps[0]); - max = Math.max(max, timestamps[timestamps.length - 1]); - } - - min = parse(me, timeOpts.min) || min; - max = parse(me, timeOpts.max) || max; - - // In case there is no valid min/max, set limits based on unit time option - min = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min; - max = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max; - - // Make sure that max is strictly higher than min (required by the lookup table) - me.min = Math.min(min, max); - me.max = Math.max(min + 1, max); - - // PRIVATE - me._horizontal = me.isHorizontal(); - me._table = []; - me._timestamps = { - data: timestamps, - datasets: datasets, - labels: labels - }; - }, - - buildTicks: function() { - var me = this; - var min = me.min; - var max = me.max; - var options = me.options; - var timeOpts = options.time; - var timestamps = []; - var ticks = []; - var i, ilen, timestamp; - - switch (options.ticks.source) { - case 'data': - timestamps = me._timestamps.data; - break; - case 'labels': - timestamps = me._timestamps.labels; - break; - case 'auto': - default: - timestamps = generate(me, min, max, me.getLabelCapacity(min), options); - } - - if (options.bounds === 'ticks' && timestamps.length) { - min = timestamps[0]; - max = timestamps[timestamps.length - 1]; - } - - // Enforce limits with user min/max options - min = parse(me, timeOpts.min) || min; - max = parse(me, timeOpts.max) || max; - - // Remove ticks outside the min/max range - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - timestamp = timestamps[i]; - if (timestamp >= min && timestamp <= max) { - ticks.push(timestamp); - } - } - - me.min = min; - me.max = max; - - // PRIVATE - me._unit = timeOpts.unit || determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max); - me._majorUnit = determineMajorUnit(me._unit); - me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); - me._offsets = computeOffsets(me._table, ticks, min, max, options); - - if (options.ticks.reverse) { - ticks.reverse(); - } - - return ticksFromTimestamps(me, ticks, me._majorUnit); - }, - - getLabelForIndex: function(index, datasetIndex) { - var me = this; - var adapter = me._adapter; - var data = me.chart.data; - var timeOpts = me.options.time; - var label = data.labels && index < data.labels.length ? data.labels[index] : ''; - var value = data.datasets[datasetIndex].data[index]; - - if (helpers$1.isObject(value)) { - label = me.getRightValue(value); - } - if (timeOpts.tooltipFormat) { - return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat); - } - if (typeof label === 'string') { - return label; - } - return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime); - }, - - /** - * Function to format an individual tick mark - * @private - */ - tickFormatFunction: function(time, index, ticks, format) { - var me = this; - var adapter = me._adapter; - var options = me.options; - var formats = options.time.displayFormats; - var minorFormat = formats[me._unit]; - var majorUnit = me._majorUnit; - var majorFormat = formats[majorUnit]; - var majorTime = +adapter.startOf(time, majorUnit); - var majorTickOpts = options.ticks.major; - var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; - var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat); - var tickOpts = major ? majorTickOpts : options.ticks.minor; - var formatter = valueOrDefault$c(tickOpts.callback, tickOpts.userCallback); - - return formatter ? formatter(label, index, ticks) : label; - }, - - convertTicksToLabels: function(ticks) { - var labels = []; - var i, ilen; - - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(this.tickFormatFunction(ticks[i].value, i, ticks)); - } - - return labels; - }, - - /** - * @private - */ - getPixelForOffset: function(time) { - var me = this; - var isReverse = me.options.ticks.reverse; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? isReverse ? me.right : me.left : isReverse ? me.bottom : me.top; - var pos = interpolate$1(me._table, 'time', time, 'pos'); - var offset = size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end); - - return isReverse ? start - offset : start + offset; - }, - - getPixelForValue: function(value, index, datasetIndex) { - var me = this; - var time = null; - - if (index !== undefined && datasetIndex !== undefined) { - time = me._timestamps.datasets[datasetIndex][index]; - } - - if (time === null) { - time = parse(me, value); - } - - if (time !== null) { - return me.getPixelForOffset(time); - } - }, - - getPixelForTick: function(index) { - var ticks = this.getTicks(); - return index >= 0 && index < ticks.length ? - this.getPixelForOffset(ticks[index].value) : - null; - }, - - getValueForPixel: function(pixel) { - var me = this; - var size = me._horizontal ? me.width : me.height; - var start = me._horizontal ? me.left : me.top; - var pos = (size ? (pixel - start) / size : 0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end; - var time = interpolate$1(me._table, 'pos', pos, 'time'); - - // DEPRECATION, we should return time directly - return me._adapter._create(time); - }, - - /** - * Crude approximation of what the label width might be - * @private - */ - getLabelWidth: function(label) { - var me = this; - var ticksOpts = me.options.ticks; - var tickLabelWidth = me.ctx.measureText(label).width; - var angle = helpers$1.toRadians(ticksOpts.maxRotation); - var cosRotation = Math.cos(angle); - var sinRotation = Math.sin(angle); - var tickFontSize = valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize); - - return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); - }, - - /** - * @private - */ - getLabelCapacity: function(exampleTime) { - var me = this; - - // pick the longest format (milliseconds) for guestimation - var format = me.options.time.displayFormats.millisecond; - var exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format); - var tickLabelWidth = me.getLabelWidth(exampleLabel); - var innerWidth = me.isHorizontal() ? me.width : me.height; - var capacity = Math.floor(innerWidth / tickLabelWidth); - - return capacity > 0 ? capacity : 1; - } -}); - -// INTERNAL: static default options, registered in src/index.js -var _defaults$4 = defaultConfig$4; -scale_time._defaults = _defaults$4; - -var scales = { - category: scale_category, - linear: scale_linear, - logarithmic: scale_logarithmic, - radialLinear: scale_radialLinear, - time: scale_time -}; - -var FORMATS = { - datetime: 'MMM D, YYYY, h:mm:ss a', - millisecond: 'h:mm:ss.SSS a', - second: 'h:mm:ss a', - minute: 'h:mm a', - hour: 'hA', - day: 'MMM D', - week: 'll', - month: 'MMM YYYY', - quarter: '[Q]Q - YYYY', - year: 'YYYY' -}; - -core_adapters._date.override(typeof moment === 'function' ? { - _id: 'moment', // DEBUG ONLY - - formats: function() { - return FORMATS; - }, - - parse: function(value, format) { - if (typeof value === 'string' && typeof format === 'string') { - value = moment(value, format); - } else if (!(value instanceof moment)) { - value = moment(value); - } - return value.isValid() ? value.valueOf() : null; - }, - - format: function(time, format) { - return moment(time).format(format); - }, - - add: function(time, amount, unit) { - return moment(time).add(amount, unit).valueOf(); - }, - - diff: function(max, min, unit) { - return moment.duration(moment(max).diff(moment(min))).as(unit); - }, - - startOf: function(time, unit, weekday) { - time = moment(time); - if (unit === 'isoWeek') { - return time.isoWeekday(weekday).valueOf(); - } - return time.startOf(unit).valueOf(); - }, - - endOf: function(time, unit) { - return moment(time).endOf(unit).valueOf(); - }, - - // DEPRECATIONS - - /** - * Provided for backward compatibility with scale.getValueForPixel(). - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ - _create: function(time) { - return moment(time); - }, -} : {}); - -core_defaults._set('global', { - plugins: { - filler: { - propagate: true - } - } -}); - -var mappers = { - dataset: function(source) { - var index = source.fill; - var chart = source.chart; - var meta = chart.getDatasetMeta(index); - var visible = meta && chart.isDatasetVisible(index); - var points = (visible && meta.dataset._children) || []; - var length = points.length || 0; - - return !length ? null : function(point, i) { - return (i < length && points[i]._view) || null; - }; - }, - - boundary: function(source) { - var boundary = source.boundary; - var x = boundary ? boundary.x : null; - var y = boundary ? boundary.y : null; - - return function(point) { - return { - x: x === null ? point.x : x, - y: y === null ? point.y : y, - }; - }; - } -}; - -// @todo if (fill[0] === '#') -function decodeFill(el, index, count) { - var model = el._model || {}; - var fill = model.fill; - var target; - - if (fill === undefined) { - fill = !!model.backgroundColor; - } - - if (fill === false || fill === null) { - return false; - } - - if (fill === true) { - return 'origin'; - } - - target = parseFloat(fill, 10); - if (isFinite(target) && Math.floor(target) === target) { - if (fill[0] === '-' || fill[0] === '+') { - target = index + target; - } - - if (target === index || target < 0 || target >= count) { - return false; - } - - return target; - } - - switch (fill) { - // compatibility - case 'bottom': - return 'start'; - case 'top': - return 'end'; - case 'zero': - return 'origin'; - // supported boundaries - case 'origin': - case 'start': - case 'end': - return fill; - // invalid fill values - default: - return false; - } -} - -function computeBoundary(source) { - var model = source.el._model || {}; - var scale = source.el._scale || {}; - var fill = source.fill; - var target = null; - var horizontal; - - if (isFinite(fill)) { - return null; - } - - // Backward compatibility: until v3, we still need to support boundary values set on - // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and - // controllers might still use it (e.g. the Smith chart). - - if (fill === 'start') { - target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; - } else if (fill === 'end') { - target = model.scaleTop === undefined ? scale.top : model.scaleTop; - } else if (model.scaleZero !== undefined) { - target = model.scaleZero; - } else if (scale.getBasePosition) { - target = scale.getBasePosition(); - } else if (scale.getBasePixel) { - target = scale.getBasePixel(); - } - - if (target !== undefined && target !== null) { - if (target.x !== undefined && target.y !== undefined) { - return target; - } - - if (helpers$1.isFinite(target)) { - horizontal = scale.isHorizontal(); - return { - x: horizontal ? target : null, - y: horizontal ? null : target - }; - } - } - - return null; -} - -function resolveTarget(sources, index, propagate) { - var source = sources[index]; - var fill = source.fill; - var visited = [index]; - var target; - - if (!propagate) { - return fill; - } - - while (fill !== false && visited.indexOf(fill) === -1) { - if (!isFinite(fill)) { - return fill; - } - - target = sources[fill]; - if (!target) { - return false; - } - - if (target.visible) { - return fill; - } - - visited.push(fill); - fill = target.fill; - } - - return false; -} - -function createMapper(source) { - var fill = source.fill; - var type = 'dataset'; - - if (fill === false) { - return null; - } - - if (!isFinite(fill)) { - type = 'boundary'; - } - - return mappers[type](source); -} - -function isDrawable(point) { - return point && !point.skip; -} - -function drawArea(ctx, curve0, curve1, len0, len1) { - var i; - - if (!len0 || !len1) { - return; - } - - // building first area curve (normal) - ctx.moveTo(curve0[0].x, curve0[0].y); - for (i = 1; i < len0; ++i) { - helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); - } - - // joining the two area curves - ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); - - // building opposite area curve (reverse) - for (i = len1 - 1; i > 0; --i) { - helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); - } -} - -function doFill(ctx, points, mapper, view, color, loop) { - var count = points.length; - var span = view.spanGaps; - var curve0 = []; - var curve1 = []; - var len0 = 0; - var len1 = 0; - var i, ilen, index, p0, p1, d0, d1; - - ctx.beginPath(); - - for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { - index = i % count; - p0 = points[index]._view; - p1 = mapper(p0, index, view); - d0 = isDrawable(p0); - d1 = isDrawable(p1); - - if (d0 && d1) { - len0 = curve0.push(p0); - len1 = curve1.push(p1); - } else if (len0 && len1) { - if (!span) { - drawArea(ctx, curve0, curve1, len0, len1); - len0 = len1 = 0; - curve0 = []; - curve1 = []; - } else { - if (d0) { - curve0.push(p0); - } - if (d1) { - curve1.push(p1); - } - } - } - } - - drawArea(ctx, curve0, curve1, len0, len1); - - ctx.closePath(); - ctx.fillStyle = color; - ctx.fill(); -} - -var plugin_filler = { - id: 'filler', - - afterDatasetsUpdate: function(chart, options) { - var count = (chart.data.datasets || []).length; - var propagate = options.propagate; - var sources = []; - var meta, i, el, source; - - for (i = 0; i < count; ++i) { - meta = chart.getDatasetMeta(i); - el = meta.dataset; - source = null; - - if (el && el._model && el instanceof elements.Line) { - source = { - visible: chart.isDatasetVisible(i), - fill: decodeFill(el, i, count), - chart: chart, - el: el - }; - } - - meta.$filler = source; - sources.push(source); - } - - for (i = 0; i < count; ++i) { - source = sources[i]; - if (!source) { - continue; - } - - source.fill = resolveTarget(sources, i, propagate); - source.boundary = computeBoundary(source); - source.mapper = createMapper(source); - } - }, - - beforeDatasetDraw: function(chart, args) { - var meta = args.meta.$filler; - if (!meta) { - return; - } - - var ctx = chart.ctx; - var el = meta.el; - var view = el._view; - var points = el._children || []; - var mapper = meta.mapper; - var color = view.backgroundColor || core_defaults.global.defaultColor; - - if (mapper && color && points.length) { - helpers$1.canvas.clipArea(ctx, chart.chartArea); - doFill(ctx, points, mapper, view, color, el._loop); - helpers$1.canvas.unclipArea(ctx); - } - } -}; - -var noop$1 = helpers$1.noop; -var valueOrDefault$d = helpers$1.valueOrDefault; - -core_defaults._set('global', { - legend: { - display: true, - position: 'top', - fullWidth: true, - reverse: false, - weight: 1000, - - // a callback that will handle - onClick: function(e, legendItem) { - var index = legendItem.datasetIndex; - var ci = this.chart; - var meta = ci.getDatasetMeta(index); - - // See controller.isDatasetVisible comment - meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; - - // We hid a dataset ... rerender the chart - ci.update(); - }, - - onHover: null, - onLeave: null, - - labels: { - boxWidth: 40, - padding: 10, - // Generates labels shown in the legend - // Valid properties to return: - // text : text to display - // fillStyle : fill of coloured box - // strokeStyle: stroke of coloured box - // hidden : if this legend item refers to a hidden item - // lineCap : cap style for line - // lineDash - // lineDashOffset : - // lineJoin : - // lineWidth : - generateLabels: function(chart) { - var data = chart.data; - return helpers$1.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { - return { - text: dataset.label, - fillStyle: (!helpers$1.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), - hidden: !chart.isDatasetVisible(i), - lineCap: dataset.borderCapStyle, - lineDash: dataset.borderDash, - lineDashOffset: dataset.borderDashOffset, - lineJoin: dataset.borderJoinStyle, - lineWidth: dataset.borderWidth, - strokeStyle: dataset.borderColor, - pointStyle: dataset.pointStyle, - - // Below is extra data used for toggling the datasets - datasetIndex: i - }; - }, this) : []; - } - } - }, - - legendCallback: function(chart) { - var text = []; - text.push('
    '); - for (var i = 0; i < chart.data.datasets.length; i++) { - text.push('
  • '); - if (chart.data.datasets[i].label) { - text.push(chart.data.datasets[i].label); - } - text.push('
  • '); - } - text.push('
'); - return text.join(''); - } -}); - -/** - * Helper function to get the box width based on the usePointStyle option - * @param {object} labelopts - the label options on the legend - * @param {number} fontSize - the label font size - * @return {number} width of the color box area - */ -function getBoxWidth(labelOpts, fontSize) { - return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ? - fontSize : - labelOpts.boxWidth; -} - -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Legend = core_element.extend({ - - initialize: function(config) { - helpers$1.extend(this, config); - - // Contains hit boxes for each dataset (in dataset order) - this.legendHitBoxes = []; - - /** - * @private - */ - this._hoveredItem = null; - - // Are we in doughnut mode which has a different data type - this.doughnutMode = false; - }, - - // These methods are ordered by lifecycle. Utilities then follow. - // Any function defined here is inherited by all legend types. - // Any function can be extended by the legend type - - beforeUpdate: noop$1, - update: function(maxWidth, maxHeight, margins) { - var me = this; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); - - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - }, - afterUpdate: noop$1, - - // - - beforeSetDimensions: noop$1, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop$1, - - // - - beforeBuildLabels: noop$1, - buildLabels: function() { - var me = this; - var labelOpts = me.options.labels || {}; - var legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || []; - - if (labelOpts.filter) { - legendItems = legendItems.filter(function(item) { - return labelOpts.filter(item, me.chart.data); - }); - } - - if (me.options.reverse) { - legendItems.reverse(); - } - - me.legendItems = legendItems; - }, - afterBuildLabels: noop$1, - - // - - beforeFit: noop$1, - fit: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var display = opts.display; - - var ctx = me.ctx; - - var labelFont = helpers$1.options._parseFont(labelOpts); - var fontSize = labelFont.size; - - // Reset hit boxes - var hitboxes = me.legendHitBoxes = []; - - var minSize = me.minSize; - var isHorizontal = me.isHorizontal(); - - if (isHorizontal) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = display ? 10 : 0; - } else { - minSize.width = display ? 10 : 0; - minSize.height = me.maxHeight; // fill all the height - } - - // Increase sizes here - if (display) { - ctx.font = labelFont.string; - - if (isHorizontal) { - // Labels - - // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one - var lineWidths = me.lineWidths = [0]; - var totalHeight = 0; - - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; - - helpers$1.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - - if (i === 0 || lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width) { - totalHeight += fontSize + labelOpts.padding; - lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = labelOpts.padding; - } - - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: width, - height: fontSize - }; - - lineWidths[lineWidths.length - 1] += width + labelOpts.padding; - }); - - minSize.height += totalHeight; - - } else { - var vPadding = labelOpts.padding; - var columnWidths = me.columnWidths = []; - var totalWidth = labelOpts.padding; - var currentColWidth = 0; - var currentColHeight = 0; - var itemHeight = fontSize + vPadding; - - helpers$1.each(me.legendItems, function(legendItem, i) { - var boxWidth = getBoxWidth(labelOpts, fontSize); - var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; - - // If too tall, go to new column - if (i > 0 && currentColHeight + itemHeight > minSize.height - vPadding) { - totalWidth += currentColWidth + labelOpts.padding; - columnWidths.push(currentColWidth); // previous column width - - currentColWidth = 0; - currentColHeight = 0; - } - - // Get max width - currentColWidth = Math.max(currentColWidth, itemWidth); - currentColHeight += itemHeight; - - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = { - left: 0, - top: 0, - width: itemWidth, - height: fontSize - }; - }); - - totalWidth += currentColWidth; - columnWidths.push(currentColWidth); - minSize.width += totalWidth; - } - } - - me.width = minSize.width; - me.height = minSize.height; - }, - afterFit: noop$1, - - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - - // Actually draw the legend on the canvas - draw: function() { - var me = this; - var opts = me.options; - var labelOpts = opts.labels; - var globalDefaults = core_defaults.global; - var defaultColor = globalDefaults.defaultColor; - var lineDefault = globalDefaults.elements.line; - var legendWidth = me.width; - var lineWidths = me.lineWidths; - - if (opts.display) { - var ctx = me.ctx; - var fontColor = valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor); - var labelFont = helpers$1.options._parseFont(labelOpts); - var fontSize = labelFont.size; - var cursor; - - // Canvas setup - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - ctx.lineWidth = 0.5; - ctx.strokeStyle = fontColor; // for strikethrough effect - ctx.fillStyle = fontColor; // render in correct colour - ctx.font = labelFont.string; - - var boxWidth = getBoxWidth(labelOpts, fontSize); - var hitboxes = me.legendHitBoxes; - - // current position - var drawLegendBox = function(x, y, legendItem) { - if (isNaN(boxWidth) || boxWidth <= 0) { - return; - } - - // Set the ctx for the box - ctx.save(); - - var lineWidth = valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth); - ctx.fillStyle = valueOrDefault$d(legendItem.fillStyle, defaultColor); - ctx.lineCap = valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle); - ctx.lineDashOffset = valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset); - ctx.lineJoin = valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle); - ctx.lineWidth = lineWidth; - ctx.strokeStyle = valueOrDefault$d(legendItem.strokeStyle, defaultColor); - - if (ctx.setLineDash) { - // IE 9 and 10 do not support line dash - ctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash)); - } - - if (opts.labels && opts.labels.usePointStyle) { - // Recalculate x and y for drawPoint() because its expecting - // x and y to be center of figure (instead of top left) - var radius = boxWidth * Math.SQRT2 / 2; - var centerX = x + boxWidth / 2; - var centerY = y + fontSize / 2; - - // Draw pointStyle as legend symbol - helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); - } else { - // Draw box as legend symbol - if (lineWidth !== 0) { - ctx.strokeRect(x, y, boxWidth, fontSize); - } - ctx.fillRect(x, y, boxWidth, fontSize); - } - - ctx.restore(); - }; - var fillText = function(x, y, legendItem, textWidth) { - var halfFontSize = fontSize / 2; - var xLeft = boxWidth + halfFontSize + x; - var yMiddle = y + halfFontSize; - - ctx.fillText(legendItem.text, xLeft, yMiddle); - - if (legendItem.hidden) { - // Strikethrough the text if hidden - ctx.beginPath(); - ctx.lineWidth = 2; - ctx.moveTo(xLeft, yMiddle); - ctx.lineTo(xLeft + textWidth, yMiddle); - ctx.stroke(); - } - }; - - // Horizontal - var isHorizontal = me.isHorizontal(); - if (isHorizontal) { - cursor = { - x: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding, - y: me.top + labelOpts.padding, - line: 0 - }; - } else { - cursor = { - x: me.left + labelOpts.padding, - y: me.top + labelOpts.padding, - line: 0 - }; - } - - var itemHeight = fontSize + labelOpts.padding; - helpers$1.each(me.legendItems, function(legendItem, i) { - var textWidth = ctx.measureText(legendItem.text).width; - var width = boxWidth + (fontSize / 2) + textWidth; - var x = cursor.x; - var y = cursor.y; - - // Use (me.left + me.minSize.width) and (me.top + me.minSize.height) - // instead of me.right and me.bottom because me.width and me.height - // may have been changed since me.minSize was calculated - if (isHorizontal) { - if (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) { - y = cursor.y += itemHeight; - cursor.line++; - x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding; - } - } else if (i > 0 && y + itemHeight > me.top + me.minSize.height) { - x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; - y = cursor.y = me.top + labelOpts.padding; - cursor.line++; - } - - drawLegendBox(x, y, legendItem); - - hitboxes[i].left = x; - hitboxes[i].top = y; - - // Fill the actual label - fillText(x, y, legendItem, textWidth); - - if (isHorizontal) { - cursor.x += width + labelOpts.padding; - } else { - cursor.y += itemHeight; - } - - }); - } - }, - - /** - * @private - */ - _getLegendItemAt: function(x, y) { - var me = this; - var i, hitBox, lh; - - if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { - // See if we are touching one of the dataset boxes - lh = me.legendHitBoxes; - for (i = 0; i < lh.length; ++i) { - hitBox = lh[i]; - - if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { - // Touching an element - return me.legendItems[i]; - } - } - } - - return null; - }, - - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - */ - handleEvent: function(e) { - var me = this; - var opts = me.options; - var type = e.type === 'mouseup' ? 'click' : e.type; - var hoveredItem; - - if (type === 'mousemove') { - if (!opts.onHover && !opts.onLeave) { - return; - } - } else if (type === 'click') { - if (!opts.onClick) { - return; - } - } else { - return; - } - - // Chart event already has relative position in it - hoveredItem = me._getLegendItemAt(e.x, e.y); - - if (type === 'click') { - if (hoveredItem && opts.onClick) { - // use e.native for backwards compatibility - opts.onClick.call(me, e.native, hoveredItem); - } - } else { - if (opts.onLeave && hoveredItem !== me._hoveredItem) { - if (me._hoveredItem) { - opts.onLeave.call(me, e.native, me._hoveredItem); - } - me._hoveredItem = hoveredItem; - } - - if (opts.onHover && hoveredItem) { - // use e.native for backwards compatibility - opts.onHover.call(me, e.native, hoveredItem); - } - } - } -}); - -function createNewLegendAndAttach(chart, legendOpts) { - var legend = new Legend({ - ctx: chart.ctx, - options: legendOpts, - chart: chart - }); - - core_layouts.configure(chart, legend, legendOpts); - core_layouts.addBox(chart, legend); - chart.legend = legend; -} - -var plugin_legend = { - id: 'legend', - - /** - * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making - * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Legend, - - beforeInit: function(chart) { - var legendOpts = chart.options.legend; - - if (legendOpts) { - createNewLegendAndAttach(chart, legendOpts); - } - }, - - beforeUpdate: function(chart) { - var legendOpts = chart.options.legend; - var legend = chart.legend; - - if (legendOpts) { - helpers$1.mergeIf(legendOpts, core_defaults.global.legend); - - if (legend) { - core_layouts.configure(chart, legend, legendOpts); - legend.options = legendOpts; - } else { - createNewLegendAndAttach(chart, legendOpts); - } - } else if (legend) { - core_layouts.removeBox(chart, legend); - delete chart.legend; - } - }, - - afterEvent: function(chart, e) { - var legend = chart.legend; - if (legend) { - legend.handleEvent(e); - } - } -}; - -var noop$2 = helpers$1.noop; - -core_defaults._set('global', { - title: { - display: false, - fontStyle: 'bold', - fullWidth: true, - padding: 10, - position: 'top', - text: '', - weight: 2000 // by default greater than legend (1000) to be above - } -}); - -/** - * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required! - */ -var Title = core_element.extend({ - initialize: function(config) { - var me = this; - helpers$1.extend(me, config); - - // Contains hit boxes for each dataset (in dataset order) - me.legendHitBoxes = []; - }, - - // These methods are ordered by lifecycle. Utilities then follow. - - beforeUpdate: noop$2, - update: function(maxWidth, maxHeight, margins) { - var me = this; - - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); - - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = margins; - - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); - // Labels - me.beforeBuildLabels(); - me.buildLabels(); - me.afterBuildLabels(); - - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); - - return me.minSize; - - }, - afterUpdate: noop$2, - - // - - beforeSetDimensions: noop$2, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; - - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } - - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - - // Reset minSize - me.minSize = { - width: 0, - height: 0 - }; - }, - afterSetDimensions: noop$2, - - // - - beforeBuildLabels: noop$2, - buildLabels: noop$2, - afterBuildLabels: noop$2, - - // - - beforeFit: noop$2, - fit: function() { - var me = this; - var opts = me.options; - var display = opts.display; - var minSize = me.minSize; - var lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1; - var fontOpts = helpers$1.options._parseFont(opts); - var textSize = display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2) : 0; - - if (me.isHorizontal()) { - minSize.width = me.maxWidth; // fill all the width - minSize.height = textSize; - } else { - minSize.width = textSize; - minSize.height = me.maxHeight; // fill all the height - } - - me.width = minSize.width; - me.height = minSize.height; - - }, - afterFit: noop$2, - - // Shared Methods - isHorizontal: function() { - var pos = this.options.position; - return pos === 'top' || pos === 'bottom'; - }, - - // Actually draw the title block on the canvas - draw: function() { - var me = this; - var ctx = me.ctx; - var opts = me.options; - - if (opts.display) { - var fontOpts = helpers$1.options._parseFont(opts); - var lineHeight = fontOpts.lineHeight; - var offset = lineHeight / 2 + opts.padding; - var rotation = 0; - var top = me.top; - var left = me.left; - var bottom = me.bottom; - var right = me.right; - var maxWidth, titleX, titleY; - - ctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour - ctx.font = fontOpts.string; - - // Horizontal - if (me.isHorizontal()) { - titleX = left + ((right - left) / 2); // midpoint of the width - titleY = top + offset; - maxWidth = right - left; - } else { - titleX = opts.position === 'left' ? left + offset : right - offset; - titleY = top + ((bottom - top) / 2); - maxWidth = bottom - top; - rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); - } - - ctx.save(); - ctx.translate(titleX, titleY); - ctx.rotate(rotation); - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - - var text = opts.text; - if (helpers$1.isArray(text)) { - var y = 0; - for (var i = 0; i < text.length; ++i) { - ctx.fillText(text[i], 0, y, maxWidth); - y += lineHeight; - } - } else { - ctx.fillText(text, 0, 0, maxWidth); - } - - ctx.restore(); - } - } -}); - -function createNewTitleBlockAndAttach(chart, titleOpts) { - var title = new Title({ - ctx: chart.ctx, - options: titleOpts, - chart: chart - }); - - core_layouts.configure(chart, title, titleOpts); - core_layouts.addBox(chart, title); - chart.titleBlock = title; -} - -var plugin_title = { - id: 'title', - - /** - * Backward compatibility: since 2.1.5, the title is registered as a plugin, making - * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of - * the plugin, which one will be re-exposed in the chart.js file. - * https://github.com/chartjs/Chart.js/pull/2640 - * @private - */ - _element: Title, - - beforeInit: function(chart) { - var titleOpts = chart.options.title; - - if (titleOpts) { - createNewTitleBlockAndAttach(chart, titleOpts); - } - }, - - beforeUpdate: function(chart) { - var titleOpts = chart.options.title; - var titleBlock = chart.titleBlock; - - if (titleOpts) { - helpers$1.mergeIf(titleOpts, core_defaults.global.title); - - if (titleBlock) { - core_layouts.configure(chart, titleBlock, titleOpts); - titleBlock.options = titleOpts; - } else { - createNewTitleBlockAndAttach(chart, titleOpts); - } - } else if (titleBlock) { - core_layouts.removeBox(chart, titleBlock); - delete chart.titleBlock; - } - } -}; - -var plugins = {}; -var filler = plugin_filler; -var legend = plugin_legend; -var title = plugin_title; -plugins.filler = filler; -plugins.legend = legend; -plugins.title = title; - -/** - * @namespace Chart - */ - - -core_controller.helpers = helpers$1; - -// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! -core_helpers(core_controller); - -core_controller._adapters = core_adapters; -core_controller.Animation = core_animation; -core_controller.animationService = core_animations; -core_controller.controllers = controllers; -core_controller.DatasetController = core_datasetController; -core_controller.defaults = core_defaults; -core_controller.Element = core_element; -core_controller.elements = elements; -core_controller.Interaction = core_interaction; -core_controller.layouts = core_layouts; -core_controller.platform = platform; -core_controller.plugins = core_plugins; -core_controller.Scale = core_scale; -core_controller.scaleService = core_scaleService; -core_controller.Ticks = core_ticks; -core_controller.Tooltip = core_tooltip; - -// Register built-in scales - -core_controller.helpers.each(scales, function(scale, type) { - core_controller.scaleService.registerScaleType(type, scale, scale._defaults); -}); - -// Load to register built-in adapters (as side effects) - - -// Loading built-in plugins - -for (var k in plugins) { - if (plugins.hasOwnProperty(k)) { - core_controller.plugins.register(plugins[k]); - } -} - -core_controller.platform.initialize(); - -var src = core_controller; -if (typeof window !== 'undefined') { - window.Chart = core_controller; -} - -// DEPRECATIONS - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Chart - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -core_controller.Chart = core_controller; - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Legend - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.Legend = plugins.legend._element; - -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Title - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.Title = plugins.title._element; - -/** - * Provided for backward compatibility, use Chart.plugins instead - * @namespace Chart.pluginService - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -core_controller.pluginService = core_controller.plugins; - -/** - * Provided for backward compatibility, inheriting from Chart.PlugingBase has no - * effect, instead simply create/register plugins via plain JavaScript objects. - * @interface Chart.PluginBase - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ -core_controller.PluginBase = core_controller.Element.extend({}); - -/** - * Provided for backward compatibility, use Chart.helpers.canvas instead. - * @namespace Chart.canvasHelpers - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -core_controller.canvasHelpers = core_controller.helpers.canvas; - -/** - * Provided for backward compatibility, use Chart.layouts instead. - * @namespace Chart.layoutService - * @deprecated since version 2.7.3 - * @todo remove at version 3 - * @private - */ -core_controller.layoutService = core_controller.layouts; - -/** - * Provided for backward compatibility, not available anymore. - * @namespace Chart.LinearScaleBase - * @deprecated since version 2.8 - * @todo remove at version 3 - * @private - */ -core_controller.LinearScaleBase = scale_linearbase; - -/** - * Provided for backward compatibility, instead we should create a new Chart - * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`). - * @deprecated since version 2.8.0 - * @todo remove at version 3 - */ -core_controller.helpers.each( - [ - 'Bar', - 'Bubble', - 'Doughnut', - 'Line', - 'PolarArea', - 'Radar', - 'Scatter' - ], - function(klass) { - core_controller[klass] = function(ctx, cfg) { - return new core_controller(ctx, core_controller.helpers.merge(cfg || {}, { - type: klass.charAt(0).toLowerCase() + klass.slice(1) - })); - }; - } -); - -return src; - -}))); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.css deleted file mode 100644 index 9dc5ac2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.js deleted file mode 100644 index c74a791..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/chart.js/Chart.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Chart.js v2.8.0 - * https://www.chartjs.org - * (c) 2019 Chart.js Contributors - * Released under the MIT License - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],function(t){return e(function(){try{return t("moment")}catch(t){}}())}):t.Chart=e(t.moment)}(this,function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:i,rgb2hsv:n,rgb2hwb:a,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:l,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:u,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return a(u(t))},hsl2cmyk:function(t){return o(u(t))},hsl2keyword:function(t){return s(u(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return a(h(t))},hsv2cmyk:function(t){return o(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:c,hwb2hsl:function(t){return i(c(t))},hwb2hsv:function(t){return n(c(t))},hwb2cmyk:function(t){return o(c(t))},hwb2keyword:function(t){return s(c(t))},cmyk2rgb:f,cmyk2hsl:function(t){return i(f(t))},cmyk2hsv:function(t){return n(f(t))},cmyk2hwb:function(t){return a(f(t))},cmyk2keyword:function(t){return s(f(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return n(w(t))},keyword2hwb:function(t){return a(w(t))},keyword2cmyk:function(t){return o(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return l(w(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return x(m(t))},lab2xyz:v,lab2rgb:y,lab2lch:x,lch2lab:k,lch2xyz:function(t){return v(k(t))},lch2rgb:function(t){return y(k(t))}};function i(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(r+s)/2,[e,100*(s==r?0:i<=.5?l/(s+r):l/(2-s-r)),100*i]}function n(t){var e,i,n=t[0],a=t[1],o=t[2],r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return i=0==s?0:l/s*1e3/10,s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function a(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function o(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function s(t){return _[JSON.stringify(t)]}function l(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=l(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function u(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var d=0;d<3;d++)(n=r+1/3*-(d-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[d]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function c(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,d=s+l;switch(d>1&&(s/=d,l/=d),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function f(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function m(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function v(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function y(t){return p(v(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},_={};for(var C in M)_[JSON.stringify(M[C])]=C;var S=function(){return new T};for(var P in e){S[P+"Raw"]=function(t){return function(i){return"number"==typeof i&&(i=Array.prototype.slice.call(arguments)),e[t](i)}}(P);var I=/(\w+)2(\w+)/.exec(P),A=I[1],D=I[2];(S[A]=S[A]||{})[D]=S[P]=function(t){return function(i){"number"==typeof i&&(i=Array.prototype.slice.call(arguments));var n=e[t](i);if("string"==typeof n||void 0===n)return n;for(var a=0;a=0&&e<1?H(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return N(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:N,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return W(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:W,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return V(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return j[t.slice(0,3)]}};function O(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(n){a=(n=n[1])[3];for(var o=0;oi?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=t,n=void 0===e?.5:e,a=2*n-1,o=this.alpha()-i.alpha(),r=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,s=1-r;return this.rgb(r*this.red()+s*i.red(),r*this.green()+s*i.green(),r*this.blue()+s*i.blue()).alpha(this.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new Y,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],"[object Array]"===(e={}.toString.call(t))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return i}},Y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Y.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n=0;a--)e.call(i,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},$={effects:Z};G.easingEffects=Z;var J=Math.PI,Q=J/180,tt=2*J,et=J/2,it=J/4,nt=2*J/3,at={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2,n/2),s=e+r,l=i+r,d=e+n-r,u=i+a-r;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,i,n,a=this.animations,o=0;o=i?(ut.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(o,1)):++o}},xt=ut.options.resolve,yt=["push","pop","shift","splice","unshift"];function kt(t,e){var i=t._chartjs;if(i){var n=i.listeners,a=n.indexOf(e);-1!==a&&n.splice(a,1),n.length>0||(yt.forEach(function(e){delete t[e]}),delete t._chartjs)}}var wt=function(t,e){this.initialize(t,e)};ut.extend(wt.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&kt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;ti&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;is;)a-=2*Math.PI;for(;a=r&&a<=s,d=o>=i.innerRadius&&o<=i.outerRadius;return l&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t,e=this._chart.ctx,i=this._view,n=i.startAngle,a=i.endAngle,o="inner"===i.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(i.x,i.y,Math.max(i.outerRadius-o,0),n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.fillStyle=i.backgroundColor,e.fill(),i.borderWidth&&("inner"===i.borderAlign?(e.beginPath(),t=o/i.outerRadius,e.arc(i.x,i.y,i.outerRadius,n-t,a+t),i.innerRadius>o?(t=o/i.innerRadius,e.arc(i.x,i.y,i.innerRadius-o,a+t,n-t,!0)):e.arc(i.x,i.y,o,a+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(i.x,i.y,i.outerRadius,n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.lineWidth=2*i.borderWidth,e.lineJoin="round"):(e.lineWidth=i.borderWidth,e.lineJoin="bevel"),e.strokeStyle=i.borderColor,e.stroke()),e.restore()}}),Ct=ut.valueOrDefault,St=st.global.defaultColor;st._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Pt=pt.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=st.global,d=l.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||d.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||d.borderDash),o.lineDashOffset=Ct(a.borderDashOffset,d.borderDashOffset),o.lineJoin=a.borderJoinStyle||d.borderJoinStyle,o.lineWidth=Ct(a.borderWidth,d.borderWidth),o.strokeStyle=a.borderColor||l.defaultColor,o.beginPath(),u=-1,t=0;tt.x&&(e=Ot(e,"left","right")):t.basei?i:n,r:l.right||a<0?0:a>e?e:a,b:l.bottom||o<0?0:o>i?i:o,l:l.left||r<0?0:r>e?e:r}}function Bt(t,e,i){var n=null===e,a=null===i,o=!(!t||n&&a)&&Rt(t);return o&&(n||e>=o.left&&e<=o.right)&&(a||i>=o.top&&i<=o.bottom)}st._set("global",{elements:{rectangle:{backgroundColor:Ft,borderColor:Ft,borderSkipped:"bottom",borderWidth:0}}});var Nt=pt.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=function(t){var e=Rt(t),i=e.right-e.left,n=e.bottom-e.top,a=zt(t,i/2,n/2);return{outer:{x:e.left,y:e.top,w:i,h:n},inner:{x:e.left+a.l,y:e.top+a.t,w:i-a.l-a.r,h:n-a.t-a.b}}}(e),n=i.outer,a=i.inner;t.fillStyle=e.backgroundColor,t.fillRect(n.x,n.y,n.w,n.h),n.w===a.w&&n.h===a.h||(t.save(),t.beginPath(),t.rect(n.x,n.y,n.w,n.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Bt(this._view,t,e)},inLabelRange:function(t,e){var i=this._view;return Lt(i)?Bt(i,t,null):Bt(i,null,e)},inXRange:function(t){return Bt(this._view,t,null)},inYRange:function(t){return Bt(this._view,null,t)},getCenterPoint:function(){var t,e,i=this._view;return Lt(i)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return Lt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),Wt={},Vt=_t,Et=Pt,Ht=Tt,jt=Nt;Wt.Arc=Vt,Wt.Line=Et,Wt.Point=Ht,Wt.Rectangle=jt;var qt=ut.options.resolve;st._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Yt=Mt.extend({dataElementType:Wt.Rectangle,initialize:function(){var t;Mt.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e0?Math.min(r,n-i):r,i=n;return r}(i,l):-1,pixels:l,start:r,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,d=this.getMeta(),u=this._getValueScale(),h=u.isHorizontal(),c=l.data.datasets,f=+u.getRightValue(c[t].data[e]),g=u.options.minBarLength,p=u.options.stacked,m=d.stack,v=0;if(p||void 0===p&&void 0!==m)for(i=0;i=0&&a>0)&&(v+=a));return o=u.getPixelForValue(v),s=(r=u.getPixelForValue(v+f))-o,void 0!==g&&Math.abs(s)=0&&!h||f<0&&h?o-g:o+g),{size:s,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n=i.scale.options,a="flex"===n.barThickness?function(t,e,i){var n,a=e.pixels,o=a[t],r=t>0?a[t-1]:null,s=t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n],s=r&&r.custom||{},l=t.options.elements.arc;return{text:i,fillStyle:Gt([s.backgroundColor,o.backgroundColor,l.backgroundColor],void 0,n),strokeStyle:Gt([s.borderColor,o.borderColor,l.borderColor],void 0,n),lineWidth:Gt([s.borderWidth,o.borderWidth,l.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:m<-Math.PI?1:0))+g,b={x:Math.cos(m),y:Math.sin(m)},x={x:Math.cos(v),y:Math.sin(v)},y=m<=0&&v>=0||m<=2*Math.PI&&2*Math.PI<=v,k=m<=.5*Math.PI&&.5*Math.PI<=v||m<=2.5*Math.PI&&2.5*Math.PI<=v,w=m<=-Math.PI&&-Math.PI<=v||m<=Math.PI&&Math.PI<=v,M=m<=.5*-Math.PI&&.5*-Math.PI<=v||m<=1.5*Math.PI&&1.5*Math.PI<=v,_=f/100,C={x:w?-1:Math.min(b.x*(b.x<0?1:_),x.x*(x.x<0?1:_)),y:M?-1:Math.min(b.y*(b.y<0?1:_),x.y*(x.y<0?1:_))},S={x:y?1:Math.max(b.x*(b.x>0?1:_),x.x*(x.x>0?1:_)),y:k?1:Math.max(b.y*(b.y>0?1:_),x.y*(x.y>0?1:_))},P={width:.5*(S.x-C.x),height:.5*(S.y-C.y)};d=Math.min(s/P.width,l/P.height),u={x:-.5*(S.x+C.x),y:-.5*(S.y+C.y)}}for(e=0,i=c.length;e0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,i,n,a,o,r,s,l,d=0,u=this.chart;if(!t)for(e=0,i=u.data.datasets.length;e(d=s>d?s:d)?l:d);return d},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Zt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Zt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Zt(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i0&&ee(l[t-1]._model,s)&&(i.controlPointPreviousX=d(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=d(i.controlPointPreviousY,s.top,s.bottom)),t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n].custom||{},s=t.options.elements.arc;return{text:i,fillStyle:ae([r.backgroundColor,o.backgroundColor,s.backgroundColor],void 0,n),strokeStyle:ae([r.borderColor,o.borderColor,s.borderColor],void 0,n),lineWidth:ae([r.borderWidth,o.borderWidth,s.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i0&&(o=t.getDatasetMeta(o[0]._datasetIndex).data),o},"x-axis":function(t,e){return me(t,e,{intersect:!1})},point:function(t,e){return fe(t,he(e,t))},nearest:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis);return ge(t,n,i.intersect,a)},x:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a},y:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a}}};function be(t,e){return ut.where(t,function(t){return t.position===e})}function xe(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}function ye(t,e){ut.each(t,function(t){e[t.position]+=t.isHorizontal()?t.height:t.width})}st._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ke={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;rdiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&we.default||we,_e="$chartjs",Ce="chartjs-size-monitor",Se="chartjs-render-monitor",Pe="chartjs-render-animation",Ie=["animationstart","webkitAnimationStart"],Ae={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function De(t,e){var i=ut.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var Te=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Fe(t,e,i){t.addEventListener(e,i,Te)}function Le(t,e,i){t.removeEventListener(e,i,Te)}function Re(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Oe(t){var e=document.createElement("div");return e.className=t||"",e}function ze(t,e,i){var n,a,o,r,s=t[_e]||(t[_e]={}),l=s.resizer=function(t){var e=Oe(Ce),i=Oe(Ce+"-expand"),n=Oe(Ce+"-shrink");i.appendChild(Oe()),n.appendChild(Oe()),e.appendChild(i),e.appendChild(n),e._reset=function(){i.scrollLeft=1e6,i.scrollTop=1e6,n.scrollLeft=1e6,n.scrollTop=1e6};var a=function(){e._reset(),t()};return Fe(i,"scroll",a.bind(i,"expand")),Fe(n,"scroll",a.bind(n,"shrink")),e}((n=function(){if(s.resizer){var n=i.options.maintainAspectRatio&&t.parentNode,a=n?n.clientWidth:0;e(Re("resize",i)),n&&n.clientWidth0){var o=t[0];o.label?i=o.label:o.xLabel?i=o.xLabel:a>0&&o.index-1?t.split("\n"):t}function Xe(t){var e=st.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:je(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:je(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:je(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:je(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:je(t.titleFontStyle,e.defaultFontStyle),titleFontSize:je(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:je(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:je(t.footerFontStyle,e.defaultFontStyle),footerFontSize:je(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ke(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Ge(t){return Ye([],Ue(t))}var Ze=pt.extend({initialize:function(){this._model=Xe(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},getBeforeBody:function(){return Ge(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var i=this,n=i._options.callbacks,a=[];return ut.each(t,function(t){var o={before:[],lines:[],after:[]};Ye(o.before,Ue(n.beforeLabel.call(i,t,e))),Ye(o.lines,n.label.call(i,t,e)),Ye(o.after,Ue(n.afterLabel.call(i,t,e))),a.push(o)}),a},getAfterBody:function(){return Ge(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},update:function(t){var e,i,n,a,o,r,s,l,d,u,h=this,c=h._options,f=h._model,g=h._model=Xe(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var k=[],w=[];y=qe[c.position].call(h,p,h._eventPosition);var M=[];for(e=0,i=p.length;en.width&&(a=n.width-e.width),a<0&&(a=0)),"top"===u?o+=h:o-="bottom"===u?e.height+h:e.height/2,"center"===u?"left"===d?a+=h:"right"===d&&(a-=h):"left"===d?a-=c:"right"===d&&(a+=c),{x:a,y:o}}(g,x,v=function(t,e){var i,n,a,o,r,s=t._model,l=t._chart,d=t._chart.chartArea,u="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(d.left+d.right)/2,f=(d.top+d.bottom)/2;"center"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(u="left",a(s.x)&&(u="center",h=r(s.y))):n(s.x)&&(u="right",o(s.x)&&(u="center",h=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:u,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,d=i.caretSize,u=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(n=f)-d,o=n,r=s+d,l=s-d):(a=(n=f+p)+d,o=n,r=s-d,l=s+d);else if("left"===h?(n=(a=f+u+d)-d,o=a+d):"right"===h?(n=(a=f+p-u-d)-d,o=a+d):(n=(a=i.caretX)-d,o=a+d),"top"===c)s=(r=g)-d,l=r;else{s=(r=g+m)+d,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i){var n=e.title;if(n.length){t.x=Ke(e,e._titleAlign),i.textAlign=e._titleAlign,i.textBaseline="top";var a,o,r=e.titleFontSize,s=e.titleSpacing;for(i.fillStyle=e.titleFontColor,i.font=ut.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0,o=n.length;a0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(t.save(),t.globalAlpha=a,this.drawBackground(n,e,t,i),n.y+=e.yPadding,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),t.restore())}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!ut.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),$e=qe,Je=Ze;Je.positioners=$e;var Qe=ut.valueOrDefault;function ti(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,o,r,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?ut.merge(e[t][a],[He.getScaleDefaults(o),r]):ut.merge(e[t][a],r)}else ut._merger(t,e,i,n)}})}function ei(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){var a=e[t]||{},o=i[t];"scales"===t?e[t]=ti(a,o):"scale"===t?e[t]=ut.merge(a,[He.getScaleDefaults(o.type),o]):ut._merger(t,e,i,n)}})}function ii(t){return"top"===t||"bottom"===t}st._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var ni=function(t,e){return this.construct(t,e),this};ut.extend(ni.prototype,{construct:function(t,e){var i=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ei(st.global,st[t.type],t.options||{}),t}(e);var n=Ve.acquireContext(t,e),a=n&&n.canvas,o=a&&a.height,r=a&&a.width;i.id=ut.uid(),i.ctx=n,i.canvas=a,i.config=e,i.width=r,i.height=o,i.aspectRatio=o?r/o:null,i.options=e.options,i._bufferedRender=!1,i.chart=i,i.controller=i,ni.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),n&&a?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Ee.notify(t,"beforeInit"),ut.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),Ee.notify(t,"afterInit"),t},clear:function(){return ut.canvas.clear(this),this},stop:function(){return bt.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(ut.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:ut.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",ut.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};Ee.notify(e,"resize",[s]),i.onResize&&i.onResize(e,s),e.stop(),e.update({duration:i.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;ut.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),ut.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,i=t.scales||{},n=[],a=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});e.scales&&(n=n.concat((e.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(e.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),e.scale&&n.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ut.each(n,function(e){var n=e.options,o=n.id,r=Qe(n.type,e.dtype);ii(n.position)!==ii(e.dposition)&&(n.position=e.dposition),a[o]=!0;var s=null;if(o in i&&i[o].type===r)(s=i[o]).options=n,s.ctx=t.ctx,s.chart=t;else{var l=He.getScaleConstructor(r);if(!l)return;s=new l({id:o,type:r,options:n,ctx:t.ctx,chart:t}),i[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)}),ut.each(a,function(t,e){t||delete i[e]}),t.scales=i,He.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return ut.each(t.data.datasets,function(i,n){var a=t.getDatasetMeta(n),o=i.type||t.config.type;if(a.type&&a.type!==o&&(t.destroyDatasetMeta(n),a=t.getDatasetMeta(n)),a.type=o,a.controller)a.controller.updateIndex(n),a.controller.linkScales();else{var r=ue[a.type];if(void 0===r)throw new Error('"'+a.type+'" is not a chart type.');a.controller=new r(t,n),e.push(a.controller)}},t),e},resetElements:function(){var t=this;ut.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,ut.each(e.scales,function(t){ke.removeBox(e,t)}),i=ei(st.global,st[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),Ee._invalidate(n),!1!==Ee.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();ut.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&ut.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],Ee.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==Ee.notify(this,"beforeLayout")&&(ke.update(this,this.width,this.height),Ee.notify(this,"afterScaleUpdate"),Ee.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==Ee.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);Ee.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==Ee.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),Ee.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==Ee.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),Ee.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return ve.modes.single(this,t)},getElementsAtEvent:function(t){return ve.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ve.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=ve.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return ve.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=ut.log10(Math.abs(n)),o="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var r=ut.log10(Math.abs(t));o=t.toExponential(Math.floor(r)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(ut.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}},di=ut.valueOrDefault,ui=ut.valueAtIndexOrDefault;function hi(t){var e,i,n=[];for(e=0,i=t.length;ed&&ot.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){ut.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ut.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=hi(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=t._isVisible(),l=n.position,d=t.isHorizontal(),u=ut.options._parseFont,h=u(a),c=n.gridLines.tickMarkLength;if(e.width=d?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?c:0,e.height=d?s&&r.drawTicks?c:0:t.maxHeight,o.display&&s){var f=u(o),g=ut.options.toPadding(o.padding),p=f.lineHeight+g.height;d?e.height+=p:e.width+=p}if(a.display&&s){var m=ut.longestText(t.ctx,h.string,i,t.longestTextCache),v=ut.numberOfLabelLines(i),b=.5*h.size,x=t.options.ticks.padding;if(t._maxLabelLines=v,t.longestLabelWidth=m,d){var y=ut.toRadians(t.labelRotation),k=Math.cos(y),w=Math.sin(y)*m+h.lineHeight*v+b;e.height=Math.min(t.maxHeight,e.height+w+x),t.ctx.font=h.string;var M,_,C=ci(t.ctx,i[0],h.string),S=ci(t.ctx,i[i.length-1],h.string),P=t.getPixelForTick(0)-t.left,I=t.right-t.getPixelForTick(i.length-1);0!==t.labelRotation?(M="bottom"===l?k*C:k*b,_="bottom"===l?k*b:k*S):(M=C/2,_=S/2),t.paddingLeft=Math.max(M-P,0)+3,t.paddingRight=Math.max(_-I,0)+3}else a.mirror?m=0:m+=x+b,e.width=Math.min(t.maxWidth,e.width+m),t.paddingTop=h.size/2,t.paddingBottom=h.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){ut.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ut.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:ut.noop,getPixelForValue:ut.noop,getValueForPixel:ut.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+a;return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+i;return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n=this,a=n.isHorizontal(),o=n.options.ticks.minor,r=t.length,s=!1,l=o.maxTicksLimit,d=n._tickSize()*(r-1),u=a?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.PaddingBottom),h=[];for(d>u&&(s=1+Math.floor(d/u)),r>l&&(s=Math.max(s,1+Math.floor(r/l))),e=0;e1&&e%s>0&&delete i.label,h.push(i);return h},_tickSize:function(){var t=this,e=t.isHorizontal(),i=t.options.ticks.minor,n=ut.toRadians(t.labelRotation),a=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),r=i.autoSkipPadding||0,s=t.longestLabelWidth+r||0,l=ut.options._parseFont(i),d=t._maxLabelLines*l.lineHeight+r||0;return e?d*a>s*o?s/a:d/o:d*o0&&n>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,i=e.stepSize,n=e.maxTicksLimit;return i?t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1:(t=this._computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:mi,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:ut.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o,r=[],s=t.stepSize,l=s||1,d=t.maxTicks-1,u=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=ut.niceNum((g-f)/d/l)*l;if(p<1e-14&&vi(u)&&vi(h))return[f,g];(o=Math.ceil(g/p)-Math.floor(f/p))>d&&(p=ut.niceNum(o*p/d/l)*l),s||vi(c)?i=Math.pow(10,ut._decimalPlaces(p)):(i=Math.pow(10,c),p=Math.ceil(p*i)/i),n=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!vi(u)&&ut.almostWhole(u/p,p/1e3)&&(n=u),!vi(h)&&ut.almostWhole(h/p,p/1e3)&&(a=h)),o=(a-n)/p,o=ut.almostEquals(o,Math.round(o),p/1e3)?Math.round(o):Math.ceil(o),n=Math.round(n*i)/i,a=Math.round(a*i)/i,r.push(vi(u)?n:u);for(var m=1;mt.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=ut.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}}),ki=xi;yi._defaults=ki;var wi=ut.valueOrDefault;var Mi={position:"left",ticks:{callback:li.formatters.logarithmic}};function _i(t,e){return ut.isFinite(t)&&t>=0?t:e}var Ci=fi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");i.isDatasetVisible(a)&&o(r)&&(void 0===s[l]&&(s[l]=[]),ut.each(n.data,function(e,i){var n=s[l],a=+t.getRightValue(e);isNaN(a)||r.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),ut.each(s,function(e){if(e.length>0){var i=ut.min(e),n=ut.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?n:Math.max(t.max,n)}})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||n<0||(null===t.min?t.min=n:nt.max&&(t.max=n),0!==n&&(null===t.minNotZero||n0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(ut.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:_i(e.min),max:_i(e.max)},a=t.ticks=function(t,e){var i,n,a=[],o=wi(t.min,Math.pow(10,Math.floor(ut.log10(e.min)))),r=Math.floor(ut.log10(e.max)),s=Math.ceil(e.max/Math.pow(10,r));0===o?(i=Math.floor(ut.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(o),o=n*Math.pow(10,i)):(i=Math.floor(ut.log10(o)),n=Math.floor(o/Math.pow(10,i)));var l=i<0?Math.pow(10,Math.abs(i)):1;do{a.push(o),10==++n&&(n=1,l=++i>=0?1:l),o=Math.round(n*Math.pow(10,i)*l)/l}while(ia?{start:e-i,end:e}:{start:e,end:e+i}}function Ri(t){return 0===t||180===t?"center":t<180?"left":"right"}function Oi(t,e,i,n){var a,o,r=i.y+n/2;if(ut.isArray(e))for(a=0,o=e.length;a270||t<90)&&(i.y-=e.h)}function Bi(t){return ut.isNumber(t)?t:0}var Ni=bi.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Fi(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;ut.each(e.data.datasets,function(a,o){if(e.isDatasetVisible(o)){var r=e.getDatasetMeta(o);ut.each(a.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||r.data[a].hidden||(i=Math.min(o,i),n=Math.max(o,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Fi(this.options))},convertTicksToLabels:function(){var t=this;bi.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,i,n,a=ut.options._parseFont(t.options.pointLabels),o={l:0,r:t.width,t:0,b:t.height-t.paddingTop},r={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,d,u=Ti(t);for(e=0;eo.r&&(o.r=f.end,r.r=h),g.starto.b&&(o.b=g.end,r.b=h)}t.setReductions(t.drawingArea,o,r)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,i){var n=this,a=e.l/Math.sin(i.l),o=Math.max(e.r-n.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),s=-Math.max(e.b-(n.height-n.paddingTop),0)/Math.cos(i.b);a=Bi(a),o=Bi(o),r=Bi(r),s=Bi(s),n.drawingArea=Math.min(Math.floor(t-(a+o)/2),Math.floor(t-(r+s)/2)),n.setCenterPoint(a,o,r,s)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-a.paddingTop-n-a.drawingArea;a.xCenter=Math.floor((r+o)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/Ti(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(i)*e+this.xCenter,y:Math.sin(i)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,i=e.gridLines,n=e.ticks;if(e.display){var a=t.ctx,o=this.getIndexAngle(0),r=ut.options._parseFont(n);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.gridLines,o=i.pointLabels,r=Pi(n.lineWidth,a.lineWidth),s=Pi(n.color,a.color),l=Fi(i);e.save(),e.lineWidth=r,e.strokeStyle=s,e.setLineDash&&(e.setLineDash(Ai([n.borderDash,a.borderDash,[]])),e.lineDashOffset=Ai([n.borderDashOffset,a.borderDashOffset,0]));var d=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),u=ut.options._parseFont(o);e.font=u.string,e.textBaseline="middle";for(var h=Ti(t)-1;h>=0;h--){if(n.display&&r&&s){var c=t.getPointPosition(h,d);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke()}if(o.display){var f=0===h?l/2:0,g=t.getPointPosition(h,d+f+5),p=Ii(o.fontColor,h,st.global.defaultFontColor);e.fillStyle=p;var m=t.getIndexAngle(h),v=ut.toDegrees(m);e.textAlign=Ri(v),zi(v,t._pointLabelSizes[h],g),Oi(e,t.pointLabels[h]||"",g,u.lineHeight)}}e.restore()}(t),ut.each(t.ticks,function(e,s){if(s>0||n.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,i,n){var a,o=t.ctx,r=e.circular,s=Ti(t),l=Ii(e.color,n-1),d=Ii(e.lineWidth,n-1);if((r||s)&&l&&d){if(o.save(),o.strokeStyle=l,o.lineWidth=d,o.setLineDash&&(o.setLineDash(e.borderDash||[]),o.lineDashOffset=e.borderDashOffset||0),o.beginPath(),r)o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI);else{a=t.getPointPosition(0,i),o.moveTo(a.x,a.y);for(var u=1;u=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,d=(r[n]-o[n])*l;return o[n]+d}function Ki(t,e){var i=t._adapter,n=t.options.time,a=n.parser,o=a||n.format,r=e;return"function"==typeof a&&(r=a(r)),ut.isFinite(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null!==r?+r:(a||"function"!=typeof o||(r=o(e),ut.isFinite(r)||(r=i.parse(r))),r)}function Gi(t,e){if(ut.isNullOrUndef(e))return null;var i=t.options.time,n=Ki(t,t.getRightValue(e));return null===n?n:(i.round&&(n=+t._adapter.startOf(n,i.round)),n)}function Zi(t){for(var e=qi.indexOf(t)+1,i=qi.length;e=a&&i<=o&&d.push(i);return n.min=a,n.max=o,n._unit=s.unit||function(t,e,i,n,a){var o,r;for(o=qi.length-1;o>=qi.indexOf(i);o--)if(r=qi[o],ji[r].common&&t._adapter.diff(a,n,r)>=e.length)return r;return qi[i?qi.indexOf(i):0]}(n,d,s.minUnit,n.min,n.max),n._majorUnit=Zi(n._unit),n._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,d=[],u=[e];for(a=0,o=t.length;ae&&s=0&&t0?r:1}}),Qi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};Ji._defaults=Qi;var tn={category:gi,linear:yi,logarithmic:Ci,radialLinear:Ni,time:Ji},en={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};si._date.override("function"==typeof t?{_id:"moment",formats:function(){return en},parse:function(e,i){return"string"==typeof e&&"string"==typeof i?e=t(e,i):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,i){return t(e).format(i)},add:function(e,i,n){return t(e).add(i,n).valueOf()},diff:function(e,i,n){return t.duration(t(e).diff(t(i))).as(n)},startOf:function(e,i,n){return e=t(e),"isoWeek"===i?e.isoWeekday(n).valueOf():e.startOf(i).valueOf()},endOf:function(e,i){return t(e).endOf(i).valueOf()},_create:function(e){return t(e)}}:{}),st._set("global",{plugins:{filler:{propagate:!0}}});var nn={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function on(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if(ut.isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function rn(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function sn(t){var e=t.fill,i="dataset";return!1===e?null:(isFinite(e)||(i="boundary"),nn[i](t))}function ln(t){return t&&!t.skip}function dn(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o0;--o)ut.canvas.lineTo(t,i[o],i[o-1],!0)}}var un={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,o,r=(t.data.datasets||[]).length,s=e.propagate,l=[];for(n=0;ne?e:t.boxWidth}st._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return ut.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:ut.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('
    ');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push("
"),e.join("")}});var gn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:hn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:hn,beforeSetDimensions:hn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:hn,beforeBuildLabels:hn,buildLabels:function(){var t=this,e=t.options.labels||{},i=ut.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:hn,beforeFit:hn,fit:function(){var t=this,e=t.options,i=e.labels,n=e.display,a=t.ctx,o=ut.options._parseFont(i),r=o.size,s=t.legendHitBoxes=[],l=t.minSize,d=t.isHorizontal();if(d?(l.width=t.maxWidth,l.height=n?10:0):(l.width=n?10:0,l.height=t.maxHeight),n)if(a.font=o.string,d){var u=t.lineWidths=[0],h=0;a.textAlign="left",a.textBaseline="top",ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;(0===e||u[u.length-1]+n+i.padding>l.width)&&(h+=r+i.padding,u[u.length-(e>0?0:1)]=i.padding),s[e]={left:0,top:0,width:n,height:r},u[u.length-1]+=n+i.padding}),l.height+=h}else{var c=i.padding,f=t.columnWidths=[],g=i.padding,p=0,m=0,v=r+c;ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;e>0&&m+v>l.height-c&&(g+=p+i.padding,f.push(p),p=0,m=0),p=Math.max(p,n),m+=v,s[e]={left:0,top:0,width:n,height:r}}),g+=p,f.push(p),l.width+=g}t.width=l.width,t.height=l.height},afterFit:hn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,n=st.global,a=n.defaultColor,o=n.elements.line,r=t.width,s=t.lineWidths;if(e.display){var l,d=t.ctx,u=cn(i.fontColor,n.defaultFontColor),h=ut.options._parseFont(i),c=h.size;d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=u,d.fillStyle=u,d.font=h.string;var f=fn(i,c),g=t.legendHitBoxes,p=t.isHorizontal();l=p?{x:t.left+(r-s[0])/2+i.padding,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var m=c+i.padding;ut.each(t.legendItems,function(n,u){var h=d.measureText(n.text).width,v=f+c/2+h,b=l.x,x=l.y;p?u>0&&b+v+i.padding>t.left+t.minSize.width&&(x=l.y+=m,l.line++,b=l.x=t.left+(r-s[l.line])/2+i.padding):u>0&&x+m>t.top+t.minSize.height&&(b=l.x=b+t.columnWidths[l.line]+i.padding,x=l.y=t.top+i.padding,l.line++),function(t,i,n){if(!(isNaN(f)||f<=0)){d.save();var r=cn(n.lineWidth,o.borderWidth);if(d.fillStyle=cn(n.fillStyle,a),d.lineCap=cn(n.lineCap,o.borderCapStyle),d.lineDashOffset=cn(n.lineDashOffset,o.borderDashOffset),d.lineJoin=cn(n.lineJoin,o.borderJoinStyle),d.lineWidth=r,d.strokeStyle=cn(n.strokeStyle,a),d.setLineDash&&d.setLineDash(cn(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var s=f*Math.SQRT2/2,l=t+f/2,u=i+c/2;ut.canvas.drawPoint(d,n.pointStyle,s,l,u)}else 0!==r&&d.strokeRect(t,i,f,c),d.fillRect(t,i,f,c);d.restore()}}(b,x,n),g[u].left=b,g[u].top=x,function(t,e,i,n){var a=c/2,o=f+a+t,r=e+a;d.fillText(i.text,o,r),i.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(o,r),d.lineTo(o+n,r),d.stroke())}(b,x,n,h),p?l.x+=v+i.padding:l.y+=m})}},_getLegendItemAt:function(t,e){var i,n,a,o=this;if(t>=o.left&&t<=o.right&&e>=o.top&&e<=o.bottom)for(a=o.legendHitBoxes,i=0;i=(n=a[i]).left&&t<=n.left+n.width&&e>=n.top&&e<=n.top+n.height)return o.legendItems[i];return null},handleEvent:function(t){var e,i=this,n=i.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!n.onHover&&!n.onLeave)return}else{if("click"!==a)return;if(!n.onClick)return}e=i._getLegendItemAt(t.x,t.y),"click"===a?e&&n.onClick&&n.onClick.call(i,t.native,e):(n.onLeave&&e!==i._hoveredItem&&(i._hoveredItem&&n.onLeave.call(i,t.native,i._hoveredItem),i._hoveredItem=e),n.onHover&&e&&n.onHover.call(i,t.native,e))}});function pn(t,e){var i=new gn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.legend=i}var mn={id:"legend",_element:gn,beforeInit:function(t){var e=t.options.legend;e&&pn(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(ut.mergeIf(e,st.global.legend),i?(ke.configure(t,i,e),i.options=e):pn(t,e)):i&&(ke.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}},vn=ut.noop;st._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var bn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:vn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:vn,beforeSetDimensions:vn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:vn,beforeBuildLabels:vn,buildLabels:vn,afterBuildLabels:vn,beforeFit:vn,fit:function(){var t=this,e=t.options,i=e.display,n=t.minSize,a=ut.isArray(e.text)?e.text.length:1,o=ut.options._parseFont(e),r=i?a*o.lineHeight+2*e.padding:0;t.isHorizontal()?(n.width=t.maxWidth,n.height=r):(n.width=r,n.height=t.maxHeight),t.width=n.width,t.height=n.height},afterFit:vn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=t.options;if(i.display){var n,a,o,r=ut.options._parseFont(i),s=r.lineHeight,l=s/2+i.padding,d=0,u=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=ut.valueOrDefault(i.fontColor,st.global.defaultFontColor),e.font=r.string,t.isHorizontal()?(a=h+(f-h)/2,o=u+l,n=f-h):(a="left"===i.position?h+l:f-l,o=u+(c-u)/2,n=c-u,d=Math.PI*("left"===i.position?-.5:.5)),e.save(),e.translate(a,o),e.rotate(d),e.textAlign="center",e.textBaseline="middle";var g=i.text;if(ut.isArray(g))for(var p=0,m=0;m=0;n--){var a=t[n];if(e(a))return a}},ut.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},ut.almostEquals=function(t,e,i){return Math.abs(t-e)t},ut.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},ut.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},ut.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},ut.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},ut.toRadians=function(t){return t*(Math.PI/180)},ut.toDegrees=function(t){return t*(180/Math.PI)},ut._decimalPlaces=function(t){if(ut.isFinite(t)){for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}},ut.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},ut.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},ut.aliasPixel=function(t){return t%2==0?0:.5},ut._alignPixel=function(t,e,i){var n=t.currentDevicePixelRatio,a=i/2;return Math.round((e-a)*n)/n+a},ut.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),d=s/(s+l),u=l/(s+l),h=n*(d=isNaN(d)?0:d),c=n*(u=isNaN(u)?0:u);return{previous:{x:o.x-h*(r.x-a.x),y:o.y-h*(r.y-a.y)},next:{x:o.x+c*(r.x-a.x),y:o.y+c*(r.y-a.y)}}},ut.EPSILON=Number.EPSILON||1e-14,ut.splineCurveMonotone=function(t){var e,i,n,a,o,r,s,l,d,u=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=u.length;for(e=0;e0?u[e-1]:null,(a=e0?u[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},ut.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},ut.niceNum=function(t,e){var i=Math.floor(ut.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},ut.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},ut.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;s&&s.length>0?(i=s[0].clientX,n=s[0].clientY):(i=a.clientX,n=a.clientY);var l=parseFloat(ut.getStyle(o,"padding-left")),d=parseFloat(ut.getStyle(o,"padding-top")),u=parseFloat(ut.getStyle(o,"padding-right")),h=parseFloat(ut.getStyle(o,"padding-bottom")),c=r.right-r.left-l-u,f=r.bottom-r.top-d-h;return{x:i=Math.round((i-r.left-l)/c*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-r.top-d)/f*o.height/e.currentDevicePixelRatio)}},ut.getConstraintWidth=function(t){return i(t,"max-width","clientWidth")},ut.getConstraintHeight=function(t){return i(t,"max-height","clientHeight")},ut._calculatePadding=function(t,e,i){return(e=ut.getStyle(t,e)).indexOf("%")>-1?i*parseInt(e,10)/100:parseInt(e,10)},ut._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},ut.getMaximumWidth=function(t){var e=ut._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-ut._calculatePadding(e,"padding-left",i)-ut._calculatePadding(e,"padding-right",i),a=ut.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},ut.getMaximumHeight=function(t){var e=ut._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-ut._calculatePadding(e,"padding-top",i)-ut._calculatePadding(e,"padding-bottom",i),a=ut.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},ut.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},ut.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},ut.fontString=function(t,e,i){return e+" "+t+"px "+i},ut.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},o=n.garbageCollect=[],n.font=e),t.font=e;var r=0;ut.each(i,function(e){null!=e&&!0!==ut.isArray(e)?r=ut.measureText(t,a,o,r,e):ut.isArray(e)&&ut.each(e,function(e){null==e||ut.isArray(e)||(r=ut.measureText(t,a,o,r,e))})});var s=o.length/2;if(s>i.length){for(var l=0;ln&&(n=o),n},ut.numberOfLabelLines=function(t){var e=1;return ut.each(t,function(t){ut.isArray(t)&&t.length>e&&(e=t.length)}),e},ut.color=X?function(t){return t instanceof CanvasGradient&&(t=st.global.defaultColor),X(t)}:function(t){return console.error("Color.js not found!"),t},ut.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:ut.color(t).saturate(.5).darken(.1).rgbString()}}(),ai._adapters=si,ai.Animation=vt,ai.animationService=bt,ai.controllers=ue,ai.DatasetController=Mt,ai.defaults=st,ai.Element=pt,ai.elements=Wt,ai.Interaction=ve,ai.layouts=ke,ai.platform=Ve,ai.plugins=Ee,ai.Scale=fi,ai.scaleService=He,ai.Ticks=li,ai.Tooltip=Je,ai.helpers.each(tn,function(t,e){ai.scaleService.registerScaleType(e,t,t._defaults)}),yn)yn.hasOwnProperty(_n)&&ai.plugins.register(yn[_n]);ai.platform.initialize();var Cn=ai;return"undefined"!=typeof window&&(window.Chart=ai),ai.Chart=ai,ai.Legend=yn.legend._element,ai.Title=yn.title._element,ai.pluginService=ai.plugins,ai.PluginBase=ai.Element.extend({}),ai.canvasHelpers=ai.helpers.canvas,ai.layoutService=ai.layouts,ai.LinearScaleBase=bi,ai.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(t){ai[t]=function(e,i){return new ai(e,ai.helpers.merge(i||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}}),Cn}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.css b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.css deleted file mode 100644 index 6abac44..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.css +++ /dev/null @@ -1,91 +0,0 @@ -div.dt-autofill-handle { - position: absolute; - height: 8px; - width: 8px; - z-index: 102; - box-sizing: border-box; - background: #0275d8; - cursor: pointer; -} - -div.dtk-focus-alt div.dt-autofill-handle { - background: #ff8b33; -} - -div.dt-autofill-select { - position: absolute; - z-index: 1001; - background-color: #0275d8; - background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); -} -div.dt-autofill-select.top, div.dt-autofill-select.bottom { - height: 3px; - margin-top: -1px; -} -div.dt-autofill-select.left, div.dt-autofill-select.right { - width: 3px; - margin-left: -1px; -} - -div.dt-autofill-list { - position: fixed; - top: 50%; - left: 50%; - width: 500px; - margin-left: -250px; - background-color: white; - border-radius: 6px; - box-shadow: 0 0 5px #555; - border: 2px solid #444; - z-index: 11; - box-sizing: border-box; - padding: 1.5em 2em; -} -div.dt-autofill-list ul { - display: table; - margin: 0; - padding: 0; - list-style: none; - width: 100%; -} -div.dt-autofill-list ul li { - display: table-row; -} -div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { - border-bottom: none; -} -div.dt-autofill-list ul li:hover { - background-color: #f6f6f6; -} -div.dt-autofill-list div.dt-autofill-question { - display: table-cell; - padding: 0.5em 0; - border-bottom: 1px solid #ccc; -} -div.dt-autofill-list div.dt-autofill-question input[type=number] { - padding: 6px; - width: 30px; - margin: -2px 0; -} -div.dt-autofill-list div.dt-autofill-button { - display: table-cell; - padding: 0.5em 0; - border-bottom: 1px solid #ccc; -} - -div.dt-autofill-background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); - z-index: 10; -} - -div.dt-autofill-list div.dt-autofill-question input[type=number] { - padding: 6px; - width: 60px; - margin: -2px 0; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.min.css deleted file mode 100644 index c40c1f9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.min.css +++ /dev/null @@ -1 +0,0 @@ -div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;background:#0275d8;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0275d8;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.js deleted file mode 100644 index 40037e4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.js +++ /dev/null @@ -1,43 +0,0 @@ -/*! Bootstrap integration for DataTables' AutoFill - * ©2015 SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net-bs4', 'datatables.net-autofill'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - module.exports = function (root, $) { - if ( ! root ) { - root = window; - } - - if ( ! $ || ! $.fn.dataTable ) { - $ = require('datatables.net-bs4')(root, $).$; - } - - if ( ! $.fn.dataTable.AutoFill ) { - require('datatables.net-autofill')(root, $); - } - - return factory( $, root, root.document ); - }; - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -DataTable.AutoFill.classes.btn = 'btn btn-primary'; - - -return DataTable; -})); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.min.js deleted file mode 100644 index 87ea58c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! - Bootstrap integration for DataTables' AutoFill - ©2015 SpryMedia Ltd - datatables.net/license -*/ -(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs4")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="btn btn-primary";return a}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/dataTables.autoFill.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/dataTables.autoFill.js deleted file mode 100755 index e359a35..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-autofill/js/dataTables.autoFill.js +++ /dev/null @@ -1,1212 +0,0 @@ -/*! AutoFill 2.3.4 - * ©2008-2019 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary AutoFill - * @description Add Excel like click and drag auto-fill options to DataTables - * @version 2.3.4 - * @file dataTables.autoFill.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2019 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license/mit - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - module.exports = function (root, $) { - if ( ! root ) { - root = window; - } - - if ( ! $ || ! $.fn.dataTable ) { - $ = require('datatables.net')(root, $).$; - } - - return factory( $, root, root.document ); - }; - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -var _instance = 0; - -/** - * AutoFill provides Excel like auto-fill features for a DataTable - * - * @class AutoFill - * @constructor - * @param {object} oTD DataTables settings object - * @param {object} oConfig Configuration object for AutoFill - */ -var AutoFill = function( dt, opts ) -{ - if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) { - throw( "Warning: AutoFill requires DataTables 1.10.8 or greater"); - } - - // User and defaults configuration object - this.c = $.extend( true, {}, - DataTable.defaults.autoFill, - AutoFill.defaults, - opts - ); - - /** - * @namespace Settings object which contains customisable information for AutoFill instance - */ - this.s = { - /** @type {DataTable.Api} DataTables' API instance */ - dt: new DataTable.Api( dt ), - - /** @type {String} Unique namespace for events attached to the document */ - namespace: '.autoFill'+(_instance++), - - /** @type {Object} Cached dimension information for use in the mouse move event handler */ - scroll: {}, - - /** @type {integer} Interval object used for smooth scrolling */ - scrollInterval: null, - - handle: { - height: 0, - width: 0 - }, - - /** - * Enabled setting - * @type {Boolean} - */ - enabled: false - }; - - - /** - * @namespace Common and useful DOM elements for the class instance - */ - this.dom = { - /** @type {jQuery} AutoFill handle */ - handle: $('
'), - - /** - * @type {Object} Selected cells outline - Need to use 4 elements, - * otherwise the mouse over if you back into the selected rectangle - * will be over that element, rather than the cells! - */ - select: { - top: $('
'), - right: $('
'), - bottom: $('
'), - left: $('
') - }, - - /** @type {jQuery} Fill type chooser background */ - background: $('
'), - - /** @type {jQuery} Fill type chooser */ - list: $('
'+this.s.dt.i18n('autoFill.info', '')+'
    '), - - /** @type {jQuery} DataTables scrolling container */ - dtScroll: null, - - /** @type {jQuery} Offset parent element */ - offsetParent: null - }; - - - /* Constructor logic */ - this._constructor(); -}; - - - -$.extend( AutoFill.prototype, { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public methods (exposed via the DataTables API below) - */ - enabled: function () - { - return this.s.enabled; - }, - - - enable: function ( flag ) - { - var that = this; - - if ( flag === false ) { - return this.disable(); - } - - this.s.enabled = true; - - this._focusListener(); - - this.dom.handle.on( 'mousedown', function (e) { - that._mousedown( e ); - return false; - } ); - - return this; - }, - - disable: function () - { - this.s.enabled = false; - - this._focusListenerRemove(); - - return this; - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Constructor - */ - - /** - * Initialise the RowReorder instance - * - * @private - */ - _constructor: function () - { - var that = this; - var dt = this.s.dt; - var dtScroll = $('div.dataTables_scrollBody', this.s.dt.table().container()); - - // Make the instance accessible to the API - dt.settings()[0].autoFill = this; - - if ( dtScroll.length ) { - this.dom.dtScroll = dtScroll; - - // Need to scroll container to be the offset parent - if ( dtScroll.css('position') === 'static' ) { - dtScroll.css( 'position', 'relative' ); - } - } - - if ( this.c.enable !== false ) { - this.enable(); - } - - dt.on( 'destroy.autoFill', function () { - that._focusListenerRemove(); - } ); - }, - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private methods - */ - - /** - * Display the AutoFill drag handle by appending it to a table cell. This - * is the opposite of the _detach method. - * - * @param {node} node TD/TH cell to insert the handle into - * @private - */ - _attach: function ( node ) - { - var dt = this.s.dt; - var idx = dt.cell( node ).index(); - var handle = this.dom.handle; - var handleDim = this.s.handle; - - if ( ! idx || dt.columns( this.c.columns ).indexes().indexOf( idx.column ) === -1 ) { - this._detach(); - return; - } - - if ( ! this.dom.offsetParent ) { - // We attach to the table's offset parent - this.dom.offsetParent = $( dt.table().node() ).offsetParent(); - } - - if ( ! handleDim.height || ! handleDim.width ) { - // Append to document so we can get its size. Not expecting it to - // change during the life time of the page - handle.appendTo( 'body' ); - handleDim.height = handle.outerHeight(); - handleDim.width = handle.outerWidth(); - } - - // Might need to go through multiple offset parents - var offset = this._getPosition( node, this.dom.offsetParent ); - - this.dom.attachedTo = node; - handle - .css( { - top: offset.top + node.offsetHeight - handleDim.height, - left: offset.left + node.offsetWidth - handleDim.width - } ) - .appendTo( this.dom.offsetParent ); - }, - - - /** - * Determine can the fill type should be. This can be automatic, or ask the - * end user. - * - * @param {array} cells Information about the selected cells from the key - * up function - * @private - */ - _actionSelector: function ( cells ) - { - var that = this; - var dt = this.s.dt; - var actions = AutoFill.actions; - var available = []; - - // "Ask" each plug-in if it wants to handle this data - $.each( actions, function ( key, action ) { - if ( action.available( dt, cells ) ) { - available.push( key ); - } - } ); - - if ( available.length === 1 && this.c.alwaysAsk === false ) { - // Only one action available - enact it immediately - var result = actions[ available[0] ].execute( dt, cells ); - this._update( result, cells ); - } - else { - // Multiple actions available - ask the end user what they want to do - var list = this.dom.list.children('ul').empty(); - - // Add a cancel option - available.push( 'cancel' ); - - $.each( available, function ( i, name ) { - list.append( $('
  • ') - .append( - '
    '+ - actions[ name ].option( dt, cells )+ - '
    ' - ) - .append( $('
    ' ) - .append( $('') - .on( 'click', function () { - var result = actions[ name ].execute( - dt, cells, $(this).closest('li') - ); - that._update( result, cells ); - - that.dom.background.remove(); - that.dom.list.remove(); - } ) - ) - ) - ); - } ); - - this.dom.background.appendTo( 'body' ); - this.dom.list.appendTo( 'body' ); - - this.dom.list.css( 'margin-top', this.dom.list.outerHeight()/2 * -1 ); - } - }, - - - /** - * Remove the AutoFill handle from the document - * - * @private - */ - _detach: function () - { - this.dom.attachedTo = null; - this.dom.handle.detach(); - }, - - - /** - * Draw the selection outline by calculating the range between the start - * and end cells, then placing the highlighting elements to draw a rectangle - * - * @param {node} target End cell - * @param {object} e Originating event - * @private - */ - _drawSelection: function ( target, e ) - { - // Calculate boundary for start cell to this one - var dt = this.s.dt; - var start = this.s.start; - var startCell = $(this.dom.start); - var end = { - row: this.c.vertical ? - dt.rows( { page: 'current' } ).nodes().indexOf( target.parentNode ) : - start.row, - column: this.c.horizontal ? - $(target).index() : - start.column - }; - var colIndx = dt.column.index( 'toData', end.column ); - var endRow = dt.row( ':eq('+end.row+')', { page: 'current' } ); // Workaround for M581 - var endCell = $( dt.cell( endRow.index(), colIndx ).node() ); - - // Be sure that is a DataTables controlled cell - if ( ! dt.cell( endCell ).any() ) { - return; - } - - // if target is not in the columns available - do nothing - if ( dt.columns( this.c.columns ).indexes().indexOf( colIndx ) === -1 ) { - return; - } - - this.s.end = end; - - var top, bottom, left, right, height, width; - - top = start.row < end.row ? startCell : endCell; - bottom = start.row < end.row ? endCell : startCell; - left = start.column < end.column ? startCell : endCell; - right = start.column < end.column ? endCell : startCell; - - top = this._getPosition( top.get(0) ).top; - left = this._getPosition( left.get(0) ).left; - height = this._getPosition( bottom.get(0) ).top + bottom.outerHeight() - top; - width = this._getPosition( right.get(0) ).left + right.outerWidth() - left; - - var select = this.dom.select; - select.top.css( { - top: top, - left: left, - width: width - } ); - - select.left.css( { - top: top, - left: left, - height: height - } ); - - select.bottom.css( { - top: top + height, - left: left, - width: width - } ); - - select.right.css( { - top: top, - left: left + width, - height: height - } ); - }, - - - /** - * Use the Editor API to perform an update based on the new data for the - * cells - * - * @param {array} cells Information about the selected cells from the key - * up function - * @private - */ - _editor: function ( cells ) - { - var dt = this.s.dt; - var editor = this.c.editor; - - if ( ! editor ) { - return; - } - - // Build the object structure for Editor's multi-row editing - var idValues = {}; - var nodes = []; - var fields = editor.fields(); - - for ( var i=0, ien=cells.length ; i=end ; i-- ) { - out.push( i ); - } - } - - return out; - }, - - - /** - * Move the window and DataTables scrolling during a drag to scroll new - * content into view. This is done by proximity to the edge of the scrolling - * container of the mouse - for example near the top edge of the window - * should scroll up. This is a little complicated as there are two elements - * that can be scrolled - the window and the DataTables scrolling view port - * (if scrollX and / or scrollY is enabled). - * - * @param {object} e Mouse move event object - * @private - */ - _shiftScroll: function ( e ) - { - var that = this; - var dt = this.s.dt; - var scroll = this.s.scroll; - var runInterval = false; - var scrollSpeed = 5; - var buffer = 65; - var - windowY = e.pageY - document.body.scrollTop, - windowX = e.pageX - document.body.scrollLeft, - windowVert, windowHoriz, - dtVert, dtHoriz; - - // Window calculations - based on the mouse position in the window, - // regardless of scrolling - if ( windowY < buffer ) { - windowVert = scrollSpeed * -1; - } - else if ( windowY > scroll.windowHeight - buffer ) { - windowVert = scrollSpeed; - } - - if ( windowX < buffer ) { - windowHoriz = scrollSpeed * -1; - } - else if ( windowX > scroll.windowWidth - buffer ) { - windowHoriz = scrollSpeed; - } - - // DataTables scrolling calculations - based on the table's position in - // the document and the mouse position on the page - if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) { - dtVert = scrollSpeed * -1; - } - else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) { - dtVert = scrollSpeed; - } - - if ( scroll.dtLeft !== null && e.pageX < scroll.dtLeft + buffer ) { - dtHoriz = scrollSpeed * -1; - } - else if ( scroll.dtLeft !== null && e.pageX > scroll.dtLeft + scroll.dtWidth - buffer ) { - dtHoriz = scrollSpeed; - } - - // This is where it gets interesting. We want to continue scrolling - // without requiring a mouse move, so we need an interval to be - // triggered. The interval should continue until it is no longer needed, - // but it must also use the latest scroll commands (for example consider - // that the mouse might move from scrolling up to scrolling left, all - // with the same interval running. We use the `scroll` object to "pass" - // this information to the interval. Can't use local variables as they - // wouldn't be the ones that are used by an already existing interval! - if ( windowVert || windowHoriz || dtVert || dtHoriz ) { - scroll.windowVert = windowVert; - scroll.windowHoriz = windowHoriz; - scroll.dtVert = dtVert; - scroll.dtHoriz = dtHoriz; - runInterval = true; - } - else if ( this.s.scrollInterval ) { - // Don't need to scroll - remove any existing timer - clearInterval( this.s.scrollInterval ); - this.s.scrollInterval = null; - } - - // If we need to run the interval to scroll and there is no existing - // interval (if there is an existing one, it will continue to run) - if ( ! this.s.scrollInterval && runInterval ) { - this.s.scrollInterval = setInterval( function () { - // Don't need to worry about setting scroll <0 or beyond the - // scroll bound as the browser will just reject that. - if ( scroll.windowVert ) { - document.body.scrollTop += scroll.windowVert; - } - if ( scroll.windowHoriz ) { - document.body.scrollLeft += scroll.windowHoriz; - } - - // DataTables scrolling - if ( scroll.dtVert || scroll.dtHoriz ) { - var scroller = that.dom.dtScroll[0]; - - if ( scroll.dtVert ) { - scroller.scrollTop += scroll.dtVert; - } - if ( scroll.dtHoriz ) { - scroller.scrollLeft += scroll.dtHoriz; - } - } - }, 20 ); - } - }, - - - /** - * Update the DataTable after the user has selected what they want to do - * - * @param {false|undefined} result Return from the `execute` method - can - * be false internally to do nothing. This is not documented for plug-ins - * and is used only by the cancel option. - * @param {array} cells Information about the selected cells from the key - * up function, argumented with the set values - * @private - */ - _update: function ( result, cells ) - { - // Do nothing on `false` return from an execute function - if ( result === false ) { - return; - } - - var dt = this.s.dt; - var cell; - var columns = dt.columns( this.c.columns ).indexes(); - - // Potentially allow modifications to the cells matrix - this._emitEvent( 'preAutoFill', [ dt, cells ] ); - - this._editor( cells ); - - // Automatic updates are not performed if `update` is null and the - // `editor` parameter is passed in - the reason being that Editor will - // update the data once submitted - var update = this.c.update !== null ? - this.c.update : - this.c.editor ? - false : - true; - - if ( update ) { - for ( var i=0, ien=cells.length ; i' - ); - }, - - execute: function ( dt, cells, node ) { - var value = cells[0][0].data * 1; - var increment = $('input', node).val() * 1; - - for ( var i=0, ien=cells.length ; i'+cells[0][0].label+'' ); - }, - - execute: function ( dt, cells, node ) { - var value = cells[0][0].data; - - for ( var i=0, ien=cells.length ; i 1 && cells[0].length > 1; - }, - - option: function ( dt, cells ) { - return dt.i18n('autoFill.fillHorizontal', 'Fill cells horizontally' ); - }, - - execute: function ( dt, cells, node ) { - for ( var i=0, ien=cells.length ; i 1 && cells[0].length > 1; - }, - - option: function ( dt, cells ) { - return dt.i18n('autoFill.fillVertical', 'Fill cells vertically' ); - }, - - execute: function ( dt, cells, node ) { - for ( var i=0, ien=cells.length ; i'),select:{top:e('
    '),right:e('
    '),bottom:e('
    '),left:e('
    ')},background:e('
    '),list:e('
    '+this.s.dt.i18n("autoFill.info", -"")+"
      "),dtScroll:null,offsetParent:null};this._constructor()};e.extend(k.prototype,{enabled:function(){return this.s.enabled},enable:function(b){var c=this;if(!1===b)return this.disable();this.s.enabled=!0;this._focusListener();this.dom.handle.on("mousedown",function(a){c._mousedown(a);return!1});return this},disable:function(){this.s.enabled=!1;this._focusListenerRemove();return this},_constructor:function(){var b=this,c=this.s.dt,a=e("div.dataTables_scrollBody",this.s.dt.table().container()); -c.settings()[0].autoFill=this;a.length&&(this.dom.dtScroll=a,"static"===a.css("position")&&a.css("position","relative"));!1!==this.c.enable&&this.enable();c.on("destroy.autoFill",function(){b._focusListenerRemove()})},_attach:function(b){var c=this.s.dt,a=c.cell(b).index(),d=this.dom.handle,f=this.s.handle;if(!a||-1===c.columns(this.c.columns).indexes().indexOf(a.column))this._detach();else{this.dom.offsetParent||(this.dom.offsetParent=e(c.table().node()).offsetParent());if(!f.height||!f.width)d.appendTo("body"), -f.height=d.outerHeight(),f.width=d.outerWidth();c=this._getPosition(b,this.dom.offsetParent);this.dom.attachedTo=b;d.css({top:c.top+b.offsetHeight-f.height,left:c.left+b.offsetWidth-f.width}).appendTo(this.dom.offsetParent)}},_actionSelector:function(b){var c=this,a=this.s.dt,d=k.actions,f=[];e.each(d,function(c,d){d.available(a,b)&&f.push(c)});if(1===f.length&&!1===this.c.alwaysAsk){var j=d[f[0]].execute(a,b);this._update(j,b)}else{var h=this.dom.list.children("ul").empty();f.push("cancel");e.each(f, -function(f,j){h.append(e("
    • ").append('
      '+d[j].option(a,b)+"
      ").append(e('
      ').append(e('").on("click",function(){var f=d[j].execute(a,b,e(this).closest("li"));c._update(f,b);c.dom.background.remove();c.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",-1*(this.dom.list.outerHeight()/ -2))}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(b){var c=this.s.dt,a=this.s.start,d=e(this.dom.start),f={row:this.c.vertical?c.rows({page:"current"}).nodes().indexOf(b.parentNode):a.row,column:this.c.horizontal?e(b).index():a.column},b=c.column.index("toData",f.column),j=c.row(":eq("+f.row+")",{page:"current"}),j=e(c.cell(j.index(),b).node());if(c.cell(j).any()&&-1!==c.columns(this.c.columns).indexes().indexOf(b)){this.s.end=f;var h,c=a.row=c;d--)a.push(d);return a},_shiftScroll:function(b){var c=this,a=this.s.scroll,d=!1,f=b.pageY-i.body.scrollTop,e=b.pageX-i.body.scrollLeft,h,g,k,l;65>f?h=-5:f>a.windowHeight-65&&(h=5);65>e?g=-5:e>a.windowWidth-65&&(g=5);null!==a.dtTop&&b.pageYa.dtTop+a.dtHeight-65&&(k=5);null!==a.dtLeft&&b.pageXa.dtLeft+a.dtWidth-65&&(l=5);h||g||k||l?(a.windowVert=h,a.windowHoriz=g,a.dtVert=k,a.dtHoriz=l,d=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&d&&(this.s.scrollInterval=setInterval(function(){if(a.windowVert)i.body.scrollTop=i.body.scrollTop+a.windowVert;if(a.windowHoriz)i.body.scrollLeft=i.body.scrollLeft+a.windowHoriz;if(a.dtVert||a.dtHoriz){var b=c.dom.dtScroll[0];if(a.dtVert)b.scrollTop=b.scrollTop+ -a.dtVert;if(a.dtHoriz)b.scrollLeft=b.scrollLeft+a.dtHoriz}},20))},_update:function(b,c){if(!1!==b){var a=this.s.dt,d,f=a.columns(this.c.columns).indexes();this._emitEvent("preAutoFill",[a,c]);this._editor(c);if(null!==this.c.update?this.c.update:!this.c.editor){for(var e=0,h=c.length;e')},execute:function(b,c,a){for(var b=1*c[0][0].data,a=1*e("input",a).val(),d=0,f=c.length;d"+c[0][0].label+"")},execute:function(b,c){for(var a=c[0][0].data,d=0,f=c.length;d< -f;d++)for(var e=0,g=c[d].length;e div { - padding: 1em; -} - -div.dt-button-collection-title { - text-align: center; - padding: 0.3em 0 0.5em; - font-size: 0.9em; -} - -div.dt-button-collection-title:empty { - display: none; -} - -div.dt-button-collection { - position: absolute; - z-index: 2001; -} -div.dt-button-collection div.dropdown-menu { - display: block; - z-index: 2002; - min-width: 100%; -} -div.dt-button-collection div.dt-button-collection-title { - background-color: white; - border: 1px solid rgba(0, 0, 0, 0.15); -} -div.dt-button-collection.fixed { - position: fixed; - top: 50%; - left: 50%; - margin-left: -75px; - border-radius: 0; -} -div.dt-button-collection.fixed.two-column { - margin-left: -200px; -} -div.dt-button-collection.fixed.three-column { - margin-left: -225px; -} -div.dt-button-collection.fixed.four-column { - margin-left: -300px; -} -div.dt-button-collection > :last-child { - display: block !important; - -webkit-column-gap: 8px; - -moz-column-gap: 8px; - -ms-column-gap: 8px; - -o-column-gap: 8px; - column-gap: 8px; -} -div.dt-button-collection > :last-child > * { - -webkit-column-break-inside: avoid; - break-inside: avoid; -} -div.dt-button-collection.two-column { - width: 400px; -} -div.dt-button-collection.two-column > :last-child { - padding-bottom: 1px; - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; -} -div.dt-button-collection.three-column { - width: 450px; -} -div.dt-button-collection.three-column > :last-child { - padding-bottom: 1px; - -webkit-column-count: 3; - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; -} -div.dt-button-collection.four-column { - width: 600px; -} -div.dt-button-collection.four-column > :last-child { - padding-bottom: 1px; - -webkit-column-count: 4; - -moz-column-count: 4; - -ms-column-count: 4; - -o-column-count: 4; - column-count: 4; -} -div.dt-button-collection .dt-button { - border-radius: 0; -} -div.dt-button-collection.fixed { - max-width: none; -} -div.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after { - display: none; -} - -div.dt-button-background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 999; -} - -@media screen and (max-width: 767px) { - div.dt-buttons { - float: none; - width: 100%; - text-align: center; - margin-bottom: 0.5em; - } - div.dt-buttons a.btn { - float: none; - } -} -div.dt-buttons button.btn.processing, -div.dt-buttons div.btn.processing, -div.dt-buttons a.btn.processing { - color: rgba(0, 0, 0, 0.2); -} -div.dt-buttons button.btn.processing:after, -div.dt-buttons div.btn.processing:after, -div.dt-buttons a.btn.processing:after { - position: absolute; - top: 50%; - left: 50%; - width: 16px; - height: 16px; - margin: -8px 0 0 -8px; - box-sizing: border-box; - display: block; - content: ' '; - border: 2px solid #282828; - border-radius: 50%; - border-left-color: transparent; - border-right-color: transparent; - animation: dtb-spinner 1500ms infinite linear; - -o-animation: dtb-spinner 1500ms infinite linear; - -ms-animation: dtb-spinner 1500ms infinite linear; - -webkit-animation: dtb-spinner 1500ms infinite linear; - -moz-animation: dtb-spinner 1500ms infinite linear; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/css/buttons.bootstrap4.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/css/buttons.bootstrap4.min.css deleted file mode 100644 index fd0f71b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/css/buttons.bootstrap4.min.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection{position:absolute;z-index:2001}div.dt-button-collection div.dropdown-menu{display:block;z-index:2002;min-width:100%}div.dt-button-collection div.dt-button-collection-title{background-color:white;border:1px solid rgba(0,0,0,0.15)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>:last-child{display:block !important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:before,div.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.js deleted file mode 100644 index 4f8ccd5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.js +++ /dev/null @@ -1,68 +0,0 @@ -/*! Bootstrap integration for DataTables' Buttons - * ©2016 SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net-bs4', 'datatables.net-buttons'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - module.exports = function (root, $) { - if ( ! root ) { - root = window; - } - - if ( ! $ || ! $.fn.dataTable ) { - $ = require('datatables.net-bs4')(root, $).$; - } - - if ( ! $.fn.dataTable.Buttons ) { - require('datatables.net-buttons')(root, $); - } - - return factory( $, root, root.document ); - }; - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - -$.extend( true, DataTable.Buttons.defaults, { - dom: { - container: { - className: 'dt-buttons btn-group flex-wrap' - }, - button: { - className: 'btn btn-secondary' - }, - collection: { - tag: 'div', - className: 'dropdown-menu', - button: { - tag: 'a', - className: 'dt-button dropdown-item', - active: 'active', - disabled: 'disabled' - } - } - }, - buttonCreated: function ( config, button ) { - return config.buttons ? - $('
      ').append(button) : - button; - } -} ); - -DataTable.ext.buttons.collection.className += ' dropdown-toggle'; -DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right'; - -return DataTable.Buttons; -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.min.js deleted file mode 100644 index 3ecb7b5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - Bootstrap integration for DataTables' Buttons - ©2016 SpryMedia Ltd - datatables.net/license -*/ -(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs4")(a,c).$;c.fn.dataTable.Buttons||require("datatables.net-buttons")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b){var a=b.fn.dataTable;b.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"}, -button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dropdown-menu",button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}}},buttonCreated:function(a,d){return a.buttons?b('
      ').append(d):d}});a.ext.buttons.collection.className+=" dropdown-toggle";a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right";return a.Buttons}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.js deleted file mode 100755 index b9529d2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.js +++ /dev/null @@ -1,206 +0,0 @@ -/*! - * Column visibility buttons for Buttons and DataTables. - * 2016 SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - module.exports = function (root, $) { - if ( ! root ) { - root = window; - } - - if ( ! $ || ! $.fn.dataTable ) { - $ = require('datatables.net')(root, $).$; - } - - if ( ! $.fn.dataTable.Buttons ) { - require('datatables.net-buttons')(root, $); - } - - return factory( $, root, root.document ); - }; - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -$.extend( DataTable.ext.buttons, { - // A collection of column visibility buttons - colvis: function ( dt, conf ) { - return { - extend: 'collection', - text: function ( dt ) { - return dt.i18n( 'buttons.colvis', 'Column visibility' ); - }, - className: 'buttons-colvis', - buttons: [ { - extend: 'columnsToggle', - columns: conf.columns, - columnText: conf.columnText - } ] - }; - }, - - // Selected columns with individual buttons - toggle column visibility - columnsToggle: function ( dt, conf ) { - var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) { - return { - extend: 'columnToggle', - columns: idx, - columnText: conf.columnText - }; - } ).toArray(); - - return columns; - }, - - // Single button to toggle column visibility - columnToggle: function ( dt, conf ) { - return { - extend: 'columnVisibility', - columns: conf.columns, - columnText: conf.columnText - }; - }, - - // Selected columns with individual buttons - set column visibility - columnsVisibility: function ( dt, conf ) { - var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) { - return { - extend: 'columnVisibility', - columns: idx, - visibility: conf.visibility, - columnText: conf.columnText - }; - } ).toArray(); - - return columns; - }, - - // Single button to set column visibility - columnVisibility: { - columns: undefined, // column selector - text: function ( dt, button, conf ) { - return conf._columnText( dt, conf ); - }, - className: 'buttons-columnVisibility', - action: function ( e, dt, button, conf ) { - var col = dt.columns( conf.columns ); - var curr = col.visible(); - - col.visible( conf.visibility !== undefined ? - conf.visibility : - ! (curr.length ? curr[0] : false ) - ); - }, - init: function ( dt, button, conf ) { - var that = this; - button.attr( 'data-cv-idx', conf.columns ); - - dt - .on( 'column-visibility.dt'+conf.namespace, function (e, settings) { - if ( ! settings.bDestroying && settings.nTable == dt.settings()[0].nTable ) { - that.active( dt.column( conf.columns ).visible() ); - } - } ) - .on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) { - if ( dt.columns( conf.columns ).count() !== 1 ) { - return; - } - - // This button controls the same column index but the text for the column has - // changed - button.text( conf._columnText( dt, conf ) ); - - // Since its a different column, we need to check its visibility - that.active( dt.column( conf.columns ).visible() ); - } ); - - this.active( dt.column( conf.columns ).visible() ); - }, - destroy: function ( dt, button, conf ) { - dt - .off( 'column-visibility.dt'+conf.namespace ) - .off( 'column-reorder.dt'+conf.namespace ); - }, - - _columnText: function ( dt, conf ) { - // Use DataTables' internal data structure until this is presented - // is a public API. The other option is to use - // `$( column(col).node() ).text()` but the node might not have been - // populated when Buttons is constructed. - var idx = dt.column( conf.columns ).index(); - var title = dt.settings()[0].aoColumns[ idx ].sTitle - .replace(/\n/g," ") // remove new lines - .replace(//gi, " ") // replace line breaks with spaces - .replace(//g, "") // remove select tags, including options text - .replace(//g, "") // strip HTML comments - .replace(/<.*?>/g, "") // strip HTML - .replace(/^\s+|\s+$/g,""); // trim - - return conf.columnText ? - conf.columnText( dt, idx, title ) : - title; - } - }, - - - colvisRestore: { - className: 'buttons-colvisRestore', - - text: function ( dt ) { - return dt.i18n( 'buttons.colvisRestore', 'Restore visibility' ); - }, - - init: function ( dt, button, conf ) { - conf._visOriginal = dt.columns().indexes().map( function ( idx ) { - return dt.column( idx ).visible(); - } ).toArray(); - }, - - action: function ( e, dt, button, conf ) { - dt.columns().every( function ( i ) { - // Take into account that ColReorder might have disrupted our - // indexes - var idx = dt.colReorder && dt.colReorder.transpose ? - dt.colReorder.transpose( i, 'toOriginal' ) : - i; - - this.visible( conf._visOriginal[ idx ] ); - } ); - } - }, - - - colvisGroup: { - className: 'buttons-colvisGroup', - - action: function ( e, dt, button, conf ) { - dt.columns( conf.show ).visible( true, false ); - dt.columns( conf.hide ).visible( false, false ); - - dt.columns.adjust(); - }, - - show: [], - - hide: [] - } -} ); - - -return DataTable.Buttons; -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.min.js deleted file mode 100644 index 95712af..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.min.js +++ /dev/null @@ -1,6 +0,0 @@ -(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,f){d||(d=window);if(!f||!f.fn.dataTable)f=require("datatables.net")(d,f).$;f.fn.dataTable.Buttons||require("datatables.net-buttons")(d,f);return g(f,d,d.document)}:g(jQuery,window,document)})(function(g,d,f,h){d=g.fn.dataTable;g.extend(d.ext.buttons,{colvis:function(a,b){return{extend:"collection", -text:function(b){return b.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:b.columns,columnText:b.columnText}]}},columnsToggle:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnToggle",columns:a,columnText:b.columnText}}).toArray()},columnToggle:function(a,b){return{extend:"columnVisibility",columns:b.columns,columnText:b.columnText}},columnsVisibility:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnVisibility", -columns:a,visibility:b.visibility,columnText:b.columnText}}).toArray()},columnVisibility:{columns:h,text:function(a,b,c){return c._columnText(a,c)},className:"buttons-columnVisibility",action:function(a,b,c,e){a=b.columns(e.columns);b=a.visible();a.visible(e.visibility!==h?e.visibility:!(b.length&&b[0]))},init:function(a,b,c){var e=this;b.attr("data-cv-idx",c.columns);a.on("column-visibility.dt"+c.namespace,function(b,d){!d.bDestroying&&d.nTable==a.settings()[0].nTable&&e.active(a.column(c.columns).visible())}).on("column-reorder.dt"+ -c.namespace,function(){1===a.columns(c.columns).count()&&(b.text(c._columnText(a,c)),e.active(a.column(c.columns).visible()))});this.active(a.column(c.columns).visible())},destroy:function(a,b,c){a.off("column-visibility.dt"+c.namespace).off("column-reorder.dt"+c.namespace)},_columnText:function(a,b){var c=a.column(b.columns).index(),e=a.settings()[0].aoColumns[c].sTitle.replace(/\n/g," ").replace(//gi," ").replace(//g,"").replace(//g,"").replace(/<.*?>/g, -"").replace(/^\s+|\s+$/g,"");return b.columnText?b.columnText(a,c,e):e}},colvisRestore:{className:"buttons-colvisRestore",text:function(a){return a.i18n("buttons.colvisRestore","Restore visibility")},init:function(a,b,c){c._visOriginal=a.columns().indexes().map(function(b){return a.column(b).visible()}).toArray()},action:function(a,b,c,d){b.columns().every(function(a){a=b.colReorder&&b.colReorder.transpose?b.colReorder.transpose(a,"toOriginal"):a;this.visible(d._visOriginal[a])})}},colvisGroup:{className:"buttons-colvisGroup", -action:function(a,b,c,d){b.columns(d.show).visible(!0,!1);b.columns(d.hide).visible(!1,!1);b.columns.adjust()},show:[],hide:[]}});return d.Buttons}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.flash.js b/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.flash.js deleted file mode 100644 index 5fe50c6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/datatables-buttons/js/buttons.flash.js +++ /dev/null @@ -1,1456 +0,0 @@ -/*! - * Flash export buttons for Buttons and DataTables. - * 2015-2017 SpryMedia Ltd - datatables.net/license - * - * ZeroClipbaord - MIT license - * Copyright (c) 2012 Joseph Huckaby - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - module.exports = function (root, $) { - if ( ! root ) { - root = window; - } - - if ( ! $ || ! $.fn.dataTable ) { - $ = require('datatables.net')(root, $).$; - } - - if ( ! $.fn.dataTable.Buttons ) { - require('datatables.net-buttons')(root, $); - } - - return factory( $, root, root.document ); - }; - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * ZeroClipboard dependency - */ - -/* - * ZeroClipboard 1.0.4 with modifications - * Author: Joseph Huckaby - * License: MIT - * - * Copyright (c) 2012 Joseph Huckaby - */ -var ZeroClipboard_TableTools = { - version: "1.0.4-TableTools2", - clients: {}, // registered upload clients on page, indexed by id - moviePath: '', // URL to movie - nextId: 1, // ID of next movie - - $: function(thingy) { - // simple DOM lookup utility function - if (typeof(thingy) == 'string') { - thingy = document.getElementById(thingy); - } - if (!thingy.addClass) { - // extend element with a few useful methods - thingy.hide = function() { this.style.display = 'none'; }; - thingy.show = function() { this.style.display = ''; }; - thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; }; - thingy.removeClass = function(name) { - this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, ''); - }; - thingy.hasClass = function(name) { - return !!this.className.match( new RegExp("\\s*" + name + "\\s*") ); - }; - } - return thingy; - }, - - setMoviePath: function(path) { - // set path to ZeroClipboard.swf - this.moviePath = path; - }, - - dispatch: function(id, eventName, args) { - // receive event from flash movie, send to client - var client = this.clients[id]; - if (client) { - client.receiveEvent(eventName, args); - } - }, - - log: function ( str ) { - console.log( 'Flash: '+str ); - }, - - register: function(id, client) { - // register new client to receive events - this.clients[id] = client; - }, - - getDOMObjectPosition: function(obj) { - // get absolute coordinates for dom element - var info = { - left: 0, - top: 0, - width: obj.width ? obj.width : obj.offsetWidth, - height: obj.height ? obj.height : obj.offsetHeight - }; - - if ( obj.style.width !== "" ) { - info.width = obj.style.width.replace("px",""); - } - - if ( obj.style.height !== "" ) { - info.height = obj.style.height.replace("px",""); - } - - while (obj) { - info.left += obj.offsetLeft; - info.top += obj.offsetTop; - obj = obj.offsetParent; - } - - return info; - }, - - Client: function(elem) { - // constructor for new simple upload client - this.handlers = {}; - - // unique ID - this.id = ZeroClipboard_TableTools.nextId++; - this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id; - - // register client with singleton to receive flash events - ZeroClipboard_TableTools.register(this.id, this); - - // create movie - if (elem) { - this.glue(elem); - } - } -}; - -ZeroClipboard_TableTools.Client.prototype = { - - id: 0, // unique ID for us - ready: false, // whether movie is ready to receive events or not - movie: null, // reference to movie object - clipText: '', // text to copy to clipboard - fileName: '', // default file save name - action: 'copy', // action to perform - handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor - cssEffects: true, // enable CSS mouse effects on dom container - handlers: null, // user event handlers - sized: false, - sheetName: '', // default sheet name for excel export - - glue: function(elem, title) { - // glue to DOM element - // elem can be ID or actual DOM element object - this.domElement = ZeroClipboard_TableTools.$(elem); - - // float just above object, or zIndex 99 if dom element isn't set - var zIndex = 99; - if (this.domElement.style.zIndex) { - zIndex = parseInt(this.domElement.style.zIndex, 10) + 1; - } - - // find X/Y position of domElement - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - - // create floating DIV above element - this.div = document.createElement('div'); - var style = this.div.style; - style.position = 'absolute'; - style.left = '0px'; - style.top = '0px'; - style.width = (box.width) + 'px'; - style.height = box.height + 'px'; - style.zIndex = zIndex; - - if ( typeof title != "undefined" && title !== "" ) { - this.div.title = title; - } - if ( box.width !== 0 && box.height !== 0 ) { - this.sized = true; - } - - // style.backgroundColor = '#f00'; // debug - if ( this.domElement ) { - this.domElement.appendChild(this.div); - this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&'); - } - }, - - positionElement: function() { - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - var style = this.div.style; - - style.position = 'absolute'; - //style.left = (this.domElement.offsetLeft)+'px'; - //style.top = this.domElement.offsetTop+'px'; - style.width = box.width + 'px'; - style.height = box.height + 'px'; - - if ( box.width !== 0 && box.height !== 0 ) { - this.sized = true; - } else { - return; - } - - var flash = this.div.childNodes[0]; - flash.width = box.width; - flash.height = box.height; - }, - - getHTML: function(width, height) { - // return HTML for movie - var html = ''; - var flashvars = 'id=' + this.id + - '&width=' + width + - '&height=' + height; - - if (navigator.userAgent.match(/MSIE/)) { - // IE gets an OBJECT tag - var protocol = location.href.match(/^https/i) ? 'https://' : 'http://'; - html += ''; - } - else { - // all other browsers get an EMBED tag - html += ''; - } - return html; - }, - - hide: function() { - // temporarily hide floater offscreen - if (this.div) { - this.div.style.left = '-2000px'; - } - }, - - show: function() { - // show ourselves after a call to hide() - this.reposition(); - }, - - destroy: function() { - // destroy control and floater - var that = this; - - if (this.domElement && this.div) { - $(this.div).remove(); - - this.domElement = null; - this.div = null; - - $.each( ZeroClipboard_TableTools.clients, function ( id, client ) { - if ( client === that ) { - delete ZeroClipboard_TableTools.clients[ id ]; - } - } ); - } - }, - - reposition: function(elem) { - // reposition our floating div, optionally to new container - // warning: container CANNOT change size, only position - if (elem) { - this.domElement = ZeroClipboard_TableTools.$(elem); - if (!this.domElement) { - this.hide(); - } - } - - if (this.domElement && this.div) { - var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement); - var style = this.div.style; - style.left = '' + box.left + 'px'; - style.top = '' + box.top + 'px'; - } - }, - - clearText: function() { - // clear the text to be copy / saved - this.clipText = ''; - if (this.ready) { - this.movie.clearText(); - } - }, - - appendText: function(newText) { - // append text to that which is to be copied / saved - this.clipText += newText; - if (this.ready) { this.movie.appendText(newText) ;} - }, - - setText: function(newText) { - // set text to be copied to be copied / saved - this.clipText = newText; - if (this.ready) { this.movie.setText(newText) ;} - }, - - setFileName: function(newText) { - // set the file name - this.fileName = newText; - if (this.ready) { - this.movie.setFileName(newText); - } - }, - - setSheetData: function(data) { - // set the xlsx sheet data - if (this.ready) { - this.movie.setSheetData( JSON.stringify( data ) ); - } - }, - - setAction: function(newText) { - // set action (save or copy) - this.action = newText; - if (this.ready) { - this.movie.setAction(newText); - } - }, - - addEventListener: function(eventName, func) { - // add user event listener for event - // event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel - eventName = eventName.toString().toLowerCase().replace(/^on/, ''); - if (!this.handlers[eventName]) { - this.handlers[eventName] = []; - } - this.handlers[eventName].push(func); - }, - - setHandCursor: function(enabled) { - // enable hand cursor (true), or default arrow cursor (false) - this.handCursorEnabled = enabled; - if (this.ready) { - this.movie.setHandCursor(enabled); - } - }, - - setCSSEffects: function(enabled) { - // enable or disable CSS effects on DOM container - this.cssEffects = !!enabled; - }, - - receiveEvent: function(eventName, args) { - var self; - - // receive event from flash - eventName = eventName.toString().toLowerCase().replace(/^on/, ''); - - // special behavior for certain events - switch (eventName) { - case 'load': - // movie claims it is ready, but in IE this isn't always the case... - // bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function - this.movie = document.getElementById(this.movieId); - if (!this.movie) { - self = this; - setTimeout( function() { self.receiveEvent('load', null); }, 1 ); - return; - } - - // firefox on pc needs a "kick" in order to set these in certain cases - if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) { - self = this; - setTimeout( function() { self.receiveEvent('load', null); }, 100 ); - this.ready = true; - return; - } - - this.ready = true; - this.movie.clearText(); - this.movie.appendText( this.clipText ); - this.movie.setFileName( this.fileName ); - this.movie.setAction( this.action ); - this.movie.setHandCursor( this.handCursorEnabled ); - break; - - case 'mouseover': - if (this.domElement && this.cssEffects) { - //this.domElement.addClass('hover'); - if (this.recoverActive) { - this.domElement.addClass('active'); - } - } - break; - - case 'mouseout': - if (this.domElement && this.cssEffects) { - this.recoverActive = false; - if (this.domElement.hasClass('active')) { - this.domElement.removeClass('active'); - this.recoverActive = true; - } - //this.domElement.removeClass('hover'); - } - break; - - case 'mousedown': - if (this.domElement && this.cssEffects) { - this.domElement.addClass('active'); - } - break; - - case 'mouseup': - if (this.domElement && this.cssEffects) { - this.domElement.removeClass('active'); - this.recoverActive = false; - } - break; - } // switch eventName - - if (this.handlers[eventName]) { - for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) { - var func = this.handlers[eventName][idx]; - - if (typeof(func) == 'function') { - // actual function reference - func(this, args); - } - else if ((typeof(func) == 'object') && (func.length == 2)) { - // PHP style object + method, i.e. [myObject, 'myMethod'] - func[0][ func[1] ](this, args); - } - else if (typeof(func) == 'string') { - // name of function - window[func](this, args); - } - } // foreach event handler defined - } // user defined handler for event - } -}; - -ZeroClipboard_TableTools.hasFlash = function () -{ - try { - var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); - if (fo) { - return true; - } - } - catch (e) { - if ( - navigator.mimeTypes && - navigator.mimeTypes['application/x-shockwave-flash'] !== undefined && - navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin - ) { - return true; - } - } - - return false; -}; - -// For the Flash binding to work, ZeroClipboard_TableTools must be on the global -// object list -window.ZeroClipboard_TableTools = ZeroClipboard_TableTools; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Local (private) functions - */ - -/** - * If a Buttons instance is initlaised before it is placed into the DOM, Flash - * won't be able to bind to it, so we need to wait until it is available, this - * method abstracts that out. - * - * @param {ZeroClipboard} flash ZeroClipboard instance - * @param {jQuery} node Button - */ -var _glue = function ( flash, node ) -{ - var id = node.attr('id'); - - if ( node.parents('html').length ) { - flash.glue( node[0], '' ); - } - else { - setTimeout( function () { - _glue( flash, node ); - }, 500 ); - } -}; - -/** - * Get the sheet name for Excel exports. - * - * @param {object} config Button configuration - */ -var _sheetname = function ( config ) -{ - var sheetName = 'Sheet1'; - - if ( config.sheetName ) { - sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, ''); - } - - return sheetName; -}; - -/** - * Set the flash text. This has to be broken up into chunks as the Javascript / - * Flash bridge has a size limit. There is no indication in the Flash - * documentation what this is, and it probably depends upon the browser. - * Experimentation shows that the point is around 50k when data starts to get - * lost, so an 8K limit used here is safe. - * - * @param {ZeroClipboard} flash ZeroClipboard instance - * @param {string} data Data to send to Flash - */ -var _setText = function ( flash, data ) -{ - var parts = data.match(/[\s\S]{1,8192}/g) || []; - - flash.clearText(); - for ( var i=0, len=parts.length ; i 0 ) { - s += separator; - } - - s += boundary ? - boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary : - a[i]; - } - - return s; - }; - - var header = config.header ? join( data.header )+newLine : ''; - var footer = config.footer && data.footer ? newLine+join( data.footer ) : ''; - var body = []; - - for ( var i=0, ien=data.body.length ; i= 0 ) { - s = String.fromCharCode(n % len + ordA) + s; - n = Math.floor(n / len) - 1; - } - - return s; -} - -/** - * Create an XML node and add any children, attributes, etc without needing to - * be verbose in the DOM. - * - * @param {object} doc XML document - * @param {string} nodeName Node name - * @param {object} opts Options - can be `attr` (attributes), `children` - * (child nodes) and `text` (text content) - * @return {node} Created node - */ -function _createNode( doc, nodeName, opts ){ - var tempNode = doc.createElement( nodeName ); - - if ( opts ) { - if ( opts.attr ) { - $(tempNode).attr( opts.attr ); - } - - if ( opts.children ) { - $.each( opts.children, function ( key, value ) { - tempNode.appendChild( value ); - } ); - } - - if ( opts.text !== null && opts.text !== undefined ) { - tempNode.appendChild( doc.createTextNode( opts.text ) ); - } - } - - return tempNode; -} - -/** - * Get the width for an Excel column based on the contents of that column - * @param {object} data Data for export - * @param {int} col Column index - * @return {int} Column width - */ -function _excelColWidth( data, col ) { - var max = data.header[col].length; - var len, lineSplit, str; - - if ( data.footer && data.footer[col].length > max ) { - max = data.footer[col].length; - } - - for ( var i=0, ien=data.body.length ; i max ) { - max = len; - } - - // Max width rather than having potentially massive column widths - if ( max > 40 ) { - return 52; // 40 * 1.3 - } - } - - max *= 1.3; - - // And a min width - return max > 6 ? max : 6; -} - - var _serialiser = ""; - if (typeof window.XMLSerializer === 'undefined') { - _serialiser = new function () { - this.serializeToString = function (input) { - return input.xml - } - }; - } else { - _serialiser = new XMLSerializer(); - } - - var _ieExcel; - - -/** - * Convert XML documents in an object to strings - * @param {object} obj XLSX document object - */ -function _xlsxToStrings( obj ) { - if ( _ieExcel === undefined ) { - // Detect if we are dealing with IE's _awful_ serialiser by seeing if it - // drop attributes - _ieExcel = _serialiser - .serializeToString( - $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) - ) - .indexOf( 'xmlns:r' ) === -1; - } - - $.each( obj, function ( name, val ) { - if ( $.isPlainObject( val ) ) { - _xlsxToStrings( val ); - } - else { - if ( _ieExcel ) { - // IE's XML serialiser will drop some name space attributes from - // from the root node, so we need to save them. Do this by - // replacing the namespace nodes with a regular attribute that - // we convert back when serialised. Edge does not have this - // issue - var worksheet = val.childNodes[0]; - var i, ien; - var attrs = []; - - for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) { - var attrName = worksheet.attributes[i].nodeName; - var attrValue = worksheet.attributes[i].nodeValue; - - if ( attrName.indexOf( ':' ) !== -1 ) { - attrs.push( { name: attrName, value: attrValue } ); - - worksheet.removeAttribute( attrName ); - } - } - - for ( i=0, ien=attrs.length ; i]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' ); - - obj[ name ] = str; - } - } ); -} - -// Excel - Pre-defined strings to build a basic XLSX file -var excelStrings = { - "_rels/.rels": - ''+ - ''+ - ''+ - '', - - "xl/_rels/workbook.xml.rels": - ''+ - ''+ - ''+ - ''+ - '', - - "[Content_Types].xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '', - - "xl/workbook.xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '', - - "xl/worksheets/sheet1.xml": - ''+ - ''+ - ''+ - ''+ - '', - - "xl/styles.xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ // Excel appears to use this as a dotted background regardless of values but - ''+ // to be valid to the schema, use a patternFill - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '' -}; -// Note we could use 3 `for` loops for the styles, but when gzipped there is -// virtually no difference in size, since the above can be easily compressed - -// Pattern matching for special number formats. Perhaps this should be exposed -// via an API in future? -var _excelSpecials = [ - { match: /^\-?\d+\.\d%$/, style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p. - { match: /^\-?\d+\.?\d*%$/, style: 56, fmt: function (d) { return d/100; } }, // Percent - { match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, // Dollars - { match: /^\-?£[\d,]+.?\d*$/, style: 58 }, // Pounds - { match: /^\-?€[\d,]+.?\d*$/, style: 59 }, // Euros - { match: /^\([\d,]+\)$/, style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } }, // Negative numbers indicated by brackets - { match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } }, // Negative numbers indicated by brackets - 2d.p. - { match: /^[\d,]+$/, style: 63 }, // Numbers with thousand separators - { match: /^[\d,]+\.\d{2}$/, style: 64 } // Numbers with 2d.p. and thousands separators -]; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables options and methods - */ - -// Set the default SWF path -DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/'+DataTable.Buttons.version+'/swf/flashExport.swf'; - -// Method to allow Flash buttons to be resized when made visible - as they are -// of zero height and width if initialised hidden -DataTable.Api.register( 'buttons.resize()', function () { - $.each( ZeroClipboard_TableTools.clients, function ( i, client ) { - if ( client.domElement !== undefined && client.domElement.parentNode ) { - client.positionElement(); - } - } ); -} ); - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Button definitions - */ - -// Copy to clipboard -DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, { - className: 'buttons-copy buttons-flash', - - text: function ( dt ) { - return dt.i18n( 'buttons.copy', 'Copy' ); - }, - - action: function ( e, dt, button, config ) { - // Check that the trigger did actually occur due to a Flash activation - if ( ! config._fromFlash ) { - return; - } - - this.processing( true ); - - var flash = config._flash; - var exportData = _exportData( dt, config ); - var info = dt.buttons.exportInfo( config ); - var newline = _newLine(config); - var output = exportData.str; - - if ( info.title ) { - output = info.title + newline + newline + output; - } - - if ( info.messageTop ) { - output = info.messageTop + newline + newline + output; - } - - if ( info.messageBottom ) { - output = output + newline + newline + info.messageBottom; - } - - if ( config.customize ) { - output = config.customize( output, config, dt ); - } - - flash.setAction( 'copy' ); - _setText( flash, output ); - - this.processing( false ); - - dt.buttons.info( - dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ), - dt.i18n( 'buttons.copySuccess', { - _: 'Copied %d rows to clipboard', - 1: 'Copied 1 row to clipboard' - }, data.rows ), - 3000 - ); - }, - - fieldSeparator: '\t', - - fieldBoundary: '' -} ); - -// CSV save file -DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, { - className: 'buttons-csv buttons-flash', - - text: function ( dt ) { - return dt.i18n( 'buttons.csv', 'CSV' ); - }, - - action: function ( e, dt, button, config ) { - // Set the text - var flash = config._flash; - var data = _exportData( dt, config ); - var info = dt.buttons.exportInfo( config ); - var output = config.customize ? - config.customize( data.str, config, dt ) : - data.str; - - flash.setAction( 'csv' ); - flash.setFileName( info.filename ); - _setText( flash, output ); - }, - - escapeChar: '"' -} ); - -// Excel save file - this is really a CSV file using UTF-8 that Excel can read -DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, { - className: 'buttons-excel buttons-flash', - - text: function ( dt ) { - return dt.i18n( 'buttons.excel', 'Excel' ); - }, - - action: function ( e, dt, button, config ) { - this.processing( true ); - - var flash = config._flash; - var rowPos = 0; - var rels = $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) ; //Parses xml - var relsGet = rels.getElementsByTagName( "sheetData" )[0]; - - var xlsx = { - _rels: { - ".rels": $.parseXML( excelStrings['_rels/.rels'] ) - }, - xl: { - _rels: { - "workbook.xml.rels": $.parseXML( excelStrings['xl/_rels/workbook.xml.rels'] ) - }, - "workbook.xml": $.parseXML( excelStrings['xl/workbook.xml'] ), - "styles.xml": $.parseXML( excelStrings['xl/styles.xml'] ), - "worksheets": { - "sheet1.xml": rels - } - - }, - "[Content_Types].xml": $.parseXML( excelStrings['[Content_Types].xml']) - }; - - var data = dt.buttons.exportData( config.exportOptions ); - var currentRow, rowNode; - var addRow = function ( row ) { - currentRow = rowPos+1; - rowNode = _createNode( rels, "row", { attr: {r:currentRow} } ); - - for ( var i=0, ien=row.length ; id&&(d=a.footer[b].length);for(var e=0,f=a.body.length;ed&&(d=c),40'+c),c=c.replace(/_dt_b_namespace_token_/g,":"));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a[b]=c}})}var j=g.fn.dataTable,h={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=l.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display= -""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,d){(a=this.clients[a])&&a.receiveEvent(b,d)},log:function(a){console.log("Flash: "+a)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b= -{left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},Client:function(a){this.handlers={};this.id=h.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;h.register(this.id,this);a&&this.glue(a)}};h.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"", -action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,sheetName:"",glue:function(a,b){this.domElement=h.$(a);var d=99;this.domElement.style.zIndex&&(d=parseInt(this.domElement.style.zIndex,10)+1);var c=h.getDOMObjectPosition(this.domElement);this.div=l.createElement("div");var e=this.div.style;e.position="absolute";e.left="0px";e.top="0px";e.width=c.width+"px";e.height=c.height+"px";e.zIndex=d;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==c.width&&0!==c.height&&(this.sized= -!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(c.width,c.height).replace(/&/g,"&"))},positionElement:function(){var a=h.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var d="",c="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var e= -location.href.match(/^https/i)?"https://":"http://",d=d+('');else d+='';return d},hide:function(){this.div&&(this.div.style.left="-2000px")}, -show:function(){this.reposition()},destroy:function(){var a=this;this.domElement&&this.div&&(g(this.div).remove(),this.div=this.domElement=null,g.each(h.clients,function(b,d){d===a&&delete h.clients[b]}))},reposition:function(a){a&&((this.domElement=h.$(a))||this.hide());if(this.domElement&&this.div){var a=h.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+= -a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setSheetData:function(a){this.ready&&this.movie.setSheetData(JSON.stringify(a))},setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled= -a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var d,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=l.getElementById(this.movieId);if(!this.movie){d=this;setTimeout(function(){d.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){d=this;setTimeout(function(){d.receiveEvent("load",null)},100);this.ready=!0;return}this.ready= -!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&& -this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var c=0,e=this.handlers[a].length;c',"xl/_rels/workbook.xml.rels":'', -"[Content_Types].xml":'', -"xl/workbook.xml":'', -"xl/worksheets/sheet1.xml":'',"xl/styles.xml":''}, -B=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^[\d,]+$/,style:63},{match:/^[\d,]+\.\d{2}$/,style:64}];j.Buttons.swfPath="//cdn.datatables.net/buttons/"+ -j.Buttons.version+"/swf/flashExport.swf";j.Api.register("buttons.resize()",function(){g.each(h.clients,function(a,b){b.domElement!==q&&b.domElement.parentNode&&b.positionElement()})});j.ext.buttons.copyFlash=g.extend({},u,{className:"buttons-copy buttons-flash",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){if(c._fromFlash){this.processing(!0);var a=c._flash,e=A(b,c),d=b.buttons.exportInfo(c),f=z(c),e=e.str;d.title&&(e=d.title+f+f+e);d.messageTop&&(e=d.messageTop+ -f+f+e);d.messageBottom&&(e=e+f+f+d.messageBottom);c.customize&&(e=c.customize(e,c,b));a.setAction("copy");t(a,e);this.processing(!1);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{_:"Copied %d rows to clipboard",1:"Copied 1 row to clipboard"},data.rows),3E3)}},fieldSeparator:"\t",fieldBoundary:""});j.ext.buttons.csvFlash=g.extend({},u,{className:"buttons-csv buttons-flash",text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){var a= -c._flash,e=A(b,c),d=b.buttons.exportInfo(c),b=c.customize?c.customize(e.str,c,b):e.str;a.setAction("csv");a.setFileName(d.filename);t(a,b)},escapeChar:'"'});j.ext.buttons.excelFlash=g.extend({},u,{className:"buttons-excel buttons-flash",text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,d,c){this.processing(!0);var a=c._flash,e=0,f=g.parseXML(n["xl/worksheets/sheet1.xml"]),h=f.getElementsByTagName("sheetData")[0],d={_rels:{".rels":g.parseXML(n["_rels/.rels"])},xl:{_rels:{"workbook.xml.rels":g.parseXML(n["xl/_rels/workbook.xml.rels"])}, -"workbook.xml":g.parseXML(n["xl/workbook.xml"]),"styles.xml":g.parseXML(n["xl/styles.xml"]),worksheets:{"sheet1.xml":f}},"[Content_Types].xml":g.parseXML(n["[Content_Types].xml"])},i=b.buttons.exportData(c.exportOptions),k,l,j=function(a){k=e+1;l=o(f,"row",{attr:{r:k}});for(var b=0,d=a.length;b 0 ) { - s += separator; - } - - s += boundary ? - boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary : - a[i]; - } - - return s; - }; - - var header = config.header ? join( data.header )+newLine : ''; - var footer = config.footer && data.footer ? newLine+join( data.footer ) : ''; - var body = []; - - for ( var i=0, ien=data.body.length ; i 1 && version[1]*1 < 603.1 ) { - return true; - } - - return false; -}; - -/** - * Convert from numeric position to letter for column names in Excel - * @param {int} n Column number - * @return {string} Column letter(s) name - */ -function createCellPos( n ){ - var ordA = 'A'.charCodeAt(0); - var ordZ = 'Z'.charCodeAt(0); - var len = ordZ - ordA + 1; - var s = ""; - - while( n >= 0 ) { - s = String.fromCharCode(n % len + ordA) + s; - n = Math.floor(n / len) - 1; - } - - return s; -} - -try { - var _serialiser = new XMLSerializer(); - var _ieExcel; -} -catch (t) {} - -/** - * Recursively add XML files from an object's structure to a ZIP file. This - * allows the XSLX file to be easily defined with an object's structure matching - * the files structure. - * - * @param {JSZip} zip ZIP package - * @param {object} obj Object to add (recursive) - */ -function _addToZip( zip, obj ) { - if ( _ieExcel === undefined ) { - // Detect if we are dealing with IE's _awful_ serialiser by seeing if it - // drop attributes - _ieExcel = _serialiser - .serializeToString( - $.parseXML( excelStrings['xl/worksheets/sheet1.xml'] ) - ) - .indexOf( 'xmlns:r' ) === -1; - } - - $.each( obj, function ( name, val ) { - if ( $.isPlainObject( val ) ) { - var newDir = zip.folder( name ); - _addToZip( newDir, val ); - } - else { - if ( _ieExcel ) { - // IE's XML serialiser will drop some name space attributes from - // from the root node, so we need to save them. Do this by - // replacing the namespace nodes with a regular attribute that - // we convert back when serialised. Edge does not have this - // issue - var worksheet = val.childNodes[0]; - var i, ien; - var attrs = []; - - for ( i=worksheet.attributes.length-1 ; i>=0 ; i-- ) { - var attrName = worksheet.attributes[i].nodeName; - var attrValue = worksheet.attributes[i].nodeValue; - - if ( attrName.indexOf( ':' ) !== -1 ) { - attrs.push( { name: attrName, value: attrValue } ); - - worksheet.removeAttribute( attrName ); - } - } - - for ( i=0, ien=attrs.length ; i]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>' ); - - zip.file( name, str ); - } - } ); -} - -/** - * Create an XML node and add any children, attributes, etc without needing to - * be verbose in the DOM. - * - * @param {object} doc XML document - * @param {string} nodeName Node name - * @param {object} opts Options - can be `attr` (attributes), `children` - * (child nodes) and `text` (text content) - * @return {node} Created node - */ -function _createNode( doc, nodeName, opts ) { - var tempNode = doc.createElement( nodeName ); - - if ( opts ) { - if ( opts.attr ) { - $(tempNode).attr( opts.attr ); - } - - if ( opts.children ) { - $.each( opts.children, function ( key, value ) { - tempNode.appendChild( value ); - } ); - } - - if ( opts.text !== null && opts.text !== undefined ) { - tempNode.appendChild( doc.createTextNode( opts.text ) ); - } - } - - return tempNode; -} - -/** - * Get the width for an Excel column based on the contents of that column - * @param {object} data Data for export - * @param {int} col Column index - * @return {int} Column width - */ -function _excelColWidth( data, col ) { - var max = data.header[col].length; - var len, lineSplit, str; - - if ( data.footer && data.footer[col].length > max ) { - max = data.footer[col].length; - } - - for ( var i=0, ien=data.body.length ; i max ) { - max = len; - } - - // Max width rather than having potentially massive column widths - if ( max > 40 ) { - return 54; // 40 * 1.35 - } - } - - max *= 1.35; - - // And a min width - return max > 6 ? max : 6; -} - -// Excel - Pre-defined strings to build a basic XLSX file -var excelStrings = { - "_rels/.rels": - ''+ - ''+ - ''+ - '', - - "xl/_rels/workbook.xml.rels": - ''+ - ''+ - ''+ - ''+ - '', - - "[Content_Types].xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '', - - "xl/workbook.xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '', - - "xl/worksheets/sheet1.xml": - ''+ - ''+ - ''+ - ''+ - '', - - "xl/styles.xml": - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ // Excel appears to use this as a dotted background regardless of values but - ''+ // to be valid to the schema, use a patternFill - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '' -}; -// Note we could use 3 `for` loops for the styles, but when gzipped there is -// virtually no difference in size, since the above can be easily compressed - -// Pattern matching for special number formats. Perhaps this should be exposed -// via an API in future? -// Ref: section 3.8.30 - built in formatters in open spreadsheet -// https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf -var _excelSpecials = [ - { match: /^\-?\d+\.\d%$/, style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p. - { match: /^\-?\d+\.?\d*%$/, style: 56, fmt: function (d) { return d/100; } }, // Percent - { match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, // Dollars - { match: /^\-?£[\d,]+.?\d*$/, style: 58 }, // Pounds - { match: /^\-?€[\d,]+.?\d*$/, style: 59 }, // Euros - { match: /^\-?\d+$/, style: 65 }, // Numbers without thousand separators - { match: /^\-?\d+\.\d{2}$/, style: 66 }, // Numbers 2 d.p. without thousands separators - { match: /^\([\d,]+\)$/, style: 61, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } }, // Negative numbers indicated by brackets - { match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (d) { return -1 * d.replace(/[\(\)]/g, ''); } }, // Negative numbers indicated by brackets - 2d.p. - { match: /^\-?[\d,]+$/, style: 63 }, // Numbers with thousand separators - { match: /^\-?[\d,]+\.\d{2}$/, style: 64 } // Numbers with 2 d.p. and thousands separators -]; - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Buttons - */ - -// -// Copy to clipboard -// -DataTable.ext.buttons.copyHtml5 = { - className: 'buttons-copy buttons-html5', - - text: function ( dt ) { - return dt.i18n( 'buttons.copy', 'Copy' ); - }, - - action: function ( e, dt, button, config ) { - this.processing( true ); - - var that = this; - var exportData = _exportData( dt, config ); - var info = dt.buttons.exportInfo( config ); - var newline = _newLine(config); - var output = exportData.str; - var hiddenDiv = $('
      ') - .css( { - height: 1, - width: 1, - overflow: 'hidden', - position: 'fixed', - top: 0, - left: 0 - } ); - - if ( info.title ) { - output = info.title + newline + newline + output; - } - - if ( info.messageTop ) { - output = info.messageTop + newline + newline + output; - } - - if ( info.messageBottom ) { - output = output + newline + newline + info.messageBottom; - } - - if ( config.customize ) { - output = config.customize( output, config, dt ); - } - - var textarea = $(' -
      -
      - -
      - -
      - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/main.js deleted file mode 100644 index 5c0f99a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/main.js +++ /dev/null @@ -1,141 +0,0 @@ -requirejs.config({ - "paths": { - "jquery": "https://code.jquery.com/jquery-1.11.3.min", - "moment": "../../moment", - "daterangepicker": "../../daterangepicker" - } -}); - -requirejs(['jquery', 'moment', 'daterangepicker'] , function ($, moment) { -$(document).ready(function() { - - $('#config-text').keyup(function() { - eval($(this).val()); - }); - - $('.configurator input, .configurator select').change(function() { - updateConfig(); - }); - - $('.demo i').click(function() { - $(this).parent().find('input').click(); - }); - - $('#startDate').daterangepicker({ - singleDatePicker: true, - startDate: moment().subtract(6, 'days') - }); - - $('#endDate').daterangepicker({ - singleDatePicker: true, - startDate: moment() - }); - - updateConfig(); - - function updateConfig() { - var options = {}; - - if ($('#singleDatePicker').is(':checked')) - options.singleDatePicker = true; - - if ($('#showDropdowns').is(':checked')) - options.showDropdowns = true; - - if ($('#showWeekNumbers').is(':checked')) - options.showWeekNumbers = true; - - if ($('#showISOWeekNumbers').is(':checked')) - options.showISOWeekNumbers = true; - - if ($('#timePicker').is(':checked')) - options.timePicker = true; - - if ($('#timePicker24Hour').is(':checked')) - options.timePicker24Hour = true; - - if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) - options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); - - if ($('#timePickerSeconds').is(':checked')) - options.timePickerSeconds = true; - - if ($('#autoApply').is(':checked')) - options.autoApply = true; - - if ($('#dateLimit').is(':checked')) - options.dateLimit = { days: 7 }; - - if ($('#ranges').is(':checked')) { - options.ranges = { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }; - } - - if ($('#locale').is(':checked')) { - options.locale = { - format: 'MM/DD/YYYY HH:mm', - separator: ' - ', - applyLabel: 'Apply', - cancelLabel: 'Cancel', - fromLabel: 'From', - toLabel: 'To', - customRangeLabel: 'Custom', - daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - firstDay: 1 - }; - } - - if (!$('#linkedCalendars').is(':checked')) - options.linkedCalendars = false; - - if (!$('#autoUpdateInput').is(':checked')) - options.autoUpdateInput = false; - - if ($('#alwaysShowCalendars').is(':checked')) - options.alwaysShowCalendars = true; - - if ($('#parentEl').val().length) - options.parentEl = $('#parentEl').val(); - - if ($('#startDate').val().length) - options.startDate = $('#startDate').val(); - - if ($('#endDate').val().length) - options.endDate = $('#endDate').val(); - - if ($('#minDate').val().length) - options.minDate = $('#minDate').val(); - - if ($('#maxDate').val().length) - options.maxDate = $('#maxDate').val(); - - if ($('#opens').val().length && $('#opens').val() != 'right') - options.opens = $('#opens').val(); - - if ($('#drops').val().length && $('#drops').val() != 'down') - options.drops = $('#drops').val(); - - if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') - options.buttonClasses = $('#buttonClasses').val(); - - if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success') - options.applyClass = $('#applyClass').val(); - - if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default') - options.cancelClass = $('#cancelClass').val(); - - $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});"); - - $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); - - } - -}); -}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/require.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/require.js deleted file mode 100644 index 857eb5b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/amd/require.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - RequireJS 2.2.0 Copyright jQuery Foundation and other contributors. - Released under MIT license, http://github.com/requirejs/requirejs/LICENSE -*/ -var requirejs,require,define; -(function(ga){function ka(b,c,d,g){return g||""}function K(b){return"[object Function]"===Q.call(b)}function L(b){return"[object Array]"===Q.call(b)}function y(b,c){if(b){var d;for(d=0;dthis.depCount&&!this.defined){if(K(k)){if(this.events.error&&this.map.isDefine||g.onError!== -ha)try{h=l.execCb(c,k,b,h)}catch(d){a=d}else h=l.execCb(c,k,b,h);this.map.isDefine&&void 0===h&&((b=this.module)?h=b.exports:this.usingExports&&(h=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",A(this.error=a)}else h=k;this.exports=h;if(this.map.isDefine&&!this.ignore&&(v[c]=h,g.onResourceLoad)){var f=[];y(this.depMaps,function(a){f.push(a.normalizedMap||a)});g.onResourceLoad(l,this.map,f)}C(c); -this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}},callPlugin:function(){var a=this.map,b=a.id,d=q(a.prefix);this.depMaps.push(d);w(d,"defined",z(this,function(h){var k,f,d=e(fa,this.map.id),M=this.map.name,r=this.map.parentMap?this.map.parentMap.name:null,m=l.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(h.normalize&&(M=h.normalize(M,function(a){return c(a,r,!0)})|| -""),f=q(a.prefix+"!"+M,this.map.parentMap),w(f,"defined",z(this,function(a){this.map.normalizedMap=f;this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),h=e(t,f.id)){this.depMaps.push(f);if(this.events.error)h.on("error",z(this,function(a){this.emit("error",a)}));h.enable()}}else d?(this.map.url=l.nameToUrl(d),this.load()):(k=z(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),k.error=z(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];D(t,function(a){0=== -a.map.id.indexOf(b+"_unnormalized")&&C(a.map.id)});A(a)}),k.fromText=z(this,function(h,c){var d=a.name,f=q(d),M=S;c&&(h=c);M&&(S=!1);u(f);x(p.config,b)&&(p.config[d]=p.config[b]);try{g.exec(h)}catch(e){return A(F("fromtexteval","fromText eval for "+b+" failed: "+e,e,[b]))}M&&(S=!0);this.depMaps.push(f);l.completeLoad(d);m([d],k)}),h.load(a.name,m,k,p))}));l.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){Z[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,z(this,function(a, -b){var c,h;if("string"===typeof a){a=q(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=e(R,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;w(a,"defined",z(this,function(a){this.undefed||(this.defineDep(b,a),this.check())}));this.errback?w(a,"error",z(this,this.errback)):this.events.error&&w(a,"error",z(this,function(a){this.emit("error",a)}))}c=a.id;h=t[c];x(R,c)||!h||h.enabled||l.enable(a,this)}));D(this.pluginMaps,z(this,function(a){var b=e(t,a.id); -b&&!b.enabled&&l.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};l={config:p,contextName:b,registry:t,defined:v,urlFetched:W,defQueue:G,defQueueMap:{},Module:da,makeModuleMap:q,nextTick:g.nextTick,onError:A,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");if("string"===typeof a.urlArgs){var b= -a.urlArgs;a.urlArgs=function(a,c){return(-1===c.indexOf("?")?"?":"&")+b}}var c=p.shim,h={paths:!0,bundles:!0,config:!0,map:!0};D(a,function(a,b){h[b]?(p[b]||(p[b]={}),Y(p[b],a,!0,!0)):p[b]=a});a.bundles&&D(a.bundles,function(a,b){y(a,function(a){a!==b&&(fa[a]=b)})});a.shim&&(D(a.shim,function(a,b){L(a)&&(a={deps:a});!a.exports&&!a.init||a.exportsFn||(a.exportsFn=l.makeShimExports(a));c[b]=a}),p.shim=c);a.packages&&y(a.packages,function(a){var b;a="string"===typeof a?{name:a}:a;b=a.name;a.location&& -(p.paths[b]=a.location);p.pkgs[b]=a.name+"/"+(a.main||"main").replace(na,"").replace(U,"")});D(t,function(a,b){a.inited||a.map.unnormalized||(a.map=q(b,null,!0))});(a.deps||a.callback)&&l.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ga,arguments));return b||a.exports&&ia(a.exports)}},makeRequire:function(a,n){function m(c,d,f){var e,r;n.enableBuildCallback&&d&&K(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(K(d))return A(F("requireargs", -"Invalid require call"),f);if(a&&x(R,c))return R[c](t[a.id]);if(g.get)return g.get(l,c,a,m);e=q(c,a,!1,!0);e=e.id;return x(v,e)?v[e]:A(F("notloaded",'Module name "'+e+'" has not been loaded yet for context: '+b+(a?"":". Use require([])")))}P();l.nextTick(function(){P();r=u(q(null,a));r.skipMap=n.skipMap;r.init(c,d,f,{enabled:!0});H()});return m}n=n||{};Y(m,{isBrowser:E,toUrl:function(b){var d,f=b.lastIndexOf("."),g=b.split("/")[0];-1!==f&&("."!==g&&".."!==g||1e.attachEvent.toString().indexOf("[native code")||ca?(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)):(S=!0,e.attachEvent("onreadystatechange",b.onScriptLoad));e.src=d;if(m.onNodeCreated)m.onNodeCreated(e,m,c,d);P=e;H?C.insertBefore(e,H):C.appendChild(e);P=null;return e}if(ja)try{setTimeout(function(){}, -0),importScripts(d),b.completeLoad(c)}catch(q){b.onError(F("importscripts","importScripts failed for "+c+" at "+d,q,[c]))}};E&&!w.skipDataMain&&X(document.getElementsByTagName("script"),function(b){C||(C=b.parentNode);if(O=b.getAttribute("data-main"))return u=O,w.baseUrl||-1!==u.indexOf("!")||(I=u.split("/"),u=I.pop(),T=I.length?I.join("/")+"/":"./",w.baseUrl=T),u=u.replace(U,""),g.jsExtRegExp.test(u)&&(u=O),w.deps=w.deps?w.deps.concat(u):[u],!0});define=function(b,c,d){var e,g;"string"!==typeof b&& -(d=c,c=b,b=null);L(c)||(d=c,c=null);!c&&K(d)&&(c=[],d.length&&(d.toString().replace(qa,ka).replace(ra,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));S&&(e=P||pa())&&(b||(b=e.getAttribute("data-requiremodule")),g=J[e.getAttribute("data-requirecontext")]);g?(g.defQueue.push([b,c,d]),g.defQueueMap[b]=!0):V.push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(w)}})(this); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/README.md b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/README.md deleted file mode 100644 index 123b093..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Browserify example - -Two steps need to be done for this to work - -In the project root - - npm install - -In this folder - - ../../node_modules/.bin/browserify main.js -o bundle.js diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/bundle.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/bundle.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/index.html b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/index.html deleted file mode 100644 index bdce82e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/index.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - A date range picker for Bootstrap - - - - - - -
      - -

      Configuration Builder

      - -
      - -
      -
      - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - -
      -
      - -
      - -
      - -
      -

      Your Date Range Picker

      - - -
      - -
      -

      Configuration

      - -
      - -
      -
      - -
      - -
      - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/main.js deleted file mode 100644 index 30e92d4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/example/browserify/main.js +++ /dev/null @@ -1,135 +0,0 @@ -require('../../daterangepicker.js'); -var $ = require('jquery'), - moment = require('moment'); - -$(document).ready(function() { - - $('#config-text').keyup(function() { - eval($(this).val()); - }); - - $('.configurator input, .configurator select').change(function() { - updateConfig(); - }); - - $('.demo i').click(function() { - $(this).parent().find('input').click(); - }); - - $('#startDate').daterangepicker({ - singleDatePicker: true, - startDate: moment().subtract(6, 'days') - }); - - $('#endDate').daterangepicker({ - singleDatePicker: true, - startDate: moment() - }); - - updateConfig(); - - function updateConfig() { - var options = {}; - - if ($('#singleDatePicker').is(':checked')) - options.singleDatePicker = true; - - if ($('#showDropdowns').is(':checked')) - options.showDropdowns = true; - - if ($('#showWeekNumbers').is(':checked')) - options.showWeekNumbers = true; - - if ($('#showISOWeekNumbers').is(':checked')) - options.showISOWeekNumbers = true; - - if ($('#timePicker').is(':checked')) - options.timePicker = true; - - if ($('#timePicker24Hour').is(':checked')) - options.timePicker24Hour = true; - - if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) - options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); - - if ($('#timePickerSeconds').is(':checked')) - options.timePickerSeconds = true; - - if ($('#autoApply').is(':checked')) - options.autoApply = true; - - if ($('#dateLimit').is(':checked')) - options.dateLimit = { days: 7 }; - - if ($('#ranges').is(':checked')) { - options.ranges = { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }; - } - - if ($('#locale').is(':checked')) { - options.locale = { - format: 'MM/DD/YYYY HH:mm', - separator: ' - ', - applyLabel: 'Apply', - cancelLabel: 'Cancel', - fromLabel: 'From', - toLabel: 'To', - customRangeLabel: 'Custom', - daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - firstDay: 1 - }; - } - - if (!$('#linkedCalendars').is(':checked')) - options.linkedCalendars = false; - - if (!$('#autoUpdateInput').is(':checked')) - options.autoUpdateInput = false; - - if ($('#alwaysShowCalendars').is(':checked')) - options.alwaysShowCalendars = true; - - if ($('#parentEl').val().length) - options.parentEl = $('#parentEl').val(); - - if ($('#startDate').val().length) - options.startDate = $('#startDate').val(); - - if ($('#endDate').val().length) - options.endDate = $('#endDate').val(); - - if ($('#minDate').val().length) - options.minDate = $('#minDate').val(); - - if ($('#maxDate').val().length) - options.maxDate = $('#maxDate').val(); - - if ($('#opens').val().length && $('#opens').val() != 'right') - options.opens = $('#opens').val(); - - if ($('#drops').val().length && $('#drops').val() != 'down') - options.drops = $('#drops').val(); - - if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') - options.buttonClasses = $('#buttonClasses').val(); - - if ($('#applyClass').val().length && $('#applyClass').val() != 'btn-success') - options.applyClass = $('#applyClass').val(); - - if ($('#cancelClass').val().length && $('#cancelClass').val() != 'btn-default') - options.cancelClass = $('#cancelClass').val(); - - $('#config-text').val("$('#demo').daterangepicker(" + JSON.stringify(options, null, ' ') + ", function(start, end, label) {\n console.log(\"New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')\");\n});"); - - $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); - - } - -}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/moment.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/moment.min.js deleted file mode 100644 index 5787a40..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/moment.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n>>0,s=0;sSe(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),F("week",5),F("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=D(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Xe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),C("hour","h"),F("hour",13),ue("a",et),ue("A",et),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te("Hours",!0),st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=tt._abbr,require("./locale/"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11Pe(n[me],n[_e])?ye:n[ge]<0||24Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],vt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;tn.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=n("dates accessor is deprecated. Use date instead.",un),mn.months=n("months accessor is deprecated. Use month instead",Ue),mn.years=n("years accessor is deprecated. Use year instead",Oe),mn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0 180) { - $('.leftcol').css('position', 'fixed'); - $('.leftcol').css('top', '10px'); - } else { - $('.leftcol').css('position', 'absolute'); - $('.leftcol').css('top', '180px'); - } - }); - - var bg = new Trianglify({ - x_colors: ["#e1f3fd", "#eeeeee", "#407dbf"], - y_colors: 'match_x', - width: document.body.clientWidth, - height: 150, - stroke_width: 0, - cell_size: 20 - }); - - $('#jumbo').css('background-image', 'url(' + bg.png() + ')'); - -}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/index.html b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/index.html deleted file mode 100644 index a100264..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/index.html +++ /dev/null @@ -1,744 +0,0 @@ - - - - - - - - Date Range Picker — JavaScript Date & Time Picker Library - - - - - - - - - - - - - - - - - - - - - - -
      - -
      -
      -
      -
      - -

      Date Range Picker

      -

      - A JavaScript component for choosing date ranges, - dates and times. -

      - -
      -
      - - - -
      - - - - - -
      - -
      -
      -
      -
      - -
      -
      -
      - - -
      - - - - -
      - -
      -
      - -

      Originally created for reports at Improvely, the Date Range Picker can be attached to any webpage element to pop up two calendars for selecting dates, times, or predefined ranges like "Last 30 Days".

      - - - -

      Getting Started

      - -

      - To get started, include jQuery, Moment.js and Date Range Picker's files in your webpage: -

      - - - -

      - Then attach a date range picker to whatever you want to trigger it: -

      - -
      -
      - - -
      -
      - - - -
      -
      - -

      - You can customize Date Range Picker with options, and get notified when the user chooses new dates by providing a callback function. -

      - -

      Examples

      - - -

      Simple Date Range Picker With a Callback

      -
      -
      -
      - - -
      -
      - - - - -
      -
      -
      - - -

      Date Range Picker With Times

      -
      -
      -
      - - -
      -
      - - - - -
      -
      -
      - - -

      Single Date Picker

      -
      -
      -
      - - -
      -
      - - - - -
      -
      -
      - - -

      Predefined Date Ranges

      -
      -
      -
      - - -
      -
      - - -
      -   - -
      - - - -
      -
      -
      - - -

      Input Initially Empty

      -
      -
      -
      - - -
      -
      - - - - -
      -
      -
      - -

      Options

      - -
        -
      • - startDate (Date or string) The beginning date of the initially selected date range. If you provide a string, it must match the date format string set in your locale setting. -
      • -
      • - endDate: (Date or string) The end date of the initially selected date range. -
      • -
      • - minDate: (Date or string) The earliest date a user may select. -
      • -
      • - maxDate: (Date or string) The latest date a user may select. -
      • -
      • - maxSpan: (object) The maximum span between the selected start and end dates. Check off maxSpan in the configuration generator for an example of how to use this. You can provide any object the moment library would let you add to a date. -
      • -
      • - showDropdowns: (true/false) Show year and month select boxes above calendars to jump to a specific month and year. -
      • -
      • - minYear: (number) The minimum year shown in the dropdowns when showDropdowns is set to true. -
      • -
      • - maxYear: (number) The maximum year shown in the dropdowns when showDropdowns is set to true. -
      • -
      • - showWeekNumbers: (true/false) Show localized week numbers at the start of each week on the calendars. -
      • -
      • - showISOWeekNumbers: (true/false) Show ISO week numbers at the start of each week on the calendars. -
      • -
      • - timePicker: (true/false) Adds select boxes to choose times in addition to dates. -
      • -
      • - timePickerIncrement: (number) Increment of the minutes selection list for times (i.e. 30 to allow only selection of times ending in 0 or 30). -
      • -
      • - timePicker24Hour: (true/false) Use 24-hour instead of 12-hour times, removing the AM/PM selection. -
      • -
      • - timePickerSeconds: (true/false) Show seconds in the timePicker. -
      • -
      • - ranges: (object) Set predefined date ranges the user can select from. Each key is the label for the range, and its value an array with two dates representing the bounds of the range. Click ranges in the configuration generator for examples. -
      • -
      • - showCustomRangeLabel: (true/false) Displays "Custom Range" at - the end of the list of predefined ranges, when the ranges option is used. - This option will be highlighted whenever the current date range selection does not match one of the predefined ranges. Clicking it will display the calendars to select a new range. -
      • -
      • - alwaysShowCalendars: (true/false) Normally, if you use the ranges option to specify pre-defined date ranges, calendars for choosing a custom date range are not shown until the user clicks "Custom Range". When this option is set to true, the calendars for choosing a custom date range are always shown instead. -
      • -
      • - opens: ('left'/'right'/'center') Whether the picker appears aligned to the left, to the right, or centered under the HTML element it's attached to. -
      • -
      • - drops: ('down'/'up') Whether the picker appears below (default) or above the HTML element it's attached to. -
      • -
      • - buttonClasses: (string) CSS class names that will be added to both the apply and cancel buttons. -
      • -
      • - applyButtonClasses: (string) CSS class names that will be added only to the apply button. -
      • -
      • - cancelButtonClasses: (string) CSS class names that will be added only to the cancel button. -
      • -
      • - locale: (object) Allows you to provide localized strings for buttons and labels, customize the date format, and change the first day of week for the calendars. - Check off locale in the configuration generator to see how - to customize these options. -
      • -
      • - singleDatePicker: (true/false) Show only a single calendar to choose one date, instead of a range picker with two calendars. The start and end dates provided to your callback will be the same single date chosen. -
      • -
      • - autoApply: (true/false) Hide the apply and cancel buttons, and automatically apply a new date range as soon as two dates are clicked. -
      • -
      • - linkedCalendars: (true/false) When enabled, the two calendars displayed will always be for two sequential months (i.e. January and February), and both will be advanced when clicking the left or right arrows above the calendars. When disabled, the two calendars can be individually advanced and display any month/year. -
      • -
      • - isInvalidDate: (function) A function that is passed each date in the two - calendars before they are displayed, and may return true or false to indicate whether - that date should be available for selection or not. -
      • -
      • - isCustomDate: (function) A function that is passed each date in the two - calendars before they are displayed, and may return a string or array of CSS class names - to apply to that date's calendar cell. -
      • -
      • - autoUpdateInput: (true/false) Indicates whether the date range picker should - automatically update the value of the <input> element it's attached to at initialization and when the selected dates change. -
      • -
      • - parentEl: (string) jQuery selector of the parent element that the date range picker will be added to, if not provided this will be 'body' -
      • -
      - -

      Methods

      - -

      - You can programmatically update the startDate and endDate - in the picker using the setStartDate and setEndDate methods. - You can access the Date Range Picker object and its functions and properties through - data properties of the element you attached it to. -

      - - - -
      - -
        -
      • - setStartDate(Date or string): Sets the date range picker's currently selected start date to the provided date -
      • -
      • - setEndDate(Date or string): Sets the date range picker's currently selected end date to the provided date -
      • -
      - -

      Example usage:

      - - - -

      Events

      - -

      - Several events are triggered on the element you attach the picker to, which you can listen for. -

      - -
        -
      • - show.daterangepicker: Triggered when the picker is shown -
      • -
      • - hide.daterangepicker: Triggered when the picker is hidden -
      • -
      • - showCalendar.daterangepicker: Triggered when the calendar(s) are shown -
      • -
      • - hideCalendar.daterangepicker: Triggered when the calendar(s) are hidden -
      • -
      • - apply.daterangepicker: Triggered when the apply button is clicked, - or when a predefined range is clicked -
      • -
      • - cancel.daterangepicker: Triggered when the cancel button is clicked -
      • -
      - -

      - Some applications need a "clear" instead of a "cancel" functionality, which can be achieved by changing the button label and watching for the cancel event: -

      - - - -
      - -

      - While passing in a callback to the constructor is the easiest way to listen for changes in the selected date range, you can also do something every time the apply button is clicked even if the selection hasn't changed: -

      - - - -

      Configuration Generator

      - -
      - -
      -
      - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      -
      - -
      - -
      - -
      - - -
      - -
      - - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      - -
      -
      - -
      - -
      - -
      -
      -

      Your Date Range Picker

      - -
      -
      - -
      -

      Your Configuration to Copy

      - -
      - -
      -
      - -
      - - - -

      License

      - -

      The MIT License (MIT)

      - -

      Copyright (c) 2012-2019 Dan Grossman

      - -

      - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -

      - -

      - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -

      - -

      - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -

      - -

      Comments

      - -
      - - - -
      -
      -
      - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.css b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.css deleted file mode 100644 index d325155..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.css +++ /dev/null @@ -1,152 +0,0 @@ -body { - font-size: 15px; - line-height: 1.6em; - position: relative; - margin: 0; -} - -.navbar .nav-item { - padding: 8px 0 8px 20px; -} - -.navbar .nav-link { - font-weight: bold; - font-size: 14px; - padding: 0; -} - -.navbar-expand-sm .navbar-nav .nav-link { - padding: 0; -} - -.well { - background: #f5f5f5; - border-radius: 4px; - padding: 20px; -} - -h1 { - font-size: 20px; - margin-bottom: 1em; - padding-bottom: 5px; - border-bottom: 1px dotted #08c; -} - -h1:before { - content: '#'; - color: #666; - position: relative; - padding-right: 5px; -} - -h2 { - padding: 0; - margin: 20px 0 0 0; - font-size: 18px; -} - -h2 a { - color: #444; - display: block; - background: #eee; - padding: 8px 12px; - margin-bottom: 0; - cursor: default; - text-decoration: none; -} - -input.form-control { - font-size: 14px; -} - -.collapsable { - border: 1px solid #eee; - padding: 12px; - display: block; -} - -label { - font-size: 13px; - font-weight: bold; -} - -.gist { - overflow: auto; -} - -.gist .blob-wrapper.data { - max-height: 350px; - overflow: auto; -} - -.list-group-item { - padding: 4px 0; - border: 0; - font-size: 16px; -} - -.leftcol { - position: absolute; - top: 180px; -} - -.rightcol { - max-width: 950px; -} - -.container { - max-width: 1300px; -} - -@media (min-width: 980px) { - .rightcol { - margin-left: 320px; - } -} - -p, pre { - margin-bottom: 2em; -} - -ul.nobullets { - margin: 0; - padding: 0; - list-style: none; -} -ul.nobullets li { - padding-bottom: 1em; - margin-bottom: 1em; - border-bottom: 1px dotted #ddd; -} - -input[type="text"] { - padding: 6px; - width: 100%; - border-radius: 4px; -} - -#footer { - background: #222; - margin-top: 80px; - padding: 10px; - color: #fff; - text-align: center; -} -#footer a:link, #footer a:visited { - color: #fff; - border-bottom: 1px dotted #fff; -} -#jumbo { - background: #c1deef; - color: #000; - padding: 20px 0; - margin-bottom: 20px; -} - -#jumbo h1 { - font-size: 28px; -} -#jumbo .btn { - border-radius: 0; - font-size: 16px; -} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.js b/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.js deleted file mode 100644 index e217994..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/daterangepicker/website/website.js +++ /dev/null @@ -1,179 +0,0 @@ -$(document).ready(function() { - - $('#config-text').keyup(function() { - eval($(this).val()); - }); - - $('.configurator input, .configurator select').change(function() { - updateConfig(); - }); - - $('.demo i').click(function() { - $(this).parent().find('input').click(); - }); - - $('#startDate').daterangepicker({ - singleDatePicker: true, - startDate: moment().subtract(6, 'days') - }); - - $('#endDate').daterangepicker({ - singleDatePicker: true, - startDate: moment() - }); - - //updateConfig(); - - function updateConfig() { - var options = {}; - - if ($('#singleDatePicker').is(':checked')) - options.singleDatePicker = true; - - if ($('#showDropdowns').is(':checked')) - options.showDropdowns = true; - - if ($('#minYear').val().length && $('#minYear').val() != 1) - options.minYear = parseInt($('#minYear').val(), 10); - - if ($('#maxYear').val().length && $('#maxYear').val() != 1) - options.maxYear = parseInt($('#maxYear').val(), 10); - - if ($('#showWeekNumbers').is(':checked')) - options.showWeekNumbers = true; - - if ($('#showISOWeekNumbers').is(':checked')) - options.showISOWeekNumbers = true; - - if ($('#timePicker').is(':checked')) - options.timePicker = true; - - if ($('#timePicker24Hour').is(':checked')) - options.timePicker24Hour = true; - - if ($('#timePickerIncrement').val().length && $('#timePickerIncrement').val() != 1) - options.timePickerIncrement = parseInt($('#timePickerIncrement').val(), 10); - - if ($('#timePickerSeconds').is(':checked')) - options.timePickerSeconds = true; - - if ($('#autoApply').is(':checked')) - options.autoApply = true; - - if ($('#maxSpan').is(':checked')) - options.maxSpan = { days: 7 }; - - if ($('#ranges').is(':checked')) { - options.ranges = { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }; - } - - if ($('#locale').is(':checked')) { - options.locale = { - format: 'MM/DD/YYYY', - separator: ' - ', - applyLabel: 'Apply', - cancelLabel: 'Cancel', - fromLabel: 'From', - toLabel: 'To', - customRangeLabel: 'Custom', - weekLabel: 'W', - daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'], - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - firstDay: 1 - }; - } - - if (!$('#linkedCalendars').is(':checked')) - options.linkedCalendars = false; - - if (!$('#autoUpdateInput').is(':checked')) - options.autoUpdateInput = false; - - if (!$('#showCustomRangeLabel').is(':checked')) - options.showCustomRangeLabel = false; - - if ($('#alwaysShowCalendars').is(':checked')) - options.alwaysShowCalendars = true; - - if ($('#parentEl').val().length) - options.parentEl = $('#parentEl').val(); - - if ($('#startDate').val().length) - options.startDate = $('#startDate').val(); - - if ($('#endDate').val().length) - options.endDate = $('#endDate').val(); - - if ($('#minDate').val().length) - options.minDate = $('#minDate').val(); - - if ($('#maxDate').val().length) - options.maxDate = $('#maxDate').val(); - - if ($('#opens').val().length && $('#opens').val() != 'right') - options.opens = $('#opens').val(); - - if ($('#drops').val().length && $('#drops').val() != 'down') - options.drops = $('#drops').val(); - - if ($('#buttonClasses').val().length && $('#buttonClasses').val() != 'btn btn-sm') - options.buttonClasses = $('#buttonClasses').val(); - - if ($('#applyButtonClasses').val().length && $('#applyButtonClasses').val() != 'btn-primary') - options.applyButtonClasses = $('#applyButtonClasses').val(); - - if ($('#cancelButtonClasses').val().length && $('#cancelButtonClasses').val() != 'btn-default') - options.cancelClass = $('#cancelButtonClasses').val(); - - $('#config-demo').daterangepicker(options, function(start, end, label) { console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')'); }); - - if (typeof options.ranges !== 'undefined') { - options.ranges = {}; - } - - var option_text = JSON.stringify(options, null, ' '); - - var replacement = "ranges: {\n" - + " 'Today': [moment(), moment()],\n" - + " 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n" - + " 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n" - + " 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n" - + " 'This Month': [moment().startOf('month'), moment().endOf('month')],\n" - + " 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\n" - + " }"; - option_text = option_text.replace(new RegExp('"ranges"\: \{\}', 'g'), replacement); - - $('#config-text').val("$('#demo').daterangepicker(" + option_text + ", function(start, end, label) {\n console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')');\n});"); - - } - - $(window).scroll(function (event) { - var scroll = $(window).scrollTop(); - if (scroll > 180) { - $('.leftcol').css('position', 'fixed'); - $('.leftcol').css('top', '10px'); - } else { - $('.leftcol').css('position', 'absolute'); - $('.leftcol').css('top', '180px'); - } - }); - - var bg = new Trianglify({ - x_colors: ["#e1f3fd", "#eeeeee", "#407dbf"], - y_colors: 'match_x', - width: document.body.clientWidth, - height: 150, - stroke_width: 0, - cell_size: 20 - }); - - $('#jumbo').css('background-image', 'url(' + bg.png() + ')'); - -}); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.css b/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.css deleted file mode 100644 index 48bf0ab..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.css +++ /dev/null @@ -1,2 +0,0 @@ -.ekko-lightbox{display:-ms-flexbox!important;display:flex!important;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-right:0!important}.ekko-lightbox-container{position:relative}.ekko-lightbox-container>div.ekko-lightbox-item{position:absolute;top:0;left:0;bottom:0;right:0;width:100%}.ekko-lightbox iframe{width:100%;height:100%}.ekko-lightbox-nav-overlay{z-index:1;position:absolute;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex}.ekko-lightbox-nav-overlay a{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0;transition:opacity .5s;color:#fff;font-size:30px;z-index:1}.ekko-lightbox-nav-overlay a>*{-ms-flex-positive:1;flex-grow:1}.ekko-lightbox-nav-overlay a>:focus{outline:none}.ekko-lightbox-nav-overlay a span{padding:0 30px}.ekko-lightbox-nav-overlay a:last-child span{text-align:right}.ekko-lightbox-nav-overlay a:hover{text-decoration:none}.ekko-lightbox-nav-overlay a:focus{outline:none}.ekko-lightbox-nav-overlay a.disabled{cursor:default;visibility:hidden}.ekko-lightbox a:hover{opacity:1;text-decoration:none}.ekko-lightbox .modal-dialog{display:none}.ekko-lightbox .modal-footer{text-align:left}.ekko-lightbox-loader{position:absolute;top:0;left:0;bottom:0;right:0;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.ekko-lightbox-loader>div{width:40px;height:40px;position:relative;text-align:center}.ekko-lightbox-loader>div>div{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;animation:a 2s infinite ease-in-out}.ekko-lightbox-loader>div>div:last-child{animation-delay:-1s}.modal-dialog .ekko-lightbox-loader>div>div{background-color:#333}@keyframes a{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVra28tbGlnaHRib3guY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQ0UsOEJBQXlCLEFBQXpCLHVCQUF5QixBQUN6QixzQkFBb0IsQUFBcEIsbUJBQW9CLEFBQ3BCLHFCQUF3QixBQUF4Qix1QkFBd0IsQUFDeEIseUJBQTZCLENBQzlCLEFBQ0QseUJBQ0UsaUJBQW1CLENBQ3BCLEFBQ0QsZ0RBQ0Usa0JBQW1CLEFBQ25CLE1BQU8sQUFDUCxPQUFRLEFBQ1IsU0FBVSxBQUNWLFFBQVMsQUFDVCxVQUFZLENBQ2IsQUFDRCxzQkFDRSxXQUFZLEFBQ1osV0FBYSxDQUNkLEFBQ0QsMkJBQ0UsVUFBYSxBQUNiLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFdBQVksQUFDWixZQUFhLEFBQ2Isb0JBQWMsQUFBZCxZQUFjLENBQ2YsQUFDRCw2QkFDRSxXQUFRLEFBQVIsT0FBUSxBQUNSLG9CQUFjLEFBQWQsYUFBYyxBQUNkLHNCQUFvQixBQUFwQixtQkFBb0IsQUFDcEIsVUFBVyxBQUNYLHVCQUF5QixBQUN6QixXQUFZLEFBQ1osZUFBZ0IsQUFDaEIsU0FBYSxDQUNkLEFBQ0QsK0JBQ0Usb0JBQWEsQUFBYixXQUFhLENBQ2QsQUFDRCxvQ0FDRSxZQUFjLENBQ2YsQUFDRCxrQ0FDRSxjQUFnQixDQUNqQixBQUNELDZDQUNFLGdCQUFrQixDQUNuQixBQUNELG1DQUNFLG9CQUFzQixDQUN2QixBQUNELG1DQUNFLFlBQWMsQ0FDZixBQUNELHNDQUNFLGVBQWdCLEFBQ2hCLGlCQUFtQixDQUNwQixBQUNELHVCQUNFLFVBQVcsQUFDWCxvQkFBc0IsQ0FDdkIsQUFDRCw2QkFDRSxZQUFjLENBQ2YsQUFDRCw2QkFDRSxlQUFpQixDQUNsQixBQUNELHNCQUNFLGtCQUFtQixBQUNuQixNQUFPLEFBQ1AsT0FBUSxBQUNSLFNBQVUsQUFDVixRQUFTLEFBQ1QsV0FBWSxBQUNaLG9CQUFjLEFBQWQsYUFBYyxBQUVkLDBCQUF1QixBQUF2QixzQkFBdUIsQUFFdkIscUJBQXdCLEFBQXhCLHVCQUF3QixBQUV4QixzQkFBb0IsQUFBcEIsa0JBQW9CLENBQ3JCLEFBQ0QsMEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsaUJBQW1CLENBQ3BCLEFBQ0QsOEJBQ0UsV0FBWSxBQUNaLFlBQWEsQUFDYixrQkFBbUIsQUFDbkIsc0JBQXVCLEFBQ3ZCLFdBQWEsQUFDYixrQkFBbUIsQUFDbkIsTUFBTyxBQUNQLE9BQVEsQUFDUixtQ0FBNkMsQ0FDOUMsQUFDRCx5Q0FDRSxtQkFBcUIsQ0FDdEIsQUFDRCw0Q0FDRSxxQkFBdUIsQ0FDeEIsQUFVRCxhQUNFLE1BRUUsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixBQUNELElBQ0UsbUJBQW9CLEFBQ3BCLDBCQUE0QixDQUM3QixDQUNGIiwiZmlsZSI6ImVra28tbGlnaHRib3guY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmVra28tbGlnaHRib3gge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXJpZ2h0OiAwcHghaW1wb3J0YW50O1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmVra28tbGlnaHRib3gtY29udGFpbmVyID4gZGl2LmVra28tbGlnaHRib3gtaXRlbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5la2tvLWxpZ2h0Ym94IGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSB7XG4gIHotaW5kZXg6IDEwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhIHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAzMHB4O1xuICB6LWluZGV4OiAxMDA7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhID4gKiB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgPiAqOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGEgc3BhbiB7XG4gIHBhZGRpbmc6IDAgMzBweDtcbn1cbi5la2tvLWxpZ2h0Ym94LW5hdi1vdmVybGF5IGE6bGFzdC1jaGlsZCBzcGFuIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3gtbmF2LW92ZXJsYXkgYTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4uZWtrby1saWdodGJveC1uYXYtb3ZlcmxheSBhLmRpc2FibGVkIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uZWtrby1saWdodGJveCBhOmhvdmVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmVra28tbGlnaHRib3ggLm1vZGFsLWRpYWxvZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZWtrby1saWdodGJveCAubW9kYWwtZm9vdGVyIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgLyogZXN0YWJsaXNoIGZsZXggY29udGFpbmVyICovXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC8qIG1ha2UgbWFpbiBheGlzIHZlcnRpY2FsICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBjZW50ZXIgaXRlbXMgdmVydGljYWxseSwgaW4gdGhpcyBjYXNlICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYge1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5la2tvLWxpZ2h0Ym94LWxvYWRlciA+IGRpdiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMC42O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYW5pbWF0aW9uOiBzay1ib3VuY2UgMnMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG59XG4uZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXY6bGFzdC1jaGlsZCB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTFzO1xufVxuLm1vZGFsLWRpYWxvZyAuZWtrby1saWdodGJveC1sb2FkZXIgPiBkaXYgPiBkaXYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuQC13ZWJraXQta2V5ZnJhbWVzIHNrLWJvdW5jZSB7XG4gIDAlLFxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2stYm91bmNlIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cbiJdfQ== */ \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js b/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js deleted file mode 100644 index 13e58c3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js +++ /dev/null @@ -1,668 +0,0 @@ -/*! - * Lightbox for Bootstrap by @ashleydw - * https://github.com/ashleydw/lightbox - * - * License: https://github.com/ashleydw/lightbox/blob/master/LICENSE - */ -+function ($) { - -'use strict'; - -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - -var Lightbox = (function ($) { - - var NAME = 'ekkoLightbox'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - - var Default = { - title: '', - footer: '', - maxWidth: 9999, - maxHeight: 9999, - showArrows: true, //display the left / right arrows or not - wrapping: true, //if true, gallery loops infinitely - type: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it - alwaysShowClose: false, //always show the close button, even if there is no title - loadingMessage: '
      ', // http://tobiasahlin.com/spinkit/ - leftArrow: '', - rightArrow: '', - strings: { - close: 'Close', - fail: 'Failed to load image:', - type: 'Could not detect remote target type. Force the type using data-type' - }, - doc: document, // if in an iframe can specify top.document - onShow: function onShow() {}, - onShown: function onShown() {}, - onHide: function onHide() {}, - onHidden: function onHidden() {}, - onNavigate: function onNavigate() {}, - onContentLoaded: function onContentLoaded() {} - }; - - var Lightbox = (function () { - _createClass(Lightbox, null, [{ - key: 'Default', - - /** - Class properties: - _$element: null -> the element currently being displayed - _$modal: The bootstrap modal generated - _$modalDialog: The .modal-dialog - _$modalContent: The .modal-content - _$modalBody: The .modal-body - _$modalHeader: The .modal-header - _$modalFooter: The .modal-footer - _$lightboxContainerOne: Container of the first lightbox element - _$lightboxContainerTwo: Container of the second lightbox element - _$lightboxBody: First element in the container - _$modalArrows: The overlayed arrows container - _$galleryItems: Other 's available for this gallery - _galleryName: Name of the current data('gallery') showing - _galleryIndex: The current index of the _$galleryItems being shown - _config: {} the options for the modal - _modalId: unique id for the current lightbox - _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content - */ - - get: function get() { - return Default; - } - }]); - - function Lightbox($element, config) { - var _this = this; - - _classCallCheck(this, Lightbox); - - this._config = $.extend({}, Default, config); - this._$modalArrows = null; - this._galleryIndex = 0; - this._galleryName = null; - this._padding = null; - this._border = null; - this._titleIsShown = false; - this._footerIsShown = false; - this._wantedWidth = 0; - this._wantedHeight = 0; - this._touchstartX = 0; - this._touchendX = 0; - - this._modalId = 'ekkoLightbox-' + Math.floor(Math.random() * 1000 + 1); - this._$element = $element instanceof jQuery ? $element : $($element); - - this._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3; - - var h4 = ''; - var btn = ''; - - var header = ''; - var footer = ''; - var body = ''; - var dialog = ''; - $(this._config.doc.body).append(''); - - this._$modal = $('#' + this._modalId, this._config.doc); - this._$modalDialog = this._$modal.find('.modal-dialog').first(); - this._$modalContent = this._$modal.find('.modal-content').first(); - this._$modalBody = this._$modal.find('.modal-body').first(); - this._$modalHeader = this._$modal.find('.modal-header').first(); - this._$modalFooter = this._$modal.find('.modal-footer').first(); - - this._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first(); - this._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first(); - this._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first(); - - this._border = this._calculateBorders(); - this._padding = this._calculatePadding(); - - this._galleryName = this._$element.data('gallery'); - if (this._galleryName) { - this._$galleryItems = $(document.body).find('*[data-gallery="' + this._galleryName + '"]'); - this._galleryIndex = this._$galleryItems.index(this._$element); - $(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this)); - - // add the directional arrows to the modal - if (this._config.showArrows && this._$galleryItems.length > 1) { - this._$lightboxContainer.append(''); - this._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first(); - this._$lightboxContainer.on('click', 'a:first-child', function (event) { - event.preventDefault(); - return _this.navigateLeft(); - }); - this._$lightboxContainer.on('click', 'a:last-child', function (event) { - event.preventDefault(); - return _this.navigateRight(); - }); - this.updateNavigation(); - } - } - - this._$modal.on('show.bs.modal', this._config.onShow.bind(this)).on('shown.bs.modal', function () { - _this._toggleLoading(true); - _this._handle(); - return _this._config.onShown.call(_this); - }).on('hide.bs.modal', this._config.onHide.bind(this)).on('hidden.bs.modal', function () { - if (_this._galleryName) { - $(document).off('keydown.ekkoLightbox'); - $(window).off('resize.ekkoLightbox'); - } - _this._$modal.remove(); - return _this._config.onHidden.call(_this); - }).modal(this._config); - - $(window).on('resize.ekkoLightbox', function () { - _this._resize(_this._wantedWidth, _this._wantedHeight); - }); - this._$lightboxContainer.on('touchstart', function () { - _this._touchstartX = event.changedTouches[0].screenX; - }).on('touchend', function () { - _this._touchendX = event.changedTouches[0].screenX; - _this._swipeGesure(); - }); - } - - _createClass(Lightbox, [{ - key: 'element', - value: function element() { - return this._$element; - } - }, { - key: 'modal', - value: function modal() { - return this._$modal; - } - }, { - key: 'navigateTo', - value: function navigateTo(index) { - - if (index < 0 || index > this._$galleryItems.length - 1) return this; - - this._galleryIndex = index; - - this.updateNavigation(); - - this._$element = $(this._$galleryItems.get(this._galleryIndex)); - this._handle(); - } - }, { - key: 'navigateLeft', - value: function navigateLeft() { - - if (!this._$galleryItems) return; - - if (this._$galleryItems.length === 1) return; - - if (this._galleryIndex === 0) { - if (this._config.wrapping) this._galleryIndex = this._$galleryItems.length - 1;else return; - } else //circular - this._galleryIndex--; - - this._config.onNavigate.call(this, 'left', this._galleryIndex); - return this.navigateTo(this._galleryIndex); - } - }, { - key: 'navigateRight', - value: function navigateRight() { - - if (!this._$galleryItems) return; - - if (this._$galleryItems.length === 1) return; - - if (this._galleryIndex === this._$galleryItems.length - 1) { - if (this._config.wrapping) this._galleryIndex = 0;else return; - } else //circular - this._galleryIndex++; - - this._config.onNavigate.call(this, 'right', this._galleryIndex); - return this.navigateTo(this._galleryIndex); - } - }, { - key: 'updateNavigation', - value: function updateNavigation() { - if (!this._config.wrapping) { - var $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay'); - if (this._galleryIndex === 0) $nav.find('a:first-child').addClass('disabled');else $nav.find('a:first-child').removeClass('disabled'); - - if (this._galleryIndex === this._$galleryItems.length - 1) $nav.find('a:last-child').addClass('disabled');else $nav.find('a:last-child').removeClass('disabled'); - } - } - }, { - key: 'close', - value: function close() { - return this._$modal.modal('hide'); - } - - // helper private methods - }, { - key: '_navigationalBinder', - value: function _navigationalBinder(event) { - event = event || window.event; - if (event.keyCode === 39) return this.navigateRight(); - if (event.keyCode === 37) return this.navigateLeft(); - } - - // type detection private methods - }, { - key: '_detectRemoteType', - value: function _detectRemoteType(src, type) { - - type = type || false; - - if (!type && this._isImage(src)) type = 'image'; - if (!type && this._getYoutubeId(src)) type = 'youtube'; - if (!type && this._getVimeoId(src)) type = 'vimeo'; - if (!type && this._getInstagramId(src)) type = 'instagram'; - - if (!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0) type = 'url'; - - return type; - } - }, { - key: '_isImage', - value: function _isImage(string) { - return string && string.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); - } - }, { - key: '_containerToUse', - value: function _containerToUse() { - var _this2 = this; - - // if currently showing an image, fade it out and remove - var $toUse = this._$lightboxBodyTwo; - var $current = this._$lightboxBodyOne; - - if (this._$lightboxBodyTwo.hasClass('in')) { - $toUse = this._$lightboxBodyOne; - $current = this._$lightboxBodyTwo; - } - - $current.removeClass('in show'); - setTimeout(function () { - if (!_this2._$lightboxBodyTwo.hasClass('in')) _this2._$lightboxBodyTwo.empty(); - if (!_this2._$lightboxBodyOne.hasClass('in')) _this2._$lightboxBodyOne.empty(); - }, 500); - - $toUse.addClass('in show'); - return $toUse; - } - }, { - key: '_handle', - value: function _handle() { - - var $toUse = this._containerToUse(); - this._updateTitleAndFooter(); - - var currentRemote = this._$element.attr('data-remote') || this._$element.attr('href'); - var currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false); - - if (['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0) return this._error(this._config.strings.type); - - switch (currentType) { - case 'image': - this._preloadImage(currentRemote, $toUse); - this._preloadImageByIndex(this._galleryIndex, 3); - break; - case 'youtube': - this._showYoutubeVideo(currentRemote, $toUse); - break; - case 'vimeo': - this._showVimeoVideo(this._getVimeoId(currentRemote), $toUse); - break; - case 'instagram': - this._showInstagramVideo(this._getInstagramId(currentRemote), $toUse); - break; - case 'video': - this._showHtml5Video(currentRemote, $toUse); - break; - default: - // url - this._loadRemoteContent(currentRemote, $toUse); - break; - } - - return this; - } - }, { - key: '_getYoutubeId', - value: function _getYoutubeId(string) { - if (!string) return false; - var matches = string.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/); - return matches && matches[2].length === 11 ? matches[2] : false; - } - }, { - key: '_getVimeoId', - value: function _getVimeoId(string) { - return string && string.indexOf('vimeo') > 0 ? string : false; - } - }, { - key: '_getInstagramId', - value: function _getInstagramId(string) { - return string && string.indexOf('instagram') > 0 ? string : false; - } - - // layout private methods - }, { - key: '_toggleLoading', - value: function _toggleLoading(show) { - show = show || false; - if (show) { - this._$modalDiaLog.Log.css('display', 'none'); - this._$modal.removeClass('in show'); - $('.modal-backdrop').append(this._config.loadingMessage); - } else { - this._$modalDiaLog.Log.css('display', 'block'); - this._$modal.addClass('in show'); - $('.modal-backdrop').find('.ekko-lightbox-loader').remove(); - } - return this; - } - }, { - key: '_calculateBorders', - value: function _calculateBorders() { - return { - top: this._totalCssByAttribute('border-top-width'), - right: this._totalCssByAttribute('border-right-width'), - bottom: this._totalCssByAttribute('border-bottom-width'), - left: this._totalCssByAttribute('border-left-width') - }; - } - }, { - key: '_calculatePadding', - value: function _calculatePadding() { - return { - top: this._totalCssByAttribute('padding-top'), - right: this._totalCssByAttribute('padding-right'), - bottom: this._totalCssByAttribute('padding-bottom'), - left: this._totalCssByAttribute('padding-left') - }; - } - }, { - key: '_totalCssByAttribute', - value: function _totalCssByAttribute(attribute) { - return parseInt(this._$modalDiaLog.Log.css(attribute), 10) + parseInt(this._$modalContent.css(attribute), 10) + parseInt(this._$modalBody.css(attribute), 10); - } - }, { - key: '_updateTitleAndFooter', - value: function _updateTitleAndFooter() { - var title = this._$element.data('title') || ""; - var caption = this._$element.data('footer') || ""; - - this._titleIsShown = false; - if (title || this._config.alwaysShowClose) { - this._titleIsShown = true; - this._$modalHeader.css('display', '').find('.modal-title').html(title || " "); - } else this._$modalHeader.css('display', 'none'); - - this._footerIsShown = false; - if (caption) { - this._footerIsShown = true; - this._$modalFooter.css('display', '').html(caption); - } else this._$modalFooter.css('display', 'none'); - - return this; - } - }, { - key: '_showYoutubeVideo', - value: function _showYoutubeVideo(remote, $containerForElement) { - var id = this._getYoutubeId(remote); - var query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : ''; - var width = this._$element.data('width') || 560; - var height = this._$element.data('height') || width / (560 / 315); - return this._showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1' + query, width, height, $containerForElement); - } - }, { - key: '_showVimeoVideo', - value: function _showVimeoVideo(id, $containerForElement) { - var width = this._$element.data('width') || 500; - var height = this._$element.data('height') || width / (560 / 315); - return this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement); - } - }, { - key: '_showInstagramVideo', - value: function _showInstagramVideo(id, $containerForElement) { - // instagram load their content into iframe's so this can be put straight into the element - var width = this._$element.data('width') || 612; - var height = width + 80; - id = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash - $containerForElement.html(''); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) //hide the arrows when showing video - this._$modalArrows.css('display', 'none'); - this._toggleLoading(false); - return this; - } - }, { - key: '_showVideoIframe', - value: function _showVideoIframe(url, width, height, $containerForElement) { - // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - height = height || width; // default to square - $containerForElement.html('
      '); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - }, { - key: '_showHtml5Video', - value: function _showHtml5Video(url, $containerForElement) { - // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - var width = this._$element.data('width') || 560; - var height = this._$element.data('height') || width / (560 / 315); - $containerForElement.html('
      '); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - }, { - key: '_loadRemoteContent', - value: function _loadRemoteContent(url, $containerForElement) { - var _this3 = this; - - var width = this._$element.data('width') || 560; - var height = this._$element.data('height') || 560; - - var disableExternalCheck = this._$element.data('disableExternalCheck') || false; - this._toggleLoading(false); - - // external urls are loading into an iframe - // local ajax can be loaded into the container itself - if (!disableExternalCheck && !this._isExternal(url)) { - $containerForElement.load(url, $.proxy(function () { - return _this3._$element.trigger('loaded.bs.modal');l; - })); - } else { - $containerForElement.html(''); - this._config.onContentLoaded.call(this); - } - - if (this._$modalArrows) //hide the arrows when remote content - this._$modalArrows.css('display', 'none'); - - this._resize(width, height); - return this; - } - }, { - key: '_isExternal', - value: function _isExternal(url) { - var match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/); - if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) return true; - - if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(':(' + ({ - "http:": 80, - "https:": 443 - })[location.protocol] + ')?$'), "") !== location.host) return true; - - return false; - } - }, { - key: '_error', - value: function _error(message) { - console.error(message); - this._containerToUse().html(message); - this._resize(300, 300); - return this; - } - }, { - key: '_preloadImageByIndex', - value: function _preloadImageByIndex(startIndex, numberOfTimes) { - - if (!this._$galleryItems) return; - - var next = $(this._$galleryItems.get(startIndex), false); - if (typeof next == 'undefined') return; - - var src = next.attr('data-remote') || next.attr('href'); - if (next.attr('data-type') === 'image' || this._isImage(src)) this._preloadImage(src, false); - - if (numberOfTimes > 0) return this._preloadImageByIndex(startIndex + 1, numberOfTimes - 1); - } - }, { - key: '_preloadImage', - value: function _preloadImage(src, $containerForImage) { - var _this4 = this; - - $containerForImage = $containerForImage || false; - - var img = new Image(); - if ($containerForImage) { - (function () { - - // if loading takes > 200ms show a loader - var loadingTimeout = setTimeout(function () { - $containerForImage.append(_this4._config.loadingMessage); - }, 200); - - img.onload = function () { - if (loadingTimeout) clearTimeout(loadingTimeout); - loadingTimeout = null; - var image = $(''); - image.attr('src', img.src); - image.addClass('img-fluid'); - - // backward compatibility for bootstrap v3 - image.css('width', '100%'); - - $containerForImage.html(image); - if (_this4._$modalArrows) _this4._$modalArrows.css('display', ''); // remove display to default to css property - - _this4._resize(img.width, img.height); - _this4._toggleLoading(false); - return _this4._config.onContentLoaded.call(_this4); - }; - img.onerror = function () { - _this4._toggleLoading(false); - return _this4._error(_this4._config.strings.fail + (' ' + src)); - }; - })(); - } - - img.src = src; - return img; - } - }, { - key: '_swipeGesure', - value: function _swipeGesure() { - if (this._touchendX < this._touchstartX) { - return this.navigateRight(); - } - if (this._touchendX > this._touchstartX) { - return this.navigateLeft(); - } - } - }, { - key: '_resize', - value: function _resize(width, height) { - - height = height || width; - this._wantedWidth = width; - this._wantedHeight = height; - - var imageAspecRatio = width / height; - - // if width > the available space, scale down the expected width and height - var widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right; - - // force 10px margin if window size > 575px - var addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0; - var discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20; - - var maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth); - - if (width + widthBorderAndPadding > maxWidth) { - height = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio; - width = maxWidth; - } else width = width + widthBorderAndPadding; - - var headerHeight = 0, - footerHeight = 0; - - // as the resize is performed the modal is show, the calculate might fail - // if so, default to the default sizes - if (this._footerIsShown) footerHeight = this._$modalFooter.outerHeight(true) || 55; - - if (this._titleIsShown) headerHeight = this._$modalHeader.outerHeight(true) || 67; - - var borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top; - - //calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins - var margins = parseFloat(this._$modalDiaLog.Log.css('margin-top')) + parseFloat(this._$modalDiaLog.Log.css('margin-bottom')); - - var maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight); - - if (height > maxHeight) { - // if height > the available height, scale down the width - width = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding; - } - - this._$lightboxContainer.css('height', maxHeight); - this._$modalDiaLog.Log.css('flex', 1).css('maxWidth', width); - - var modal = this._$modal.data('bs.modal'); - if (modal) { - // v4 method is mistakenly protected - try { - modal._handleUpdate(); - } catch (Exception) { - modal.handleUpdate(); - } - } - return this; - } - }], [{ - key: '_jQueryInterface', - value: function _jQueryInterface(config) { - var _this5 = this; - - config = config || {}; - return this.each(function () { - var $this = $(_this5); - var _config = $.extend({}, Lightbox.Default, $this.data(), typeof config === 'object' && config); - - new Lightbox(_this5, _config); - }); - } - }]); - - return Lightbox; - })(); - - $.fn[NAME] = Lightbox._jQueryInterface; - $.fn[NAME].Constructor = Lightbox; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Lightbox._jQueryInterface; - }; - - return Lightbox; -})(jQuery); -//# sourceMappingURL=ekko-lightbox.js.map - -}(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js.map b/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js.map deleted file mode 100644 index dd9956a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../ekko-lightbox.js"],"names":[],"mappings":";;;;;;AAAA,IAAM,QAAQ,GAAG,CAAC,UAAC,CAAC,EAAK;;AAExB,KAAM,IAAI,GAAG,cAAc,CAAA;AAC3B,KAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;;AAErC,KAAM,OAAO,GAAG;AACf,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,EAAE;AACV,UAAQ,EAAE,IAAI;AACd,WAAS,EAAE,IAAI;AACf,YAAU,EAAE,IAAI;AAChB,UAAQ,EAAE,IAAI;AACd,MAAI,EAAE,IAAI;AACV,iBAAe,EAAE,KAAK;AACtB,gBAAc,EAAE,2EAA2E;AAC3F,WAAS,EAAE,uBAAuB;AAClC,YAAU,EAAE,uBAAuB;AACnC,SAAO,EAAE;AACR,QAAK,EAAE,OAAO;AACd,OAAI,EAAE,uBAAuB;AAC7B,OAAI,EAAE,qEAAqE;GAC3E;AACD,KAAG,EAAE,QAAQ;AACb,QAAM,EAAA,kBAAG,EAAE;AACX,SAAO,EAAA,mBAAG,EAAE;AACZ,QAAM,EAAA,kBAAG,EAAE;AACX,UAAQ,EAAA,oBAAG,EAAE;AACb,YAAU,EAAA,sBAAG,EAAE;AACf,iBAAe,EAAA,2BAAG,EAAE;EACpB,CAAA;;KAEK,QAAQ;eAAR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;QA4BK,eAAG;AACpB,WAAO,OAAO,CAAA;IACd;;;AAEU,WAhCN,QAAQ,CAgCD,QAAQ,EAAE,MAAM,EAAE;;;yBAhCzB,QAAQ;;AAiCZ,OAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC5C,OAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AACzB,OAAI,CAAC,aAAa,GAAG,CAAC,CAAA;AACtB,OAAI,CAAC,YAAY,GAAG,IAAI,CAAA;AACxB,OAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;AACpB,OAAI,CAAC,OAAO,GAAG,IAAI,CAAA;AACnB,OAAI,CAAC,aAAa,GAAG,KAAK,CAAA;AAC1B,OAAI,CAAC,cAAc,GAAG,KAAK,CAAA;AAC3B,OAAI,CAAC,YAAY,GAAG,CAAC,CAAA;AACrB,OAAI,CAAC,aAAa,GAAG,CAAC,CAAA;AACtB,OAAI,CAAC,YAAY,GAAG,CAAC,CAAA;AACrB,OAAI,CAAC,UAAU,GAAG,CAAC,CAAA;;AAEnB,OAAI,CAAC,QAAQ,qBAAmB,IAAI,CAAC,KAAK,CAAC,AAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAI,CAAC,CAAC,AAAE,CAAC;AACzE,OAAI,CAAC,SAAS,GAAG,QAAQ,YAAY,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;;AAEpE,OAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;AAE5D,OAAI,EAAE,iCAA8B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAA,UAAO,CAAC;AAC1E,OAAI,GAAG,6EAA2E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,uDAAoD,CAAC;;AAEjK,OAAI,MAAM,GAAG,8BAA2B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,EAAE,GAAG,OAAO,CAAA,WAAM,IAAI,CAAC,aAAa,GAAG,GAAG,GAAC,EAAE,GAAG,EAAE,GAAC,GAAG,CAAA,AAAC,WAAS,CAAC;AAC9J,OAAI,MAAM,iCAA8B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,OAAO,CAAA,WAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAA,WAAQ,CAAC;AACvH,OAAI,IAAI,GAAG,yKAAyK,CAAA;AACpL,OAAI,MAAM,6EAA2E,MAAM,GAAG,IAAI,GAAG,MAAM,iBAAc,CAAA;AACzH,IAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,eAAa,IAAI,CAAC,QAAQ,wGAAmG,MAAM,YAAS,CAAA;;AAE3K,OAAI,CAAC,OAAO,GAAG,CAAC,OAAK,IAAI,CAAC,QAAQ,EAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACvD,OAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAA;AAC/D,OAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAA;AACjE,OAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAA;AAC3D,OAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAA;AAC/D,OAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAA;;AAE/D,OAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAA;AACpF,OAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAA;AACnF,OAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAA;;AAElF,OAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;AACvC,OAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;;AAExC,OAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAClD,OAAI,IAAI,CAAC,YAAY,EAAE;AACtB,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,sBAAoB,IAAI,CAAC,YAAY,QAAK,CAAA;AACrF,QAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC9D,KAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;;;AAG3E,QAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9D,SAAI,CAAC,mBAAmB,CAAC,MAAM,yDAAuD,IAAI,CAAC,OAAO,CAAC,SAAS,wBAAmB,IAAI,CAAC,OAAO,CAAC,UAAU,gBAAa,CAAA;AACnK,SAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAA;AAC3F,SAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,UAAA,KAAK,EAAI;AAC9D,WAAK,CAAC,cAAc,EAAE,CAAA;AACtB,aAAO,MAAK,YAAY,EAAE,CAAA;MAC1B,CAAC,CAAA;AACF,SAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,UAAA,KAAK,EAAI;AAC7D,WAAK,CAAC,cAAc,EAAE,CAAA;AACtB,aAAO,MAAK,aAAa,EAAE,CAAA;MAC3B,CAAC,CAAA;AACF,SAAI,CAAC,gBAAgB,EAAE,CAAA;KACvB;IACD;;AAED,OAAI,CAAC,OAAO,CACX,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnD,EAAE,CAAC,gBAAgB,EAAE,YAAM;AAC3B,UAAK,cAAc,CAAC,IAAI,CAAC,CAAA;AACzB,UAAK,OAAO,EAAE,CAAA;AACd,WAAO,MAAK,OAAO,CAAC,OAAO,CAAC,IAAI,OAAM,CAAA;IACtC,CAAC,CACD,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnD,EAAE,CAAC,iBAAiB,EAAE,YAAM;AAC5B,QAAI,MAAK,YAAY,EAAE;AACtB,MAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AACvC,MAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;KACpC;AACD,UAAK,OAAO,CAAC,MAAM,EAAE,CAAA;AACrB,WAAO,MAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAM,CAAA;IACvC,CAAC,CACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;;AAEpB,IAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,qBAAqB,EAAE,YAAM;AACzC,UAAK,OAAO,CAAC,MAAK,YAAY,EAAE,MAAK,aAAa,CAAC,CAAA;IACnD,CAAC,CAAA;AACF,OAAI,CAAC,mBAAmB,CACvB,EAAE,CAAC,YAAY,EAAE,YAAM;AACvB,UAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpD,CAAC,CACD,EAAE,CAAC,UAAU,EAAE,YAAM;AACrB,UAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,UAAK,YAAY,EAAE,CAAC;IACvB,CAAC,CAAA;GACF;;eA9HI,QAAQ;;UAgIN,mBAAG;AACT,WAAO,IAAI,CAAC,SAAS,CAAC;IACtB;;;UAEI,iBAAG;AACP,WAAO,IAAI,CAAC,OAAO,CAAC;IACpB;;;UAES,oBAAC,KAAK,EAAE;;AAEjB,QAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAC,CAAC,EACpD,OAAO,IAAI,CAAA;;AAEZ,QAAI,CAAC,aAAa,GAAG,KAAK,CAAA;;AAE1B,QAAI,CAAC,gBAAgB,EAAE,CAAA;;AAEvB,QAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;AAC/D,QAAI,CAAC,OAAO,EAAE,CAAC;IACf;;;UAEW,wBAAG;;AAEd,QAAG,CAAC,IAAI,CAAC,cAAc,EACtB,OAAO;;AAER,QAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EACnC,OAAM;;AAEP,QAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;AAC7B,SAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA,KAEnD,OAAM;KACP;AAEA,SAAI,CAAC,aAAa,EAAE,CAAA;;AAErB,QAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;AAC9D,WAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1C;;;UAEY,yBAAG;;AAEf,QAAG,CAAC,IAAI,CAAC,cAAc,EACtB,OAAO;;AAER,QAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EACnC,OAAM;;AAEP,QAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,SAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA,KAEtB,OAAM;KACP;AAEA,SAAI,CAAC,aAAa,EAAE,CAAA;;AAErB,QAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;AAC/D,WAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1C;;;UAEe,4BAAG;AAClB,QAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,SAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;AACzE,SAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAC3B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA,KAE/C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;;AAEnD,SAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EACxD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA,KAE9C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;KAClD;IACD;;;UAEI,iBAAG;AACP,WAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC;;;;;UAGkB,6BAAC,KAAK,EAAE;AAC1B,SAAK,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EACvB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;AAC5B,QAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EACvB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC3B;;;;;UAGgB,2BAAC,GAAG,EAAE,IAAI,EAAE;;AAE5B,QAAI,GAAG,IAAI,IAAI,KAAK,CAAC;;AAErB,QAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC7B,IAAI,GAAG,OAAO,CAAC;AAChB,QAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAClC,IAAI,GAAG,SAAS,CAAC;AAClB,QAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAChC,IAAI,GAAG,OAAO,CAAC;AAChB,QAAG,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EACpC,IAAI,GAAG,WAAW,CAAC;;AAEpB,QAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EACvF,IAAI,GAAG,KAAK,CAAC;;AAEd,WAAO,IAAI,CAAC;IACZ;;;UAEO,kBAAC,MAAM,EAAE;AAChB,WAAO,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAA;IACtG;;;UAEc,2BAAG;;;;AAEjB,QAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA;AACnC,QAAI,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAA;;AAErC,QAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzC,WAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA;AAC/B,aAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAA;KACjC;;AAED,YAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AAC/B,cAAU,CAAC,YAAM;AAChB,SAAG,CAAC,OAAK,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EACxC,OAAK,iBAAiB,CAAC,KAAK,EAAE,CAAA;AAC/B,SAAG,CAAC,OAAK,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EACxC,OAAK,iBAAiB,CAAC,KAAK,EAAE,CAAA;KAC/B,EAAE,GAAG,CAAC,CAAA;;AAEP,UAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAC1B,WAAO,MAAM,CAAA;IACb;;;UAEM,mBAAG;;AAET,QAAI,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;AACnC,QAAI,CAAC,qBAAqB,EAAE,CAAA;;AAE5B,QAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrF,QAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAA;;AAElG,QAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EACrF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;AAE9C,YAAO,WAAW;AACjB,UAAK,OAAO;AACX,UAAI,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AACzC,UAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;AAChD,YAAM;AAAA,AACP,UAAK,SAAS;AACb,UAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC9C,YAAM;AAAA,AACP,UAAK,OAAO;AACX,UAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9D,YAAM;AAAA,AACP,UAAK,WAAW;AACf,UAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE,YAAM;AAAA,AACP,UAAK,OAAO;AACX,UAAI,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC5C,YAAM;AAAA,AACP;;AACC,UAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,YAAM;AAAA,KACP;;AAED,WAAO,IAAI,CAAC;IACZ;;;UAEY,uBAAC,MAAM,EAAE;AACrB,QAAG,CAAC,MAAM,EACT,OAAO,KAAK,CAAC;AACd,QAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;AAC7F,WAAO,AAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,GAAI,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;IACjE;;;UAEU,qBAAC,MAAM,EAAE;AACnB,WAAO,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;IAC7D;;;UAEc,yBAAC,MAAM,EAAE;AACvB,WAAO,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;IACjE;;;;;UAGa,wBAAC,IAAI,EAAE;AACpB,QAAI,GAAG,IAAI,IAAI,KAAK,CAAA;AACpB,QAAG,IAAI,EAAE;AACR,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACzC,SAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AACnC,MAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;KACxD,MACI;AACJ,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC1C,SAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAChC,MAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAA;KAC3D;AACD,WAAO,IAAI,CAAC;IACZ;;;UAEgB,6BAAG;AACnB,WAAO;AACN,QAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;AAClD,UAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC;AACtD,WAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;AACxD,SAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;KACpD,CAAA;IACD;;;UAEgB,6BAAG;AACnB,WAAO;AACN,QAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAC7C,UAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;AACjD,WAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;AACnD,SAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;KAC/C,CAAA;IACD;;;UAEmB,8BAAC,SAAS,EAAE;AAC/B,WAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GACrD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9C;;;UAEoB,iCAAG;AACvB,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;AAC9C,QAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEjD,QAAI,CAAC,aAAa,GAAG,KAAK,CAAA;AAC1B,QAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1C,SAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AACzB,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAA;KAClF,MAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;;AAE1C,QAAI,CAAC,cAAc,GAAG,KAAK,CAAA;AAC3B,QAAI,OAAO,EAAE;AACZ,SAAI,CAAC,cAAc,GAAG,IAAI,CAAA;AAC1B,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACnD,MAEA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;;AAE1C,WAAO,IAAI,CAAC;IACZ;;;UAEgB,2BAAC,MAAM,EAAE,oBAAoB,EAAE;AAC/C,QAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;AACnC,QAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;AAC7E,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;AAC/C,QAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAK,KAAK,IAAK,GAAG,GAAC,GAAG,CAAA,AAAE,CAAA;AAClE,WAAO,IAAI,CAAC,gBAAgB,8BACA,EAAE,mCAA8B,KAAK,EAChE,KAAK,EACL,MAAM,EACN,oBAAoB,CACpB,CAAC;IACF;;;UAEc,yBAAC,EAAE,EAAE,oBAAoB,EAAE;AACzC,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;AAC/C,QAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAK,KAAK,IAAK,GAAG,GAAC,GAAG,CAAA,AAAE,CAAA;AAClE,WAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACrF;;;UAEkB,6BAAC,EAAE,EAAE,oBAAoB,EAAE;;AAE7C,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;AAC/C,QAAI,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AACxB,MAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC3C,wBAAoB,CAAC,IAAI,qBAAmB,KAAK,kBAAa,MAAM,eAAU,EAAE,uDAAoD,CAAC;AACrI,QAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B,QAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,QAAI,IAAI,CAAC,aAAa;AACrB,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,QAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,WAAO,IAAI,CAAC;IACZ;;;UAEe,0BAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE;;AAC1D,UAAM,GAAG,MAAM,IAAI,KAAK,CAAC;AACzB,wBAAoB,CAAC,IAAI,0EAAwE,KAAK,kBAAa,MAAM,eAAU,GAAG,qFAAkF,CAAC;AACzN,QAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B,QAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,QAAI,IAAI,CAAC,aAAa,EACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,QAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,WAAO,IAAI,CAAC;IACZ;;;UAEc,yBAAC,GAAG,EAAE,oBAAoB,EAAE;;AAC1C,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;AAC/C,QAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAK,KAAK,IAAK,GAAG,GAAC,GAAG,CAAA,AAAE,CAAA;AAClE,wBAAoB,CAAC,IAAI,yEAAuE,KAAK,kBAAa,MAAM,eAAU,GAAG,qFAAkF,CAAC;AACxN,QAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B,QAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,QAAI,IAAI,CAAC,aAAa,EACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,QAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,WAAO,IAAI,CAAC;IACZ;;;UAEiB,4BAAC,GAAG,EAAE,oBAAoB,EAAE;;;AAC7C,QAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;AAChD,QAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;;AAElD,QAAI,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC;AAChF,QAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;;;AAI3B,QAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACpD,yBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,YAAM;AAC5C,aAAO,OAAK,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;MAClD,CAAC,CAAC,CAAC;KAEJ,MAAM;AACN,yBAAoB,CAAC,IAAI,mBAAiB,GAAG,iDAA8C,CAAC;AAC5F,SAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxC;;AAED,QAAI,IAAI,CAAC,aAAa;AACrB,SAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;;AAE1C,QAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B,WAAO,IAAI,CAAC;IACZ;;;UAEU,qBAAC,GAAG,EAAE;AAChB,QAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;AACpF,QAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,EACtG,OAAO,IAAI,CAAC;;AAEb,QAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,QAAM,CAAA;AAC1F,YAAO,EAAE,EAAE;AACX,aAAQ,EAAE,GAAG;MACb,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAM,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,EACjD,OAAO,IAAI,CAAC;;AAEb,WAAO,KAAK,CAAC;IACb;;;UAEK,gBAAE,OAAO,EAAG;AACjB,WAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,QAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvB,WAAO,IAAI,CAAC;IACZ;;;UAEmB,8BAAC,UAAU,EAAE,aAAa,EAAE;;AAE/C,QAAG,CAAC,IAAI,CAAC,cAAc,EACtB,OAAO;;AAER,QAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;AACxD,QAAG,OAAO,IAAI,IAAI,WAAW,EAC5B,OAAM;;AAEP,QAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACvD,QAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;;AAE/B,QAAG,aAAa,GAAG,CAAC,EACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,EAAE,aAAa,GAAC,CAAC,CAAC,CAAC;IACnE;;;UAEY,uBAAE,GAAG,EAAE,kBAAkB,EAAE;;;AAEvC,sBAAkB,GAAG,kBAAkB,IAAI,KAAK,CAAA;;AAEhD,QAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACtB,QAAI,kBAAkB,EAAE;;;;AAGvB,UAAI,cAAc,GAAG,UAAU,CAAC,YAAM;AACrC,yBAAkB,CAAC,MAAM,CAAC,OAAK,OAAO,CAAC,cAAc,CAAC,CAAA;OACtD,EAAE,GAAG,CAAC,CAAA;;AAEP,SAAG,CAAC,MAAM,GAAG,YAAM;AAClB,WAAG,cAAc,EAChB,YAAY,CAAC,cAAc,CAAC,CAAA;AAC7B,qBAAc,GAAG,IAAI,CAAC;AACtB,WAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACzB,YAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;;AAG5B,YAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;AAE3B,yBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,WAAI,OAAK,aAAa,EACrB,OAAK,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;;AAEtC,cAAK,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACpC,cAAK,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,cAAO,OAAK,OAAO,CAAC,eAAe,CAAC,IAAI,QAAM,CAAC;OAC/C,CAAC;AACF,SAAG,CAAC,OAAO,GAAG,YAAM;AACnB,cAAK,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,cAAO,OAAK,MAAM,CAAC,OAAK,OAAO,CAAC,OAAO,CAAC,IAAI,WAAM,GAAG,CAAE,CAAC,CAAC;OACzD,CAAC;;KACF;;AAED,OAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACd,WAAO,GAAG,CAAC;IACX;;;UAEW,wBAAG;AACX,QAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,YAAO,IAAI,CAAC,aAAa,EAAE,CAAC;KAC/B;AACD,QAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,YAAO,IAAI,CAAC,YAAY,EAAE,CAAC;KAC9B;IACJ;;;UAEM,iBAAE,KAAK,EAAE,MAAM,EAAG;;AAExB,UAAM,GAAG,MAAM,IAAI,KAAK,CAAA;AACxB,QAAI,CAAC,YAAY,GAAG,KAAK,CAAA;AACzB,QAAI,CAAC,aAAa,GAAG,MAAM,CAAA;;AAE3B,QAAI,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC;;;AAGrC,QAAI,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAA;;;AAG7G,QAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;AAChE,QAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;;AAErE,QAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;;AAE5H,QAAG,AAAC,KAAK,GAAG,qBAAqB,GAAI,QAAQ,EAAE;AAC9C,WAAM,GAAG,CAAC,QAAQ,GAAG,qBAAqB,GAAG,cAAc,CAAA,GAAI,eAAe,CAAC;AAC/E,UAAK,GAAG,QAAQ,CAAA;KAChB,MACA,KAAK,GAAI,KAAK,GAAG,qBAAqB,AAAC,CAAA;;AAExC,QAAI,YAAY,GAAG,CAAC;QAChB,YAAY,GAAG,CAAC,CAAA;;;;AAIpB,QAAI,IAAI,CAAC,cAAc,EACtB,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;;AAE1D,QAAI,IAAI,CAAC,aAAa,EACrB,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;;AAE1D,QAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA;;;AAGrG,QAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;;AAErH,QAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;;AAEnL,QAAG,MAAM,GAAG,SAAS,EAAE;;AAEtB,UAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,GAAG,qBAAqB,CAAC;KACvE;;AAED,QAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AACjD,QAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;;AAEzD,QAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAI,KAAK,EAAE;;AAEV,SAAI;AACH,WAAK,CAAC,aAAa,EAAE,CAAC;MACtB,CAAC,OAAM,SAAS,EAAE;AAClB,WAAK,CAAC,YAAY,EAAE,CAAC;MACrB;KACD;AACD,WAAO,IAAI,CAAC;IACZ;;;UAEsB,0BAAC,MAAM,EAAE;;;AAC/B,UAAM,GAAG,MAAM,IAAI,EAAE,CAAA;AACrB,WAAO,IAAI,CAAC,IAAI,CAAC,YAAM;AACtB,SAAI,KAAK,GAAG,CAAC,QAAM,CAAA;AACnB,SAAI,OAAO,GAAG,CAAC,CAAC,MAAM,CACrB,EAAE,EACF,QAAQ,CAAC,OAAO,EAChB,KAAK,CAAC,IAAI,EAAE,EACZ,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CACpC,CAAA;;AAED,SAAI,QAAQ,SAAO,OAAO,CAAC,CAAA;KAC3B,CAAC,CAAA;IACF;;;SA/mBI,QAAQ;;;AAonBd,EAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAe,QAAQ,CAAC,gBAAgB,CAAA;AAClD,EAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAA;AACjC,EAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,GAAI,YAAM;AAC9B,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAA;AAC/B,SAAO,QAAQ,CAAC,gBAAgB,CAAA;EAChC,CAAA;;AAED,QAAO,QAAQ,CAAA;CAEf,CAAA,CAAE,MAAM,CAAC,CAAA","file":"ekko-lightbox.js","sourcesContent":["const Lightbox = (($) => {\n\n\tconst NAME = 'ekkoLightbox'\n\tconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\n\tconst Default = {\n\t\ttitle: '',\n\t\tfooter: '',\n\t\tmaxWidth: 9999,\n\t\tmaxHeight: 9999,\n\t\tshowArrows: true, //display the left / right arrows or not\n\t\twrapping: true, //if true, gallery loops infinitely\n\t\ttype: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it\n\t\talwaysShowClose: false, //always show the close button, even if there is no title\n\t\tloadingMessage: '
      ', // http://tobiasahlin.com/spinkit/\n\t\tleftArrow: '',\n\t\trightArrow: '',\n\t\tstrings: {\n\t\t\tclose: 'Close',\n\t\t\tfail: 'Failed to load image:',\n\t\t\ttype: 'Could not detect remote target type. Force the type using data-type',\n\t\t},\n\t\tdoc: document, // if in an iframe can specify top.document\n\t\tonShow() {},\n\t\tonShown() {},\n\t\tonHide() {},\n\t\tonHidden() {},\n\t\tonNavigate() {},\n\t\tonContentLoaded() {}\n\t}\n\n\tclass Lightbox {\n\n\t\t/**\n\n\t Class properties:\n\n\t\t _$element: null -> the element currently being displayed\n\t\t _$modal: The bootstrap modal generated\n\t\t _$modalDialog: The .modal-dialog\n\t\t _$modalContent: The .modal-content\n\t\t _$modalBody: The .modal-body\n\t\t _$modalHeader: The .modal-header\n\t\t _$modalFooter: The .modal-footer\n\t\t _$lightboxContainerOne: Container of the first lightbox element\n\t\t _$lightboxContainerTwo: Container of the second lightbox element\n\t\t _$lightboxBody: First element in the container\n\t\t _$modalArrows: The overlayed arrows container\n\n\t\t _$galleryItems: Other 's available for this gallery\n\t\t _galleryName: Name of the current data('gallery') showing\n\t\t _galleryIndex: The current index of the _$galleryItems being shown\n\n\t\t _config: {} the options for the modal\n\t\t _modalId: unique id for the current lightbox\n\t\t _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content\n\n\t\t */\n\n\t\tstatic get Default() {\n\t\t\treturn Default\n\t\t}\n\n\t\tconstructor($element, config) {\n\t\t\tthis._config = $.extend({}, Default, config)\n\t\t\tthis._$modalArrows = null\n\t\t\tthis._galleryIndex = 0\n\t\t\tthis._galleryName = null\n\t\t\tthis._padding = null\n\t\t\tthis._border = null\n\t\t\tthis._titleIsShown = false\n\t\t\tthis._footerIsShown = false\n\t\t\tthis._wantedWidth = 0\n\t\t\tthis._wantedHeight = 0\n\t\t\tthis._touchstartX = 0\n\t\t\tthis._touchendX = 0\n\n\t\t\tthis._modalId = `ekkoLightbox-${Math.floor((Math.random() * 1000) + 1)}`;\n\t\t\tthis._$element = $element instanceof jQuery ? $element : $($element)\n\n\t\t\tthis._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3;\n\n\t\t\tlet h4 = `

      ${this._config.title || \" \"}

      `;\n\t\t\tlet btn = ``;\n\n\t\t\tlet header = `
      `+(this._isBootstrap3 ? btn+h4 : h4+btn)+`
      `;\n\t\t\tlet footer = `
      ${this._config.footer || \" \"}
      `;\n\t\t\tlet body = '
      '\n\t\t\tlet dialog = `
      ${header}${body}${footer}
      `\n\t\t\t$(this._config.doc.body).append(`
      ${dialog}
      `)\n\n\t\t\tthis._$modal = $(`#${this._modalId}`, this._config.doc)\n\t\t\tthis._$modalDialog = this._$modal.find('.modal-dialog').first()\n\t\t\tthis._$modalContent = this._$modal.find('.modal-content').first()\n\t\t\tthis._$modalBody = this._$modal.find('.modal-body').first()\n\t\t\tthis._$modalHeader = this._$modal.find('.modal-header').first()\n\t\t\tthis._$modalFooter = this._$modal.find('.modal-footer').first()\n\n\t\t\tthis._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first()\n\t\t\tthis._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first()\n\t\t\tthis._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first()\n\n\t\t\tthis._border = this._calculateBorders()\n\t\t\tthis._padding = this._calculatePadding()\n\n\t\t\tthis._galleryName = this._$element.data('gallery')\n\t\t\tif (this._galleryName) {\n\t\t\t\tthis._$galleryItems = $(document.body).find(`*[data-gallery=\"${this._galleryName}\"]`)\n\t\t\t\tthis._galleryIndex = this._$galleryItems.index(this._$element)\n\t\t\t\t$(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this))\n\n\t\t\t\t// add the directional arrows to the modal\n\t\t\t\tif (this._config.showArrows && this._$galleryItems.length > 1) {\n\t\t\t\t\tthis._$lightboxContainer.append(`
      `)\n\t\t\t\t\tthis._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first()\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:first-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateLeft()\n\t\t\t\t\t})\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:last-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateRight()\n\t\t\t\t\t})\n\t\t\t\t\tthis.updateNavigation()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._$modal\n\t\t\t.on('show.bs.modal', this._config.onShow.bind(this))\n\t\t\t.on('shown.bs.modal', () => {\n\t\t\t\tthis._toggleLoading(true)\n\t\t\t\tthis._handle()\n\t\t\t\treturn this._config.onShown.call(this)\n\t\t\t})\n\t\t\t.on('hide.bs.modal', this._config.onHide.bind(this))\n\t\t\t.on('hidden.bs.modal', () => {\n\t\t\t\tif (this._galleryName) {\n\t\t\t\t\t$(document).off('keydown.ekkoLightbox')\n\t\t\t\t\t$(window).off('resize.ekkoLightbox')\n\t\t\t\t}\n\t\t\t\tthis._$modal.remove()\n\t\t\t\treturn this._config.onHidden.call(this)\n\t\t\t})\n\t\t\t.modal(this._config)\n\n\t\t\t$(window).on('resize.ekkoLightbox', () => {\n\t\t\t\tthis._resize(this._wantedWidth, this._wantedHeight)\n\t\t\t})\n\t\t\tthis._$lightboxContainer\n\t\t\t.on('touchstart', () => {\n\t\t\t\tthis._touchstartX = event.changedTouches[0].screenX;\n\n\t\t\t})\n\t\t\t.on('touchend', () => {\n\t\t\t\tthis._touchendX = event.changedTouches[0].screenX;\n\t\t\t this._swipeGesure();\n\t\t\t})\n\t\t}\n\n\t\telement() {\n\t\t\treturn this._$element;\n\t\t}\n\n\t\tmodal() {\n\t\t\treturn this._$modal;\n\t\t}\n\n\t\tnavigateTo(index) {\n\n\t\t\tif (index < 0 || index > this._$galleryItems.length-1)\n\t\t\t\treturn this\n\n\t\t\tthis._galleryIndex = index\n\n\t\t\tthis.updateNavigation()\n\n\t\t\tthis._$element = $(this._$galleryItems.get(this._galleryIndex))\n\t\t\tthis._handle();\n\t\t}\n\n\t\tnavigateLeft() {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === 0) {\n\t\t\t\tif (this._config.wrapping)\n\t\t\t\t\tthis._galleryIndex = this._$galleryItems.length - 1\n\t\t\t\telse\n\t\t\t\t\treturn\n\t\t\t}\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex--\n\n\t\t\tthis._config.onNavigate.call(this, 'left', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tnavigateRight() {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) {\n\t\t\t\tif (this._config.wrapping)\n\t\t\t\t\tthis._galleryIndex = 0\n\t\t\t\telse\n\t\t\t\t\treturn\n\t\t\t}\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex++\n\n\t\t\tthis._config.onNavigate.call(this, 'right', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tupdateNavigation() {\n\t\t\tif (!this._config.wrapping) {\n\t\t\t\tlet $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay')\n\t\t\t\tif (this._galleryIndex === 0)\n\t\t\t\t\t$nav.find('a:first-child').addClass('disabled')\n\t\t\t\telse\n\t\t\t\t\t$nav.find('a:first-child').removeClass('disabled')\n\n\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1)\n\t\t\t\t\t$nav.find('a:last-child').addClass('disabled')\n\t\t\t\telse\n\t\t\t\t\t$nav.find('a:last-child').removeClass('disabled')\n\t\t\t}\n\t\t}\n\n\t\tclose() {\n\t\t\treturn this._$modal.modal('hide');\n\t\t}\n\n\t\t// helper private methods\n\t\t_navigationalBinder(event) {\n\t\t\tevent = event || window.event;\n\t\t\tif (event.keyCode === 39)\n\t\t\t\treturn this.navigateRight()\n\t\t\tif (event.keyCode === 37)\n\t\t\t\treturn this.navigateLeft()\n\t\t}\n\n\t\t// type detection private methods\n\t\t_detectRemoteType(src, type) {\n\n\t\t\ttype = type || false;\n\n\t\t\tif(!type && this._isImage(src))\n\t\t\t\ttype = 'image';\n\t\t\tif(!type && this._getYoutubeId(src))\n\t\t\t\ttype = 'youtube';\n\t\t\tif(!type && this._getVimeoId(src))\n\t\t\t\ttype = 'vimeo';\n\t\t\tif(!type && this._getInstagramId(src))\n\t\t\t\ttype = 'instagram';\n\n\t\t\tif(!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0)\n\t\t\t\ttype = 'url';\n\n\t\t\treturn type;\n\t\t}\n\n\t\t_isImage(string) {\n\t\t\treturn string && string.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i)\n\t\t}\n\n\t\t_containerToUse() {\n\t\t\t// if currently showing an image, fade it out and remove\n\t\t\tlet $toUse = this._$lightboxBodyTwo\n\t\t\tlet $current = this._$lightboxBodyOne\n\n\t\t\tif(this._$lightboxBodyTwo.hasClass('in')) {\n\t\t\t\t$toUse = this._$lightboxBodyOne\n\t\t\t\t$current = this._$lightboxBodyTwo\n\t\t\t}\n\n\t\t\t$current.removeClass('in show')\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(!this._$lightboxBodyTwo.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyTwo.empty()\n\t\t\t\tif(!this._$lightboxBodyOne.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyOne.empty()\n\t\t\t}, 500)\n\n\t\t\t$toUse.addClass('in show')\n\t\t\treturn $toUse\n\t\t}\n\n\t\t_handle() {\n\n\t\t\tlet $toUse = this._containerToUse()\n\t\t\tthis._updateTitleAndFooter()\n\n\t\t\tlet currentRemote = this._$element.attr('data-remote') || this._$element.attr('href')\n\t\t\tlet currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false)\n\n\t\t\tif(['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0)\n\t\t\t\treturn this._error(this._config.strings.type)\n\n\t\t\tswitch(currentType) {\n\t\t\t\tcase 'image':\n\t\t\t\t\tthis._preloadImage(currentRemote, $toUse)\n\t\t\t\t\tthis._preloadImageByIndex(this._galleryIndex, 3)\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'youtube':\n\t\t\t\t\tthis._showYoutubeVideo(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vimeo':\n\t\t\t\t\tthis._showVimeoVideo(this._getVimeoId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'instagram':\n\t\t\t\t\tthis._showInstagramVideo(this._getInstagramId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'video':\n\t\t\t\t\tthis._showHtml5Video(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // url\n\t\t\t\t\tthis._loadRemoteContent(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_getYoutubeId(string) {\n\t\t\tif(!string)\n\t\t\t\treturn false;\n\t\t\tlet matches = string.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/)\n\t\t\treturn (matches && matches[2].length === 11) ? matches[2] : false\n\t\t}\n\n\t\t_getVimeoId(string) {\n\t\t\treturn string && string.indexOf('vimeo') > 0 ? string : false\n\t\t}\n\n\t\t_getInstagramId(string) {\n\t\t\treturn string && string.indexOf('instagram') > 0 ? string : false\n\t\t}\n\n\t\t// layout private methods\n\t\t_toggleLoading(show) {\n\t\t\tshow = show || false\n\t\t\tif(show) {\n\t\t\t\tthis._$modalDiaLog.Log.css('display', 'none')\n\t\t\t\tthis._$modal.removeClass('in show')\n\t\t\t\t$('.modal-backdrop').append(this._config.loadingMessage)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._$modalDiaLog.Log.css('display', 'block')\n\t\t\t\tthis._$modal.addClass('in show')\n\t\t\t\t$('.modal-backdrop').find('.ekko-lightbox-loader').remove()\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\t_calculateBorders() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('border-top-width'),\n\t\t\t\tright: this._totalCssByAttribute('border-right-width'),\n\t\t\t\tbottom: this._totalCssByAttribute('border-bottom-width'),\n\t\t\t\tleft: this._totalCssByAttribute('border-left-width'),\n\t\t\t}\n\t\t}\n\n\t\t_calculatePadding() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('padding-top'),\n\t\t\t\tright: this._totalCssByAttribute('padding-right'),\n\t\t\t\tbottom: this._totalCssByAttribute('padding-bottom'),\n\t\t\t\tleft: this._totalCssByAttribute('padding-left'),\n\t\t\t}\n\t\t}\n\n\t\t_totalCssByAttribute(attribute) {\n\t\t\treturn parseInt(this._$modalDiaLog.Log.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalContent.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalBody.css(attribute), 10)\n\t\t}\n\n\t\t_updateTitleAndFooter() {\n\t\t\tlet title = this._$element.data('title') || \"\"\n\t\t\tlet caption = this._$element.data('footer') || \"\"\n\n\t\t\tthis._titleIsShown = false\n\t\t\tif (title || this._config.alwaysShowClose) {\n\t\t\t\tthis._titleIsShown = true\n\t\t\t\tthis._$modalHeader.css('display', '').find('.modal-title').html(title || \" \")\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalHeader.css('display', 'none')\n\n\t\t\tthis._footerIsShown = false\n\t\t\tif (caption) {\n\t\t\t\tthis._footerIsShown = true\n\t\t\t\tthis._$modalFooter.css('display', '').html(caption)\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalFooter.css('display', 'none')\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_showYoutubeVideo(remote, $containerForElement) {\n\t\t\tlet id = this._getYoutubeId(remote)\n\t\t\tlet query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : ''\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(\n\t\t\t\t`//www.youtube.com/embed/${id}?badge=0&autoplay=1&html5=1${query}`,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\t$containerForElement\n\t\t\t);\n\t\t}\n\n\t\t_showVimeoVideo(id, $containerForElement) {\n\t\t\tlet width = this._$element.data('width') || 500\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement)\n\t\t}\n\n\t\t_showInstagramVideo(id, $containerForElement) {\n\t\t\t// instagram load their content into iframe's so this can be put straight into the element\n\t\t\tlet width = this._$element.data('width') || 612\n\t\t\tlet height = width + 80;\n\t\t\tid = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash\n\t\t\t$containerForElement.html(``);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows) //hide the arrows when showing video\n\t\t\t\tthis._$modalArrows.css('display', 'none');\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showVideoIframe(url, width, height, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\theight = height || width; // default to square\n\t\t\t$containerForElement.html(`
      `);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showHtml5Video(url, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\t$containerForElement.html(`
      `);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_loadRemoteContent(url, $containerForElement) {\n\t\t\tlet width = this._$element.data('width') || 560;\n\t\t\tlet height = this._$element.data('height') || 560;\n\n\t\t\tlet disableExternalCheck = this._$element.data('disableExternalCheck') || false;\n\t\t\tthis._toggleLoading(false);\n\n\t\t\t// external urls are loading into an iframe\n\t\t\t// local ajax can be loaded into the container itself\n\t\t\tif (!disableExternalCheck && !this._isExternal(url)) {\n\t\t\t\t$containerForElement.load(url, $.proxy(() => {\n\t\t\t\t\treturn this._$element.trigger('loaded.bs.modal');l\n\t\t\t\t}));\n\n\t\t\t} else {\n\t\t\t\t$containerForElement.html(``);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t}\n\n\t\t\tif (this._$modalArrows) //hide the arrows when remote content\n\t\t\t\tthis._$modalArrows.css('display', 'none')\n\n\t\t\tthis._resize(width, height);\n\t\t\treturn this;\n\t\t}\n\n\t\t_isExternal(url) {\n\t\t\tlet match = url.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);\n\t\t\tif (typeof match[1] === \"string\" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol)\n\t\t\t\treturn true;\n\n\t\t\tif (typeof match[2] === \"string\" && match[2].length > 0 && match[2].replace(new RegExp(`:(${{\n\t\t\t\t\t\"http:\": 80,\n\t\t\t\t\t\"https:\": 443\n\t\t\t\t}[location.protocol]})?$`), \"\") !== location.host)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\n\t\t_error( message ) {\n\t\t\tconsole.error(message);\n\t\t\tthis._containerToUse().html(message);\n\t\t\tthis._resize(300, 300);\n\t\t\treturn this;\n\t\t}\n\n\t\t_preloadImageByIndex(startIndex, numberOfTimes) {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tlet next = $(this._$galleryItems.get(startIndex), false)\n\t\t\tif(typeof next == 'undefined')\n\t\t\t\treturn\n\n\t\t\tlet src = next.attr('data-remote') || next.attr('href')\n\t\t\tif (next.attr('data-type') === 'image' || this._isImage(src))\n\t\t\t\tthis._preloadImage(src, false)\n\n\t\t\tif(numberOfTimes > 0)\n\t\t\t\treturn this._preloadImageByIndex(startIndex + 1, numberOfTimes-1);\n\t\t}\n\n\t\t_preloadImage( src, $containerForImage) {\n\n\t\t\t$containerForImage = $containerForImage || false\n\n\t\t\tlet img = new Image();\n\t\t\tif ($containerForImage) {\n\n\t\t\t\t// if loading takes > 200ms show a loader\n\t\t\t\tlet loadingTimeout = setTimeout(() => {\n\t\t\t\t\t$containerForImage.append(this._config.loadingMessage)\n\t\t\t\t}, 200)\n\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tif(loadingTimeout)\n\t\t\t\t\t\tclearTimeout(loadingTimeout)\n\t\t\t\t\tloadingTimeout = null;\n\t\t\t\t\tlet image = $('');\n\t\t\t\t\timage.attr('src', img.src);\n\t\t\t\t\timage.addClass('img-fluid');\n\n\t\t\t\t\t// backward compatibility for bootstrap v3\n\t\t\t\t\timage.css('width', '100%');\n\n\t\t\t\t\t$containerForImage.html(image);\n\t\t\t\t\tif (this._$modalArrows)\n\t\t\t\t\t\tthis._$modalArrows.css('display', '') // remove display to default to css property\n\n\t\t\t\t\tthis._resize(img.width, img.height);\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._config.onContentLoaded.call(this);\n\t\t\t\t};\n\t\t\t\timg.onerror = () => {\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._error(this._config.strings.fail+` ${src}`);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\timg.src = src;\n\t\t\treturn img;\n\t\t}\n\n\t\t_swipeGesure() {\n\t\t if (this._touchendX < this._touchstartX) {\n\t\t return this.navigateRight();\n\t\t }\n\t\t if (this._touchendX > this._touchstartX) {\n\t\t return this.navigateLeft();\n\t\t }\n\t\t}\n\n\t\t_resize( width, height ) {\n\n\t\t\theight = height || width\n\t\t\tthis._wantedWidth = width\n\t\t\tthis._wantedHeight = height\n\n\t\t\tlet imageAspecRatio = width / height;\n\n\t\t\t// if width > the available space, scale down the expected width and height\n\t\t\tlet widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right\n\n\t\t\t// force 10px margin if window size > 575px\n\t\t\tlet addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0\n\t\t\tlet discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20\n\n\t\t\tlet maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth)\n\n\t\t\tif((width + widthBorderAndPadding) > maxWidth) {\n\t\t\t\theight = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio;\n\t\t\t\twidth = maxWidth\n\t\t\t} else\n\t\t\t\twidth = (width + widthBorderAndPadding)\n\n\t\t\tlet headerHeight = 0,\n\t\t\t footerHeight = 0\n\n\t\t\t// as the resize is performed the modal is show, the calculate might fail\n\t\t\t// if so, default to the default sizes\n\t\t\tif (this._footerIsShown)\n\t\t\t\tfooterHeight = this._$modalFooter.outerHeight(true) || 55\n\n\t\t\tif (this._titleIsShown)\n\t\t\t\theaderHeight = this._$modalHeader.outerHeight(true) || 67\n\n\t\t\tlet borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top\n\n\t\t\t//calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins\n\t\t\tlet margins = parseFloat(this._$modalDiaLog.Log.css('margin-top')) + parseFloat(this._$modalDiaLog.Log.css('margin-bottom'));\n\n\t\t\tlet maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight);\n\n\t\t\tif(height > maxHeight) {\n\t\t\t\t// if height > the available height, scale down the width\n\t\t\t\twidth = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding;\n\t\t\t}\n\n\t\t\tthis._$lightboxContainer.css('height', maxHeight)\n\t\t\tthis._$modalDiaLog.Log.css('flex', 1).css('maxWidth', width);\n\n\t\t\tlet modal = this._$modal.data('bs.modal');\n\t\t\tif (modal) {\n\t\t\t\t// v4 method is mistakenly protected\n\t\t\t\ttry {\n\t\t\t\t\tmodal._handleUpdate();\n\t\t\t\t} catch(Exception) {\n\t\t\t\t\tmodal.handleUpdate();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tstatic _jQueryInterface(config) {\n\t\t\tconfig = config || {}\n\t\t\treturn this.each(() => {\n\t\t\t\tlet $this = $(this)\n\t\t\t\tlet _config = $.extend(\n\t\t\t\t\t{},\n\t\t\t\t\tLightbox.Default,\n\t\t\t\t\t$this.data(),\n\t\t\t\t\ttypeof config === 'object' && config\n\t\t\t\t)\n\n\t\t\t\tnew Lightbox(this, _config)\n\t\t\t})\n\t\t}\n\t}\n\n\n\n\t$.fn[NAME] = Lightbox._jQueryInterface\n\t$.fn[NAME].Constructor = Lightbox\n\t$.fn[NAME].noConflict = () => {\n\t\t$.fn[NAME] = JQUERY_NO_CONFLICT\n\t\treturn Lightbox._jQueryInterface\n\t}\n\n\treturn Lightbox\n\n})(jQuery)\n\nexport default Lightbox\n"]} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js deleted file mode 100644 index 499032c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js +++ /dev/null @@ -1,2 +0,0 @@ -+function(a){"use strict";function b(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var c=function(){function a(a,b){for(var c=0;c
      ',leftArrow:"",rightArrow:"",strings:{close:"Close",fail:"Failed to load image:",type:"Could not detect remote target type. Force the type using data-type"},doc:document,onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){},onNavigate:function(){},onContentLoaded:function(){}},g=function(){function d(c,e){var g=this;b(this,d),this._config=a.extend({},f,e),this._$modalArrows=null,this._galleryIndex=0,this._galleryName=null,this._padding=null,this._border=null,this._titleIsShown=!1,this._footerIsShown=!1,this._wantedWidth=0,this._wantedHeight=0,this._touchstartX=0,this._touchendX=0,this._modalId="ekkoLightbox-"+Math.floor(1e3*Math.random()+1),this._$element=c instanceof jQuery?c:a(c),this._isBootstrap3=3==a.fn.modal.Constructor.VERSION[0];var h='",i='',j='",k='",l='',m='";a(this._config.doc.body).append('"),this._$modal=a("#"+this._modalId,this._config.doc),this._$modalDialog=this._$modal.find(".modal-dialog").first(),this._$modalContent=this._$modal.find(".modal-content").first(),this._$modalBody=this._$modal.find(".modal-body").first(),this._$modalHeader=this._$modal.find(".modal-header").first(),this._$modalFooter=this._$modal.find(".modal-footer").first(),this._$lightboxContainer=this._$modalBody.find(".ekko-lightbox-container").first(),this._$lightboxBodyOne=this._$lightboxContainer.find("> div:first-child").first(),this._$lightboxBodyTwo=this._$lightboxContainer.find("> div:last-child").first(),this._border=this._calculateBorders(),this._padding=this._calculatePadding(),this._galleryName=this._$element.data("gallery"),this._galleryName&&(this._$galleryItems=a(document.body).find('*[data-gallery="'+this._galleryName+'"]'),this._galleryIndex=this._$galleryItems.index(this._$element),a(document).on("keydown.ekkoLightbox",this._navigationalBinder.bind(this)),this._config.showArrows&&this._$galleryItems.length>1&&(this._$lightboxContainer.append('"),this._$modalArrows=this._$lightboxContainer.find("div.ekko-lightbox-nav-overlay").first(),this._$lightboxContainer.on("click","a:first-child",function(a){return a.preventDefault(),g.navigateLeft()}),this._$lightboxContainer.on("click","a:last-child",function(a){return a.preventDefault(),g.navigateRight()}),this.updateNavigation())),this._$modal.on("show.bs.modal",this._config.onShow.bind(this)).on("shown.bs.modal",function(){return g._toggleLoading(!0),g._handle(),g._config.onShown.call(g)}).on("hide.bs.modal",this._config.onHide.bind(this)).on("hidden.bs.modal",function(){return g._galleryName&&(a(document).off("keydown.ekkoLightbox"),a(window).off("resize.ekkoLightbox")),g._$modal.remove(),g._config.onHidden.call(g)}).modal(this._config),a(window).on("resize.ekkoLightbox",function(){g._resize(g._wantedWidth,g._wantedHeight)}),this._$lightboxContainer.on("touchstart",function(){g._touchstartX=event.changedTouches[0].screenX}).on("touchend",function(){g._touchendX=event.changedTouches[0].screenX,g._swipeGesure()})}return c(d,null,[{key:"Default",get:function(){return f}}]),c(d,[{key:"element",value:function(){return this._$element}},{key:"modal",value:function(){return this._$modal}},{key:"navigateTo",value:function(b){return b<0||b>this._$galleryItems.length-1?this:(this._galleryIndex=b,this.updateNavigation(),this._$element=a(this._$galleryItems.get(this._galleryIndex)),void this._handle())}},{key:"navigateLeft",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(0===this._galleryIndex){if(!this._config.wrapping)return;this._galleryIndex=this._$galleryItems.length-1}else this._galleryIndex--;return this._config.onNavigate.call(this,"left",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:"navigateRight",value:function(){if(this._$galleryItems&&1!==this._$galleryItems.length){if(this._galleryIndex===this._$galleryItems.length-1){if(!this._config.wrapping)return;this._galleryIndex=0}else this._galleryIndex++;return this._config.onNavigate.call(this,"right",this._galleryIndex),this.navigateTo(this._galleryIndex)}}},{key:"updateNavigation",value:function(){if(!this._config.wrapping){var a=this._$lightboxContainer.find("div.ekko-lightbox-nav-overlay");0===this._galleryIndex?a.find("a:first-child").addClass("disabled"):a.find("a:first-child").removeClass("disabled"),this._galleryIndex===this._$galleryItems.length-1?a.find("a:last-child").addClass("disabled"):a.find("a:last-child").removeClass("disabled")}}},{key:"close",value:function(){return this._$modal.modal("hide")}},{key:"_navigationalBinder",value:function(a){return a=a||window.event,39===a.keyCode?this.navigateRight():37===a.keyCode?this.navigateLeft():void 0}},{key:"_detectRemoteType",value:function(a,b){return b=b||!1,!b&&this._isImage(a)&&(b="image"),!b&&this._getYoutubeId(a)&&(b="youtube"),!b&&this._getVimeoId(a)&&(b="vimeo"),!b&&this._getInstagramId(a)&&(b="instagram"),(!b||["image","youtube","vimeo","instagram","video","url"].indexOf(b)<0)&&(b="url"),b}},{key:"_isImage",value:function(a){return a&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)}},{key:"_containerToUse",value:function(){var a=this,b=this._$lightboxBodyTwo,c=this._$lightboxBodyOne;return this._$lightboxBodyTwo.hasClass("in")&&(b=this._$lightboxBodyOne,c=this._$lightboxBodyTwo),c.removeClass("in show"),setTimeout(function(){a._$lightboxBodyTwo.hasClass("in")||a._$lightboxBodyTwo.empty(),a._$lightboxBodyOne.hasClass("in")||a._$lightboxBodyOne.empty()},500),b.addClass("in show"),b}},{key:"_handle",value:function(){var a=this._containerToUse();this._updateTitleAndFooter();var b=this._$element.attr("data-remote")||this._$element.attr("href"),c=this._detectRemoteType(b,this._$element.attr("data-type")||!1);if(["image","youtube","vimeo","instagram","video","url"].indexOf(c)<0)return this._error(this._config.strings.type);switch(c){case"image":this._preloadImage(b,a),this._preloadImageByIndex(this._galleryIndex,3);break;case"youtube":this._showYoutubeVideo(b,a);break;case"vimeo":this._showVimeoVideo(this._getVimeoId(b),a);break;case"instagram":this._showInstagramVideo(this._getInstagramId(b),a);break;case"video":this._showHtml5Video(b,a);break;default:this._loadRemoteContent(b,a)}return this}},{key:"_getYoutubeId",value:function(a){if(!a)return!1;var b=a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);return!(!b||11!==b[2].length)&&b[2]}},{key:"_getVimeoId",value:function(a){return!!(a&&a.indexOf("vimeo")>0)&&a}},{key:"_getInstagramId",value:function(a){return!!(a&&a.indexOf("instagram")>0)&&a}},{key:"_toggleLoading",value:function(b){return b=b||!1,b?(this._$modalDiaLog.Log.css("display","none"),this._$modal.removeClass("in show"),a(".modal-backdrop").append(this._config.loadingMessage)):(this._$modalDiaLog.Log.css("display","block"),this._$modal.addClass("in show"),a(".modal-backdrop").find(".ekko-lightbox-loader").remove()),this}},{key:"_calculateBorders",value:function(){return{top:this._totalCssByAttribute("border-top-width"),right:this._totalCssByAttribute("border-right-width"),bottom:this._totalCssByAttribute("border-bottom-width"),left:this._totalCssByAttribute("border-left-width")}}},{key:"_calculatePadding",value:function(){return{top:this._totalCssByAttribute("padding-top"),right:this._totalCssByAttribute("padding-right"),bottom:this._totalCssByAttribute("padding-bottom"),left:this._totalCssByAttribute("padding-left")}}},{key:"_totalCssByAttribute",value:function(a){return parseInt(this._$modalDiaLog.Log.css(a),10)+parseInt(this._$modalContent.css(a),10)+parseInt(this._$modalBody.css(a),10)}},{key:"_updateTitleAndFooter",value:function(){var a=this._$element.data("title")||"",b=this._$element.data("footer")||"";return this._titleIsShown=!1,a||this._config.alwaysShowClose?(this._titleIsShown=!0,this._$modalHeader.css("display","").find(".modal-title").html(a||" ")):this._$modalHeader.css("display","none"),this._footerIsShown=!1,b?(this._footerIsShown=!0,this._$modalFooter.css("display","").html(b)):this._$modalFooter.css("display","none"),this}},{key:"_showYoutubeVideo",value:function(a,b){var c=this._getYoutubeId(a),d=a.indexOf("&")>0?a.substr(a.indexOf("&")):"",e=this._$element.data("width")||560,f=this._$element.data("height")||e/(560/315);return this._showVideoIframe("//www.youtube.com/embed/"+c+"?badge=0&autoplay=1&html5=1"+d,e,f,b)}},{key:"_showVimeoVideo",value:function(a,b){var c=this._$element.data("width")||500,d=this._$element.data("height")||c/(560/315);return this._showVideoIframe(a+"?autoplay=1",c,d,b)}},{key:"_showInstagramVideo",value:function(a,b){var c=this._$element.data("width")||612,d=c+80;return a="/"!==a.substr(-1)?a+"/":a,b.html(''),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showVideoIframe",value:function(a,b,c,d){return c=c||b,d.html('
      '),this._resize(b,c),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showHtml5Video",value:function(a,b){var c=this._$element.data("width")||560,d=this._$element.data("height")||c/(560/315);return b.html('
      '),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_loadRemoteContent",value:function(b,c){var d=this,e=this._$element.data("width")||560,f=this._$element.data("height")||560,g=this._$element.data("disableExternalCheck")||!1;return this._toggleLoading(!1),g||this._isExternal(b)?(c.html(''),this._config.onContentLoaded.call(this)):c.load(b,a.proxy(function(){return d._$element.trigger("loaded.bs.modal")})),this._$modalArrows&&this._$modalArrows.css("display","none"),this._resize(e,f),this}},{key:"_isExternal",value:function(a){var b=a.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof b[1]&&b[1].length>0&&b[1].toLowerCase()!==location.protocol||"string"==typeof b[2]&&b[2].length>0&&b[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host}},{key:"_error",value:function(a){return console.error(a),this._containerToUse().html(a),this._resize(300,300),this}},{key:"_preloadImageByIndex",value:function(b,c){if(this._$galleryItems){var d=a(this._$galleryItems.get(b),!1);if("undefined"!=typeof d){var e=d.attr("data-remote")||d.attr("href");return("image"===d.attr("data-type")||this._isImage(e))&&this._preloadImage(e,!1),c>0?this._preloadImageByIndex(b+1,c-1):void 0}}}},{key:"_preloadImage",value:function(b,c){var d=this;c=c||!1;var e=new Image;return c&&!function(){var f=setTimeout(function(){c.append(d._config.loadingMessage)},200);e.onload=function(){f&&clearTimeout(f),f=null;var b=a("");return b.attr("src",e.src),b.addClass("img-fluid"),b.css("width","100%"),c.html(b),d._$modalArrows&&d._$modalArrows.css("display",""),d._resize(e.width,e.height),d._toggleLoading(!1),d._config.onContentLoaded.call(d)},e.onerror=function(){return d._toggleLoading(!1),d._error(d._config.strings.fail+(" "+b))}}(),e.src=b,e}},{key:"_swipeGesure",value:function(){return this._touchendXthis._touchstartX?this.navigateLeft():void 0}},{key:"_resize",value:function(b,c){c=c||b,this._wantedWidth=b,this._wantedHeight=c;var d=b/c,e=this._padding.left+this._padding.right+this._border.left+this._border.right,f=this._config.doc.body.clientWidth>575?20:0,g=this._config.doc.body.clientWidth>575?0:20,h=Math.min(b+e,this._config.doc.body.clientWidth-f,this._config.maxWidth);b+e>h?(c=(h-e-g)/d,b=h):b+=e;var i=0,j=0;this._footerIsShown&&(j=this._$modalFooter.outerHeight(!0)||55),this._titleIsShown&&(i=this._$modalHeader.outerHeight(!0)||67);var k=this._padding.top+this._padding.bottom+this._border.bottom+this._border.top,l=parseFloat(this._$modalDiaLog.Log.css("margin-top"))+parseFloat(this._$modalDiaLog.Log.css("margin-bottom")),m=Math.min(c,a(window).height()-k-l-i-j,this._config.maxHeight-k-i-j);c>m&&(b=Math.ceil(m*d)+e),this._$lightboxContainer.css("height",m),this._$modalDiaLog.Log.css("flex",1).css("maxWidth",b);var n=this._$modal.data("bs.modal");if(n)try{n._handleUpdate()}catch(o){n.handleUpdate()}return this}}],[{key:"_jQueryInterface",value:function(b){var c=this;return b=b||{},this.each(function(){var e=a(c),f=a.extend({},d.Default,e.data(),"object"==typeof b&&b);new d(c,f)})}}]),d}();return a.fn[d]=g._jQueryInterface,a.fn[d].Constructor=g,a.fn[d].noConflict=function(){return a.fn[d]=e,g._jQueryInterface},g})(jQuery)}(jQuery); -//# sourceMappingURL=ekko-lightbox.min.js.map \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js.map b/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js.map deleted file mode 100644 index 9b6e77e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["ekko-lightbox.js"],"names":["$","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","NAME","JQUERY_NO_CONFLICT","fn","Default","title","footer","maxWidth","maxHeight","showArrows","wrapping","type","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","close","fail","doc","document","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","Lightbox","$element","config","_this","this","_config","extend","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_touchstartX","_touchendX","_modalId","Math","floor","random","_$element","jQuery","_isBootstrap3","modal","VERSION","h4","btn","header","body","dialog","append","_$modal","_$modalDialog","find","first","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","data","_$galleryItems","index","on","_navigationalBinder","bind","event","preventDefault","navigateLeft","navigateRight","updateNavigation","_toggleLoading","_handle","call","off","window","remove","_resize","changedTouches","screenX","_swipeGesure","get","value","navigateTo","$nav","addClass","removeClass","keyCode","src","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","indexOf","string","match","_this2","$toUse","$current","hasClass","setTimeout","empty","_containerToUse","_updateTitleAndFooter","currentRemote","attr","currentType","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","matches","show","css","top","_totalCssByAttribute","right","bottom","left","attribute","parseInt","caption","html","remote","$containerForElement","id","query","substr","width","height","_showVideoIframe","url","_this3","disableExternalCheck","_isExternal","load","proxy","trigger","toLowerCase","location","protocol","replace","RegExp","http:","https:","host","message","console","error","startIndex","numberOfTimes","next","$containerForImage","_this4","img","Image","loadingTimeout","onload","clearTimeout","image","onerror","imageAspecRatio","widthBorderAndPadding","addMargin","clientWidth","discountMargin","min","headerHeight","footerHeight","outerHeight","borderPadding","margins","parseFloat","ceil","_handleUpdate","Exception","handleUpdate","_this5","each","$this","_jQueryInterface","noConflict"],"mappings":"CAMC,SAAUA,GAEX,YAIA,SAASC,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAFhH,GAAIC,GAAe,WAAe,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAIC,GAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,GAAIE,GAAaH,EAAMC,EAAIE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAAiB,MAAO,UAAUR,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYZ,EAAiBH,EAAYiB,UAAWF,GAAiBC,GAAab,EAAiBH,EAAagB,GAAqBhB,OAIlhB,SAAWH,GAEzB,GAAIqB,GAAO,eACPC,EAAqBtB,EAAEuB,GAAGF,GAE1BG,GACHC,MAAO,GACPC,OAAQ,GACRC,SAAU,KACVC,UAAW,KACXC,YAAY,EACZC,UAAU,EACVC,KAAM,KACNC,iBAAiB,EACjBC,eAAgB,4EAChBC,UAAW,wBACXC,WAAY,wBACZC,SACCC,MAAO,QACPC,KAAM,wBACNP,KAAM,uEAEPQ,IAAKC,SACLC,OAAQ,aACRC,QAAS,aACTC,OAAQ,aACRC,SAAU,aACVC,WAAY,aACZC,gBAAiB,cAGdC,EAAW,WA8Bd,QAASA,GAASC,EAAUC,GAC3B,GAAIC,GAAQC,IAEZlD,GAAgBkD,KAAMJ,GAEtBI,KAAKC,QAAUpD,EAAEqD,UAAW7B,EAASyB,GACrCE,KAAKG,cAAgB,KACrBH,KAAKI,cAAgB,EACrBJ,KAAKK,aAAe,KACpBL,KAAKM,SAAW,KAChBN,KAAKO,QAAU,KACfP,KAAKQ,eAAgB,EACrBR,KAAKS,gBAAiB,EACtBT,KAAKU,aAAe,EACpBV,KAAKW,cAAgB,EACrBX,KAAKY,aAAe,EACpBZ,KAAKa,WAAa,EAElBb,KAAKc,SAAW,gBAAkBC,KAAKC,MAAsB,IAAhBD,KAAKE,SAAkB,GACpEjB,KAAKkB,UAAYrB,YAAoBsB,QAAStB,EAAWhD,EAAEgD,GAE3DG,KAAKoB,cAAqD,GAArCvE,EAAEuB,GAAGiD,MAAMrE,YAAYsE,QAAQ,EAEpD,IAAIC,GAAK,4BAA8BvB,KAAKC,QAAQ3B,OAAS,UAAY,QACrEkD,EAAM,wEAA0ExB,KAAKC,QAAQhB,QAAQC,MAAQ,qDAE7GuC,EAAS,4BAA8BzB,KAAKC,QAAQ3B,OAAS0B,KAAKC,QAAQpB,gBAAkB,GAAK,SAAW,MAAQmB,KAAKoB,cAAgBI,EAAMD,EAAKA,EAAKC,GAAO,SAChKjD,EAAS,4BAA8ByB,KAAKC,QAAQ1B,OAAS,GAAK,SAAW,MAAQyB,KAAKC,QAAQ1B,QAAU,UAAY,SACxHmD,EAAO,0KACPC,EAAS,wEAA0EF,EAASC,EAAOnD,EAAS,cAChH1B,GAAEmD,KAAKC,QAAQb,IAAIsC,MAAME,OAAO,YAAc5B,KAAKc,SAAW,mGAAqGa,EAAS,UAE5K3B,KAAK6B,QAAUhF,EAAE,IAAMmD,KAAKc,SAAUd,KAAKC,QAAQb,KACnDY,KAAK8B,cAAgB9B,KAAK6B,QAAQE,KAAK,iBAAiBC,QACxDhC,KAAKiC,eAAiBjC,KAAK6B,QAAQE,KAAK,kBAAkBC,QAC1DhC,KAAKkC,YAAclC,KAAK6B,QAAQE,KAAK,eAAeC,QACpDhC,KAAKmC,cAAgBnC,KAAK6B,QAAQE,KAAK,iBAAiBC,QACxDhC,KAAKoC,cAAgBpC,KAAK6B,QAAQE,KAAK,iBAAiBC,QAExDhC,KAAKqC,oBAAsBrC,KAAKkC,YAAYH,KAAK,4BAA4BC,QAC7EhC,KAAKsC,kBAAoBtC,KAAKqC,oBAAoBN,KAAK,qBAAqBC,QAC5EhC,KAAKuC,kBAAoBvC,KAAKqC,oBAAoBN,KAAK,oBAAoBC,QAE3EhC,KAAKO,QAAUP,KAAKwC,oBACpBxC,KAAKM,SAAWN,KAAKyC,oBAErBzC,KAAKK,aAAeL,KAAKkB,UAAUwB,KAAK,WACpC1C,KAAKK,eACRL,KAAK2C,eAAiB9F,EAAEwC,SAASqC,MAAMK,KAAK,mBAAqB/B,KAAKK,aAAe,MACrFL,KAAKI,cAAgBJ,KAAK2C,eAAeC,MAAM5C,KAAKkB,WACpDrE,EAAEwC,UAAUwD,GAAG,uBAAwB7C,KAAK8C,oBAAoBC,KAAK/C,OAGjEA,KAAKC,QAAQvB,YAAcsB,KAAK2C,eAAepF,OAAS,IAC3DyC,KAAKqC,oBAAoBT,OAAO,sDAAwD5B,KAAKC,QAAQlB,UAAY,mBAAqBiB,KAAKC,QAAQjB,WAAa,cAChKgB,KAAKG,cAAgBH,KAAKqC,oBAAoBN,KAAK,iCAAiCC,QACpFhC,KAAKqC,oBAAoBQ,GAAG,QAAS,gBAAiB,SAAUG,GAE/D,MADAA,GAAMC,iBACClD,EAAMmD,iBAEdlD,KAAKqC,oBAAoBQ,GAAG,QAAS,eAAgB,SAAUG,GAE9D,MADAA,GAAMC,iBACClD,EAAMoD,kBAEdnD,KAAKoD,qBAIPpD,KAAK6B,QAAQgB,GAAG,gBAAiB7C,KAAKC,QAAQX,OAAOyD,KAAK/C,OAAO6C,GAAG,iBAAkB,WAGrF,MAFA9C,GAAMsD,gBAAe,GACrBtD,EAAMuD,UACCvD,EAAME,QAAQV,QAAQgE,KAAKxD,KAChC8C,GAAG,gBAAiB7C,KAAKC,QAAQT,OAAOuD,KAAK/C,OAAO6C,GAAG,kBAAmB,WAM5E,MALI9C,GAAMM,eACTxD,EAAEwC,UAAUmE,IAAI,wBAChB3G,EAAE4G,QAAQD,IAAI,wBAEfzD,EAAM8B,QAAQ6B,SACP3D,EAAME,QAAQR,SAAS8D,KAAKxD,KACjCsB,MAAMrB,KAAKC,SAEdpD,EAAE4G,QAAQZ,GAAG,sBAAuB,WACnC9C,EAAM4D,QAAQ5D,EAAMW,aAAcX,EAAMY,iBAEzCX,KAAKqC,oBAAoBQ,GAAG,aAAc,WACzC9C,EAAMa,aAAeoC,MAAMY,eAAe,GAAGC,UAC3ChB,GAAG,WAAY,WACjB9C,EAAMc,WAAamC,MAAMY,eAAe,GAAGC,QAC3C9D,EAAM+D,iBA0eR,MA/lBA5G,GAAa0C,EAAU,OACtB9B,IAAK,UAuBLiG,IAAK,WACJ,MAAO1F,OAgGTnB,EAAa0C,IACZ9B,IAAK,UACLkG,MAAO,WACN,MAAOhE,MAAKkB,aAGbpD,IAAK,QACLkG,MAAO,WACN,MAAOhE,MAAK6B,WAGb/D,IAAK,aACLkG,MAAO,SAAoBpB,GAE1B,MAAIA,GAAQ,GAAKA,EAAQ5C,KAAK2C,eAAepF,OAAS,EAAUyC,MAEhEA,KAAKI,cAAgBwC,EAErB5C,KAAKoD,mBAELpD,KAAKkB,UAAYrE,EAAEmD,KAAK2C,eAAeoB,IAAI/D,KAAKI,oBAChDJ,MAAKsD,cAGNxF,IAAK,eACLkG,MAAO,WAEN,GAAKhE,KAAK2C,gBAEyB,IAA/B3C,KAAK2C,eAAepF,OAAxB,CAEA,GAA2B,IAAvByC,KAAKI,cAAqB,CAC7B,IAAIJ,KAAKC,QAAQtB,SAAmE,MAAzDqB,MAAKI,cAAgBJ,KAAK2C,eAAepF,OAAS,MAE7EyC,MAAKI,eAGN,OADAJ,MAAKC,QAAQP,WAAW6D,KAAKvD,KAAM,OAAQA,KAAKI,eACzCJ,KAAKiE,WAAWjE,KAAKI,mBAG7BtC,IAAK,gBACLkG,MAAO,WAEN,GAAKhE,KAAK2C,gBAEyB,IAA/B3C,KAAK2C,eAAepF,OAAxB,CAEA,GAAIyC,KAAKI,gBAAkBJ,KAAK2C,eAAepF,OAAS,EAAG,CAC1D,IAAIyC,KAAKC,QAAQtB,SAAsC,MAA5BqB,MAAKI,cAAgB,MAEhDJ,MAAKI,eAGN,OADAJ,MAAKC,QAAQP,WAAW6D,KAAKvD,KAAM,QAASA,KAAKI,eAC1CJ,KAAKiE,WAAWjE,KAAKI,mBAG7BtC,IAAK,mBACLkG,MAAO,WACN,IAAKhE,KAAKC,QAAQtB,SAAU,CAC3B,GAAIuF,GAAOlE,KAAKqC,oBAAoBN,KAAK,gCACd,KAAvB/B,KAAKI,cAAqB8D,EAAKnC,KAAK,iBAAiBoC,SAAS,YAAiBD,EAAKnC,KAAK,iBAAiBqC,YAAY,YAEtHpE,KAAKI,gBAAkBJ,KAAK2C,eAAepF,OAAS,EAAG2G,EAAKnC,KAAK,gBAAgBoC,SAAS,YAAiBD,EAAKnC,KAAK,gBAAgBqC,YAAY,gBAIvJtG,IAAK,QACLkG,MAAO,WACN,MAAOhE,MAAK6B,QAAQR,MAAM,WAK3BvD,IAAK,sBACLkG,MAAO,SAA6BhB,GAEnC,MADAA,GAAQA,GAASS,OAAOT,MACF,KAAlBA,EAAMqB,QAAuBrE,KAAKmD,gBAChB,KAAlBH,EAAMqB,QAAuBrE,KAAKkD,eAAtC,UAKDpF,IAAK,oBACLkG,MAAO,SAA2BM,EAAK1F,GAWtC,MATAA,GAAOA,IAAQ,GAEVA,GAAQoB,KAAKuE,SAASD,KAAM1F,EAAO,UACnCA,GAAQoB,KAAKwE,cAAcF,KAAM1F,EAAO,YACxCA,GAAQoB,KAAKyE,YAAYH,KAAM1F,EAAO,UACtCA,GAAQoB,KAAK0E,gBAAgBJ,KAAM1F,EAAO,eAE1CA,IAAS,QAAS,UAAW,QAAS,YAAa,QAAS,OAAO+F,QAAQ/F,GAAQ,KAAGA,EAAO,OAE3FA,KAGRd,IAAK,WACLkG,MAAO,SAAkBY,GACxB,MAAOA,IAAUA,EAAOC,MAAM,4EAG/B/G,IAAK,kBACLkG,MAAO,WACN,GAAIc,GAAS9E,KAGT+E,EAAS/E,KAAKuC,kBACdyC,EAAWhF,KAAKsC,iBAcpB,OAZItC,MAAKuC,kBAAkB0C,SAAS,QACnCF,EAAS/E,KAAKsC,kBACd0C,EAAWhF,KAAKuC,mBAGjByC,EAASZ,YAAY,WACrBc,WAAW,WACLJ,EAAOvC,kBAAkB0C,SAAS,OAAOH,EAAOvC,kBAAkB4C,QAClEL,EAAOxC,kBAAkB2C,SAAS,OAAOH,EAAOxC,kBAAkB6C,SACrE,KAEHJ,EAAOZ,SAAS,WACTY,KAGRjH,IAAK,UACLkG,MAAO,WAEN,GAAIe,GAAS/E,KAAKoF,iBAClBpF,MAAKqF,uBAEL,IAAIC,GAAgBtF,KAAKkB,UAAUqE,KAAK,gBAAkBvF,KAAKkB,UAAUqE,KAAK,QAC1EC,EAAcxF,KAAKyF,kBAAkBH,EAAetF,KAAKkB,UAAUqE,KAAK,eAAgB,EAE5F,KAAK,QAAS,UAAW,QAAS,YAAa,QAAS,OAAOZ,QAAQa,GAAe,EAAG,MAAOxF,MAAK0F,OAAO1F,KAAKC,QAAQhB,QAAQL,KAEjI,QAAQ4G,GACP,IAAK,QACJxF,KAAK2F,cAAcL,EAAeP,GAClC/E,KAAK4F,qBAAqB5F,KAAKI,cAAe,EAC9C,MACD,KAAK,UACJJ,KAAK6F,kBAAkBP,EAAeP,EACtC,MACD,KAAK,QACJ/E,KAAK8F,gBAAgB9F,KAAKyE,YAAYa,GAAgBP,EACtD,MACD,KAAK,YACJ/E,KAAK+F,oBAAoB/F,KAAK0E,gBAAgBY,GAAgBP,EAC9D,MACD,KAAK,QACJ/E,KAAKgG,gBAAgBV,EAAeP,EACpC,MACD,SAEC/E,KAAKiG,mBAAmBX,EAAeP,GAIzC,MAAO/E,SAGRlC,IAAK,gBACLkG,MAAO,SAAuBY,GAC7B,IAAKA,EAAQ,OAAO,CACpB,IAAIsB,GAAUtB,EAAOC,MAAM,kEAC3B,UAAOqB,GAAiC,KAAtBA,EAAQ,GAAG3I,SAAgB2I,EAAQ,MAGtDpI,IAAK,cACLkG,MAAO,SAAqBY,GAC3B,SAAOA,GAAUA,EAAOD,QAAQ,SAAW,IAAIC,KAGhD9G,IAAK,kBACLkG,MAAO,SAAyBY,GAC/B,SAAOA,GAAUA,EAAOD,QAAQ,aAAe,IAAIC,KAKpD9G,IAAK,iBACLkG,MAAO,SAAwBmC,GAW9B,MAVAA,GAAOA,IAAQ,EACXA,GACHnG,KAAK8B,cAAcsE,IAAI,UAAW,QAClCpG,KAAK6B,QAAQuC,YAAY,WACzBvH,EAAE,mBAAmB+E,OAAO5B,KAAKC,QAAQnB,kBAEzCkB,KAAK8B,cAAcsE,IAAI,UAAW,SAClCpG,KAAK6B,QAAQsC,SAAS,WACtBtH,EAAE,mBAAmBkF,KAAK,yBAAyB2B,UAE7C1D,QAGRlC,IAAK,oBACLkG,MAAO,WACN,OACCqC,IAAKrG,KAAKsG,qBAAqB,oBAC/BC,MAAOvG,KAAKsG,qBAAqB,sBACjCE,OAAQxG,KAAKsG,qBAAqB,uBAClCG,KAAMzG,KAAKsG,qBAAqB,yBAIlCxI,IAAK,oBACLkG,MAAO,WACN,OACCqC,IAAKrG,KAAKsG,qBAAqB,eAC/BC,MAAOvG,KAAKsG,qBAAqB,iBACjCE,OAAQxG,KAAKsG,qBAAqB,kBAClCG,KAAMzG,KAAKsG,qBAAqB,oBAIlCxI,IAAK,uBACLkG,MAAO,SAA8B0C,GACpC,MAAOC,UAAS3G,KAAK8B,cAAcsE,IAAIM,GAAY,IAAMC,SAAS3G,KAAKiC,eAAemE,IAAIM,GAAY,IAAMC,SAAS3G,KAAKkC,YAAYkE,IAAIM,GAAY,OAGvJ5I,IAAK,wBACLkG,MAAO,WACN,GAAI1F,GAAQ0B,KAAKkB,UAAUwB,KAAK,UAAY,GACxCkE,EAAU5G,KAAKkB,UAAUwB,KAAK,WAAa,EAc/C,OAZA1C,MAAKQ,eAAgB,EACjBlC,GAAS0B,KAAKC,QAAQpB,iBACzBmB,KAAKQ,eAAgB,EACrBR,KAAKmC,cAAciE,IAAI,UAAW,IAAIrE,KAAK,gBAAgB8E,KAAKvI,GAAS,WACnE0B,KAAKmC,cAAciE,IAAI,UAAW,QAEzCpG,KAAKS,gBAAiB,EAClBmG,GACH5G,KAAKS,gBAAiB,EACtBT,KAAKoC,cAAcgE,IAAI,UAAW,IAAIS,KAAKD,IACrC5G,KAAKoC,cAAcgE,IAAI,UAAW,QAElCpG,QAGRlC,IAAK,oBACLkG,MAAO,SAA2B8C,EAAQC,GACzC,GAAIC,GAAKhH,KAAKwE,cAAcsC,GACxBG,EAAQH,EAAOnC,QAAQ,KAAO,EAAImC,EAAOI,OAAOJ,EAAOnC,QAAQ,MAAQ,GACvEwC,EAAQnH,KAAKkB,UAAUwB,KAAK,UAAY,IACxC0E,EAASpH,KAAKkB,UAAUwB,KAAK,WAAayE,GAAS,IAAM,IAC7D,OAAOnH,MAAKqH,iBAAiB,2BAA6BL,EAAK,8BAAgCC,EAAOE,EAAOC,EAAQL,MAGtHjJ,IAAK,kBACLkG,MAAO,SAAyBgD,EAAID,GACnC,GAAII,GAAQnH,KAAKkB,UAAUwB,KAAK,UAAY,IACxC0E,EAASpH,KAAKkB,UAAUwB,KAAK,WAAayE,GAAS,IAAM,IAC7D,OAAOnH,MAAKqH,iBAAiBL,EAAK,cAAeG,EAAOC,EAAQL,MAGjEjJ,IAAK,sBACLkG,MAAO,SAA6BgD,EAAID,GAEvC,GAAII,GAAQnH,KAAKkB,UAAUwB,KAAK,UAAY,IACxC0E,EAASD,EAAQ,EAQrB,OAPAH,GAAuB,MAAlBA,EAAGE,WAAqBF,EAAK,IAAMA,EACxCD,EAAqBF,KAAK,kBAAoBM,EAAQ,aAAeC,EAAS,UAAYJ,EAAK,qDAC/FhH,KAAK2D,QAAQwD,EAAOC,GACpBpH,KAAKC,QAAQN,gBAAgB4D,KAAKvD,MAC9BA,KAAKG,eACRH,KAAKG,cAAciG,IAAI,UAAW,QACnCpG,KAAKqD,gBAAe,GACbrD,QAGRlC,IAAK,mBACLkG,MAAO,SAA0BsD,EAAKH,EAAOC,EAAQL,GAQpD,MANAK,GAASA,GAAUD,EACnBJ,EAAqBF,KAAK,uEAAyEM,EAAQ,aAAeC,EAAS,UAAYE,EAAM,mFACrJtH,KAAK2D,QAAQwD,EAAOC,GACpBpH,KAAKC,QAAQN,gBAAgB4D,KAAKvD,MAC9BA,KAAKG,eAAeH,KAAKG,cAAciG,IAAI,UAAW,QAC1DpG,KAAKqD,gBAAe,GACbrD,QAGRlC,IAAK,kBACLkG,MAAO,SAAyBsD,EAAKP,GAEpC,GAAII,GAAQnH,KAAKkB,UAAUwB,KAAK,UAAY,IACxC0E,EAASpH,KAAKkB,UAAUwB,KAAK,WAAayE,GAAS,IAAM,IAM7D,OALAJ,GAAqBF,KAAK,sEAAwEM,EAAQ,aAAeC,EAAS,UAAYE,EAAM,mFACpJtH,KAAK2D,QAAQwD,EAAOC,GACpBpH,KAAKC,QAAQN,gBAAgB4D,KAAKvD,MAC9BA,KAAKG,eAAeH,KAAKG,cAAciG,IAAI,UAAW,QAC1DpG,KAAKqD,gBAAe,GACbrD,QAGRlC,IAAK,qBACLkG,MAAO,SAA4BsD,EAAKP,GACvC,GAAIQ,GAASvH,KAETmH,EAAQnH,KAAKkB,UAAUwB,KAAK,UAAY,IACxC0E,EAASpH,KAAKkB,UAAUwB,KAAK,WAAa,IAE1C8E,EAAuBxH,KAAKkB,UAAUwB,KAAK,0BAA2B,CAkB1E,OAjBA1C,MAAKqD,gBAAe,GAIfmE,GAAyBxH,KAAKyH,YAAYH,IAK9CP,EAAqBF,KAAK,gBAAkBS,EAAM,+CAClDtH,KAAKC,QAAQN,gBAAgB4D,KAAKvD,OALlC+G,EAAqBW,KAAKJ,EAAKzK,EAAE8K,MAAM,WACtC,MAAOJ,GAAOrG,UAAU0G,QAAQ,sBAO9B5H,KAAKG,eACRH,KAAKG,cAAciG,IAAI,UAAW,QAEnCpG,KAAK2D,QAAQwD,EAAOC,GACbpH,QAGRlC,IAAK,cACLkG,MAAO,SAAqBsD,GAC3B,GAAIzC,GAAQyC,EAAIzC,MAAM,6DACtB,OAAwB,gBAAbA,GAAM,IAAmBA,EAAM,GAAGtH,OAAS,GAAKsH,EAAM,GAAGgD,gBAAkBC,SAASC,UAEvE,gBAAblD,GAAM,IAAmBA,EAAM,GAAGtH,OAAS,GAAKsH,EAAM,GAAGmD,QAAQ,GAAIC,QAAO,MACtFC,QAAS,GACTC,SAAU,KACRL,SAASC,UAAY,OAAQ,MAAQD,SAASM,QAKlDtK,IAAK,SACLkG,MAAO,SAAgBqE,GAItB,MAHAC,SAAQC,MAAMF,GACdrI,KAAKoF,kBAAkByB,KAAKwB,GAC5BrI,KAAK2D,QAAQ,IAAK,KACX3D,QAGRlC,IAAK,uBACLkG,MAAO,SAA8BwE,EAAYC,GAEhD,GAAKzI,KAAK2C,eAAV,CAEA,GAAI+F,GAAO7L,EAAEmD,KAAK2C,eAAeoB,IAAIyE,IAAa,EAClD,IAAmB,mBAARE,GAAX,CAEA,GAAIpE,GAAMoE,EAAKnD,KAAK,gBAAkBmD,EAAKnD,KAAK,OAGhD,QAF+B,UAA3BmD,EAAKnD,KAAK,cAA4BvF,KAAKuE,SAASD,KAAMtE,KAAK2F,cAAcrB,GAAK,GAElFmE,EAAgB,EAAUzI,KAAK4F,qBAAqB4C,EAAa,EAAGC,EAAgB,GAAxF,YAGD3K,IAAK,gBACLkG,MAAO,SAAuBM,EAAKqE,GAClC,GAAIC,GAAS5I,IAEb2I,GAAqBA,IAAsB,CAE3C,IAAIE,GAAM,GAAIC,MAkCd,OAjCIH,KACH,WAGC,GAAII,GAAiB7D,WAAW,WAC/ByD,EAAmB/G,OAAOgH,EAAO3I,QAAQnB,iBACvC,IAEH+J,GAAIG,OAAS,WACRD,GAAgBE,aAAaF,GACjCA,EAAiB,IACjB,IAAIG,GAAQrM,EAAE,UAYd,OAXAqM,GAAM3D,KAAK,MAAOsD,EAAIvE,KACtB4E,EAAM/E,SAAS,aAGf+E,EAAM9C,IAAI,QAAS,QAEnBuC,EAAmB9B,KAAKqC,GACpBN,EAAOzI,eAAeyI,EAAOzI,cAAciG,IAAI,UAAW,IAE9DwC,EAAOjF,QAAQkF,EAAI1B,MAAO0B,EAAIzB,QAC9BwB,EAAOvF,gBAAe,GACfuF,EAAO3I,QAAQN,gBAAgB4D,KAAKqF,IAE5CC,EAAIM,QAAU,WAEb,MADAP,GAAOvF,gBAAe,GACfuF,EAAOlD,OAAOkD,EAAO3I,QAAQhB,QAAQE,MAAQ,KAAOmF,QAK9DuE,EAAIvE,IAAMA,EACHuE,KAGR/K,IAAK,eACLkG,MAAO,WACN,MAAIhE,MAAKa,WAAab,KAAKY,aACnBZ,KAAKmD,gBAETnD,KAAKa,WAAab,KAAKY,aACnBZ,KAAKkD,eADb,UAKDpF,IAAK,UACLkG,MAAO,SAAiBmD,EAAOC,GAE9BA,EAASA,GAAUD,EACnBnH,KAAKU,aAAeyG,EACpBnH,KAAKW,cAAgByG,CAErB,IAAIgC,GAAkBjC,EAAQC,EAG1BiC,EAAwBrJ,KAAKM,SAASmG,KAAOzG,KAAKM,SAASiG,MAAQvG,KAAKO,QAAQkG,KAAOzG,KAAKO,QAAQgG,MAGpG+C,EAAYtJ,KAAKC,QAAQb,IAAIsC,KAAK6H,YAAc,IAAM,GAAK,EAC3DC,EAAiBxJ,KAAKC,QAAQb,IAAIsC,KAAK6H,YAAc,IAAM,EAAI,GAE/D/K,EAAWuC,KAAK0I,IAAItC,EAAQkC,EAAuBrJ,KAAKC,QAAQb,IAAIsC,KAAK6H,YAAcD,EAAWtJ,KAAKC,QAAQzB,SAE/G2I,GAAQkC,EAAwB7K,GACnC4I,GAAU5I,EAAW6K,EAAwBG,GAAkBJ,EAC/DjC,EAAQ3I,GACF2I,GAAgBkC,CAEvB,IAAIK,GAAe,EACfC,EAAe,CAIf3J,MAAKS,iBAAgBkJ,EAAe3J,KAAKoC,cAAcwH,aAAY,IAAS,IAE5E5J,KAAKQ,gBAAekJ,EAAe1J,KAAKmC,cAAcyH,aAAY,IAAS,GAE/E,IAAIC,GAAgB7J,KAAKM,SAAS+F,IAAMrG,KAAKM,SAASkG,OAASxG,KAAKO,QAAQiG,OAASxG,KAAKO,QAAQ8F,IAG9FyD,EAAUC,WAAW/J,KAAK8B,cAAcsE,IAAI,eAAiB2D,WAAW/J,KAAK8B,cAAcsE,IAAI,kBAE/F3H,EAAYsC,KAAK0I,IAAIrC,EAAQvK,EAAE4G,QAAQ2D,SAAWyC,EAAgBC,EAAUJ,EAAeC,EAAc3J,KAAKC,QAAQxB,UAAYoL,EAAgBH,EAAeC,EAEjKvC,GAAS3I,IAEZ0I,EAAQpG,KAAKiJ,KAAKvL,EAAY2K,GAAmBC,GAGlDrJ,KAAKqC,oBAAoB+D,IAAI,SAAU3H,GACvCuB,KAAK8B,cAAcsE,IAAI,OAAQ,GAAGA,IAAI,WAAYe,EAElD,IAAI9F,GAAQrB,KAAK6B,QAAQa,KAAK,WAC9B,IAAIrB,EAEH,IACCA,EAAM4I,gBACL,MAAOC,GACR7I,EAAM8I,eAGR,MAAOnK,WAGRlC,IAAK,mBACLkG,MAAO,SAA0BlE,GAChC,GAAIsK,GAASpK,IAGb,OADAF,GAASA,MACFE,KAAKqK,KAAK,WAChB,GAAIC,GAAQzN,EAAEuN,GACVnK,EAAUpD,EAAEqD,UAAWN,EAASvB,QAASiM,EAAM5H,OAA0B,gBAAX5C,IAAuBA,EAEzF,IAAIF,GAASwK,EAAQnK,SAKjBL,IAUR,OAPA/C,GAAEuB,GAAGF,GAAQ0B,EAAS2K,iBACtB1N,EAAEuB,GAAGF,GAAMlB,YAAc4C,EACzB/C,EAAEuB,GAAGF,GAAMsM,WAAa,WAEvB,MADA3N,GAAEuB,GAAGF,GAAQC,EACNyB,EAAS2K,kBAGV3K,IACLuB,SAGDA","file":"ekko-lightbox.min.js"} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fastclick/fastclick.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fastclick/fastclick.js deleted file mode 100644 index 3af4f9d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fastclick/fastclick.js +++ /dev/null @@ -1,841 +0,0 @@ -;(function () { - 'use strict'; - - /** - * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. - * - * @codingstandard ftlabs-jsv2 - * @copyright The Financial Times Limited [All Rights Reserved] - * @license MIT License (see LICENSE.txt) - */ - - /*jslint browser:true, node:true*/ - /*global define, Event, Node*/ - - - /** - * Instantiate fast-clicking listeners on the specified layer. - * - * @constructor - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - function FastClick(layer, options) { - var oldOnClick; - - options = options || {}; - - /** - * Whether a click is currently being tracked. - * - * @type boolean - */ - this.trackingClick = false; - - - /** - * Timestamp for when click tracking started. - * - * @type number - */ - this.trackingClickStart = 0; - - - /** - * The element being tracked for a click. - * - * @type EventTarget - */ - this.targetElement = null; - - - /** - * X-coordinate of touch start event. - * - * @type number - */ - this.touchStartX = 0; - - - /** - * Y-coordinate of touch start event. - * - * @type number - */ - this.touchStartY = 0; - - - /** - * ID of the last touch, retrieved from Touch.identifier. - * - * @type number - */ - this.lastTouchIdentifier = 0; - - - /** - * Touchmove boundary, beyond which a click will be cancelled. - * - * @type number - */ - this.touchBoundary = options.touchBoundary || 10; - - - /** - * The FastClick layer. - * - * @type Element - */ - this.layer = layer; - - /** - * The minimum time between tap(touchstart and touchend) events - * - * @type number - */ - this.tapDelay = options.tapDelay || 200; - - /** - * The maximum time for a tap - * - * @type number - */ - this.tapTimeout = options.tapTimeout || 700; - - if (FastClick.notNeeded(layer)) { - return; - } - - // Some old versions of Android don't have Function.prototype.bind - function bind(method, context) { - return function() { return method.apply(context, arguments); }; - } - - - var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; - var context = this; - for (var i = 0, l = methods.length; i < l; i++) { - context[methods[i]] = bind(context[methods[i]], context); - } - - // Set up event handlers as required - if (deviceIsAndroid) { - layer.addEventListener('mouseover', this.onMouse, true); - layer.addEventListener('mousedown', this.onMouse, true); - layer.addEventListener('mouseup', this.onMouse, true); - } - - layer.addEventListener('click', this.onClick, true); - layer.addEventListener('touchstart', this.onTouchStart, false); - layer.addEventListener('touchmove', this.onTouchMove, false); - layer.addEventListener('touchend', this.onTouchEnd, false); - layer.addEventListener('touchcancel', this.onTouchCancel, false); - - // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick - // layer when they are cancelled. - if (!Event.prototype.stopImmediatePropagation) { - layer.removeEventListener = function(type, callback, capture) { - var rmv = Node.prototype.removeEventListener; - if (type === 'click') { - rmv.call(layer, type, callback.hijacked || callback, capture); - } else { - rmv.call(layer, type, callback, capture); - } - }; - - layer.addEventListener = function(type, callback, capture) { - var adv = Node.prototype.addEventListener; - if (type === 'click') { - adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { - if (!event.propagationStopped) { - callback(event); - } - }), capture); - } else { - adv.call(layer, type, callback, capture); - } - }; - } - - // If a handler is already declared in the element's onclick attribute, it will be fired before - // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and - // adding it as listener. - if (typeof layer.onclick === 'function') { - - // Android browser on at least 3.2 requires a new reference to the function in layer.onclick - // - the old one won't work if passed to addEventListener directly. - oldOnClick = layer.onclick; - layer.addEventListener('click', function(event) { - oldOnClick(event); - }, false); - layer.onclick = null; - } - } - - /** - * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. - * - * @type boolean - */ - var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; - - /** - * Android requires exceptions. - * - * @type boolean - */ - var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; - - - /** - * iOS requires exceptions. - * - * @type boolean - */ - var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; - - - /** - * iOS 4 requires an exception for select elements. - * - * @type boolean - */ - var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); - - - /** - * iOS 6.0-7.* requires the target element to be manually derived - * - * @type boolean - */ - var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); - - /** - * BlackBerry requires exceptions. - * - * @type boolean - */ - var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; - - /** - * Determine whether a given element requires a native click. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element needs a native click - */ - FastClick.prototype.needsClick = function(target) { - switch (target.nodeName.toLowerCase()) { - - // Don't send a synthetic click to disabled inputs (issue #62) - case 'button': - case 'select': - case 'textarea': - if (target.disabled) { - return true; - } - - break; - case 'input': - - // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) - if ((deviceIsIOS && target.type === 'file') || target.disabled) { - return true; - } - - break; - case 'label': - case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames - case 'video': - return true; - } - - return (/\bneedsclick\b/).test(target.className); - }; - - - /** - * Determine whether a given element requires a call to focus to simulate click into element. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. - */ - FastClick.prototype.needsFocus = function(target) { - switch (target.nodeName.toLowerCase()) { - case 'textarea': - return true; - case 'select': - return !deviceIsAndroid; - case 'input': - switch (target.type) { - case 'button': - case 'checkbox': - case 'file': - case 'image': - case 'radio': - case 'submit': - return false; - } - - // No point in attempting to focus disabled inputs - return !target.disabled && !target.readOnly; - default: - return (/\bneedsfocus\b/).test(target.className); - } - }; - - - /** - * Send a click event to the specified element. - * - * @param {EventTarget|Element} targetElement - * @param {Event} event - */ - FastClick.prototype.sendClick = function(targetElement, event) { - var clickEvent, touch; - - // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) - if (document.activeElement && document.activeElement !== targetElement) { - document.activeElement.blur(); - } - - touch = event.changedTouches[0]; - - // Synthesise a click event, with an extra attribute so it can be tracked - clickEvent = document.createEvent('MouseEvents'); - clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); - clickEvent.forwardedTouchEvent = true; - targetElement.dispatchEvent(clickEvent); - }; - - FastClick.prototype.determineEventType = function(targetElement) { - - //Issue #159: Android Chrome Select Box does not open with a synthetic click event - if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { - return 'mousedown'; - } - - return 'click'; - }; - - - /** - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.focus = function(targetElement) { - var length; - - // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. - if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { - length = targetElement.value.length; - targetElement.setSelectionRange(length, length); - } else { - targetElement.focus(); - } - }; - - - /** - * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. - * - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.updateScrollParent = function(targetElement) { - var scrollParent, parentElement; - - scrollParent = targetElement.fastClickScrollParent; - - // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the - // target element was moved to another parent. - if (!scrollParent || !scrollParent.contains(targetElement)) { - parentElement = targetElement; - do { - if (parentElement.scrollHeight > parentElement.offsetHeight) { - scrollParent = parentElement; - targetElement.fastClickScrollParent = parentElement; - break; - } - - parentElement = parentElement.parentElement; - } while (parentElement); - } - - // Always update the scroll top tracker if possible. - if (scrollParent) { - scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; - } - }; - - - /** - * @param {EventTarget} targetElement - * @returns {Element|EventTarget} - */ - FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { - - // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. - if (eventTarget.nodeType === Node.TEXT_NODE) { - return eventTarget.parentNode; - } - - return eventTarget; - }; - - - /** - * On touch start, record the position and scroll offset. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchStart = function(event) { - var targetElement, touch, selection; - - // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). - if (event.targetTouches.length > 1) { - return true; - } - - targetElement = this.getTargetElementFromEventTarget(event.target); - touch = event.targetTouches[0]; - - if (deviceIsIOS) { - - // Only trusted events will deselect text on iOS (issue #49) - selection = window.getSelection(); - if (selection.rangeCount && !selection.isCollapsed) { - return true; - } - - if (!deviceIsIOS4) { - - // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): - // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched - // with the same identifier as the touch event that previously triggered the click that triggered the alert. - // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an - // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. - // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, - // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, - // random integers, it's safe to to continue if the identifier is 0 here. - if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { - event.preventDefault(); - return false; - } - - this.lastTouchIdentifier = touch.identifier; - - // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: - // 1) the user does a fling scroll on the scrollable layer - // 2) the user stops the fling scroll with another tap - // then the event.target of the last 'touchend' event will be the element that was under the user's finger - // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check - // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). - this.updateScrollParent(targetElement); - } - } - - this.trackingClick = true; - this.trackingClickStart = event.timeStamp; - this.targetElement = targetElement; - - this.touchStartX = touch.pageX; - this.touchStartY = touch.pageY; - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - event.preventDefault(); - } - - return true; - }; - - - /** - * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.touchHasMoved = function(event) { - var touch = event.changedTouches[0], boundary = this.touchBoundary; - - if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { - return true; - } - - return false; - }; - - - /** - * Update the last position. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchMove = function(event) { - if (!this.trackingClick) { - return true; - } - - // If the touch has moved, cancel the click tracking - if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { - this.trackingClick = false; - this.targetElement = null; - } - - return true; - }; - - - /** - * Attempt to find the labelled control for the given label element. - * - * @param {EventTarget|HTMLLabelElement} labelElement - * @returns {Element|null} - */ - FastClick.prototype.findControl = function(labelElement) { - - // Fast path for newer browsers supporting the HTML5 control attribute - if (labelElement.control !== undefined) { - return labelElement.control; - } - - // All browsers under test that support touch events also support the HTML5 htmlFor attribute - if (labelElement.htmlFor) { - return document.getElementById(labelElement.htmlFor); - } - - // If no for attribute exists, attempt to retrieve the first labellable descendant element - // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label - return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); - }; - - - /** - * On touch end, determine whether to send a click event at once. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchEnd = function(event) { - var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; - - if (!this.trackingClick) { - return true; - } - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - this.cancelNextClick = true; - return true; - } - - if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { - return true; - } - - // Reset to prevent wrong click cancel on input (issue #156). - this.cancelNextClick = false; - - this.lastClickTime = event.timeStamp; - - trackingClickStart = this.trackingClickStart; - this.trackingClick = false; - this.trackingClickStart = 0; - - // On some iOS devices, the targetElement supplied with the event is invalid if the layer - // is performing a transition or scroll, and has to be re-detected manually. Note that - // for this to function correctly, it must be called *after* the event target is checked! - // See issue #57; also filed as rdar://13048589 . - if (deviceIsIOSWithBadTarget) { - touch = event.changedTouches[0]; - - // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null - targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; - targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; - } - - targetTagName = targetElement.tagName.toLowerCase(); - if (targetTagName === 'label') { - forElement = this.findControl(targetElement); - if (forElement) { - this.focus(targetElement); - if (deviceIsAndroid) { - return false; - } - - targetElement = forElement; - } - } else if (this.needsFocus(targetElement)) { - - // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. - // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). - if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { - this.targetElement = null; - return false; - } - - this.focus(targetElement); - this.sendClick(targetElement, event); - - // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. - // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) - if (!deviceIsIOS || targetTagName !== 'select') { - this.targetElement = null; - event.preventDefault(); - } - - return false; - } - - if (deviceIsIOS && !deviceIsIOS4) { - - // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled - // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). - scrollParent = targetElement.fastClickScrollParent; - if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { - return true; - } - } - - // Prevent the actual click from going though - unless the target node is marked as requiring - // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. - if (!this.needsClick(targetElement)) { - event.preventDefault(); - this.sendClick(targetElement, event); - } - - return false; - }; - - - /** - * On touch cancel, stop tracking the click. - * - * @returns {void} - */ - FastClick.prototype.onTouchCancel = function() { - this.trackingClick = false; - this.targetElement = null; - }; - - - /** - * Determine mouse events which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onMouse = function(event) { - - // If a target element was never set (because a touch event was never fired) allow the event - if (!this.targetElement) { - return true; - } - - if (event.forwardedTouchEvent) { - return true; - } - - // Programmatically generated events targeting a specific element should be permitted - if (!event.cancelable) { - return true; - } - - // Derive and check the target element to see whether the mouse event needs to be permitted; - // unless explicitly enabled, prevent non-touch click events from triggering actions, - // to prevent ghost/doubleclicks. - if (!this.needsClick(this.targetElement) || this.cancelNextClick) { - - // Prevent any user-added listeners declared on FastClick element from being fired. - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - - // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - event.propagationStopped = true; - } - - // Cancel the event - event.stopPropagation(); - event.preventDefault(); - - return false; - } - - // If the mouse event is permitted, return true for the action to go through. - return true; - }; - - - /** - * On actual clicks, determine whether this is a touch-generated click, a click action occurring - * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or - * an actual click which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onClick = function(event) { - var permitted; - - // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. - if (this.trackingClick) { - this.targetElement = null; - this.trackingClick = false; - return true; - } - - // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. - if (event.target.type === 'submit' && event.detail === 0) { - return true; - } - - permitted = this.onMouse(event); - - // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. - if (!permitted) { - this.targetElement = null; - } - - // If clicks are permitted, return true for the action to go through. - return permitted; - }; - - - /** - * Remove all FastClick's event listeners. - * - * @returns {void} - */ - FastClick.prototype.destroy = function() { - var layer = this.layer; - - if (deviceIsAndroid) { - layer.removeEventListener('mouseover', this.onMouse, true); - layer.removeEventListener('mousedown', this.onMouse, true); - layer.removeEventListener('mouseup', this.onMouse, true); - } - - layer.removeEventListener('click', this.onClick, true); - layer.removeEventListener('touchstart', this.onTouchStart, false); - layer.removeEventListener('touchmove', this.onTouchMove, false); - layer.removeEventListener('touchend', this.onTouchEnd, false); - layer.removeEventListener('touchcancel', this.onTouchCancel, false); - }; - - - /** - * Check whether FastClick is needed. - * - * @param {Element} layer The layer to listen on - */ - FastClick.notNeeded = function(layer) { - var metaViewport; - var chromeVersion; - var blackberryVersion; - var firefoxVersion; - - // Devices that don't support touch don't need FastClick - if (typeof window.ontouchstart === 'undefined') { - return true; - } - - // Chrome version - zero for other browsers - chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (chromeVersion) { - - if (deviceIsAndroid) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // Chrome 32 and above with width=device-width or less don't need FastClick - if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - - // Chrome desktop doesn't need FastClick (issue #15) - } else { - return true; - } - } - - if (deviceIsBlackBerry10) { - blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); - - // BlackBerry 10.3+ does not require Fastclick library. - // https://github.com/ftlabs/fastclick/issues/251 - if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // user-scalable=no eliminates click delay. - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // width=device-width (or less than device-width) eliminates click delay. - if (document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - } - } - - // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) - if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - // Firefox version - zero for other browsers - firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (firefoxVersion >= 27) { - // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 - - metaViewport = document.querySelector('meta[name=viewport]'); - if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { - return true; - } - } - - // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version - // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx - if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - return false; - }; - - - /** - * Factory method for creating a FastClick object - * - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - FastClick.attach = function(layer, options) { - return new FastClick(layer, options); - }; - - - if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { - - // AMD. Register as an anonymous module. - define(function() { - return FastClick; - }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = FastClick.attach; - module.exports.FastClick = FastClick; - } else { - window.FastClick = FastClick; - } -}()); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/ActiveFilter.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/ActiveFilter.d.ts deleted file mode 100755 index 42c0946..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/ActiveFilter.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Filter } from './types'; -/** - * ActiveFilter represents the currently active filter over - * the grid. - * - * It can be a plain string value or an array of strings. - */ -export default class ActiveFilter { - private filter; - constructor(filter: Filter); - get(): Filter; - set(targetFilter: Filter): void; - toggle(targetFilter: string): void; - private toggleFilter; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/BrowserWindow.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/BrowserWindow.d.ts deleted file mode 100755 index ef8163c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/BrowserWindow.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * A wrapper class around the window object to manage the - * resize event. - * - * When the user resizes the window, Filterizr needs to trigger - * a refiltering of the grid so that the grid items can assume - * their new positions. - */ -export default class BrowserWindow { - private resizeHandler?; - constructor(); - private debounceEventHandler; - destroy(): void; - setResizeEventHandler(resizeHandler: EventListener): void; - private removeResizeHandler; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/EventReceiver.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/EventReceiver.d.ts deleted file mode 100755 index 8dd2526..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/EventReceiver.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Destructible } from './types/interfaces'; -declare type Receiver = NodeListOf | Element | Window; -export default class EventReceiver implements Destructible { - private receiver; - private eventDictionary; - constructor(receiver: Receiver); - on(eventType: string, eventHandler: EventListener): void; - off(eventType: string): void; - destroy(): void; - private removeAllEvents; -} -export {}; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer.d.ts deleted file mode 100755 index 60dd16b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { RawOptionsCallbacks } from './FilterizrOptions/defaultOptions'; -import FilterizrOptions from './FilterizrOptions/FilterizrOptions'; -import FilterItems from './FilterItems'; -/** - * Resembles the grid of items within Filterizr. - */ -export default class FilterContainer { - node: Element; - options: FilterizrOptions; - filterItems: FilterItems; - dimensions: { - width: number; - height: number; - }; - private onTransitionEndHandler?; - constructor(node: Element, options: FilterizrOptions); - destroy(): void; - /** - * Turn the HTML elements in the grid to FilterItem - * instances and return a collection of them. - */ - makeFilterItems(options: FilterizrOptions): FilterItems; - /** - * Inserts a new item into the grid. - * @param node - HTML node to instantiate as FilterItem and append to the grid - * @param options - Filterizr options - */ - insertItem(node: Element, options: FilterizrOptions): void; - calculateColumns(): number; - updateDimensions(): void; - updateHeight(newHeight: number): void; - bindEvents(callbacks: RawOptionsCallbacks): void; - unbindEvents(callbacks: RawOptionsCallbacks): void; - trigger(eventType: string): void; - private updateWidth; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/FilterContainer.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/FilterContainer.d.ts deleted file mode 100755 index 69bc64d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/FilterContainer.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { FilterizrState } from '../types'; -import FilterizrOptions from '../FilterizrOptions'; -import FilterItems from '../FilterItems'; -import FilterizrElement from '../FilterizrElement'; -import StyledFilterContainer from './StyledFilterContainer'; -/** - * Resembles the grid of items within Filterizr. - */ -export default class FilterContainer extends FilterizrElement { - filterItems: FilterItems; - protected styledNode: StyledFilterContainer; - private _filterizrState; - constructor(node: Element, options: FilterizrOptions); - readonly styles: StyledFilterContainer; - filterizrState: FilterizrState; - destroy(): void; - /** - * Turn the HTML elements in the grid to FilterItem - * instances and return a collection of them. - * @throws when no filter items are found in the grid. - */ - makeFilterItems(options: FilterizrOptions): FilterItems; - insertItem(node: HTMLElement): void; - removeItem(node: HTMLElement): void; - setHeight(newHeight: number): void; - bindEvents(): void; - unbindEvents(): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts deleted file mode 100755 index f2128e9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import StyledFilterizrElement from '../StyledFilterizrElement'; -export default class StyledFilterContainer extends StyledFilterizrElement { - initialize(): void; - updatePaddings(): void; - setHeight(newHeight: number): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/index.d.ts deleted file mode 100755 index cdefe97..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './FilterContainer'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/styles.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/styles.d.ts deleted file mode 100755 index b3983ed..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterContainer/styles.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import FilterizrOptions from '../FilterizrOptions'; -export declare const makePaddingStyles: (options: FilterizrOptions) => object; -export declare const makeInitialStyles: (options: FilterizrOptions) => object; -export declare const makeHeightStyles: (height: number) => object; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterControls.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterControls.d.ts deleted file mode 100755 index 530080b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterControls.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import Filterizr from './Filterizr'; -import { Destructible } from './types/interfaces'; -export default class FilterControls implements Destructible { - private filterControls; - private filterizr; - private multiFilterControls; - private searchControls; - private selector; - private shuffleControls; - private sortAscControls; - private sortDescControls; - /** - * @param filterizr keep a ref to the Filterizr object to control actions - * @param selector selector of controls in case of multiple Filterizr instances - */ - constructor(filterizr: Filterizr, selector?: string); - destroy(): void; - private initialize; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem.d.ts deleted file mode 100755 index b054235..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem.d.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Dictionary } from './types/interfaces/Dictionary'; -import FilterizrOptions from './FilterizrOptions/FilterizrOptions'; -export interface Position { - left: number; - top: number; -} -/** - * Resembles an item in the grid of Filterizr. - */ -export default class FilterItem { - node: Element; - options: FilterizrOptions; - dimensions: { - width: number; - height: number; - }; - private data; - private sortData; - private index; - private filteredOut; - private lastPosition; - private onTransitionEndHandler; - constructor(node: Element, index: number, options: FilterizrOptions); - /** - * Destroys the FilterItem instance - */ - destroy(): void; - /** - * Filters in a specific FilterItem out of the grid. - * @param targetPosition the position towards which the element should animate - * @param cssOptions for the animation - */ - filterIn(targetPosition: Position, cssOptions: Dictionary): void; - /** - * Filters out a specific FilterItem out of the grid. - * @param cssOptions for the animation - */ - filterOut(cssOptions: Dictionary): void; - /** - * Helper method to calculate the animation delay for a given grid item - * @param delay in ms - * @param delayMode can be 'alternate' or 'progressive' - */ - getTransitionDelay(delay: number, delayMode: 'progressive' | 'alternate'): number; - /** - * Returns true if the text contents of the FilterItem match the search term - * @param searchTerm to look up - * @return if the innerText matches the term - */ - contentsMatchSearch(searchTerm: string): boolean; - /** - * Recalculates the dimensions of the element and updates them in the state - */ - updateDimensions(): void; - /** - * Returns all categories of the grid items data-category attribute - * with a regexp regarding all whitespace. - * @return {String[]} an array of the categories the item belongs to - */ - getCategories(): string[]; - /** - * Returns the value of the sort attribute - * @param sortAttribute "index", "sortData" or custom user data-attribute by which to sort - */ - getSortAttribute(sortAttribute: string): string | number; - /** - * Helper method for the search method of Filterizr - * @return {String} innerText of the FilterItem in lowercase - */ - private getContentsLowercase; - /** - * Sets up the events related to the FilterItem instance - */ - private bindEvents; - /** - * Removes all events related to the FilterItem instance - */ - private unbindEvents; - /** - * Calculates and returns the transition css property based on options. - */ - private getTransitionStyle; - /** - * Sets the transition css property as an inline style on the FilterItem. - * - * The idea here is that during the very first render items should assume - * their positions directly. - * - * Following renders should actually trigger the transitions, which is why - * we need to delay setting the transition property. - * - * Unfortunately, JavaScript code executes on the same thread as the - * browser's rendering. Everything that needs to be drawn waits for - * JavaScript execution to complete. Thus, we need to use a setTimeout - * here to defer setting the transition style at the first rendering cycle. - */ - private setTransitionStyle; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/FilterItem.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/FilterItem.d.ts deleted file mode 100755 index 193fcbf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/FilterItem.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Position } from '../types/interfaces'; -import FilterizrOptions from '../FilterizrOptions'; -import FilterizrElement from '../FilterizrElement'; -import StyledFilterItem from './StyledFilterItem'; -/** - * Resembles an item in the grid of Filterizr. - */ -export default class FilterItem extends FilterizrElement { - protected styledNode: StyledFilterItem; - private filteredOut; - private lastPosition; - private sortData; - constructor(node: Element, index: number, options: FilterizrOptions); - readonly styles: StyledFilterItem; - /** - * Destroys the FilterItem instance - */ - destroy(): void; - /** - * Filters in a specific FilterItem out of the grid. - */ - filterIn(targetPosition: Position): void; - /** - * Filters out a specific FilterItem out of the grid. - */ - filterOut(): void; - /** - * Returns true if the text contents of the FilterItem match the search term - * @param searchTerm to look up - */ - contentsMatchSearch(searchTerm: string): boolean; - /** - * Returns all categories of the grid items data-category attribute - * with a regexp regarding all whitespace. - */ - getCategories(): string[]; - /** - * Returns the value of the sort attribute - * @param sortAttribute "index", "sortData" or custom user data-attribute by which to sort - */ - getSortAttribute(sortAttribute: string): string | number; - protected bindEvents(): void; - protected unbindEvents(): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/StyledFilterItem.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/StyledFilterItem.d.ts deleted file mode 100755 index efac8c2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/StyledFilterItem.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Position } from './../types/interfaces'; -import StyledFilterizrElement from '../StyledFilterizrElement'; -import FilterizrOptions from '../FilterizrOptions'; -export default class StyledFilterItem extends StyledFilterizrElement { - private _index; - constructor(node: HTMLElement, index: number, options: FilterizrOptions); - initialize(): void; - setFilteredStyles(position: Position, cssOptions: object): void; - updateTransitionStyle(): void; - updateWidth(): void; - /** - * Sets the transition css property as an inline style on the FilterItem. - * - * The idea here is that during the very first render items should assume - * their positions directly. - * - * Following renders should actually trigger the transitions, which is why - * we need to delay setting the transition property. - * - * Unfortunately, JavaScript code executes on the same thread as the - * browser's rendering. Everything that needs to be drawn waits for - * JavaScript execution to complete. Thus, we need to use a setTimeout - * here to defer setting the transition style at the first rendering cycle. - */ - enableTransitions(): Promise; - disableTransitions(): void; - setZIndex(zIndex: number): void; - removeZIndex(): void; - removeWidth(): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/index.d.ts deleted file mode 100755 index 7442505..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './FilterItem'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/styles.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/styles.d.ts deleted file mode 100755 index e31a67f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItem/styles.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import FilterizrOptions from '../FilterizrOptions'; -import { Dictionary, Position } from '../types/interfaces'; -export declare const makeInitialStyles: (options: FilterizrOptions) => object; -export declare const makeFilteringStyles: (targetPosition: Position, cssOptions: Dictionary) => object; -export declare const makeTransitionStyles: (index: number, options: FilterizrOptions) => object; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems.d.ts deleted file mode 100755 index 689690b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Filter } from './ActiveFilter'; -import FilterItem from './FilterItem'; -import FilterizrOptions from './FilterizrOptions/FilterizrOptions'; -export default class FilterItems { - private filterItems; - private options; - constructor(filterItems: FilterItem[], options: FilterizrOptions); - readonly length: number; - get(): FilterItem[]; - getItem(index: number): FilterItem; - set(filterItems: FilterItem[]): void; - destroy(): void; - updateTransitionStyle(): void; - updateDimensions(): void; - push(filterItem: FilterItem): number; - getFiltered(filter: Filter): FilterItem[]; - getFilteredOut(filter: Filter): FilterItem[]; - getSorted(sortAttr?: string, sortOrder?: 'asc' | 'desc'): FilterItem[]; - getSearched(searchTerm: string): FilterItem[]; - getShuffled(): FilterItem[]; - private shouldBeFiltered; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/FilterItems.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/FilterItems.d.ts deleted file mode 100755 index 97616f2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/FilterItems.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import StyledFilterItems from './StyledFilterItems'; -import { Filter } from '../types'; -import FilterItem from '../FilterItem'; -import FilterizrOptions from '../FilterizrOptions/FilterizrOptions'; -import { Destructible, Styleable } from '../types/interfaces'; -export default class FilterItems implements Destructible, Styleable { - private filterItems; - private styledFilterItems; - private options; - constructor(filterItems: FilterItem[], options: FilterizrOptions); - readonly styles: StyledFilterItems; - readonly length: number; - getItem(index: number): FilterItem; - destroy(): void; - push(filterItem: FilterItem): number; - remove(node: HTMLElement): void; - getFiltered(filter: Filter): FilterItem[]; - getFilteredOut(filter: Filter): FilterItem[]; - sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void; - shuffle(): void; - private search; - private shouldBeFiltered; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/StyledFilterItems.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/StyledFilterItems.d.ts deleted file mode 100755 index c44f46e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/StyledFilterItems.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import StyledFilterizrElements from '../StyledFilterizrElements'; -import FilterItem from '../FilterItem/FilterItem'; -export default class StyledFilterItems extends StyledFilterizrElements { - private _filterItems; - constructor(elements: FilterItem[]); - removeWidth(): void; - updateWidth(): void; - updateTransitionStyle(): void; - disableTransitions(): void; - enableTransitions(): Promise; - updateWidthWithTransitionsDisabled(): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/index.d.ts deleted file mode 100755 index e091bad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterItems/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './FilterItems'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr.d.ts deleted file mode 100755 index 6272efa..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import FilterizrOptions from './FilterizrOptions/FilterizrOptions'; -import FilterContainer from './FilterContainer'; -import FilterItem from './FilterItem'; -import { Filter } from './ActiveFilter'; -import { RawOptions } from './FilterizrOptions/defaultOptions'; -export default class Filterizr { - /** - * Main Filterizr classes exported as static members - */ - static FilterContainer: typeof FilterContainer; - static FilterItem: typeof FilterItem; - static defaultOptions: RawOptions; - /** - * Static method that receives the jQuery object and extends - * its prototype with a .filterizr method. - */ - static installAsJQueryPlugin: Function; - options: FilterizrOptions; - private browserWindow; - private filterContainer; - private filterControls?; - private filterizrState; - constructor(selectorOrNode?: string | HTMLElement, userOptions?: RawOptions); - private readonly filterItems; - /** - * Filters the items in the grid by a category - * @param category by which to filter - */ - filter(category: Filter): void; - destroy(): void; - /** - * Inserts a new FilterItem in the Filterizr grid - * @param node DOM node to append - */ - insertItem(node: HTMLElement): void; - /** - * Sorts the FilterItems in the grid - * @param sortAttr the attribute by which to perform the sort - * @param sortOrder ascending or descending - */ - sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void; - /** - * Searches through the FilterItems for a given string and adds an additional filter layer. - * @param searchTerm the term for which to search - */ - search(searchTerm?: string): void; - /** - * Shuffles the FilterItems in the grid, making sure their positions have changed. - */ - shuffle(): void; - /** - * Updates the perferences of the users for rendering the Filterizr grid, - * additionally performs error checking on the new options passed. - * @param newOptions to override the defaults. - */ - setOptions(newOptions: RawOptions): void; - /** - * Performs multifiltering with AND/OR logic. - * @param toggledFilter the filter to toggle - */ - toggleFilter(toggledFilter: string): void; - private render; - private onTransitionEndCallback; - private rebindFilterContainerEvents; - private bindEvents; - /** - * If it contains images it makes use of the imagesloaded npm package - * to trigger the first render after the images have finished loading - * in the DOM. Otherwise, overlapping can occur if the images do not - * have the height attribute explicitly set on them. - * - * In case the grid contains no images, then a simple render is performed. - */ - private renderWithImagesLoaded; - private updateDimensionsAndRerender; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/Filterizr.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/Filterizr.d.ts deleted file mode 100755 index a269789..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/Filterizr.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Filter } from '../types'; -import { RawOptions, Destructible } from '../types/interfaces'; -import FilterizrOptions from '../FilterizrOptions'; -import FilterContainer from '../FilterContainer'; -import FilterItem from '../FilterItem'; -export default class Filterizr implements Destructible { - /** - * Main Filterizr classes exported as static members - */ - static FilterContainer: typeof FilterContainer; - static FilterItem: typeof FilterItem; - static defaultOptions: RawOptions; - /** - * Static method that receives the jQuery object and extends - * its prototype with a .filterizr method. - */ - static installAsJQueryPlugin: Function; - options: FilterizrOptions; - private windowEventReceiver; - private filterContainer; - private filterControls?; - private imagesHaveLoaded; - private spinner?; - constructor(selectorOrNode?: string | HTMLElement, userOptions?: RawOptions); - private readonly filterItems; - /** - * Filters the items in the grid by a category - * @param category by which to filter - */ - filter(category: Filter): void; - destroy(): void; - /** - * Inserts a new FilterItem into the grid - */ - insertItem(node: HTMLElement): Promise; - /** - * Removes a FilterItem from the grid - */ - removeItem(node: HTMLElement): void; - /** - * Sorts the FilterItems in the grid - * @param sortAttr the attribute by which to perform the sort - * @param sortOrder ascending or descending - */ - sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void; - /** - * Searches through the FilterItems for a given string and adds an additional filter layer. - */ - search(searchTerm?: string): void; - /** - * Shuffles the FilterItems in the grid, making sure their positions have changed. - */ - shuffle(): void; - /** - * Updates the perferences of the users for rendering the Filterizr grid, - * additionally performs error checking on the new options passed. - * @param newOptions to override the defaults. - */ - setOptions(newOptions: RawOptions): void; - /** - * Performs multifiltering with AND/OR logic. - * @param toggledFilter the filter to toggle - */ - toggleFilter(toggledFilter: string): void; - private render; - /** - * Initialization sequence of Filterizr when the grid is first loaded - */ - private initialize; - private bindEvents; - /** - * Resolves when the images of the grid have finished loading into the DOM - */ - private waitForImagesToLoad; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/index.d.ts deleted file mode 100755 index db1a35a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './Filterizr'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts deleted file mode 100755 index a731821..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function installAsJQueryPlugin($: any): void; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrElement.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrElement.d.ts deleted file mode 100755 index 62f9d2c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrElement.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Destructible, Dimensions, Resizable, Styleable } from './types/interfaces'; -import FilterizrOptions from './FilterizrOptions'; -import EventReceiver from './EventReceiver'; -import StyledFilterizrElement from './StyledFilterizrElement'; -export default abstract class FilterizrElement implements Destructible, Resizable, Styleable { - node: Element; - options: FilterizrOptions; - protected eventReceiver: EventReceiver; - constructor(node: Element, options: FilterizrOptions); - readonly dimensions: Dimensions; - destroy(): void | Promise; - trigger(eventType: string): void; - abstract readonly styles: StyledFilterizrElement; - protected abstract bindEvents(): void; - protected abstract unbindEvents(): void; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts deleted file mode 100755 index fb841ac..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { BaseOptions, RawOptions } from './../types/interfaces'; -import ActiveFilter from '../ActiveFilter'; -import { Filter } from '../types'; -export interface Options extends BaseOptions { - filter: ActiveFilter; -} -export default class FilterizrOptions { - private options; - constructor(userOptions: RawOptions); - readonly isSpinnerEnabled: boolean; - readonly areControlsEnabled: boolean; - readonly controlsSelector: string; - filter: Filter; - toggleFilter(filter: string): void; - searchTerm: string; - get(): Options; - getRaw(): RawOptions; - set(newUserOptions: RawOptions): void; - private convertToFilterizrOptions; - private convertToOptions; - private validate; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts deleted file mode 100755 index 6f9f9e3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RawOptions } from '../types/interfaces'; -declare const defaultOptions: RawOptions; -export default defaultOptions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/index.d.ts deleted file mode 100755 index ead3e32..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/FilterizrOptions/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as defaultOptions } from './defaultOptions'; -export { default } from './FilterizrOptions'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/Spinner.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/Spinner.d.ts deleted file mode 100755 index e852c13..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/Spinner.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Destructible, Styleable } from '../types/interfaces'; -import FilterizrOptions from '../FilterizrOptions'; -import FilterContainer from '../FilterContainer'; -import StyledSpinner from './StyledSpinner'; -export default class Spinner implements Destructible, Styleable { - private node; - private styledNode; - private filterContainer; - constructor(filterContainer: FilterContainer, options: FilterizrOptions); - readonly styles: StyledSpinner; - destroy(): Promise; - private initialize; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/StyledSpinner.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/StyledSpinner.d.ts deleted file mode 100755 index a69c42e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/StyledSpinner.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import StyledFilterizrElement from '../StyledFilterizrElement'; -export default class StyledSpinner extends StyledFilterizrElement { - initialize(): void; - fadeOut(): Promise; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/index.d.ts deleted file mode 100755 index f90663a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './Spinner'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/makeSpinner.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/makeSpinner.d.ts deleted file mode 100755 index b51648b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/Spinner/makeSpinner.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { SpinnerOptions } from '../types/interfaces'; -export declare function makeSpinner({ fillColor }: SpinnerOptions): HTMLElement; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElement.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElement.d.ts deleted file mode 100755 index 269a0b5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElement.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Destructible } from './types/interfaces/Destructible'; -import FilterizrOptions from './FilterizrOptions'; -export default abstract class StyledFilterizrElement implements Destructible { - protected options: FilterizrOptions; - protected node: HTMLElement; - constructor(node: HTMLElement, options: FilterizrOptions); - destroy(): void; - protected animate(targetStyles: object): Promise; - protected set(targetStyles: object): void; - protected remove(propertyName: string): void; - abstract initialize(): void | Promise; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElements.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElements.d.ts deleted file mode 100755 index 634ce35..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/StyledFilterizrElements.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export default abstract class StyledFilterizrElements { -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/animate.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/animate.d.ts deleted file mode 100755 index 2d8f854..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/animate.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -declare class Animator { - static animate(node: HTMLElement, targetStyles: object): Promise; - private static process; -} -declare const _default: typeof Animator.animate; -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/cssEasingValuesRegexp.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/cssEasingValuesRegexp.d.ts deleted file mode 100755 index f7cc5e8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/cssEasingValuesRegexp.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * A Regexp to validate potential values for the CSS easing property of transitions. - */ -export declare const cssEasingValuesRegexp: RegExp; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/filterizrState.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/filterizrState.d.ts deleted file mode 100755 index a418b0c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/filterizrState.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -interface FilterizrState { - IDLE: 'IDLE'; - FILTERING: 'FILTERING'; - SORTING: 'SORTING'; - SHUFFLING: 'SHUFFLING'; -} -/** - * Possible animation states for Filterizr - */ -export declare const FILTERIZR_STATE: FilterizrState; -export {}; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/index.d.ts deleted file mode 100755 index 5e84dc2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { FILTERIZR_STATE } from './filterizrState'; -export { LAYOUT } from './layout'; -export { cssEasingValuesRegexp } from './cssEasingValuesRegexp'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/layout.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/layout.d.ts deleted file mode 100755 index 53be33f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/config/layout.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -interface Layout { - SAME_SIZE: 'sameSize'; - SAME_HEIGHT: 'sameHeight'; - SAME_WIDTH: 'sameWidth'; - PACKED: 'packed'; - HORIZONTAL: 'horizontal'; - VERTICAL: 'vertical'; -} -/** - * Possible grid layout modes - */ -export declare const LAYOUT: Layout; -export {}; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/filterizr.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/filterizr.min.js deleted file mode 100755 index b87bf26..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/filterizr.min.js +++ /dev/null @@ -1,12 +0,0 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var r,i; -/*! - * imagesLoaded v4.1.4 - * JavaScript is all like "You images are done yet or what?" - * MIT License - */ -/*! - * imagesLoaded v4.1.4 - * JavaScript is all like "You images are done yet or what?" - * MIT License - */ -!function(o,s){"use strict";r=[n(2)],void 0===(i=function(t){return function(t,e){var n=t.jQuery,r=t.console;function i(t,e){for(var n in e)t[n]=e[n];return t}var o=Array.prototype.slice;function s(t,e,a){if(!(this instanceof s))return new s(t,e,a);var u=t;"string"==typeof t&&(u=document.querySelectorAll(t)),u?(this.elements=function(t){if(Array.isArray(t))return t;if("object"==typeof t&&"number"==typeof t.length)return o.call(t);return[t]}(u),this.options=i({},this.options),"function"==typeof e?a=e:i(this.options,e),a&&this.on("always",a),this.getImages(),n&&(this.jqDeferred=new n.Deferred),setTimeout(this.check.bind(this))):r.error("Bad element for imagesLoaded "+(u||t))}s.prototype=Object.create(e.prototype),s.prototype.options={},s.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},s.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&a[e]){for(var n=t.querySelectorAll("img"),r=0;r0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(1),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] Position[]; -export default getLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.d.ts deleted file mode 100755 index 7f753b2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Filterizr is a JavaScript library that sorts, shuffles and applies stunning - * filters over responsive galleries using CSS3 transitions and - * custom CSS effects. - * @author Yiotis Kaltsikis - * @see {@link http://yiotis.net/filterizr} - * @license MIT - */ -export { default } from './Filterizr'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.jquery.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.jquery.d.ts deleted file mode 100755 index 5f84612..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/index.jquery.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Filterizr is a JavaScript library that sorts, shuffles and applies stunning filters over - * responsive galleries using CSS3 transitions and custom CSS effects. - * - * @author Yiotis Kaltsikis - * @see {@link http://yiotis.net/filterizr} - * @license MIT - */ -import Filterizr from './Filterizr'; -export default Filterizr; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/installAsJQueryPlugin.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/installAsJQueryPlugin.d.ts deleted file mode 100755 index a731821..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/installAsJQueryPlugin.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function installAsJQueryPlugin($: any): void; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/jquery.filterizr.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/jquery.filterizr.min.js deleted file mode 100755 index b0d1ef4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/jquery.filterizr.min.js +++ /dev/null @@ -1,29 +0,0 @@ -var Filterizr=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";var r={IDLE:"IDLE",FILTERING:"FILTERING",SORTING:"SORTING",SHUFFLING:"SHUFFLING"},i={SAME_SIZE:"sameSize",SAME_HEIGHT:"sameHeight",SAME_WIDTH:"sameWidth",PACKED:"packed",HORIZONTAL:"horizontal",VERTICAL:"vertical"},o=/(^linear$)|(^ease-in-out$)|(^ease-in$)|(^ease-out$)|(^ease$)|(^step-start$)|(^step-end$)|(^steps\(\d\s*,\s*(end|start)\))$|(^cubic-bezier\((\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\))$/,s=function(t,e,n,r,i){if(void 0!==e){var o=new Error('Filterizr: expected type of option "'+t+'" to be "'+n+'", but its type is: "'+typeof e+'"'),s=!1,a=!1,u=n.includes("array");if((typeof e).match(n)?s=!0:!s&&u&&(a=Array.isArray(e)),!s&&!u)throw o;if(!s&&u&&!a)throw o;var c=function(t){return t?" For further help read here: "+t:""};if(Array.isArray(r)){var l=!1;if(r.forEach(function(t){t===e&&(l=!0)}),!l)throw new Error('Filterizr: allowed values for option "'+t+'" are: '+r.map(function(t){return'"'+t+'"'}).join(", ")+'. Value received: "'+e+'".'+c(i))}else if("string"==typeof e&&r instanceof RegExp){if(!e.match(r))throw new Error('Filterizr: invalid value "'+e+'" for option "'+t+'" received.'+c(i))}}},a=function(t,e,n){var r;return function(){var i=this,o=arguments;clearTimeout(r),r=window.setTimeout(function(){r=null,n||t.apply(i,o)},e),n&&!r&&t.apply(i,o)}},u=function(t,e){return t.length===e.length&&t.reduce(function(t,n,r){var i=n.getSortAttribute("index"),o=e[r].getSortAttribute("index");return t&&i===o},!0)};var c=function(t){return"string"==typeof t?document.querySelector(t):t};function l(t){return t&&"object"==typeof t&&!Array.isArray(t)}function f(t){for(var e,n,r=[],i=1;i0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(2),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] Position[]; -export default getHorizontalLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts deleted file mode 100755 index cdf7f5e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Position } from '../FilterItem'; -import FilterContainer from '../FilterContainer'; -/** - * Packed layout for items that can have varying width as well as varying height. - * @param filterContainer instance. - */ -declare const getPackedLayoutPositions: (filterContainer: FilterContainer) => Position[]; -export default getPackedLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts deleted file mode 100755 index a8a41cc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Position } from '../FilterItem'; -import FilterContainer from '../FilterContainer'; -/** - * Same height layout for items that have the same height, but can have varying width - * @param filterContainer instance. - */ -declare const getSameHeightLayoutPositions: (filterContainer: FilterContainer) => Position[]; -export default getSameHeightLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts deleted file mode 100755 index e562d91..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Position } from '../FilterItem'; -import FilterContainer from '../FilterContainer'; -/** - * Same size layout for items that have the same width/height - * @param filterContainer instance. - */ -declare const getSameSizeLayoutPosition: (filterContainer: FilterContainer) => Position[]; -export default getSameSizeLayoutPosition; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts deleted file mode 100755 index 1915577..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Position } from '../FilterItem'; -import FilterContainer from '../FilterContainer'; -/** - * Same width layout for items that have the same width, but can have varying height - * @param filterContainer instance. - */ -declare const getSameWidthLayoutPositions: (filterContainer: FilterContainer) => Position[]; -export default getSameWidthLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts deleted file mode 100755 index 9f9bf47..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Position } from '../FilterItem'; -import FilterContainer from '../FilterContainer'; -/** - * Vertical layout algorithm that arranges all FilterItems in one column. Their height may vary. - * @param filterizr instance. - */ -declare const getVerticalLayoutPositions: (filterContainer: FilterContainer) => Position[]; -export default getVerticalLayoutPositions; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/Packer.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/Packer.d.ts deleted file mode 100755 index 96ddc85..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/Packer.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Modified version of Jake Gordon's Bin Packing algorithm used for Filterizr's 'packed' layout - * @see {@link https://github.com/jakesgordon/bin-packing} - */ -interface PackerRoot { - x: number; - y: number; - w: number; - h?: number; - used?: boolean; - down?: PackerRoot; - right?: PackerRoot; -} -interface PackerBlock { - x?: number; - y?: number; - w?: number; - h?: number; - fit?: PackerRoot | void; -} -export default class Packer { - root: PackerRoot; - constructor(w: number); - init(w: number): void; - fit(blocks: PackerBlock[]): void; - findNode(root: PackerRoot, w: number, h: number): PackerRoot | void; - splitNode(node: PackerRoot, w: number, h: number): PackerRoot; - growDown(w: number, h: number): PackerRoot | void; -} -export {}; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/index.d.ts deleted file mode 100755 index 45ca82b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './makeLayoutPositions'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts deleted file mode 100755 index be5d96d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Horizontal layout algorithm that arranges all FilterItems in one row. Their width may vary. - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts deleted file mode 100755 index 3f79af0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ContainerLayout, Dimensions, Options } from '../types/interfaces'; -declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], { gutterPixels, layout }: Options) => ContainerLayout; -/** - * Creates the specifications of the dimensions of the - * container and items for the next render of Filterizr. - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts deleted file mode 100755 index 7a73ad3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Packed layout for items that can have varying width as well as varying height. - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts deleted file mode 100755 index 947c52b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Same height layout for items that have the same height, but can have varying width - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts deleted file mode 100755 index d8dde5d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Same size layout for items that have the same width/height - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts deleted file mode 100755 index 5c52025..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Same width layout for items that have the same width and varying height - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts deleted file mode 100755 index c630e16..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContainerLayout, Dimensions } from '../types/interfaces'; -declare const _default: (itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout; -/** - * Vertical layout algorithm that arranges all FilterItems in one column. Their height may vary. - */ -export default _default; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/index.d.ts deleted file mode 100755 index 33547eb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare type Filter = string | string[]; -export declare type FilterizrState = 'IDLE' | 'FILTERING' | 'SORTING' | 'SHUFFLING'; -export declare type Layout = 'horizontal' | 'vertical' | 'sameHeight' | 'sameWidth' | 'sameSize' | 'packed'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/BaseOptions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/BaseOptions.d.ts deleted file mode 100755 index f82907b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/BaseOptions.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { SpinnerOptions } from './SpinnerOptions'; -import { RawOptionsCallbacks } from './RawOptionsCallbacks'; -import { Layout } from '..'; -export interface BaseOptions { - animationDuration?: number; - callbacks?: RawOptionsCallbacks; - controlsSelector?: string; - delay?: number; - delayMode?: 'alternate' | 'progressive'; - easing?: string; - filterOutCss?: object; - filterInCss?: object; - gridItemsSelector?: string; - gutterPixels?: number; - layout?: Layout; - multifilterLogicalOperator?: 'or' | 'and'; - searchTerm?: string; - setupControls?: boolean; - spinner?: SpinnerOptions; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/ContainerLayout.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/ContainerLayout.d.ts deleted file mode 100755 index b979c5a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/ContainerLayout.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Position } from './Position'; -export interface ContainerLayout { - containerHeight: number; - itemsPositions: Position[]; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Destructible.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Destructible.d.ts deleted file mode 100755 index c5ba34b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Destructible.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Destructible { - destroy(): void | Promise; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dictionary.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dictionary.d.ts deleted file mode 100755 index cf55c6f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dictionary.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Dictionary { - [key: string]: any; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dimensions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dimensions.d.ts deleted file mode 100755 index 07ae5a3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Dimensions.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Dimensions { - width: number; - height: number; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Options.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Options.d.ts deleted file mode 100755 index ea92d21..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Options.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseOptions } from './BaseOptions'; -import ActiveFilter from '../../ActiveFilter'; -export interface Options extends BaseOptions { - filter: ActiveFilter; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Position.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Position.d.ts deleted file mode 100755 index 7401f9f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Position.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Position { - left: number; - top: number; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptions.d.ts deleted file mode 100755 index 4ace1a3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptions.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { BaseOptions } from './BaseOptions'; -export interface RawOptions extends BaseOptions { - filter?: string | string[]; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts deleted file mode 100755 index 076a3d3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface RawOptionsCallbacks { - onInit?: EventListener; - onFilteringStart?: EventListener; - onFilteringEnd?: EventListener; - onShufflingStart?: EventListener; - onShufflingEnd?: EventListener; - onSortingStart?: EventListener; - onSortingEnd?: EventListener; - onTransitionEnd?: EventListener; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Resizable.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Resizable.d.ts deleted file mode 100755 index 4c6aa1e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Resizable.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Resizable { - readonly dimensions: { - width: number; - height: number; - }; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts deleted file mode 100755 index 48fd8ad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Dictionary } from './Dictionary'; -export interface SpinnerOptions { - enabled?: boolean; - fillColor?: string; - styles?: Dictionary; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Styleable.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Styleable.d.ts deleted file mode 100755 index 867ead2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/Styleable.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import StyledFilterizrElement from '../../StyledFilterizrElement'; -import StyledFilterizrElements from '../../StyledFilterizrElements'; -export interface Styleable { - readonly styles: StyledFilterizrElement | StyledFilterizrElements; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/index.d.ts deleted file mode 100755 index 382a0ee..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/types/interfaces/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export { BaseOptions } from './BaseOptions'; -export { ContainerLayout } from './ContainerLayout'; -export { Destructible } from './Destructible'; -export { Dictionary } from './Dictionary'; -export { Dimensions } from './Dimensions'; -export { Options } from './Options'; -export { Position } from './Position'; -export { RawOptions } from './RawOptions'; -export { RawOptionsCallbacks } from './RawOptionsCallbacks'; -export { Resizable } from './Resizable'; -export { SpinnerOptions } from './SpinnerOptions'; -export { Styleable } from './Styleable'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils.d.ts deleted file mode 100755 index 5cf4330..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils.d.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { Dictionary } from './types/interfaces/Dictionary'; -import FilterItem from './FilterItem'; -/** - * A function to check that all elements of an array are found within another array. - * @param {Array} arr1 is the array of strings to be checked - * @param {Array} arr2 is the array of strings to check against - * @return {Boolean} whether all string of arr1 are contained in arr2 - */ -declare const allStringsOfArray1InArray2: (arr1: string[], arr2: string[]) => boolean; -export { allStringsOfArray1InArray2 }; -/** - * Given a CSS prop it will normalize the syntax for JS - * e.g. transform background-color to backgroundColor - * @param {String} cssProp prop name - * @return {String} normalized name - */ -declare const getNormalizedCssPropName: (cssProp: string) => string; -export { getNormalizedCssPropName }; -/** - * Set inline styles on an HTML node - * @param {HTMLElement} node - HTML node - * @param {Object} styles - object with styles - * @returns {undefined} - */ -declare function setStylesOnHTMLNode(node: Element, styles: any): void; -export { setStylesOnHTMLNode }; -/** - * Returns an object with value/key pairs of all data - * attributes on an HTML element, disregarding the - * two data attributes that are reserved for internal - * usage by Filterizr - * @param {Object} node - HTML node - * @returns {Object} map of data attributes / values - */ -declare function getDataAttributesOfHTMLNode(node: Element): Dictionary; -export { getDataAttributesOfHTMLNode }; -/** - * Check that a DOM element has a data-attribute present - * @param {Object} node element - * @param {String} dataAttributeName name of data attribute - * @return {Boolean} data attribute exists - */ -declare function checkDataAttributeExists(node: Element, dataAttributeName: string): boolean; -export { checkDataAttributeExists }; -/** - * A very simple function to perform a basic - * deep clone of an object. - * @param {Object} o is the object to perform the deep clone on - * @return {Object} deep clone - */ -declare const makeShallowClone: (o: any) => Dictionary; -export { makeShallowClone }; -/** - * A function to recursively merge an object, copying over all - * properties of the old object missing from the target object. - * In case a prop in is an object, the method is called recursively. - * This is a non-mutating method. - * @param {Object} old is the old object from which the missing props are copied. - * @param {Object} target is the target object with the updated values. - */ -declare const merge: (old: any, target: any) => Dictionary; -export { merge }; -/** - * A function get the intersection of two arrays. IE9+. - * @param {Array} arr1 is the first array of which to get the intersection - * @param {Array} arr2 is the second array of which to get the intersection - */ -declare const intersection: (arr1: any[], arr2: any[]) => any; -export { intersection }; -/** - * Debounce of Underscore.js - */ -declare const debounce: (func: Function, wait: number, immediate: boolean) => Function; -export { debounce }; -/** - * Fisher-Yates shuffle ES6 non-mutating implementation. - * @param {Array} array the array to shuffle - * @return {Array} shuffled array without mutating the initial array. - */ -declare const shuffle: (array: any[]) => any[]; -export { shuffle }; -/** - * Simple method to check if two arrays of FilterItems - * are sorted in the same manner or not. - * @param {Array} arr1 the first array of FilterItems - * @param {Array} arr2 the second array of FilterItems - * @return {Boolean} equality - */ -declare const filterItemArraysHaveSameSorting: (filterItemsA: FilterItem[], filterItemsB: FilterItem[]) => boolean; -export { filterItemArraysHaveSameSorting }; -/** - * Simple non-mutating sorting function for arrays of objects by a property - * @param {Array} array to sort - * @param {Function} propFn fetches the property by which to sort - * @return {Array} a new sorted array - */ -declare const sortBy: (array: any[], propFn: Function) => any[]; -export { sortBy }; -/** - * Error checking method to restrict a prop to some allowed values - * @param {String} name of the option key in the options object - * @param {String|Number|Object|Function|Array|Boolean} value of the option - * @param {String} type of the property - * @param {Array} allowed accepted values for option - * @param {String} furtherHelpLink a link to docs for further help - */ -declare const checkOptionForErrors: (name: string, value: string | number | boolean | object | Function | any[], type?: string, allowed?: RegExp | any[], furtherHelpLink?: string) => void; -export { checkOptionForErrors }; -/** - * Wrapper around document.querySelector, will function as - * an identity function if an HTML element is passed in - * @param {HTMLElement|string} nodeOrSelector - */ -declare const getHTMLElement: (selectorOrNode: string | HTMLElement) => HTMLElement; -export { getHTMLElement }; -/** - * A Regexp to validate potential values for the CSS easing property of transitions. - */ -declare const cssEasingValuesRegexp: RegExp; -export { cssEasingValuesRegexp }; -/** - * Possible animation states for Filterizr - */ -declare const FILTERIZR_STATE: { - IDLE: string; - FILTERING: string; - SORTING: string; - SHUFFLING: string; -}; -export { FILTERIZR_STATE }; -/** - * Transition end events with vendor prefixing - */ -declare const TRANSITION_END_EVENTS: string[]; -export { TRANSITION_END_EVENTS }; -/** - * A no-operation function - */ -declare const noop: () => void; -export { noop }; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts deleted file mode 100755 index d128448..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const allStringsOfArray1InArray2: (arr1: string[], arr2: string[]) => boolean; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/checkOptionForErrors.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/checkOptionForErrors.d.ts deleted file mode 100755 index 2d4f17b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/checkOptionForErrors.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Error checking method to restrict a prop to some allowed values - * @param {String} name of the option key in the options object - * @param {String|Number|Object|Function|Array|Boolean} value of the option - * @param {String} type of the property - * @param {Array} allowed accepted values for option - * @param {String} furtherHelpLink a link to docs for further help - */ -export declare const checkOptionForErrors: (name: string, value: string | number | boolean | object | Function | any[], type?: string, allowed?: RegExp | any[], furtherHelpLink?: string) => void; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/debounce.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/debounce.d.ts deleted file mode 100755 index aa3795c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/debounce.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Debounce of Underscore.js - */ -export declare const debounce: (func: Function, wait: number, immediate: boolean) => Function; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts deleted file mode 100755 index a6ebfc6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import FilterItem from '../FilterItem'; -/** - * Simple method to check if two arrays of FilterItems - * are sorted in the same manner or not. - * @param {Array} arr1 the first array of FilterItems - * @param {Array} arr2 the second array of FilterItems - * @return {Boolean} equality - */ -export declare const filterItemArraysHaveSameSorting: (filterItemsA: FilterItem[], filterItemsB: FilterItem[]) => boolean; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts deleted file mode 100755 index 1b2d4d1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Dictionary } from '../types/interfaces/Dictionary'; -export declare function getDataAttributesOfHTMLNode(node: Element): Dictionary; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getHTMLElement.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getHTMLElement.d.ts deleted file mode 100755 index 099a09b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/getHTMLElement.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Wrapper around document.querySelector, will function as - * an identity function if an HTML element is passed in - * @param {HTMLElement|string} nodeOrSelector - */ -export declare const getHTMLElement: (selectorOrNode: string | HTMLElement) => HTMLElement; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/index.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/index.d.ts deleted file mode 100755 index 62ca737..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/index.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export { allStringsOfArray1InArray2 } from './allStringsOfArray1InArray2'; -export { checkOptionForErrors } from './checkOptionForErrors'; -export { debounce } from './debounce'; -export { filterItemArraysHaveSameSorting, } from './filterItemArraysHaveSameSorting'; -export { getDataAttributesOfHTMLNode } from './getDataAttributesOfHTMLNode'; -export { getHTMLElement } from './getHTMLElement'; -export { intersection } from './intersection'; -export { merge } from './merge'; -export { noop } from './noop'; -export { setStyles } from './setStyles'; -export { shuffle } from './shuffle'; -export { sortBy } from './sortBy'; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/intersection.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/intersection.d.ts deleted file mode 100755 index 70b6c98..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/intersection.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * A function get the intersection of two arrays. IE9+. - */ -export declare const intersection: (arr1: any[], arr2: any[]) => any[]; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/merge.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/merge.d.ts deleted file mode 100755 index 00f19f2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/merge.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Dictionary } from '../types/interfaces/Dictionary'; -/** - * Deep merge two objects. - */ -export declare function merge(target: Dictionary, ...sources: Dictionary[]): Dictionary; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/noop.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/noop.d.ts deleted file mode 100755 index ce943ff..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/noop.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * A no-operation function - */ -export declare const noop: () => void; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/setStyles.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/setStyles.d.ts deleted file mode 100755 index bc91f31..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/setStyles.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Set inline styles on an HTML node - * @param {HTMLElement} node - HTML node - * @param {Object} styles - object with styles - * @returns {undefined} - */ -export declare function setStyles(node: Element, styles: any): void; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/shuffle.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/shuffle.d.ts deleted file mode 100755 index 9d17417..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/shuffle.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Fisher-Yates shuffle ES6 non-mutating implementation. - * @param {Array} array the array to shuffle - * @return {Array} shuffled array without mutating the initial array. - */ -export declare const shuffle: (array: any[]) => any[]; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/sortBy.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/sortBy.d.ts deleted file mode 100755 index 44de509..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/utils/sortBy.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Simple non-mutating sorting function for arrays of objects by a property - * @param {Array} array to sort - * @param {Function} propFn fetches the property by which to sort - * @return {Array} a new sorted array - */ -export declare const sortBy: (array: any[], propFn: Function) => any[]; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/vanilla.filterizr.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/vanilla.filterizr.min.js deleted file mode 100755 index fb6abad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/filterizr/vanilla.filterizr.min.js +++ /dev/null @@ -1,12 +0,0 @@ -var Filterizr=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e,n){"use strict";var r={IDLE:"IDLE",FILTERING:"FILTERING",SORTING:"SORTING",SHUFFLING:"SHUFFLING"},i={SAME_SIZE:"sameSize",SAME_HEIGHT:"sameHeight",SAME_WIDTH:"sameWidth",PACKED:"packed",HORIZONTAL:"horizontal",VERTICAL:"vertical"},o=/(^linear$)|(^ease-in-out$)|(^ease-in$)|(^ease-out$)|(^ease$)|(^step-start$)|(^step-end$)|(^steps\(\d\s*,\s*(end|start)\))$|(^cubic-bezier\((\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\))$/,s=function(t,e,n,r,i){if(void 0!==e){var o=new Error('Filterizr: expected type of option "'+t+'" to be "'+n+'", but its type is: "'+typeof e+'"'),s=!1,a=!1,u=n.includes("array");if((typeof e).match(n)?s=!0:!s&&u&&(a=Array.isArray(e)),!s&&!u)throw o;if(!s&&u&&!a)throw o;var c=function(t){return t?" For further help read here: "+t:""};if(Array.isArray(r)){var l=!1;if(r.forEach(function(t){t===e&&(l=!0)}),!l)throw new Error('Filterizr: allowed values for option "'+t+'" are: '+r.map(function(t){return'"'+t+'"'}).join(", ")+'. Value received: "'+e+'".'+c(i))}else if("string"==typeof e&&r instanceof RegExp){if(!e.match(r))throw new Error('Filterizr: invalid value "'+e+'" for option "'+t+'" received.'+c(i))}}},a=function(t,e,n){var r;return function(){var i=this,o=arguments;clearTimeout(r),r=window.setTimeout(function(){r=null,n||t.apply(i,o)},e),n&&!r&&t.apply(i,o)}},u=function(t,e){return t.length===e.length&&t.reduce(function(t,n,r){var i=n.getSortAttribute("index"),o=e[r].getSortAttribute("index");return t&&i===o},!0)};var c=function(t){return"string"==typeof t?document.querySelector(t):t};function l(t){return t&&"object"==typeof t&&!Array.isArray(t)}function f(t){for(var e,n,r=[],i=1;i0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(2),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ae.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ae.svg deleted file mode 100644 index 739c5d4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ae.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/af.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/af.svg deleted file mode 100644 index 90c34b8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/af.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ag.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ag.svg deleted file mode 100644 index d0b2a83..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ag.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ai.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ai.svg deleted file mode 100644 index ff5d32c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ai.svg +++ /dev/null @@ -1,767 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/al.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/al.svg deleted file mode 100644 index 75995ec..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/al.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/am.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/am.svg deleted file mode 100644 index 1198be0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/am.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ao.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ao.svg deleted file mode 100644 index a5a25bf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ao.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aq.svg deleted file mode 100644 index edb4bc7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aq.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ar.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ar.svg deleted file mode 100644 index 1730eca..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ar.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/as.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/as.svg deleted file mode 100644 index b8d8162..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/as.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/at.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/at.svg deleted file mode 100644 index 649d6ef..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/at.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/au.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/au.svg deleted file mode 100644 index a199c5d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/au.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aw.svg deleted file mode 100644 index 248a08d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/aw.svg +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ax.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ax.svg deleted file mode 100644 index cdeb07e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ax.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/az.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/az.svg deleted file mode 100644 index 0119e1a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/az.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ba.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ba.svg deleted file mode 100644 index 5b92b0a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ba.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bb.svg deleted file mode 100644 index 9d62784..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bb.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bd.svg deleted file mode 100644 index 4cb38cf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bd.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/be.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/be.svg deleted file mode 100644 index 01496c3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/be.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bf.svg deleted file mode 100644 index a3c7c44..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bg.svg deleted file mode 100644 index 5abe67f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bg.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bh.svg deleted file mode 100644 index 2812134..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bh.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bi.svg deleted file mode 100644 index cc11dcf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bi.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bj.svg deleted file mode 100644 index 07c4c11..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bj.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bl.svg deleted file mode 100644 index 0fa74e1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bl.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bm.svg deleted file mode 100644 index a7057d2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bm.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bn.svg deleted file mode 100644 index 2e93aea..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bn.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bo.svg deleted file mode 100644 index 3e51a92..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bo.svg +++ /dev/null @@ -1,678 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bq.svg deleted file mode 100644 index cc872ef..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bq.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/br.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/br.svg deleted file mode 100644 index 8353e82..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/br.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bs.svg deleted file mode 100644 index decdebb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bs.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bt.svg deleted file mode 100644 index 3bbbfaa..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bt.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bv.svg deleted file mode 100644 index 01c9ee1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bv.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bw.svg deleted file mode 100644 index 0bc5d3d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bw.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/by.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/by.svg deleted file mode 100644 index 73e14f7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/by.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bz.svg deleted file mode 100644 index 0e9a27c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/bz.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ca.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ca.svg deleted file mode 100644 index 6882f6d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ca.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cc.svg deleted file mode 100644 index dd6e200..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cc.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cd.svg deleted file mode 100644 index 5da2a96..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cf.svg deleted file mode 100644 index e924621..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cf.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cg.svg deleted file mode 100644 index a52ba7e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cg.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ch.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ch.svg deleted file mode 100644 index 773cdc8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ch.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ci.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ci.svg deleted file mode 100644 index bd1e3f4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ci.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ck.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ck.svg deleted file mode 100644 index b7c2f37..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ck.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cl.svg deleted file mode 100644 index b808896..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cl.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cm.svg deleted file mode 100644 index 08b710b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cm.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cn.svg deleted file mode 100644 index 7873c1b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cn.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/co.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/co.svg deleted file mode 100644 index 18d1c5f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/co.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cr.svg deleted file mode 100644 index a60a6dd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cr.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cu.svg deleted file mode 100644 index 3968176..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cu.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cv.svg deleted file mode 100644 index a8311b2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cv.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cw.svg deleted file mode 100644 index d7ba218..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cx.svg deleted file mode 100644 index ef82c45..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cx.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cy.svg deleted file mode 100644 index ba2b0f8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cz.svg deleted file mode 100644 index 898d0e9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/cz.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/de.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/de.svg deleted file mode 100644 index b9ea8a6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/de.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dj.svg deleted file mode 100644 index 3f6b2e4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dj.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dk.svg deleted file mode 100644 index 51ff69f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dm.svg deleted file mode 100644 index 405a4b6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dm.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/do.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/do.svg deleted file mode 100644 index 03d3f35..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/do.svg +++ /dev/null @@ -1,6745 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dz.svg deleted file mode 100644 index 37df0c8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/dz.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ec.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ec.svg deleted file mode 100644 index 65fd0ba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ec.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ee.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ee.svg deleted file mode 100644 index fbc9e33..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ee.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eg.svg deleted file mode 100644 index 2965b6a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eg.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eh.svg deleted file mode 100644 index 4c3feba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eh.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/er.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/er.svg deleted file mode 100644 index 8634334..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/er.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es-ct.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es-ct.svg deleted file mode 100644 index ddb67b7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es-ct.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es.svg deleted file mode 100644 index f341ada..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/es.svg +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/et.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/et.svg deleted file mode 100644 index 8b02f6b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/et.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eu.svg deleted file mode 100644 index b031d2d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/eu.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fi.svg deleted file mode 100644 index aff1304..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fi.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fj.svg deleted file mode 100644 index e9148fe..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fj.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fk.svg deleted file mode 100644 index 7b4a530..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fk.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fm.svg deleted file mode 100644 index 791fde9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fm.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fo.svg deleted file mode 100644 index b28915c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fr.svg deleted file mode 100644 index f8e3ca0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/fr.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ga.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ga.svg deleted file mode 100644 index 16c81b3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ga.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-eng.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-eng.svg deleted file mode 100644 index 18026d2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-eng.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-nir.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-nir.svg deleted file mode 100644 index 6d8a3a3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-nir.svg +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-sct.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-sct.svg deleted file mode 100644 index 6987b08..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-sct.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-wls.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-wls.svg deleted file mode 100644 index 3931a17..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-wls.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb.svg deleted file mode 100644 index 07e6a5c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gb.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gd.svg deleted file mode 100644 index cca37ba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gd.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ge.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ge.svg deleted file mode 100644 index 9e4ea35..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ge.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gf.svg deleted file mode 100644 index c00a576..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gg.svg deleted file mode 100644 index 2d06a9f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gg.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gh.svg deleted file mode 100644 index 4b6446d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gh.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gi.svg deleted file mode 100644 index 39f5b27..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gi.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gl.svg deleted file mode 100644 index 7a026d9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gl.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gm.svg deleted file mode 100644 index b06ab6c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gm.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gn.svg deleted file mode 100644 index 8f8855d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gn.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gp.svg deleted file mode 100644 index 0a5bdb0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gp.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gq.svg deleted file mode 100644 index 8149406..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gq.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gr.svg deleted file mode 100644 index 4bc68fc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gr.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gs.svg deleted file mode 100644 index 48f68b8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gs.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L - - - E - - - O - - - T - - - E - - - R - - - R - - - R - - - R - - - R - - - E - - - O - - - O - - - A - - - A - - - A - - - M - - - P - - - P - - - P - - - I - - - T - - - T - - - M - - - G - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gt.svg deleted file mode 100644 index 22c84fa..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gt.svg +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gu.svg deleted file mode 100644 index d6f5d53..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gu.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - G - - - U - - - A - - - M - - - - - - - - G - - - U - - - A - - - M - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gw.svg deleted file mode 100644 index 064a593..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gw.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gy.svg deleted file mode 100644 index 57eb520..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/gy.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hk.svg deleted file mode 100644 index 024c070..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hk.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hm.svg deleted file mode 100644 index 7e1f7e7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hm.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hn.svg deleted file mode 100644 index c7c4c4a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hn.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hr.svg deleted file mode 100644 index 7ea0041..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hr.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ht.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ht.svg deleted file mode 100644 index 920833a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ht.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hu.svg deleted file mode 100644 index 94bc29f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/hu.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/id.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/id.svg deleted file mode 100644 index 6d2cf09..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/id.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ie.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ie.svg deleted file mode 100644 index 60448a9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ie.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/il.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/il.svg deleted file mode 100644 index 6cb4b1c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/il.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/im.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/im.svg deleted file mode 100644 index 0f487f6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/im.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/in.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/in.svg deleted file mode 100644 index e6557cd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/in.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/io.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/io.svg deleted file mode 100644 index 4d809e0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/io.svg +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/iq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/iq.svg deleted file mode 100644 index 6b96774..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/iq.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ir.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ir.svg deleted file mode 100644 index 79f6632..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ir.svg +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/is.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/is.svg deleted file mode 100644 index 08d1e68..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/is.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/it.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/it.svg deleted file mode 100644 index 615c58f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/it.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/je.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/je.svg deleted file mode 100644 index ca3ad76..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/je.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jm.svg deleted file mode 100644 index c261da0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jm.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jo.svg deleted file mode 100644 index ab1c62a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jp.svg deleted file mode 100644 index dc7a64a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/jp.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ke.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ke.svg deleted file mode 100644 index 0b82f3a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ke.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kg.svg deleted file mode 100644 index 71ee7b8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kg.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kh.svg deleted file mode 100644 index 8c888f1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kh.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ki.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ki.svg deleted file mode 100644 index bfc5cca..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ki.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/km.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/km.svg deleted file mode 100644 index 8f842ea..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/km.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kn.svg deleted file mode 100644 index 4b2a248..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kn.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kp.svg deleted file mode 100644 index 8eda6be..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kp.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kr.svg deleted file mode 100644 index 2db51b0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kr.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kw.svg deleted file mode 100644 index 3d4047f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kw.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ky.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ky.svg deleted file mode 100644 index b4ae00a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ky.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kz.svg deleted file mode 100644 index f17bd6e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/kz.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/la.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/la.svg deleted file mode 100644 index 1e7686a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/la.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lb.svg deleted file mode 100644 index a047b0b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lb.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lc.svg deleted file mode 100644 index b13b885..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lc.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/li.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/li.svg deleted file mode 100644 index cbed5cc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/li.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lk.svg deleted file mode 100644 index 2b11215..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lk.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lr.svg deleted file mode 100644 index 0ae34e7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lr.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ls.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ls.svg deleted file mode 100644 index e71bb5b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ls.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lt.svg deleted file mode 100644 index aa96cf3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lt.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lu.svg deleted file mode 100644 index 6293671..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lu.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lv.svg deleted file mode 100644 index 5556de1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/lv.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ly.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ly.svg deleted file mode 100644 index fe0ed81..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ly.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ma.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ma.svg deleted file mode 100644 index 85c99b3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ma.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mc.svg deleted file mode 100644 index d38822d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mc.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/md.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/md.svg deleted file mode 100644 index 86b2a96..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/md.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/me.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/me.svg deleted file mode 100644 index 56a19ed..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/me.svg +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mf.svg deleted file mode 100644 index 310afce..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mg.svg deleted file mode 100644 index f0375cc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mg.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mh.svg deleted file mode 100644 index 97f3463..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mh.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mk.svg deleted file mode 100644 index da2e9a4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ml.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ml.svg deleted file mode 100644 index 1e4d989..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ml.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mm.svg deleted file mode 100644 index 5076184..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mm.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mn.svg deleted file mode 100644 index 568fda0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mn.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mo.svg deleted file mode 100644 index 3ace2fc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mp.svg deleted file mode 100644 index 54a0ede..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mp.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mq.svg deleted file mode 100644 index 7a69fb5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mq.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mr.svg deleted file mode 100644 index 7da23e5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mr.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ms.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ms.svg deleted file mode 100644 index f1d88a7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ms.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mt.svg deleted file mode 100644 index 96acc15..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mt.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mu.svg deleted file mode 100644 index 773d3d5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mu.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mv.svg deleted file mode 100644 index aa5ed53..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mv.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mw.svg deleted file mode 100644 index a9521a0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mw.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mx.svg deleted file mode 100644 index a440656..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mx.svg +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/my.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/my.svg deleted file mode 100644 index 7ebe064..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/my.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mz.svg deleted file mode 100644 index 113a205..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/mz.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/na.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/na.svg deleted file mode 100644 index b934fc1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/na.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nc.svg deleted file mode 100644 index 9235f5f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nc.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ne.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ne.svg deleted file mode 100644 index e76e44c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ne.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nf.svg deleted file mode 100644 index 2149522..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nf.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ng.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ng.svg deleted file mode 100644 index 57d65d3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ng.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ni.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ni.svg deleted file mode 100644 index 2cc7e61..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ni.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nl.svg deleted file mode 100644 index 9db233d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nl.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/no.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/no.svg deleted file mode 100644 index 08ea572..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/no.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/np.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/np.svg deleted file mode 100644 index 9788faf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/np.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nr.svg deleted file mode 100644 index 282d80f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nr.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nu.svg deleted file mode 100644 index aced440..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nu.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nz.svg deleted file mode 100644 index e426d14..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/nz.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/om.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/om.svg deleted file mode 100644 index 055d1e6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/om.svg +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pa.svg deleted file mode 100644 index 57965b9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pa.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pe.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pe.svg deleted file mode 100644 index 40b87ba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pe.svg +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pf.svg deleted file mode 100644 index 6b197bc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pf.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pg.svg deleted file mode 100644 index 7397754..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pg.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ph.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ph.svg deleted file mode 100644 index 681cf23..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ph.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pk.svg deleted file mode 100644 index 06b6022..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pk.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pl.svg deleted file mode 100644 index f7c12a1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pl.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pm.svg deleted file mode 100644 index 3d4014a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pm.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pn.svg deleted file mode 100644 index 47b0749..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pn.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pr.svg deleted file mode 100644 index 79cf4c0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pr.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ps.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ps.svg deleted file mode 100644 index 7c1ea3f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ps.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pt.svg deleted file mode 100644 index 4255150..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pt.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pw.svg deleted file mode 100644 index 83bc3f7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/pw.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/py.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/py.svg deleted file mode 100644 index 88f55e6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/py.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/qa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/qa.svg deleted file mode 100644 index 0bf30ea..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/qa.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/re.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/re.svg deleted file mode 100644 index 027c9f3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/re.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ro.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ro.svg deleted file mode 100644 index 994992a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ro.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rs.svg deleted file mode 100644 index 3270f30..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rs.svg +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ru.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ru.svg deleted file mode 100644 index d643087..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ru.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rw.svg deleted file mode 100644 index 26e41f6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/rw.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sa.svg deleted file mode 100644 index 1cc41b8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sa.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sb.svg deleted file mode 100644 index f61bafd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sb.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sc.svg deleted file mode 100644 index 65d8943..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sc.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sd.svg deleted file mode 100644 index 72a7297..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sd.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/se.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/se.svg deleted file mode 100644 index 53994a4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/se.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sg.svg deleted file mode 100644 index 1444e5b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sg.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sh.svg deleted file mode 100644 index 599a09d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sh.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/si.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/si.svg deleted file mode 100644 index 6de77ef..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/si.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sj.svg deleted file mode 100644 index f4e5829..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sj.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sk.svg deleted file mode 100644 index fd72868..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sk.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sl.svg deleted file mode 100644 index 18c76d7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sl.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sm.svg deleted file mode 100644 index 1ed18ee..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sm.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L - - - I - - - B - - - E - - - R - - - T - - - A - - - S - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sn.svg deleted file mode 100644 index fbbad5e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sn.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/so.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/so.svg deleted file mode 100644 index 96d88a9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/so.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sr.svg deleted file mode 100644 index a0ca03e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sr.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ss.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ss.svg deleted file mode 100644 index 7e6a47f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ss.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/st.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/st.svg deleted file mode 100644 index da5df29..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/st.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sv.svg deleted file mode 100644 index c082d96..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sv.svg +++ /dev/null @@ -1,599 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sx.svg deleted file mode 100644 index 5d9fadf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sx.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sy.svg deleted file mode 100644 index 904dc1f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sz.svg deleted file mode 100644 index b3009e4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/sz.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tc.svg deleted file mode 100644 index 1029615..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tc.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/td.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/td.svg deleted file mode 100644 index e3e81ce..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/td.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tf.svg deleted file mode 100644 index 2061867..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tf.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tg.svg deleted file mode 100644 index 2c1fd98..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tg.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/th.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/th.svg deleted file mode 100644 index 86850f5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/th.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tj.svg deleted file mode 100644 index 853a4a4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tj.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tk.svg deleted file mode 100644 index c5ff6b4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tl.svg deleted file mode 100644 index ec6d44b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tl.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tm.svg deleted file mode 100644 index d856424..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tm.svg +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tn.svg deleted file mode 100644 index d46a1cd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tn.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/to.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/to.svg deleted file mode 100644 index 201d6bc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/to.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tr.svg deleted file mode 100644 index 861d4ea..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tr.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tt.svg deleted file mode 100644 index 8ab3e77..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tt.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tv.svg deleted file mode 100644 index d6d1338..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tv.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tw.svg deleted file mode 100644 index 5f284fc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tz.svg deleted file mode 100644 index f993ff1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/tz.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ua.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ua.svg deleted file mode 100644 index 18ebe0d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ua.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ug.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ug.svg deleted file mode 100644 index d9be945..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ug.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/um.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/um.svg deleted file mode 100644 index 25b08ce..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/um.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/un.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/un.svg deleted file mode 100644 index 1d50ea9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/un.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/us.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/us.svg deleted file mode 100644 index 31f90c6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/us.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uy.svg deleted file mode 100644 index 0194a7c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uy.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uz.svg deleted file mode 100644 index 641af1b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/uz.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/va.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/va.svg deleted file mode 100644 index 7da6d3e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/va.svg +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vc.svg deleted file mode 100644 index ee72f78..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vc.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ve.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ve.svg deleted file mode 100644 index 205fe84..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ve.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vg.svg deleted file mode 100644 index 260acde..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vg.svg +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vi.svg deleted file mode 100644 index 2740f24..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vi.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vn.svg deleted file mode 100644 index 6b15814..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vn.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vu.svg deleted file mode 100644 index 397d30e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/vu.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/wf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/wf.svg deleted file mode 100644 index bb726a7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/wf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ws.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ws.svg deleted file mode 100644 index 155ad7b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ws.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/xk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/xk.svg deleted file mode 100644 index 69146ca..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/xk.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ye.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ye.svg deleted file mode 100644 index d49d2c4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/ye.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/yt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/yt.svg deleted file mode 100644 index 7bf3837..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/yt.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/za.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/za.svg deleted file mode 100644 index 9bae96f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/za.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zm.svg deleted file mode 100644 index 105f107..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zm.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zw.svg deleted file mode 100644 index ca5b7a2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/1x1/zw.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ad.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ad.svg deleted file mode 100644 index 7320bf2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ad.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ae.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ae.svg deleted file mode 100644 index a7bdb17..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ae.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/af.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/af.svg deleted file mode 100644 index 399c1c7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/af.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ag.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ag.svg deleted file mode 100644 index 24c4c2e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ag.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ai.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ai.svg deleted file mode 100644 index 93b9ade..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ai.svg +++ /dev/null @@ -1,767 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/al.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/al.svg deleted file mode 100644 index e831b02..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/al.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/am.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/am.svg deleted file mode 100644 index 0cd2178..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/am.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ao.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ao.svg deleted file mode 100644 index a0b6dbb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ao.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aq.svg deleted file mode 100644 index 159fa70..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aq.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ar.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ar.svg deleted file mode 100644 index 4553b08..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ar.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/as.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/as.svg deleted file mode 100644 index 3a08877..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/as.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/at.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/at.svg deleted file mode 100644 index e63fb2e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/at.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/au.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/au.svg deleted file mode 100644 index 47c7bae..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/au.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aw.svg deleted file mode 100644 index 632cdf5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/aw.svg +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ax.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ax.svg deleted file mode 100644 index 472a8cd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ax.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/az.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/az.svg deleted file mode 100644 index 4293e9f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/az.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ba.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ba.svg deleted file mode 100644 index 3860f34..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ba.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bb.svg deleted file mode 100644 index 73f5329..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bb.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bd.svg deleted file mode 100644 index 1e3433e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bd.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/be.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/be.svg deleted file mode 100644 index eaf016d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/be.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bf.svg deleted file mode 100644 index c92cce6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bg.svg deleted file mode 100644 index 15ba696..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bg.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bh.svg deleted file mode 100644 index 803df89..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bh.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bi.svg deleted file mode 100644 index 4378562..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bi.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bj.svg deleted file mode 100644 index 1721e1d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bj.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bl.svg deleted file mode 100644 index ecf6ec4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bl.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bm.svg deleted file mode 100644 index 5e2c873..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bm.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bn.svg deleted file mode 100644 index ab6678f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bn.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bo.svg deleted file mode 100644 index 0c5e2b3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bo.svg +++ /dev/null @@ -1,676 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bq.svg deleted file mode 100644 index 4b74eb4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bq.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/br.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/br.svg deleted file mode 100644 index 3252a8e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/br.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bs.svg deleted file mode 100644 index a9d8419..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bs.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bt.svg deleted file mode 100644 index f4b6e63..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bt.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bv.svg deleted file mode 100644 index cffdc32..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bv.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bw.svg deleted file mode 100644 index 3d65eda..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bw.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/by.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/by.svg deleted file mode 100644 index 2b8656d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/by.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bz.svg deleted file mode 100644 index 6824957..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/bz.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ca.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ca.svg deleted file mode 100644 index 4843fc3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ca.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cc.svg deleted file mode 100644 index 2c45698..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cc.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cd.svg deleted file mode 100644 index 739fab7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cd.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cf.svg deleted file mode 100644 index b4a2125..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cf.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cg.svg deleted file mode 100644 index 6347e42..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cg.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ch.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ch.svg deleted file mode 100644 index f5ec8d4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ch.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ci.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ci.svg deleted file mode 100644 index 2bd7104..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ci.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ck.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ck.svg deleted file mode 100644 index af4f1c4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ck.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cl.svg deleted file mode 100644 index 04756f5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cl.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cm.svg deleted file mode 100644 index b4272b7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cm.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cn.svg deleted file mode 100644 index 72080b6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cn.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/co.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/co.svg deleted file mode 100644 index 0d74127..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/co.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cr.svg deleted file mode 100644 index 133b029..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cr.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cu.svg deleted file mode 100644 index aabb414..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cu.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cv.svg deleted file mode 100644 index 408f1cf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cv.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cw.svg deleted file mode 100644 index e223a5d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cx.svg deleted file mode 100644 index f5b89b7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cx.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cy.svg deleted file mode 100644 index 3d483a1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cz.svg deleted file mode 100644 index 93528ea..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/cz.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/de.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/de.svg deleted file mode 100644 index 1acf302..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/de.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dj.svg deleted file mode 100644 index 0604f54..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dj.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dk.svg deleted file mode 100644 index ab47e0c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dm.svg deleted file mode 100644 index eb98459..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dm.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/do.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/do.svg deleted file mode 100644 index 0748834..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/do.svg +++ /dev/null @@ -1,6745 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dz.svg deleted file mode 100644 index aa4eca2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/dz.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ec.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ec.svg deleted file mode 100644 index 42fbef5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ec.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ee.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ee.svg deleted file mode 100644 index aa917bb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ee.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eg.svg deleted file mode 100644 index a755cd7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eg.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eh.svg deleted file mode 100644 index a4bef65..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eh.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/er.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/er.svg deleted file mode 100644 index 7a25798..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/er.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es-ct.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es-ct.svg deleted file mode 100644 index 9b07e7a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es-ct.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es.svg deleted file mode 100644 index b55ca98..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/es.svg +++ /dev/null @@ -1,544 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/et.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/et.svg deleted file mode 100644 index 5ac684d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/et.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eu.svg deleted file mode 100644 index b6a39f5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/eu.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fi.svg deleted file mode 100644 index c3451a4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fi.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fj.svg deleted file mode 100644 index 6aca8cd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fj.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fk.svg deleted file mode 100644 index 1a576d1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fk.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fm.svg deleted file mode 100644 index 1e641ad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fm.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fo.svg deleted file mode 100644 index ea71332..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fr.svg deleted file mode 100644 index 712c8a5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/fr.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ga.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ga.svg deleted file mode 100644 index 1f0a9ca..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ga.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-eng.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-eng.svg deleted file mode 100644 index eab52bd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-eng.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-nir.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-nir.svg deleted file mode 100644 index e043b3e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-nir.svg +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-sct.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-sct.svg deleted file mode 100644 index 169bfba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-sct.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-wls.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-wls.svg deleted file mode 100644 index 48a6420..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-wls.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb.svg deleted file mode 100644 index 132dbed..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gb.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gd.svg deleted file mode 100644 index f2254f3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gd.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ge.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ge.svg deleted file mode 100644 index cec14a0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ge.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gf.svg deleted file mode 100644 index e382883..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gg.svg deleted file mode 100644 index deb4af5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gg.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gh.svg deleted file mode 100644 index 3f97834..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gh.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gi.svg deleted file mode 100644 index 1b44fd6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gi.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gl.svg deleted file mode 100644 index 20f5c5e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gl.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gm.svg deleted file mode 100644 index 14c329d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gm.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gn.svg deleted file mode 100644 index 7841e8d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gn.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gp.svg deleted file mode 100644 index 24a8260..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gp.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gq.svg deleted file mode 100644 index 4cec1a5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gq.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gr.svg deleted file mode 100644 index 581af28..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gr.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gs.svg deleted file mode 100644 index 6833555..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gs.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L - - - E - - - O - - - T - - - E - - - R - - - R - - - R - - - R - - - R - - - E - - - O - - - O - - - A - - - A - - - A - - - M - - - P - - - P - - - P - - - I - - - T - - - T - - - M - - - G - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gt.svg deleted file mode 100644 index 75f2d96..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gt.svg +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gu.svg deleted file mode 100644 index 00e8615..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gu.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - G - - - U - - - A - - - M - - - - - - - - G - - - U - - - A - - - M - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gw.svg deleted file mode 100644 index ae17314..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gw.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gy.svg deleted file mode 100644 index e957f3e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/gy.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hk.svg deleted file mode 100644 index 127a17b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hk.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hm.svg deleted file mode 100644 index a9dda07..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hm.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hn.svg deleted file mode 100644 index 47af518..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hn.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hr.svg deleted file mode 100644 index 7b699d3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hr.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ht.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ht.svg deleted file mode 100644 index 14f67d7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ht.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hu.svg deleted file mode 100644 index 177da97..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/hu.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/id.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/id.svg deleted file mode 100644 index 0663baf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/id.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ie.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ie.svg deleted file mode 100644 index 53f3464..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ie.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/il.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/il.svg deleted file mode 100644 index f18761b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/il.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/im.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/im.svg deleted file mode 100644 index 2e63261..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/im.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/in.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/in.svg deleted file mode 100644 index 6b831bc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/in.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/io.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/io.svg deleted file mode 100644 index 2d7f8d8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/io.svg +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/iq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/iq.svg deleted file mode 100644 index ab90fd0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/iq.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ir.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ir.svg deleted file mode 100644 index 11b444c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ir.svg +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/is.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/is.svg deleted file mode 100644 index d949b1b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/is.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/it.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/it.svg deleted file mode 100644 index 5cb92aa..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/it.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/je.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/je.svg deleted file mode 100644 index 3f83716..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/je.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jm.svg deleted file mode 100644 index 535daf4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jm.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jo.svg deleted file mode 100644 index ae2bc08..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jp.svg deleted file mode 100644 index 9479103..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/jp.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ke.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ke.svg deleted file mode 100644 index c1fd2d8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ke.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kg.svg deleted file mode 100644 index 5815415..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kg.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kh.svg deleted file mode 100644 index 7cd890a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kh.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ki.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ki.svg deleted file mode 100644 index 3523f4d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ki.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/km.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/km.svg deleted file mode 100644 index cfabd68..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/km.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kn.svg deleted file mode 100644 index 1a753c0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kn.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kp.svg deleted file mode 100644 index b9a50d0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kp.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kr.svg deleted file mode 100644 index 31e0af8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kr.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kw.svg deleted file mode 100644 index f404da2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kw.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ky.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ky.svg deleted file mode 100644 index 1a2d9c9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ky.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kz.svg deleted file mode 100644 index 049d6fd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/kz.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/la.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/la.svg deleted file mode 100644 index c327457..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/la.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lb.svg deleted file mode 100644 index dbd88a7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lb.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lc.svg deleted file mode 100644 index 8ba746c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lc.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/li.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/li.svg deleted file mode 100644 index 6b4160c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/li.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lk.svg deleted file mode 100644 index 4a377f1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lk.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lr.svg deleted file mode 100644 index f27437d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lr.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ls.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ls.svg deleted file mode 100644 index 5dd5b0c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ls.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lt.svg deleted file mode 100644 index 36e30e9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lt.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lu.svg deleted file mode 100644 index bf6ca16..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lu.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lv.svg deleted file mode 100644 index efa5a32..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/lv.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ly.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ly.svg deleted file mode 100644 index d4159ad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ly.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ma.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ma.svg deleted file mode 100644 index 8de4077..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ma.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mc.svg deleted file mode 100644 index 45133dc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mc.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/md.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/md.svg deleted file mode 100644 index a86be90..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/md.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/me.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/me.svg deleted file mode 100644 index 613083f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/me.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mf.svg deleted file mode 100644 index bf46785..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mg.svg deleted file mode 100644 index 76e84fc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mg.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mh.svg deleted file mode 100644 index f74e99d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mh.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mk.svg deleted file mode 100644 index 1f1eaf6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ml.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ml.svg deleted file mode 100644 index 66da1bb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ml.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mm.svg deleted file mode 100644 index c77927e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mm.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mn.svg deleted file mode 100644 index 6c62973..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mn.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mo.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mo.svg deleted file mode 100644 index ece1a24..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mp.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mp.svg deleted file mode 100644 index 62961da..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mp.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mq.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mq.svg deleted file mode 100644 index b389d43..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mq.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mr.svg deleted file mode 100644 index b53ce61..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mr.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ms.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ms.svg deleted file mode 100644 index c539420..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ms.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mt.svg deleted file mode 100644 index 93fe67b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mt.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mu.svg deleted file mode 100644 index 102ed3b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mu.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mv.svg deleted file mode 100644 index 2525c92..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mv.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mw.svg deleted file mode 100644 index 5bd17f8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mw.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mx.svg deleted file mode 100644 index 7de1b66..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mx.svg +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/my.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/my.svg deleted file mode 100644 index a08f085..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/my.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mz.svg deleted file mode 100644 index f820a58..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/mz.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/na.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/na.svg deleted file mode 100644 index edc0a8b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/na.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nc.svg deleted file mode 100644 index 680afb9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nc.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ne.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ne.svg deleted file mode 100644 index f470907..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ne.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nf.svg deleted file mode 100644 index 46d7e8f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nf.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ng.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ng.svg deleted file mode 100644 index 42ee5ad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ng.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ni.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ni.svg deleted file mode 100644 index 24f70c1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ni.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nl.svg deleted file mode 100644 index 2026937..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nl.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/no.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/no.svg deleted file mode 100644 index 56e78e1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/no.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/np.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/np.svg deleted file mode 100644 index df24df2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/np.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nr.svg deleted file mode 100644 index f7a4feb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nr.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nu.svg deleted file mode 100644 index aace90b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nu.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nz.svg deleted file mode 100644 index b148771..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/nz.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/om.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/om.svg deleted file mode 100644 index 8ddf3e6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/om.svg +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pa.svg deleted file mode 100644 index cf758e8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pa.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pe.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pe.svg deleted file mode 100644 index 71a1be1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pe.svg +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pf.svg deleted file mode 100644 index 6cd4b09..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pf.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pg.svg deleted file mode 100644 index 5fb0cd5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pg.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ph.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ph.svg deleted file mode 100644 index a0c37d8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ph.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pk.svg deleted file mode 100644 index a91a78c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pk.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pl.svg deleted file mode 100644 index c00513a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pl.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pm.svg deleted file mode 100644 index 07ea24c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pm.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pn.svg deleted file mode 100644 index 543c019..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pn.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pr.svg deleted file mode 100644 index 041377b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pr.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ps.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ps.svg deleted file mode 100644 index 2827d2a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ps.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pt.svg deleted file mode 100644 index fa9621f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pt.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pw.svg deleted file mode 100644 index 19f42b4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/pw.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/py.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/py.svg deleted file mode 100644 index 1402520..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/py.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/qa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/qa.svg deleted file mode 100644 index 0f93a9d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/qa.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/re.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/re.svg deleted file mode 100644 index 827103b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/re.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ro.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ro.svg deleted file mode 100644 index d43c1e2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ro.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rs.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rs.svg deleted file mode 100644 index 21ba514..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rs.svg +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ru.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ru.svg deleted file mode 100644 index f56fddb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ru.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rw.svg deleted file mode 100644 index afed4e3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/rw.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sa.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sa.svg deleted file mode 100644 index b5e8798..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sa.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sb.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sb.svg deleted file mode 100644 index 49903ae..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sb.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sc.svg deleted file mode 100644 index 3229f9d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sc.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sd.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sd.svg deleted file mode 100644 index 30fe446..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sd.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/se.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/se.svg deleted file mode 100644 index 9079f31..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/se.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sg.svg deleted file mode 100644 index 6c9d024..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sg.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sh.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sh.svg deleted file mode 100644 index a768813..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sh.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/si.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/si.svg deleted file mode 100644 index c628efd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/si.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sj.svg deleted file mode 100644 index 8e5d104..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sj.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sk.svg deleted file mode 100644 index 3d9ea27..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sk.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sl.svg deleted file mode 100644 index 51e2676..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sl.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sm.svg deleted file mode 100644 index dbe605e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sm.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - L - - - I - - - B - - - E - - - R - - - T - - - A - - - S - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sn.svg deleted file mode 100644 index c06616f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sn.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/so.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/so.svg deleted file mode 100644 index ab10438..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/so.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sr.svg deleted file mode 100644 index 9a169fd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sr.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ss.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ss.svg deleted file mode 100644 index 4efa598..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ss.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/st.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/st.svg deleted file mode 100644 index a6bd218..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/st.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sv.svg deleted file mode 100644 index 24f38b4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sv.svg +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sx.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sx.svg deleted file mode 100644 index 9d30a5f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sx.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sy.svg deleted file mode 100644 index b30a3ba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sz.svg deleted file mode 100644 index ca6ec3c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/sz.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tc.svg deleted file mode 100644 index a78d1fe..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tc.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/td.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/td.svg deleted file mode 100644 index 734473e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/td.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tf.svg deleted file mode 100644 index 3913728..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tf.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tg.svg deleted file mode 100644 index 1824e0b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tg.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/th.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/th.svg deleted file mode 100644 index 66fcd8e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/th.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tj.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tj.svg deleted file mode 100644 index 92ac160..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tj.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tk.svg deleted file mode 100644 index 312e881..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tk.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tl.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tl.svg deleted file mode 100644 index 87e4731..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tl.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tm.svg deleted file mode 100644 index 9c3ccbf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tm.svg +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tn.svg deleted file mode 100644 index 048efb5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tn.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/to.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/to.svg deleted file mode 100644 index 4dd38e4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/to.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tr.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tr.svg deleted file mode 100644 index f1910ee..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tr.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tt.svg deleted file mode 100644 index 19add52..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tt.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tv.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tv.svg deleted file mode 100644 index 0b220b2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tv.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tw.svg deleted file mode 100644 index 71f6ce2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tz.svg deleted file mode 100644 index 5305034..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/tz.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ua.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ua.svg deleted file mode 100644 index a93d06d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ua.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ug.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ug.svg deleted file mode 100644 index 2945aff..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ug.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/um.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/um.svg deleted file mode 100644 index 4f74e79..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/um.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/un.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/un.svg deleted file mode 100644 index b623650..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/un.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/us.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/us.svg deleted file mode 100644 index 5b55267..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/us.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uy.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uy.svg deleted file mode 100644 index bad58e5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uy.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uz.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uz.svg deleted file mode 100644 index 3ede7f1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/uz.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/va.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/va.svg deleted file mode 100644 index 258cca9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/va.svg +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vc.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vc.svg deleted file mode 100644 index 99ba90f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vc.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ve.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ve.svg deleted file mode 100644 index 98ef473..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ve.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vg.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vg.svg deleted file mode 100644 index e73babf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vg.svg +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vi.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vi.svg deleted file mode 100644 index db0e62c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vi.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vn.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vn.svg deleted file mode 100644 index b0fcc9f..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vn.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vu.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vu.svg deleted file mode 100644 index ccdbd1e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/vu.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/wf.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/wf.svg deleted file mode 100644 index 9d43586..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/wf.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ws.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ws.svg deleted file mode 100644 index 1b3ecf4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ws.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/xk.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/xk.svg deleted file mode 100644 index 7e41b1d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/xk.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ye.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ye.svg deleted file mode 100644 index 1befdec..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/ye.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/yt.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/yt.svg deleted file mode 100644 index f198fff..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/yt.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/za.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/za.svg deleted file mode 100644 index ef1f265..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/za.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zm.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zm.svg deleted file mode 100644 index 9a54bcc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zm.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zw.svg b/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zw.svg deleted file mode 100644 index 82e36ec..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flag-icon-css/flags/4x3/zw.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.js deleted file mode 100755 index f45bf03..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.js +++ /dev/null @@ -1,1427 +0,0 @@ -// Copyright 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -// Known Issues: -// -// * Patterns only support repeat. -// * Radial gradient are not implemented. The VML version of these look very -// different from the canvas one. -// * Clipping paths are not implemented. -// * Coordsize. The width and height attribute have higher priority than the -// width and height style values which isn't correct. -// * Painting mode isn't implemented. -// * Canvas width/height should is using content-box by default. IE in -// Quirks mode will draw the canvas using border-box. Either change your -// doctype to HTML5 -// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) -// or use Box Sizing Behavior from WebFX -// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) -// * Non uniform scaling does not correctly scale strokes. -// * Filling very large shapes (above 5000 points) is buggy. -// * Optimize. There is always room for speed improvements. - -// Only add this code if we do not already have a canvas implementation -if (!document.createElement('canvas').getContext) { - -(function() { - - // alias some functions to make (compiled) code shorter - var m = Math; - var mr = m.round; - var ms = m.sin; - var mc = m.cos; - var abs = m.abs; - var sqrt = m.sqrt; - - // this is used for sub pixel precision - var Z = 10; - var Z2 = Z / 2; - - var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; - - /** - * This funtion is assigned to the elements as element.getContext(). - * @this {HTMLElement} - * @return {CanvasRenderingContext2D_} - */ - function getContext() { - return this.context_ || - (this.context_ = new CanvasRenderingContext2D_(this)); - } - - var slice = Array.prototype.slice; - - /** - * Binds a function to an object. The returned function will always use the - * passed in {@code obj} as {@code this}. - * - * Example: - * - * g = bind(f, obj, a, b) - * g(c, d) // will do f.call(obj, a, b, c, d) - * - * @param {Function} f The function to bind the object to - * @param {Object} obj The object that should act as this when the function - * is called - * @param {*} var_args Rest arguments that will be used as the initial - * arguments when the function is called - * @return {Function} A new function that has bound this - */ - function bind(f, obj, var_args) { - var a = slice.call(arguments, 2); - return function() { - return f.apply(obj, a.concat(slice.call(arguments))); - }; - } - - function encodeHtmlAttribute(s) { - return String(s).replace(/&/g, '&').replace(/"/g, '"'); - } - - function addNamespace(doc, prefix, urn) { - if (!doc.namespaces[prefix]) { - doc.namespaces.add(prefix, urn, '#default#VML'); - } - } - - function addNamespacesAndStylesheet(doc) { - addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); - addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); - - // Setup default CSS. Only add one style sheet per document - if (!doc.styleSheets['ex_canvas_']) { - var ss = doc.createStyleSheet(); - ss.owningElement.id = 'ex_canvas_'; - ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + - // default size is 300x150 in Gecko and Opera - 'text-align:left;width:300px;height:150px}'; - } - } - - // Add namespaces and stylesheet at startup. - addNamespacesAndStylesheet(document); - - var G_vmlCanvasManager_ = { - init: function(opt_doc) { - var doc = opt_doc || document; - // Create a dummy element so that IE will allow canvas elements to be - // recognized. - doc.createElement('canvas'); - doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); - }, - - init_: function(doc) { - // find all canvas elements - var els = doc.getElementsByTagName('canvas'); - for (var i = 0; i < els.length; i++) { - this.initElement(els[i]); - } - }, - - /** - * Public initializes a canvas element so that it can be used as canvas - * element from now on. This is called automatically before the page is - * loaded but if you are creating elements using createElement you need to - * make sure this is called on the element. - * @param {HTMLElement} el The canvas element to initialize. - * @return {HTMLElement} the element that was created. - */ - initElement: function(el) { - if (!el.getContext) { - el.getContext = getContext; - - // Add namespaces and stylesheet to document of the element. - addNamespacesAndStylesheet(el.ownerDocument); - - // Remove fallback content. There is no way to hide text nodes so we - // just remove all childNodes. We could hide all elements and remove - // text nodes but who really cares about the fallback content. - el.innerHTML = ''; - - // do not use inline function because that will leak memory - el.attachEvent('onpropertychange', onPropertyChange); - el.attachEvent('onresize', onResize); - - var attrs = el.attributes; - if (attrs.width && attrs.width.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setWidth_(attrs.width.nodeValue); - el.style.width = attrs.width.nodeValue + 'px'; - } else { - el.width = el.clientWidth; - } - if (attrs.height && attrs.height.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setHeight_(attrs.height.nodeValue); - el.style.height = attrs.height.nodeValue + 'px'; - } else { - el.height = el.clientHeight; - } - //el.getContext().setCoordsize_() - } - return el; - } - }; - - function onPropertyChange(e) { - var el = e.srcElement; - - switch (e.propertyName) { - case 'width': - el.getContext().clearRect(); - el.style.width = el.attributes.width.nodeValue + 'px'; - // In IE8 this does not trigger onresize. - el.firstChild.style.width = el.clientWidth + 'px'; - break; - case 'height': - el.getContext().clearRect(); - el.style.height = el.attributes.height.nodeValue + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - break; - } - } - - function onResize(e) { - var el = e.srcElement; - if (el.firstChild) { - el.firstChild.style.width = el.clientWidth + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - } - } - - G_vmlCanvasManager_.init(); - - // precompute "00" to "FF" - var decToHex = []; - for (var i = 0; i < 16; i++) { - for (var j = 0; j < 16; j++) { - decToHex[i * 16 + j] = i.toString(16) + j.toString(16); - } - } - - function createMatrixIdentity() { - return [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1] - ]; - } - - function matrixMultiply(m1, m2) { - var result = createMatrixIdentity(); - - for (var x = 0; x < 3; x++) { - for (var y = 0; y < 3; y++) { - var sum = 0; - - for (var z = 0; z < 3; z++) { - sum += m1[x][z] * m2[z][y]; - } - - result[x][y] = sum; - } - } - return result; - } - - function copyState(o1, o2) { - o2.fillStyle = o1.fillStyle; - o2.lineCap = o1.lineCap; - o2.lineJoin = o1.lineJoin; - o2.lineWidth = o1.lineWidth; - o2.miterLimit = o1.miterLimit; - o2.shadowBlur = o1.shadowBlur; - o2.shadowColor = o1.shadowColor; - o2.shadowOffsetX = o1.shadowOffsetX; - o2.shadowOffsetY = o1.shadowOffsetY; - o2.strokeStyle = o1.strokeStyle; - o2.globalAlpha = o1.globalAlpha; - o2.font = o1.font; - o2.textAlign = o1.textAlign; - o2.textBaseline = o1.textBaseline; - o2.arcScaleX_ = o1.arcScaleX_; - o2.arcScaleY_ = o1.arcScaleY_; - o2.lineScale_ = o1.lineScale_; - } - - var colorData = { - aliceblue: '#F0F8FF', - antiquewhite: '#FAEBD7', - aquamarine: '#7FFFD4', - azure: '#F0FFFF', - beige: '#F5F5DC', - bisque: '#FFE4C4', - black: '#000000', - blanchedalmond: '#FFEBCD', - blueviolet: '#8A2BE2', - brown: '#A52A2A', - burlywood: '#DEB887', - cadetblue: '#5F9EA0', - chartreuse: '#7FFF00', - chocolate: '#D2691E', - coral: '#FF7F50', - cornflowerblue: '#6495ED', - cornsilk: '#FFF8DC', - crimson: '#DC143C', - cyan: '#00FFFF', - darkblue: '#00008B', - darkcyan: '#008B8B', - darkgoldenrod: '#B8860B', - darkgray: '#A9A9A9', - darkgreen: '#006400', - darkgrey: '#A9A9A9', - darkkhaki: '#BDB76B', - darkmagenta: '#8B008B', - darkolivegreen: '#556B2F', - darkorange: '#FF8C00', - darkorchid: '#9932CC', - darkred: '#8B0000', - darksalmon: '#E9967A', - darkseagreen: '#8FBC8F', - darkslateblue: '#483D8B', - darkslategray: '#2F4F4F', - darkslategrey: '#2F4F4F', - darkturquoise: '#00CED1', - darkviolet: '#9400D3', - deeppink: '#FF1493', - deepskyblue: '#00BFFF', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1E90FF', - firebrick: '#B22222', - floralwhite: '#FFFAF0', - forestgreen: '#228B22', - gainsboro: '#DCDCDC', - ghostwhite: '#F8F8FF', - gold: '#FFD700', - goldenrod: '#DAA520', - grey: '#808080', - greenyellow: '#ADFF2F', - honeydew: '#F0FFF0', - hotpink: '#FF69B4', - indianred: '#CD5C5C', - indigo: '#4B0082', - ivory: '#FFFFF0', - khaki: '#F0E68C', - lavender: '#E6E6FA', - lavenderblush: '#FFF0F5', - lawngreen: '#7CFC00', - lemonchiffon: '#FFFACD', - lightblue: '#ADD8E6', - lightcoral: '#F08080', - lightcyan: '#E0FFFF', - lightgoldenrodyellow: '#FAFAD2', - lightgreen: '#90EE90', - lightgrey: '#D3D3D3', - lightpink: '#FFB6C1', - lightsalmon: '#FFA07A', - lightseagreen: '#20B2AA', - lightskyblue: '#87CEFA', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#B0C4DE', - lightyellow: '#FFFFE0', - limegreen: '#32CD32', - linen: '#FAF0E6', - magenta: '#FF00FF', - mediumaquamarine: '#66CDAA', - mediumblue: '#0000CD', - mediumorchid: '#BA55D3', - mediumpurple: '#9370DB', - mediumseagreen: '#3CB371', - mediumslateblue: '#7B68EE', - mediumspringgreen: '#00FA9A', - mediumturquoise: '#48D1CC', - mediumvioletred: '#C71585', - midnightblue: '#191970', - mintcream: '#F5FFFA', - mistyrose: '#FFE4E1', - moccasin: '#FFE4B5', - navajowhite: '#FFDEAD', - oldlace: '#FDF5E6', - olivedrab: '#6B8E23', - orange: '#FFA500', - orangered: '#FF4500', - orchid: '#DA70D6', - palegoldenrod: '#EEE8AA', - palegreen: '#98FB98', - paleturquoise: '#AFEEEE', - palevioletred: '#DB7093', - papayawhip: '#FFEFD5', - peachpuff: '#FFDAB9', - peru: '#CD853F', - pink: '#FFC0CB', - plum: '#DDA0DD', - powderblue: '#B0E0E6', - rosybrown: '#BC8F8F', - royalblue: '#4169E1', - saddlebrown: '#8B4513', - salmon: '#FA8072', - sandybrown: '#F4A460', - seagreen: '#2E8B57', - seashell: '#FFF5EE', - sienna: '#A0522D', - skyblue: '#87CEEB', - slateblue: '#6A5ACD', - slategray: '#708090', - slategrey: '#708090', - snow: '#FFFAFA', - springgreen: '#00FF7F', - steelblue: '#4682B4', - tan: '#D2B48C', - thistle: '#D8BFD8', - tomato: '#FF6347', - turquoise: '#40E0D0', - violet: '#EE82EE', - wheat: '#F5DEB3', - whitesmoke: '#F5F5F5', - yellowgreen: '#9ACD32' - }; - - - function getRgbHslContent(styleString) { - var start = styleString.indexOf('(', 3); - var end = styleString.indexOf(')', start + 1); - var parts = styleString.substring(start + 1, end).split(','); - // add alpha if needed - if (parts.length != 4 || styleString.charAt(3) != 'a') { - parts[3] = 1; - } - return parts; - } - - function percent(s) { - return parseFloat(s) / 100; - } - - function clamp(v, min, max) { - return Math.min(max, Math.max(min, v)); - } - - function hslToRgb(parts){ - var r, g, b, h, s, l; - h = parseFloat(parts[0]) / 360 % 360; - if (h < 0) - h++; - s = clamp(percent(parts[1]), 0, 1); - l = clamp(percent(parts[2]), 0, 1); - if (s == 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return '#' + decToHex[Math.floor(r * 255)] + - decToHex[Math.floor(g * 255)] + - decToHex[Math.floor(b * 255)]; - } - - function hueToRgb(m1, m2, h) { - if (h < 0) - h++; - if (h > 1) - h--; - - if (6 * h < 1) - return m1 + (m2 - m1) * 6 * h; - else if (2 * h < 1) - return m2; - else if (3 * h < 2) - return m1 + (m2 - m1) * (2 / 3 - h) * 6; - else - return m1; - } - - var processStyleCache = {}; - - function processStyle(styleString) { - if (styleString in processStyleCache) { - return processStyleCache[styleString]; - } - - var str, alpha = 1; - - styleString = String(styleString); - if (styleString.charAt(0) == '#') { - str = styleString; - } else if (/^rgb/.test(styleString)) { - var parts = getRgbHslContent(styleString); - var str = '#', n; - for (var i = 0; i < 3; i++) { - if (parts[i].indexOf('%') != -1) { - n = Math.floor(percent(parts[i]) * 255); - } else { - n = +parts[i]; - } - str += decToHex[clamp(n, 0, 255)]; - } - alpha = +parts[3]; - } else if (/^hsl/.test(styleString)) { - var parts = getRgbHslContent(styleString); - str = hslToRgb(parts); - alpha = parts[3]; - } else { - str = colorData[styleString] || styleString; - } - return processStyleCache[styleString] = {color: str, alpha: alpha}; - } - - var DEFAULT_STYLE = { - style: 'normal', - variant: 'normal', - weight: 'normal', - size: 10, - family: 'sans-serif' - }; - - // Internal text style cache - var fontStyleCache = {}; - - function processFontStyle(styleString) { - if (fontStyleCache[styleString]) { - return fontStyleCache[styleString]; - } - - var el = document.createElement('div'); - var style = el.style; - try { - style.font = styleString; - } catch (ex) { - // Ignore failures to set to invalid font. - } - - return fontStyleCache[styleString] = { - style: style.fontStyle || DEFAULT_STYLE.style, - variant: style.fontVariant || DEFAULT_STYLE.variant, - weight: style.fontWeight || DEFAULT_STYLE.weight, - size: style.fontSize || DEFAULT_STYLE.size, - family: style.fontFamily || DEFAULT_STYLE.family - }; - } - - function getComputedStyle(style, element) { - var computedStyle = {}; - - for (var p in style) { - computedStyle[p] = style[p]; - } - - // Compute the size - var canvasFontSize = parseFloat(element.currentStyle.fontSize), - fontSize = parseFloat(style.size); - - if (typeof style.size == 'number') { - computedStyle.size = style.size; - } else if (style.size.indexOf('px') != -1) { - computedStyle.size = fontSize; - } else if (style.size.indexOf('em') != -1) { - computedStyle.size = canvasFontSize * fontSize; - } else if(style.size.indexOf('%') != -1) { - computedStyle.size = (canvasFontSize / 100) * fontSize; - } else if (style.size.indexOf('pt') != -1) { - computedStyle.size = fontSize / .75; - } else { - computedStyle.size = canvasFontSize; - } - - // Different scaling between normal text and VML text. This was found using - // trial and error to get the same size as non VML text. - computedStyle.size *= 0.981; - - return computedStyle; - } - - function buildStyle(style) { - return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + - style.size + 'px ' + style.family; - } - - var lineCapMap = { - 'butt': 'flat', - 'round': 'round' - }; - - function processLineCap(lineCap) { - return lineCapMap[lineCap] || 'square'; - } - - /** - * This class implements CanvasRenderingContext2D interface as described by - * the WHATWG. - * @param {HTMLElement} canvasElement The element that the 2D context should - * be associated with - */ - function CanvasRenderingContext2D_(canvasElement) { - this.m_ = createMatrixIdentity(); - - this.mStack_ = []; - this.aStack_ = []; - this.currentPath_ = []; - - // Canvas context properties - this.strokeStyle = '#000'; - this.fillStyle = '#000'; - - this.lineWidth = 1; - this.lineJoin = 'miter'; - this.lineCap = 'butt'; - this.miterLimit = Z * 1; - this.globalAlpha = 1; - this.font = '10px sans-serif'; - this.textAlign = 'left'; - this.textBaseline = 'alphabetic'; - this.canvas = canvasElement; - - var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + - canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; - var el = canvasElement.ownerDocument.createElement('div'); - el.style.cssText = cssText; - canvasElement.appendChild(el); - - var overlayEl = el.cloneNode(false); - // Use a non transparent background. - overlayEl.style.backgroundColor = 'red'; - overlayEl.style.filter = 'alpha(opacity=0)'; - canvasElement.appendChild(overlayEl); - - this.element_ = el; - this.arcScaleX_ = 1; - this.arcScaleY_ = 1; - this.lineScale_ = 1; - } - - var contextPrototype = CanvasRenderingContext2D_.prototype; - contextPrototype.clearRect = function() { - if (this.textMeasureEl_) { - this.textMeasureEl_.removeNode(true); - this.textMeasureEl_ = null; - } - this.element_.innerHTML = ''; - }; - - contextPrototype.beginPath = function() { - // TODO: Branch current matrix so that save/restore has no effect - // as per safari docs. - this.currentPath_ = []; - }; - - contextPrototype.moveTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.lineTo = function(aX, aY) { - var p = getCoords(this, aX, aY); - this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); - - this.currentX_ = p.x; - this.currentY_ = p.y; - }; - - contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, - aCP2x, aCP2y, - aX, aY) { - var p = getCoords(this, aX, aY); - var cp1 = getCoords(this, aCP1x, aCP1y); - var cp2 = getCoords(this, aCP2x, aCP2y); - bezierCurveTo(this, cp1, cp2, p); - }; - - // Helper function that takes the already fixed cordinates. - function bezierCurveTo(self, cp1, cp2, p) { - self.currentPath_.push({ - type: 'bezierCurveTo', - cp1x: cp1.x, - cp1y: cp1.y, - cp2x: cp2.x, - cp2y: cp2.y, - x: p.x, - y: p.y - }); - self.currentX_ = p.x; - self.currentY_ = p.y; - } - - contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { - // the following is lifted almost directly from - // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes - - var cp = getCoords(this, aCPx, aCPy); - var p = getCoords(this, aX, aY); - - var cp1 = { - x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), - y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) - }; - var cp2 = { - x: cp1.x + (p.x - this.currentX_) / 3.0, - y: cp1.y + (p.y - this.currentY_) / 3.0 - }; - - bezierCurveTo(this, cp1, cp2, p); - }; - - contextPrototype.arc = function(aX, aY, aRadius, - aStartAngle, aEndAngle, aClockwise) { - aRadius *= Z; - var arcType = aClockwise ? 'at' : 'wa'; - - var xStart = aX + mc(aStartAngle) * aRadius - Z2; - var yStart = aY + ms(aStartAngle) * aRadius - Z2; - - var xEnd = aX + mc(aEndAngle) * aRadius - Z2; - var yEnd = aY + ms(aEndAngle) * aRadius - Z2; - - // IE won't render arches drawn counter clockwise if xStart == xEnd. - if (xStart == xEnd && !aClockwise) { - xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something - // that can be represented in binary - } - - var p = getCoords(this, aX, aY); - var pStart = getCoords(this, xStart, yStart); - var pEnd = getCoords(this, xEnd, yEnd); - - this.currentPath_.push({type: arcType, - x: p.x, - y: p.y, - radius: aRadius, - xStart: pStart.x, - yStart: pStart.y, - xEnd: pEnd.x, - yEnd: pEnd.y}); - - }; - - contextPrototype.rect = function(aX, aY, aWidth, aHeight) { - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - }; - - contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.stroke(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { - var oldPath = this.currentPath_; - this.beginPath(); - - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.fill(); - - this.currentPath_ = oldPath; - }; - - contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { - var gradient = new CanvasGradient_('gradient'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - return gradient; - }; - - contextPrototype.createRadialGradient = function(aX0, aY0, aR0, - aX1, aY1, aR1) { - var gradient = new CanvasGradient_('gradientradial'); - gradient.x0_ = aX0; - gradient.y0_ = aY0; - gradient.r0_ = aR0; - gradient.x1_ = aX1; - gradient.y1_ = aY1; - gradient.r1_ = aR1; - return gradient; - }; - - contextPrototype.drawImage = function(image, var_args) { - var dx, dy, dw, dh, sx, sy, sw, sh; - - // to find the original width we overide the width and height - var oldRuntimeWidth = image.runtimeStyle.width; - var oldRuntimeHeight = image.runtimeStyle.height; - image.runtimeStyle.width = 'auto'; - image.runtimeStyle.height = 'auto'; - - // get the original size - var w = image.width; - var h = image.height; - - // and remove overides - image.runtimeStyle.width = oldRuntimeWidth; - image.runtimeStyle.height = oldRuntimeHeight; - - if (arguments.length == 3) { - dx = arguments[1]; - dy = arguments[2]; - sx = sy = 0; - sw = dw = w; - sh = dh = h; - } else if (arguments.length == 5) { - dx = arguments[1]; - dy = arguments[2]; - dw = arguments[3]; - dh = arguments[4]; - sx = sy = 0; - sw = w; - sh = h; - } else if (arguments.length == 9) { - sx = arguments[1]; - sy = arguments[2]; - sw = arguments[3]; - sh = arguments[4]; - dx = arguments[5]; - dy = arguments[6]; - dw = arguments[7]; - dh = arguments[8]; - } else { - throw Error('Invalid number of arguments'); - } - - var d = getCoords(this, dx, dy); - - var w2 = sw / 2; - var h2 = sh / 2; - - var vmlStr = []; - - var W = 10; - var H = 10; - - // For some reason that I've now forgotten, using divs didn't work - vmlStr.push(' ' , - '', - ''); - - this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); - }; - - contextPrototype.stroke = function(aFill) { - var W = 10; - var H = 10; - // Divide the shape into chunks if it's too long because IE has a limit - // somewhere for how long a VML shape can be. This simple division does - // not work with fills, only strokes, unfortunately. - var chunkSize = 5000; - - var min = {x: null, y: null}; - var max = {x: null, y: null}; - - for (var j = 0; j < this.currentPath_.length; j += chunkSize) { - var lineStr = []; - var lineOpen = false; - - lineStr.push(''); - - if (!aFill) { - appendStroke(this, lineStr); - } else { - appendFill(this, lineStr, min, max); - } - - lineStr.push(''); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - } - }; - - function appendStroke(ctx, lineStr) { - var a = processStyle(ctx.strokeStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - var lineWidth = ctx.lineScale_ * ctx.lineWidth; - - // VML cannot correctly render a line if the width is less than 1px. - // In that case, we dilute the color to make the line look thinner. - if (lineWidth < 1) { - opacity *= lineWidth; - } - - lineStr.push( - '' - ); - } - - function appendFill(ctx, lineStr, min, max) { - var fillStyle = ctx.fillStyle; - var arcScaleX = ctx.arcScaleX_; - var arcScaleY = ctx.arcScaleY_; - var width = max.x - min.x; - var height = max.y - min.y; - if (fillStyle instanceof CanvasGradient_) { - // TODO: Gradients transformed with the transformation matrix. - var angle = 0; - var focus = {x: 0, y: 0}; - - // additional offset - var shift = 0; - // scale factor for offset - var expansion = 1; - - if (fillStyle.type_ == 'gradient') { - var x0 = fillStyle.x0_ / arcScaleX; - var y0 = fillStyle.y0_ / arcScaleY; - var x1 = fillStyle.x1_ / arcScaleX; - var y1 = fillStyle.y1_ / arcScaleY; - var p0 = getCoords(ctx, x0, y0); - var p1 = getCoords(ctx, x1, y1); - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - angle = Math.atan2(dx, dy) * 180 / Math.PI; - - // The angle should be a non-negative number. - if (angle < 0) { - angle += 360; - } - - // Very small angles produce an unexpected result because they are - // converted to a scientific notation string. - if (angle < 1e-6) { - angle = 0; - } - } else { - var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); - focus = { - x: (p0.x - min.x) / width, - y: (p0.y - min.y) / height - }; - - width /= arcScaleX * Z; - height /= arcScaleY * Z; - var dimension = m.max(width, height); - shift = 2 * fillStyle.r0_ / dimension; - expansion = 2 * fillStyle.r1_ / dimension - shift; - } - - // We need to sort the color stops in ascending order by offset, - // otherwise IE won't interpret it correctly. - var stops = fillStyle.colors_; - stops.sort(function(cs1, cs2) { - return cs1.offset - cs2.offset; - }); - - var length = stops.length; - var color1 = stops[0].color; - var color2 = stops[length - 1].color; - var opacity1 = stops[0].alpha * ctx.globalAlpha; - var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; - - var colors = []; - for (var i = 0; i < length; i++) { - var stop = stops[i]; - colors.push(stop.offset * expansion + shift + ' ' + stop.color); - } - - // When colors attribute is used, the meanings of opacity and o:opacity2 - // are reversed. - lineStr.push(''); - } else if (fillStyle instanceof CanvasPattern_) { - if (width && height) { - var deltaLeft = -min.x; - var deltaTop = -min.y; - lineStr.push(''); - } - } else { - var a = processStyle(ctx.fillStyle); - var color = a.color; - var opacity = a.alpha * ctx.globalAlpha; - lineStr.push(''); - } - } - - contextPrototype.fill = function() { - this.stroke(true); - }; - - contextPrototype.closePath = function() { - this.currentPath_.push({type: 'close'}); - }; - - function getCoords(ctx, aX, aY) { - var m = ctx.m_; - return { - x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, - y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 - }; - } - contextPrototype.save = function() { - var o = {}; - copyState(this, o); - this.aStack_.push(o); - this.mStack_.push(this.m_); - this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); - }; - - contextPrototype.restore = function() { - if (this.aStack_.length) { - copyState(this.aStack_.pop(), this); - this.m_ = this.mStack_.pop(); - } - }; - - function matrixIsFinite(m) { - return isFinite(m[0][0]) && isFinite(m[0][1]) && - isFinite(m[1][0]) && isFinite(m[1][1]) && - isFinite(m[2][0]) && isFinite(m[2][1]); - } - - function setM(ctx, m, updateLineScale) { - if (!matrixIsFinite(m)) { - return; - } - ctx.m_ = m; - - if (updateLineScale) { - // Get the line scale. - // Determinant of this.m_ means how much the area is enlarged by the - // transformation. So its square root can be used as a scale factor - // for width. - var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; - ctx.lineScale_ = sqrt(abs(det)); - } - } - - contextPrototype.translate = function(aX, aY) { - var m1 = [ - [1, 0, 0], - [0, 1, 0], - [aX, aY, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.rotate = function(aRot) { - var c = mc(aRot); - var s = ms(aRot); - - var m1 = [ - [c, s, 0], - [-s, c, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), false); - }; - - contextPrototype.scale = function(aX, aY) { - this.arcScaleX_ *= aX; - this.arcScaleY_ *= aY; - var m1 = [ - [aX, 0, 0], - [0, aY, 0], - [0, 0, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { - var m1 = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, matrixMultiply(m1, this.m_), true); - }; - - contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { - var m = [ - [m11, m12, 0], - [m21, m22, 0], - [dx, dy, 1] - ]; - - setM(this, m, true); - }; - - /** - * The text drawing function. - * The maxWidth argument isn't taken in account, since no browser supports - * it yet. - */ - contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { - var m = this.m_, - delta = 1000, - left = 0, - right = delta, - offset = {x: 0, y: 0}, - lineStr = []; - - var fontStyle = getComputedStyle(processFontStyle(this.font), - this.element_); - - var fontStyleString = buildStyle(fontStyle); - - var elementStyle = this.element_.currentStyle; - var textAlign = this.textAlign.toLowerCase(); - switch (textAlign) { - case 'left': - case 'center': - case 'right': - break; - case 'end': - textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; - break; - case 'start': - textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; - break; - default: - textAlign = 'left'; - } - - // 1.75 is an arbitrary number, as there is no info about the text baseline - switch (this.textBaseline) { - case 'hanging': - case 'top': - offset.y = fontStyle.size / 1.75; - break; - case 'middle': - break; - default: - case null: - case 'alphabetic': - case 'ideographic': - case 'bottom': - offset.y = -fontStyle.size / 2.25; - break; - } - - switch(textAlign) { - case 'right': - left = delta; - right = 0.05; - break; - case 'center': - left = right = delta / 2; - break; - } - - var d = getCoords(this, x + offset.x, y + offset.y); - - lineStr.push(''); - - if (stroke) { - appendStroke(this, lineStr); - } else { - // TODO: Fix the min and max params. - appendFill(this, lineStr, {x: -left, y: 0}, - {x: right, y: fontStyle.size}); - } - - var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + - m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; - - var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); - - lineStr.push('', - '', - ''); - - this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); - }; - - contextPrototype.fillText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, false); - }; - - contextPrototype.strokeText = function(text, x, y, maxWidth) { - this.drawText_(text, x, y, maxWidth, true); - }; - - contextPrototype.measureText = function(text) { - if (!this.textMeasureEl_) { - var s = ''; - this.element_.insertAdjacentHTML('beforeEnd', s); - this.textMeasureEl_ = this.element_.lastChild; - } - var doc = this.element_.ownerDocument; - this.textMeasureEl_.innerHTML = ''; - this.textMeasureEl_.style.font = this.font; - // Don't use innerHTML or innerText because they allow markup/whitespace. - this.textMeasureEl_.appendChild(doc.createTextNode(text)); - return {width: this.textMeasureEl_.offsetWidth}; - }; - - /******** STUBS ********/ - contextPrototype.clip = function() { - // TODO: Implement - }; - - contextPrototype.arcTo = function() { - // TODO: Implement - }; - - contextPrototype.createPattern = function(image, repetition) { - return new CanvasPattern_(image, repetition); - }; - - // Gradient / Pattern Stubs - function CanvasGradient_(aType) { - this.type_ = aType; - this.x0_ = 0; - this.y0_ = 0; - this.r0_ = 0; - this.x1_ = 0; - this.y1_ = 0; - this.r1_ = 0; - this.colors_ = []; - } - - CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { - aColor = processStyle(aColor); - this.colors_.push({offset: aOffset, - color: aColor.color, - alpha: aColor.alpha}); - }; - - function CanvasPattern_(image, repetition) { - assertImageIsValid(image); - switch (repetition) { - case 'repeat': - case null: - case '': - this.repetition_ = 'repeat'; - break; - case 'repeat-x': - case 'repeat-y': - case 'no-repeat': - this.repetition_ = repetition; - break; - default: - throwException('SYNTAX_ERR'); - } - - this.src_ = image.src; - this.width_ = image.width; - this.height_ = image.height; - } - - function throwException(s) { - throw new DOMException_(s); - } - - function assertImageIsValid(img) { - if (!img || img.nodeType != 1 || img.tagName != 'IMG') { - throwException('TYPE_MISMATCH_ERR'); - } - if (img.readyState != 'complete') { - throwException('INVALID_STATE_ERR'); - } - } - - function DOMException_(s) { - this.code = this[s]; - this.message = s +': DOM Exception ' + this.code; - } - var p = DOMException_.prototype = new Error; - p.INDEX_SIZE_ERR = 1; - p.DOMSTRING_SIZE_ERR = 2; - p.HIERARCHY_REQUEST_ERR = 3; - p.WRONG_DOCUMENT_ERR = 4; - p.INVALID_CHARACTER_ERR = 5; - p.NO_DATA_ALLOWED_ERR = 6; - p.NO_MODIFICATION_ALLOWED_ERR = 7; - p.NOT_FOUND_ERR = 8; - p.NOT_SUPPORTED_ERR = 9; - p.INUSE_ATTRIBUTE_ERR = 10; - p.INVALID_STATE_ERR = 11; - p.SYNTAX_ERR = 12; - p.INVALID_MODIFICATION_ERR = 13; - p.NAMESPACE_ERR = 14; - p.INVALID_ACCESS_ERR = 15; - p.VALIDATION_ERR = 16; - p.TYPE_MISMATCH_ERR = 17; - - // set up externs - G_vmlCanvasManager = G_vmlCanvasManager_; - CanvasRenderingContext2D = CanvasRenderingContext2D_; - CanvasGradient = CanvasGradient_; - CanvasPattern = CanvasPattern_; - DOMException = DOMException_; -})(); - -} // if diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.min.js deleted file mode 100755 index fcf876c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/excanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&").replace(/"/g,""")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;ajan.x){an.x=m.x}if(ai.y==null||m.yan.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('','','');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()}; \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.js deleted file mode 100755 index cc1643b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.js +++ /dev/null @@ -1,180 +0,0 @@ -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ - -(function($) { - $.color = {}; - - // construct color object with some convenient chainable helpers - $.color.make = function (r, g, b, a) { - var o = {}; - o.r = r || 0; - o.g = g || 0; - o.b = b || 0; - o.a = a != null ? a : 1; - - o.add = function (c, d) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] += d; - return o.normalize(); - }; - - o.scale = function (c, f) { - for (var i = 0; i < c.length; ++i) - o[c.charAt(i)] *= f; - return o.normalize(); - }; - - o.toString = function () { - if (o.a >= 1.0) { - return "rgb("+[o.r, o.g, o.b].join(",")+")"; - } else { - return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")"; - } - }; - - o.normalize = function () { - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - o.r = clamp(0, parseInt(o.r), 255); - o.g = clamp(0, parseInt(o.g), 255); - o.b = clamp(0, parseInt(o.b), 255); - o.a = clamp(0, o.a, 1); - return o; - }; - - o.clone = function () { - return $.color.make(o.r, o.b, o.g, o.a); - }; - - return o.normalize(); - }; - - // extract CSS color property from element, going up in the DOM - // if it's "transparent" - $.color.extract = function (elem, css) { - var c; - - do { - c = elem.css(css).toLowerCase(); - // keep going until we find an element that has color, or - // we hit the body or root (have no parent) - if (c != '' && c != 'transparent') - break; - elem = elem.parent(); - } while (elem.length && !$.nodeName(elem.get(0), "body")); - - // catch Safari's way of signalling transparent - if (c == "rgba(0, 0, 0, 0)") - c = "transparent"; - - return $.color.parse(c); - }; - - // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"), - // returns color object, if parsing failed, you get black (0, 0, - // 0) out - $.color.parse = function (str) { - var res, m = $.color.make; - - // Look for rgb(num,num,num) - if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10)); - - // Look for rgba(num,num,num,num) - if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4])); - - // Look for rgb(num%,num%,num%) - if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55); - - // Look for rgba(num%,num%,num%,num) - if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)) - return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4])); - - // Look for #a0b1c2 - if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)) - return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)); - - // Look for #fff - if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)) - return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16)); - - // Otherwise, we're most likely dealing with a named color - var name = $.trim(str).toLowerCase(); - if (name == "transparent") - return m(255, 255, 255, 0); - else { - // default to black - res = lookupColors[name] || [0, 0, 0]; - return m(res[0], res[1], res[2]); - } - }; - - var lookupColors = { - aqua:[0,255,255], - azure:[240,255,255], - beige:[245,245,220], - black:[0,0,0], - blue:[0,0,255], - brown:[165,42,42], - cyan:[0,255,255], - darkblue:[0,0,139], - darkcyan:[0,139,139], - darkgrey:[169,169,169], - darkgreen:[0,100,0], - darkkhaki:[189,183,107], - darkmagenta:[139,0,139], - darkolivegreen:[85,107,47], - darkorange:[255,140,0], - darkorchid:[153,50,204], - darkred:[139,0,0], - darksalmon:[233,150,122], - darkviolet:[148,0,211], - fuchsia:[255,0,255], - gold:[255,215,0], - green:[0,128,0], - indigo:[75,0,130], - khaki:[240,230,140], - lightblue:[173,216,230], - lightcyan:[224,255,255], - lightgreen:[144,238,144], - lightgrey:[211,211,211], - lightpink:[255,182,193], - lightyellow:[255,255,224], - lime:[0,255,0], - magenta:[255,0,255], - maroon:[128,0,0], - navy:[0,0,128], - olive:[128,128,0], - orange:[255,165,0], - pink:[255,192,203], - purple:[128,0,128], - violet:[128,0,128], - red:[255,0,0], - silver:[192,192,192], - white:[255,255,255], - yellow:[255,255,0] - }; -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.min.js deleted file mode 100755 index 7f42659..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.colorhelpers.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.js deleted file mode 100755 index d94b961..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.js +++ /dev/null @@ -1,345 +0,0 @@ -/* Flot plugin for drawing all elements of a plot on the canvas. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Flot normally produces certain elements, like axis labels and the legend, using -HTML elements. This permits greater interactivity and customization, and often -looks better, due to cross-browser canvas text inconsistencies and limitations. - -It can also be desirable to render the plot entirely in canvas, particularly -if the goal is to save it as an image, or if Flot is being used in a context -where the HTML DOM does not exist, as is the case within Node.js. This plugin -switches out Flot's standard drawing operations for canvas-only replacements. - -Currently the plugin supports only axis labels, but it will eventually allow -every element of the plot to be rendered directly to canvas. - -The plugin supports these options: - -{ - canvas: boolean -} - -The "canvas" option controls whether full canvas drawing is enabled, making it -possible to toggle on and off. This is useful when a plot uses HTML text in the -browser, but needs to redraw with canvas text when exporting as an image. - -*/ - -(function($) { - - var options = { - canvas: true - }; - - var render, getTextInfo, addText; - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - function init(plot, classes) { - - var Canvas = classes.Canvas; - - // We only want to replace the functions once; the second time around - // we would just get our new function back. This whole replacing of - // prototype functions is a disaster, and needs to be changed ASAP. - - if (render == null) { - getTextInfo = Canvas.prototype.getTextInfo, - addText = Canvas.prototype.addText, - render = Canvas.prototype.render; - } - - // Finishes rendering the canvas, including overlaid text - - Canvas.prototype.render = function() { - - if (!plot.getOptions().canvas) { - return render.call(this); - } - - var context = this.context, - cache = this._textCache; - - // For each text layer, render elements marked as active - - context.save(); - context.textBaseline = "middle"; - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - var layerCache = cache[layerKey]; - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey], - updateStyles = true; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var info = styleCache[key], - positions = info.positions, - lines = info.lines; - - // Since every element at this level of the cache have the - // same font and fill styles, we can just change them once - // using the values from the first element. - - if (updateStyles) { - context.fillStyle = info.font.color; - context.font = info.font.definition; - updateStyles = false; - } - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - for (var j = 0, line; line = position.lines[j]; j++) { - context.fillText(lines[j].text, line[0], line[1]); - } - } else { - positions.splice(i--, 1); - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - } - } - - context.restore(); - }; - - // Creates (if necessary) and returns a text info object. - // - // When the canvas option is set, the object looks like this: - // - // { - // width: Width of the text's bounding box. - // height: Height of the text's bounding box. - // positions: Array of positions at which this text is drawn. - // lines: [{ - // height: Height of this line. - // widths: Width of this line. - // text: Text on this line. - // }], - // font: { - // definition: Canvas font property string. - // color: Color of the text. - // }, - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // lines: Array of [x, y] coordinates at which to draw the line. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - if (!plot.getOptions().canvas) { - return getTextInfo.call(this, layer, text, font, angle, width); - } - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number - - text = "" + text; - - // If the font is a font-spec object, generate a CSS definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - if (info == null) { - - var context = this.context; - - // If the font was provided as CSS, create a div with those - // classes and examine it to generate a canvas font spec. - - if (typeof font !== "object") { - - var element = $("
       
      ") - .css("position", "absolute") - .addClass(typeof font === "string" ? font : null) - .appendTo(this.getTextLayer(layer)); - - font = { - lineHeight: element.height(), - style: element.css("font-style"), - variant: element.css("font-variant"), - weight: element.css("font-weight"), - family: element.css("font-family"), - color: element.css("color") - }; - - // Setting line-height to 1, without units, sets it equal - // to the font-size, even if the font-size is abstract, - // like 'smaller'. This enables us to read the real size - // via the element's height, working around browsers that - // return the literal 'smaller' value. - - font.size = element.css("line-height", 1).height(); - - element.remove(); - } - - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - - // Create a new info object, initializing the dimensions to - // zero so we can count them up line-by-line. - - info = styleCache[text] = { - width: 0, - height: 0, - positions: [], - lines: [], - font: { - definition: textStyle, - color: font.color - } - }; - - context.save(); - context.font = textStyle; - - // Canvas can't handle multi-line strings; break on various - // newlines, including HTML brs, to build a list of lines. - // Note that we could split directly on regexps, but IE < 9 is - // broken; revisit when we drop IE 7/8 support. - - var lines = (text + "").replace(/
      |\r\n|\r/g, "\n").split("\n"); - - for (var i = 0; i < lines.length; ++i) { - - var lineText = lines[i], - measured = context.measureText(lineText); - - info.width = Math.max(measured.width, info.width); - info.height += font.lineHeight; - - info.lines.push({ - text: lineText, - width: measured.width, - height: font.lineHeight - }); - } - - context.restore(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - if (!plot.getOptions().canvas) { - return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); - } - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions, - lines = info.lines; - - // Text is drawn with baseline 'middle', which we need to account - // for by adding half a line's height to the y position. - - y += info.height / lines.length / 2; - - // Tweak the initial y-position to match vertical alignment - - if (valign == "middle") { - y = Math.round(y - info.height / 2); - } else if (valign == "bottom") { - y = Math.round(y - info.height); - } else { - y = Math.round(y); - } - - // FIXME: LEGACY BROWSER FIX - // AFFECTS: Opera < 12.00 - - // Offset the y coordinate, since Opera is off pretty - // consistently compared to the other browsers. - - if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { - y -= 2; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - position = { - active: true, - lines: [], - x: x, - y: y - }; - - positions.push(position); - - // Fill in the x & y positions of each line, adjusting them - // individually for horizontal alignment. - - for (var i = 0, line; line = lines[i]; i++) { - if (halign == "center") { - position.lines.push([Math.round(x - line.width / 2), y]); - } else if (halign == "right") { - position.lines.push([Math.round(x - line.width), y]); - } else { - position.lines.push([Math.round(x), y]); - } - y += line.height; - } - }; - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "canvas", - version: "1.0" - }); - -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.min.js deleted file mode 100755 index 826d217..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.canvas.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
       
      ").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
      |\r\n|\r/g,"\n").split("\n");for(var i=0;i index) - index = categories[v]; - - return index + 1; - } - - function categoriesTickGenerator(axis) { - var res = []; - for (var label in axis.categories) { - var v = axis.categories[label]; - if (v >= axis.min && v <= axis.max) - res.push([v, label]); - } - - res.sort(function (a, b) { return a[0] - b[0]; }); - - return res; - } - - function setupCategoriesForAxis(series, axis, datapoints) { - if (series[axis].options.mode != "categories") - return; - - if (!series[axis].categories) { - // parse options - var c = {}, o = series[axis].options.categories || {}; - if ($.isArray(o)) { - for (var i = 0; i < o.length; ++i) - c[o[i]] = i; - } - else { - for (var v in o) - c[v] = o[v]; - } - - series[axis].categories = c; - } - - // fix ticks - if (!series[axis].options.ticks) - series[axis].options.ticks = categoriesTickGenerator; - - transformPointsOnAxis(datapoints, axis, series[axis].categories); - } - - function transformPointsOnAxis(datapoints, axis, categories) { - // go through the points, transforming them - var points = datapoints.points, - ps = datapoints.pointsize, - format = datapoints.format, - formatColumn = axis.charAt(0), - index = getNextIndex(categories); - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - - for (var m = 0; m < ps; ++m) { - var val = points[i + m]; - - if (val == null || !format[m][formatColumn]) - continue; - - if (!(val in categories)) { - categories[val] = index; - ++index; - } - - points[i + m] = categories[val]; - } - } - } - - function processDatapoints(plot, series, datapoints) { - setupCategoriesForAxis(series, "xaxis", datapoints); - setupCategoriesForAxis(series, "yaxis", datapoints); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.processDatapoints.push(processDatapoints); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'categories', - version: '1.0' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.categories.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.categories.min.js deleted file mode 100755 index 552dd90..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.categories.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max) - continue; - if (err[e].err == 'y') - if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max) - continue; - - // prevent errorbars getting out of the canvas - var drawUpper = true, - drawLower = true; - - if (upper > minmax[1]) { - drawUpper = false; - upper = minmax[1]; - } - if (lower < minmax[0]) { - drawLower = false; - lower = minmax[0]; - } - - //sanity check, in case some inverted axis hack is applied to flot - if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) { - //swap coordinates - var tmp = lower; - lower = upper; - upper = tmp; - tmp = drawLower; - drawLower = drawUpper; - drawUpper = tmp; - tmp = minmax[0]; - minmax[0] = minmax[1]; - minmax[1] = tmp; - } - - // convert to pixels - x = ax[0].p2c(x), - y = ax[1].p2c(y), - upper = ax[e].p2c(upper); - lower = ax[e].p2c(lower); - minmax[0] = ax[e].p2c(minmax[0]); - minmax[1] = ax[e].p2c(minmax[1]); - - //same style as points by default - var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth, - sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize; - - //shadow as for points - if (lw > 0 && sw > 0) { - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax); - } - - ctx.strokeStyle = err[e].color? err[e].color: s.color; - ctx.lineWidth = lw; - //draw it - drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax); - } - } - } - } - - function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){ - - //shadow offset - y += offset; - upper += offset; - lower += offset; - - // error bar - avoid plotting over circles - if (err.err == 'x'){ - if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]); - else drawUpper = false; - if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] ); - else drawLower = false; - } - else { - if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] ); - else drawUpper = false; - if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] ); - else drawLower = false; - } - - //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps - //this is a way to get errorbars on lines without visible connecting dots - radius = err.radius != null? err.radius: radius; - - // upper cap - if (drawUpper) { - if (err.upperCap == '-'){ - if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] ); - else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] ); - } else if ($.isFunction(err.upperCap)){ - if (err.err=='x') err.upperCap(ctx, upper, y, radius); - else err.upperCap(ctx, x, upper, radius); - } - } - // lower cap - if (drawLower) { - if (err.lowerCap == '-'){ - if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] ); - else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] ); - } else if ($.isFunction(err.lowerCap)){ - if (err.err=='x') err.lowerCap(ctx, lower, y, radius); - else err.lowerCap(ctx, x, lower, radius); - } - } - } - - function drawPath(ctx, pts){ - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var p=1; p < pts.length; p++) - ctx.lineTo(pts[p][0], pts[p][1]); - ctx.stroke(); - } - - function draw(plot, ctx){ - var plotOffset = plot.getPlotOffset(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - $.each(plot.getData(), function (i, s) { - if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show)) - drawSeriesErrors(plot, ctx, s); - }); - ctx.restore(); - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.draw.push(draw); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'errorbars', - version: '1.0' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.errorbars.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.errorbars.min.js deleted file mode 100755 index a7bd042..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.errorbars.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)ax[1].max||yax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||xax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lowery+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p= allseries.length ) { - return null; - } - return allseries[ s.fillBetween ]; - } - - return null; - } - - function computeFillBottoms( plot, s, datapoints ) { - - if ( s.fillBetween == null ) { - return; - } - - var other = findBottomSeries( s, plot.getData() ); - - if ( !other ) { - return; - } - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - withbottom = ps > 2 && datapoints.format[2].y, - withsteps = withlines && s.lines.steps, - fromgap = true, - i = 0, - j = 0, - l, m; - - while ( true ) { - - if ( i >= points.length ) { - break; - } - - l = newpoints.length; - - if ( points[ i ] == null ) { - - // copy gaps - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - i += ps; - - } else if ( j >= otherpoints.length ) { - - // for lines, we can't use the rest of the points - - if ( !withlines ) { - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - } - - i += ps; - - } else if ( otherpoints[ j ] == null ) { - - // oops, got a gap - - for ( m = 0; m < ps; ++m ) { - newpoints.push( null ); - } - - fromgap = true; - j += otherps; - - } else { - - // cases where we actually got two points - - px = points[ i ]; - py = points[ i + 1 ]; - qx = otherpoints[ j ]; - qy = otherpoints[ j + 1 ]; - bottom = 0; - - if ( px === qx ) { - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - //newpoints[ l + 1 ] += qy; - bottom = qy; - - i += ps; - j += otherps; - - } else if ( px > qx ) { - - // we got past point below, might need to - // insert interpolated extra point - - if ( withlines && i > 0 && points[ i - ps ] != null ) { - intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px ); - newpoints.push( qx ); - newpoints.push( intery ); - for ( m = 2; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - bottom = qy; - } - - j += otherps; - - } else { // px < qx - - // if we come from a gap, we just skip this point - - if ( fromgap && withlines ) { - i += ps; - continue; - } - - for ( m = 0; m < ps; ++m ) { - newpoints.push( points[ i + m ] ); - } - - // we might be able to interpolate a point below, - // this can give us a better y - - if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) { - bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx ); - } - - //newpoints[l + 1] += bottom; - - i += ps; - } - - fromgap = false; - - if ( l !== newpoints.length && withbottom ) { - newpoints[ l + 2 ] = bottom; - } - } - - // maintain the line steps invariant - - if ( withsteps && l !== newpoints.length && l > 0 && - newpoints[ l ] !== null && - newpoints[ l ] !== newpoints[ l - ps ] && - newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) { - for (m = 0; m < ps; ++m) { - newpoints[ l + ps + m ] = newpoints[ l + m ]; - } - newpoints[ l + 1 ] = newpoints[ l - ps + 1 ]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push( computeFillBottoms ); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "fillbetween", - version: "1.0" - }); - -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.fillbetween.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.fillbetween.min.js deleted file mode 100755 index 5bdad05..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.fillbetween.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m').load(handler).error(handler).attr('src', url); - }); - }; - - function drawSeries(plot, ctx, series) { - var plotOffset = plot.getPlotOffset(); - - if (!series.images || !series.images.show) - return; - - var points = series.datapoints.points, - ps = series.datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var img = points[i], - x1 = points[i + 1], y1 = points[i + 2], - x2 = points[i + 3], y2 = points[i + 4], - xaxis = series.xaxis, yaxis = series.yaxis, - tmp; - - // actually we should check img.complete, but it - // appears to be a somewhat unreliable indicator in - // IE6 (false even after load event) - if (!img || img.width <= 0 || img.height <= 0) - continue; - - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - // if the anchor is at the center of the pixel, expand the - // image by 1/2 pixel in each direction - if (series.images.anchor == "center") { - tmp = 0.5 * (x2-x1) / (img.width - 1); - x1 -= tmp; - x2 += tmp; - tmp = 0.5 * (y2-y1) / (img.height - 1); - y1 -= tmp; - y2 += tmp; - } - - // clip - if (x1 == x2 || y1 == y2 || - x1 >= xaxis.max || x2 <= xaxis.min || - y1 >= yaxis.max || y2 <= yaxis.min) - continue; - - var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height; - if (x1 < xaxis.min) { - sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1); - x1 = xaxis.min; - } - - if (x2 > xaxis.max) { - sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1); - x2 = xaxis.max; - } - - if (y1 < yaxis.min) { - sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1); - y1 = yaxis.min; - } - - if (y2 > yaxis.max) { - sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1); - y2 = yaxis.max; - } - - x1 = xaxis.p2c(x1); - x2 = xaxis.p2c(x2); - y1 = yaxis.p2c(y1); - y2 = yaxis.p2c(y2); - - // the transformation may have swapped us - if (x1 > x2) { - tmp = x2; - x2 = x1; - x1 = tmp; - } - if (y1 > y2) { - tmp = y2; - y2 = y1; - y1 = tmp; - } - - tmp = ctx.globalAlpha; - ctx.globalAlpha *= series.images.alpha; - ctx.drawImage(img, - sx1, sy1, sx2 - sx1, sy2 - sy1, - x1 + plotOffset.left, y1 + plotOffset.top, - x2 - x1, y2 - y1); - ctx.globalAlpha = tmp; - } - } - - function processRawData(plot, series, data, datapoints) { - if (!series.images.show) - return; - - // format is Image, x1, y1, x2, y2 (opposite corners) - datapoints.format = [ - { required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true }, - { x: true, number: true, required: true }, - { y: true, number: true, required: true } - ]; - } - - function init(plot) { - plot.hooks.processRawData.push(processRawData); - plot.hooks.drawSeries.push(drawSeries); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'image', - version: '1.1' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.image.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.image.min.js deleted file mode 100755 index 6060024..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.image.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.js deleted file mode 100755 index 965e78e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.js +++ /dev/null @@ -1,3137 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.2. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ - -// first an inline dependency, jquery.colorhelpers.js, we inline it here -// for convenience - -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); - -// the actual Flot code -(function($) { - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - /////////////////////////////////////////////////////////////////////////// - // The Canvas object is a wrapper around an HTML5 tag. - // - // @constructor - // @param {string} cls List of classes to apply to the canvas. - // @param {element} container Element onto which to append the canvas. - // - // Requiring a container is a little iffy, but unfortunately canvas - // operations don't work unless the canvas is attached to the DOM. - - function Canvas(cls, container) { - - var element = container.children("." + cls)[0]; - - if (element == null) { - - element = document.createElement("canvas"); - element.className = cls; - - $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) - .appendTo(container); - - // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas - - if (!element.getContext) { - if (window.G_vmlCanvasManager) { - element = window.G_vmlCanvasManager.initElement(element); - } else { - throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); - } - } - } - - this.element = element; - - var context = this.context = element.getContext("2d"); - - // Determine the screen's ratio of physical to device-independent - // pixels. This is the ratio between the canvas width that the browser - // advertises and the number of pixels actually present in that space. - - // The iPhone 4, for example, has a device-independent width of 320px, - // but its screen is actually 640px wide. It therefore has a pixel - // ratio of 2, while most normal devices have a ratio of 1. - - var devicePixelRatio = window.devicePixelRatio || 1, - backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || 1; - - this.pixelRatio = devicePixelRatio / backingStoreRatio; - - // Size the canvas to match the internal dimensions of its container - - this.resize(container.width(), container.height()); - - // Collection of HTML div layers for text overlaid onto the canvas - - this.textContainer = null; - this.text = {}; - - // Cache of text fragments and metrics, so we can avoid expensively - // re-calculating them when the plot is re-rendered in a loop. - - this._textCache = {}; - } - - // Resizes the canvas to the given dimensions. - // - // @param {number} width New width of the canvas, in pixels. - // @param {number} width New height of the canvas, in pixels. - - Canvas.prototype.resize = function(width, height) { - - if (width <= 0 || height <= 0) { - throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); - } - - var element = this.element, - context = this.context, - pixelRatio = this.pixelRatio; - - // Resize the canvas, increasing its density based on the display's - // pixel ratio; basically giving it more pixels without increasing the - // size of its element, to take advantage of the fact that retina - // displays have that many more pixels in the same advertised space. - - // Resizing should reset the state (excanvas seems to be buggy though) - - if (this.width != width) { - element.width = width * pixelRatio; - element.style.width = width + "px"; - this.width = width; - } - - if (this.height != height) { - element.height = height * pixelRatio; - element.style.height = height + "px"; - this.height = height; - } - - // Save the context, so we can reset in case we get replotted. The - // restore ensure that we're really back at the initial state, and - // should be safe even if we haven't saved the initial state yet. - - context.restore(); - context.save(); - - // Scale the coordinate space to match the display density; so even though we - // may have twice as many pixels, we still want lines and other drawing to - // appear at the same size; the extra pixels will just make them crisper. - - context.scale(pixelRatio, pixelRatio); - }; - - // Clears the entire canvas area, not including any overlaid HTML text - - Canvas.prototype.clear = function() { - this.context.clearRect(0, 0, this.width, this.height); - }; - - // Finishes rendering the canvas, including managing the text overlay. - - Canvas.prototype.render = function() { - - var cache = this._textCache; - - // For each text layer, add elements marked as active that haven't - // already been rendered, and remove those that are no longer active. - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - - var layer = this.getTextLayer(layerKey), - layerCache = cache[layerKey]; - - layer.hide(); - - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var positions = styleCache[key].positions; - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - if (!position.rendered) { - layer.append(position.element); - position.rendered = true; - } - } else { - positions.splice(i--, 1); - if (position.rendered) { - position.element.detach(); - } - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - - layer.show(); - } - } - }; - - // Creates (if necessary) and returns the text overlay container. - // - // @param {string} classes String of space-separated CSS classes used to - // uniquely identify the text layer. - // @return {object} The jQuery-wrapped text-layer div. - - Canvas.prototype.getTextLayer = function(classes) { - - var layer = this.text[classes]; - - // Create the text layer if it doesn't exist - - if (layer == null) { - - // Create the text layer container, if it doesn't exist - - if (this.textContainer == null) { - this.textContainer = $("
      ") - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0, - 'font-size': "smaller", - color: "#545454" - }) - .insertAfter(this.element); - } - - layer = this.text[classes] = $("
      ") - .addClass(classes) - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - .appendTo(this.textContainer); - } - - return layer; - }; - - // Creates (if necessary) and returns a text info object. - // - // The object looks like this: - // - // { - // width: Width of the text's wrapper div. - // height: Height of the text's wrapper div. - // element: The jQuery-wrapped HTML div containing the text. - // positions: Array of positions at which this text is drawn. - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // rendered: Flag indicating whether the text is currently visible. - // element: The jQuery-wrapped HTML div containing the text. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - // - // Each position after the first receives a clone of the original element. - // - // The idea is that that the width, height, and general 'identity' of the - // text is constant no matter where it is placed; the placements are a - // secondary property. - // - // Canvas maintains a cache of recently-used text info objects; getTextInfo - // either returns the cached element or creates a new entry. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {string} text Text string to retrieve info for. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @return {object} a text info object. - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number or such - - text = "" + text; - - // If the font is a font-spec object, generate a CSS font definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - // If we can't find a matching element in our cache, create a new one - - if (info == null) { - - var element = $("
      ").html(text) - .css({ - position: "absolute", - 'max-width': width, - top: -9999 - }) - .appendTo(this.getTextLayer(layer)); - - if (typeof font === "object") { - element.css({ - font: textStyle, - color: font.color - }); - } else if (typeof font === "string") { - element.addClass(font); - } - - info = styleCache[text] = { - width: element.outerWidth(true), - height: element.outerHeight(true), - element: element, - positions: [] - }; - - element.detach(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - // - // The text isn't drawn immediately; it is marked as rendering, which will - // result in its addition to the canvas on the next render pass. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number} x X coordinate at which to draw the text. - // @param {number} y Y coordinate at which to draw the text. - // @param {string} text Text string to draw. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @param {string=} halign Horizontal alignment of the text; either "left", - // "center" or "right". - // @param {string=} valign Vertical alignment of the text; either "top", - // "middle" or "bottom". - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions; - - // Tweak the div's position to match the text's alignment - - if (halign == "center") { - x -= info.width / 2; - } else if (halign == "right") { - x -= info.width; - } - - if (valign == "middle") { - y -= info.height / 2; - } else if (valign == "bottom") { - y -= info.height; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - // For the very first position we'll re-use the original element, - // while for subsequent ones we'll clone it. - - position = { - active: true, - rendered: false, - element: positions.length ? info.element.clone() : info.element, - x: x, - y: y - }; - - positions.push(position); - - // Move the element to its final position within the container - - position.element.css({ - top: Math.round(y), - left: Math.round(x), - 'text-align': halign // In case the text wraps - }); - }; - - // Removes one or more text strings from the canvas text overlay. - // - // If no parameters are given, all text within the layer is removed. - // - // Note that the text is not immediately removed; it is simply marked as - // inactive, which will result in its removal on the next render pass. - // This avoids the performance penalty for 'clear and redraw' behavior, - // where we potentially get rid of all text on a layer, but will likely - // add back most or all of it later, as when redrawing axes, for example. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number=} x X coordinate of the text. - // @param {number=} y Y coordinate of the text. - // @param {string=} text Text string to remove. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which the text is rotated, in degrees. - // Angle is currently unused, it will be implemented in the future. - - Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { - if (text == null) { - var layerCache = this._textCache[layer]; - if (layerCache != null) { - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - var positions = styleCache[key].positions; - for (var i = 0, position; position = positions[i]; i++) { - position.active = false; - } - } - } - } - } - } - } else { - var positions = this.getTextInfo(layer, text, font, angle).positions; - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = false; - } - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The top-level container for the entire plot. - - function Plot(placeholder, data_, options_, plugins) { - // data is on the form: - // [ series1, series2 ... ] - // where series is either just the data as [ [x1, y1], [x2, y2], ... ] - // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } - - var series = [], - options = { - // the color theme used for graphs - colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], - legend: { - show: true, - noColumns: 1, // number of colums in legend table - labelFormatter: null, // fn: string -> string - labelBoxBorderColor: "#ccc", // border color for the little label boxes - container: null, // container (as jQuery object) to put legend in, null means default on top of graph - position: "ne", // position of default legend container within plot - margin: 5, // distance from grid edge to default legend container within plot - backgroundColor: null, // null means auto-detect - backgroundOpacity: 0.85, // set to 0 to avoid background - sorted: null // default to no legend sorting - }, - xaxis: { - show: null, // null = auto-detect, true = always, false = never - position: "bottom", // or "top" - mode: null, // null or "time" - font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } - color: null, // base color, labels, ticks - tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" - transform: null, // null or f: number -> number to transform axis - inverseTransform: null, // if transform is set, this should be the inverse function - min: null, // min. value to show, null means set automatically - max: null, // max. value to show, null means set automatically - autoscaleMargin: null, // margin in % to add if auto-setting min/max - ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks - tickFormatter: null, // fn: number -> string - labelWidth: null, // size of tick labels in pixels - labelHeight: null, - reserveSpace: null, // whether to reserve space even if axis isn't shown - tickLength: null, // size in pixels of ticks, or "full" for whole line - alignTicksWithAxis: null, // axis number or null for no sync - tickDecimals: null, // no. of decimals, null means auto - tickSize: null, // number or [number, "unit"] - minTickSize: null // number or [number, "unit"] - }, - yaxis: { - autoscaleMargin: 0.02, - position: "left" // or "right" - }, - xaxes: [], - yaxes: [], - series: { - points: { - show: false, - radius: 3, - lineWidth: 2, // in pixels - fill: true, - fillColor: "#ffffff", - symbol: "circle" // or callback - }, - lines: { - // we don't put in show: false so we can see - // whether lines were actively disabled - lineWidth: 2, // in pixels - fill: false, - fillColor: null, - steps: false - // Omit 'zero', so we can later default its value to - // match that of the 'fill' option. - }, - bars: { - show: false, - lineWidth: 2, // in pixels - barWidth: 1, // in units of the x axis - fill: true, - fillColor: null, - align: "left", // "left", "right", or "center" - horizontal: false, - zero: true - }, - shadowSize: 3, - highlightColor: null - }, - grid: { - show: true, - aboveData: false, - color: "#545454", // primary color used for outline and labels - backgroundColor: null, // null for transparent, else color - borderColor: null, // set if different from the grid color - tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" - margin: 0, // distance from the canvas edge to the grid - labelMargin: 5, // in pixels - axisMargin: 8, // in pixels - borderWidth: 2, // in pixels - minBorderMargin: null, // in pixels, null means taken from points radius - markings: null, // array of ranges or fn: axes -> array of ranges - markingsColor: "#f4f4f4", - markingsLineWidth: 2, - // interactive stuff - clickable: false, - hoverable: false, - autoHighlight: true, // highlight in case mouse is near - mouseActiveRadius: 10 // how far the mouse can be away to activate an item - }, - interaction: { - redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow - }, - hooks: {} - }, - surface = null, // the canvas for the plot itself - overlay = null, // canvas for interactive stuff on top of plot - eventHolder = null, // jQuery object that events should be bound to - ctx = null, octx = null, - xaxes = [], yaxes = [], - plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, - plotWidth = 0, plotHeight = 0, - hooks = { - processOptions: [], - processRawData: [], - processDatapoints: [], - processOffset: [], - drawBackground: [], - drawSeries: [], - draw: [], - bindEvents: [], - drawOverlay: [], - shutdown: [] - }, - plot = this; - - // public functions - plot.setData = setData; - plot.setupGrid = setupGrid; - plot.draw = draw; - plot.getPlaceholder = function() { return placeholder; }; - plot.getCanvas = function() { return surface.element; }; - plot.getPlotOffset = function() { return plotOffset; }; - plot.width = function () { return plotWidth; }; - plot.height = function () { return plotHeight; }; - plot.offset = function () { - var o = eventHolder.offset(); - o.left += plotOffset.left; - o.top += plotOffset.top; - return o; - }; - plot.getData = function () { return series; }; - plot.getAxes = function () { - var res = {}, i; - $.each(xaxes.concat(yaxes), function (_, axis) { - if (axis) - res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; - }); - return res; - }; - plot.getXAxes = function () { return xaxes; }; - plot.getYAxes = function () { return yaxes; }; - plot.c2p = canvasToAxisCoords; - plot.p2c = axisToCanvasCoords; - plot.getOptions = function () { return options; }; - plot.highlight = highlight; - plot.unhighlight = unhighlight; - plot.triggerRedrawOverlay = triggerRedrawOverlay; - plot.pointOffset = function(point) { - return { - left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), - top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) - }; - }; - plot.shutdown = shutdown; - plot.destroy = function () { - shutdown(); - placeholder.removeData("plot").empty(); - - series = []; - options = null; - surface = null; - overlay = null; - eventHolder = null; - ctx = null; - octx = null; - xaxes = []; - yaxes = []; - hooks = null; - highlights = []; - plot = null; - }; - plot.resize = function () { - var width = placeholder.width(), - height = placeholder.height(); - surface.resize(width, height); - overlay.resize(width, height); - }; - - // public attributes - plot.hooks = hooks; - - // initialize - initPlugins(plot); - parseOptions(options_); - setupCanvases(); - setData(data_); - setupGrid(); - draw(); - bindEvents(); - - - function executeHooks(hook, args) { - args = [plot].concat(args); - for (var i = 0; i < hook.length; ++i) - hook[i].apply(this, args); - } - - function initPlugins() { - - // References to key classes, allowing plugins to modify them - - var classes = { - Canvas: Canvas - }; - - for (var i = 0; i < plugins.length; ++i) { - var p = plugins[i]; - p.init(plot, classes); - if (p.options) - $.extend(true, options, p.options); - } - } - - function parseOptions(opts) { - - $.extend(true, options, opts); - - // $.extend merges arrays, rather than replacing them. When less - // colors are provided than the size of the default palette, we - // end up with those colors plus the remaining defaults, which is - // not expected behavior; avoid it by replacing them here. - - if (opts && opts.colors) { - options.colors = opts.colors; - } - - if (options.xaxis.color == null) - options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - if (options.yaxis.color == null) - options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility - options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; - if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility - options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; - - if (options.grid.borderColor == null) - options.grid.borderColor = options.grid.color; - if (options.grid.tickColor == null) - options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - // Fill in defaults for axis options, including any unspecified - // font-spec fields, if a font-spec was provided. - - // If no x/y axis options were provided, create one of each anyway, - // since the rest of the code assumes that they exist. - - var i, axisOptions, axisCount, - fontSize = placeholder.css("font-size"), - fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, - fontDefaults = { - style: placeholder.css("font-style"), - size: Math.round(0.8 * fontSizeDefault), - variant: placeholder.css("font-variant"), - weight: placeholder.css("font-weight"), - family: placeholder.css("font-family") - }; - - axisCount = options.xaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.xaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.xaxis, axisOptions); - options.xaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - axisCount = options.yaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.yaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.yaxis, axisOptions); - options.yaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); - } - } - } - - // backwards compatibility, to be removed in future - if (options.xaxis.noTicks && options.xaxis.ticks == null) - options.xaxis.ticks = options.xaxis.noTicks; - if (options.yaxis.noTicks && options.yaxis.ticks == null) - options.yaxis.ticks = options.yaxis.noTicks; - if (options.x2axis) { - options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); - options.xaxes[1].position = "top"; - } - if (options.y2axis) { - options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); - options.yaxes[1].position = "right"; - } - if (options.grid.coloredAreas) - options.grid.markings = options.grid.coloredAreas; - if (options.grid.coloredAreasColor) - options.grid.markingsColor = options.grid.coloredAreasColor; - if (options.lines) - $.extend(true, options.series.lines, options.lines); - if (options.points) - $.extend(true, options.series.points, options.points); - if (options.bars) - $.extend(true, options.series.bars, options.bars); - if (options.shadowSize != null) - options.series.shadowSize = options.shadowSize; - if (options.highlightColor != null) - options.series.highlightColor = options.highlightColor; - - // save options on axes for future reference - for (i = 0; i < options.xaxes.length; ++i) - getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; - for (i = 0; i < options.yaxes.length; ++i) - getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; - - // add hooks from options - for (var n in hooks) - if (options.hooks[n] && options.hooks[n].length) - hooks[n] = hooks[n].concat(options.hooks[n]); - - executeHooks(hooks.processOptions, [options]); - } - - function setData(d) { - series = parseData(d); - fillInSeriesOptions(); - processData(); - } - - function parseData(d) { - var res = []; - for (var i = 0; i < d.length; ++i) { - var s = $.extend(true, {}, options.series); - - if (d[i].data != null) { - s.data = d[i].data; // move the data instead of deep-copy - delete d[i].data; - - $.extend(true, s, d[i]); - - d[i].data = s.data; - } - else - s.data = d[i]; - res.push(s); - } - - return res; - } - - function axisNumber(obj, coord) { - var a = obj[coord + "axis"]; - if (typeof a == "object") // if we got a real axis, extract number - a = a.n; - if (typeof a != "number") - a = 1; // default to first axis - return a; - } - - function allAxes() { - // return flat array without annoying null entries - return $.grep(xaxes.concat(yaxes), function (a) { return a; }); - } - - function canvasToAxisCoords(pos) { - // return an object with x/y corresponding to all used axes - var res = {}, i, axis; - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) - res["x" + axis.n] = axis.c2p(pos.left); - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) - res["y" + axis.n] = axis.c2p(pos.top); - } - - if (res.x1 !== undefined) - res.x = res.x1; - if (res.y1 !== undefined) - res.y = res.y1; - - return res; - } - - function axisToCanvasCoords(pos) { - // get canvas coords from the first pair of x/y found in pos - var res = {}, i, axis, key; - - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) { - key = "x" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "x"; - - if (pos[key] != null) { - res.left = axis.p2c(pos[key]); - break; - } - } - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) { - key = "y" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "y"; - - if (pos[key] != null) { - res.top = axis.p2c(pos[key]); - break; - } - } - } - - return res; - } - - function getOrCreateAxis(axes, number) { - if (!axes[number - 1]) - axes[number - 1] = { - n: number, // save the number for future reference - direction: axes == xaxes ? "x" : "y", - options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) - }; - - return axes[number - 1]; - } - - function fillInSeriesOptions() { - - var neededColors = series.length, maxIndex = -1, i; - - // Subtract the number of series that already have fixed colors or - // color indexes from the number that we still need to generate. - - for (i = 0; i < series.length; ++i) { - var sc = series[i].color; - if (sc != null) { - neededColors--; - if (typeof sc == "number" && sc > maxIndex) { - maxIndex = sc; - } - } - } - - // If any of the series have fixed color indexes, then we need to - // generate at least as many colors as the highest index. - - if (neededColors <= maxIndex) { - neededColors = maxIndex + 1; - } - - // Generate all the colors, using first the option colors and then - // variations on those colors once they're exhausted. - - var c, colors = [], colorPool = options.colors, - colorPoolSize = colorPool.length, variation = 0; - - for (i = 0; i < neededColors; i++) { - - c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); - - // Each time we exhaust the colors in the pool we adjust - // a scaling factor used to produce more variations on - // those colors. The factor alternates negative/positive - // to produce lighter/darker colors. - - // Reset the variation after every few cycles, or else - // it will end up producing only white or black colors. - - if (i % colorPoolSize == 0 && i) { - if (variation >= 0) { - if (variation < 0.5) { - variation = -variation - 0.2; - } else variation = 0; - } else variation = -variation; - } - - colors[i] = c.scale('rgb', 1 + variation); - } - - // Finalize the series options, filling in their colors - - var colori = 0, s; - for (i = 0; i < series.length; ++i) { - s = series[i]; - - // assign colors - if (s.color == null) { - s.color = colors[colori].toString(); - ++colori; - } - else if (typeof s.color == "number") - s.color = colors[s.color].toString(); - - // turn on lines automatically in case nothing is set - if (s.lines.show == null) { - var v, show = true; - for (v in s) - if (s[v] && s[v].show) { - show = false; - break; - } - if (show) - s.lines.show = true; - } - - // If nothing was provided for lines.zero, default it to match - // lines.fill, since areas by default should extend to zero. - - if (s.lines.zero == null) { - s.lines.zero = !!s.lines.fill; - } - - // setup axes - s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); - s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); - } - } - - function processData() { - var topSentry = Number.POSITIVE_INFINITY, - bottomSentry = Number.NEGATIVE_INFINITY, - fakeInfinity = Number.MAX_VALUE, - i, j, k, m, length, - s, points, ps, x, y, axis, val, f, p, - data, format; - - function updateAxis(axis, min, max) { - if (min < axis.datamin && min != -fakeInfinity) - axis.datamin = min; - if (max > axis.datamax && max != fakeInfinity) - axis.datamax = max; - } - - $.each(allAxes(), function (_, axis) { - // init axis - axis.datamin = topSentry; - axis.datamax = bottomSentry; - axis.used = false; - }); - - for (i = 0; i < series.length; ++i) { - s = series[i]; - s.datapoints = { points: [] }; - - executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); - } - - // first pass: clean and copy data - for (i = 0; i < series.length; ++i) { - s = series[i]; - - data = s.data; - format = s.datapoints.format; - - if (!format) { - format = []; - // find out how to copy - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - s.datapoints.format = format; - } - - if (s.datapoints.pointsize != null) - continue; // already filled in - - s.datapoints.pointsize = format.length; - - ps = s.datapoints.pointsize; - points = s.datapoints.points; - - var insertSteps = s.lines.show && s.lines.steps; - s.xaxis.used = s.yaxis.used = true; - - for (j = k = 0; j < data.length; ++j, k += ps) { - p = data[j]; - - var nullify = p == null; - if (!nullify) { - for (m = 0; m < ps; ++m) { - val = p[m]; - f = format[m]; - - if (f) { - if (f.number && val != null) { - val = +val; // convert to number - if (isNaN(val)) - val = null; - else if (val == Infinity) - val = fakeInfinity; - else if (val == -Infinity) - val = -fakeInfinity; - } - - if (val == null) { - if (f.required) - nullify = true; - - if (f.defaultValue != null) - val = f.defaultValue; - } - } - - points[k + m] = val; - } - } - - if (nullify) { - for (m = 0; m < ps; ++m) { - val = points[k + m]; - if (val != null) { - f = format[m]; - // extract min/max info - if (f.autoscale !== false) { - if (f.x) { - updateAxis(s.xaxis, val, val); - } - if (f.y) { - updateAxis(s.yaxis, val, val); - } - } - } - points[k + m] = null; - } - } - else { - // a little bit of line specific stuff that - // perhaps shouldn't be here, but lacking - // better means... - if (insertSteps && k > 0 - && points[k - ps] != null - && points[k - ps] != points[k] - && points[k - ps + 1] != points[k + 1]) { - // copy the point to make room for a middle point - for (m = 0; m < ps; ++m) - points[k + ps + m] = points[k + m]; - - // middle point has same y - points[k + 1] = points[k - ps + 1]; - - // we've added a point, better reflect that - k += ps; - } - } - } - } - - // give the hooks a chance to run - for (i = 0; i < series.length; ++i) { - s = series[i]; - - executeHooks(hooks.processDatapoints, [ s, s.datapoints]); - } - - // second pass: find datamax/datamin for auto-scaling - for (i = 0; i < series.length; ++i) { - s = series[i]; - points = s.datapoints.points; - ps = s.datapoints.pointsize; - format = s.datapoints.format; - - var xmin = topSentry, ymin = topSentry, - xmax = bottomSentry, ymax = bottomSentry; - - for (j = 0; j < points.length; j += ps) { - if (points[j] == null) - continue; - - for (m = 0; m < ps; ++m) { - val = points[j + m]; - f = format[m]; - if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) - continue; - - if (f.x) { - if (val < xmin) - xmin = val; - if (val > xmax) - xmax = val; - } - if (f.y) { - if (val < ymin) - ymin = val; - if (val > ymax) - ymax = val; - } - } - } - - if (s.bars.show) { - // make sure we got room for the bar on the dancing floor - var delta; - - switch (s.bars.align) { - case "left": - delta = 0; - break; - case "right": - delta = -s.bars.barWidth; - break; - default: - delta = -s.bars.barWidth / 2; - } - - if (s.bars.horizontal) { - ymin += delta; - ymax += delta + s.bars.barWidth; - } - else { - xmin += delta; - xmax += delta + s.bars.barWidth; - } - } - - updateAxis(s.xaxis, xmin, xmax); - updateAxis(s.yaxis, ymin, ymax); - } - - $.each(allAxes(), function (_, axis) { - if (axis.datamin == topSentry) - axis.datamin = null; - if (axis.datamax == bottomSentry) - axis.datamax = null; - }); - } - - function setupCanvases() { - - // Make sure the placeholder is clear of everything except canvases - // from a previous plot in this container that we'll try to re-use. - - placeholder.css("padding", 0) // padding messes up the positioning - .children().filter(function(){ - return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); - }).remove(); - - if (placeholder.css("position") == 'static') - placeholder.css("position", "relative"); // for positioning labels and overlay - - surface = new Canvas("flot-base", placeholder); - overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features - - ctx = surface.context; - octx = overlay.context; - - // define which element we're listening for events on - eventHolder = $(overlay.element).unbind(); - - // If we're re-using a plot object, shut down the old one - - var existing = placeholder.data("plot"); - - if (existing) { - existing.shutdown(); - overlay.clear(); - } - - // save in case we get replotted - placeholder.data("plot", plot); - } - - function bindEvents() { - // bind events - if (options.grid.hoverable) { - eventHolder.mousemove(onMouseMove); - - // Use bind, rather than .mouseleave, because we officially - // still support jQuery 1.2.6, which doesn't define a shortcut - // for mouseenter or mouseleave. This was a bug/oversight that - // was fixed somewhere around 1.3.x. We can return to using - // .mouseleave when we drop support for 1.2.6. - - eventHolder.bind("mouseleave", onMouseLeave); - } - - if (options.grid.clickable) - eventHolder.click(onClick); - - executeHooks(hooks.bindEvents, [eventHolder]); - } - - function shutdown() { - if (redrawTimeout) - clearTimeout(redrawTimeout); - - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mouseleave", onMouseLeave); - eventHolder.unbind("click", onClick); - - executeHooks(hooks.shutdown, [eventHolder]); - } - - function setTransformationHelpers(axis) { - // set helper functions on the axis, assumes plot area - // has been computed already - - function identity(x) { return x; } - - var s, m, t = axis.options.transform || identity, - it = axis.options.inverseTransform; - - // precompute how much the axis is scaling a point - // in canvas space - if (axis.direction == "x") { - s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); - m = Math.min(t(axis.max), t(axis.min)); - } - else { - s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); - s = -s; - m = Math.max(t(axis.max), t(axis.min)); - } - - // data point to canvas coordinate - if (t == identity) // slight optimization - axis.p2c = function (p) { return (p - m) * s; }; - else - axis.p2c = function (p) { return (t(p) - m) * s; }; - // canvas coordinate to data point - if (!it) - axis.c2p = function (c) { return m + c / s; }; - else - axis.c2p = function (c) { return it(m + c / s); }; - } - - function measureTickLabels(axis) { - - var opts = axis.options, - ticks = axis.ticks || [], - labelWidth = opts.labelWidth || 0, - labelHeight = opts.labelHeight || 0, - maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = opts.font || "flot-tick-label tickLabel"; - - for (var i = 0; i < ticks.length; ++i) { - - var t = ticks[i]; - - if (!t.label) - continue; - - var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); - - labelWidth = Math.max(labelWidth, info.width); - labelHeight = Math.max(labelHeight, info.height); - } - - axis.labelWidth = opts.labelWidth || labelWidth; - axis.labelHeight = opts.labelHeight || labelHeight; - } - - function allocateAxisBoxFirstPhase(axis) { - // find the bounding box of the axis by looking at label - // widths/heights and ticks, make room by diminishing the - // plotOffset; this first phase only looks at one - // dimension per axis, the other dimension depends on the - // other axes so will have to wait - - var lw = axis.labelWidth, - lh = axis.labelHeight, - pos = axis.options.position, - isXAxis = axis.direction === "x", - tickLength = axis.options.tickLength, - axisMargin = options.grid.axisMargin, - padding = options.grid.labelMargin, - innermost = true, - outermost = true, - first = true, - found = false; - - // Determine the axis's position in its direction and on its side - - $.each(isXAxis ? xaxes : yaxes, function(i, a) { - if (a && a.reserveSpace) { - if (a === axis) { - found = true; - } else if (a.options.position === pos) { - if (found) { - outermost = false; - } else { - innermost = false; - } - } - if (!found) { - first = false; - } - } - }); - - // The outermost axis on each side has no margin - - if (outermost) { - axisMargin = 0; - } - - // The ticks for the first axis in each direction stretch across - - if (tickLength == null) { - tickLength = first ? "full" : 5; - } - - if (!isNaN(+tickLength)) - padding += +tickLength; - - if (isXAxis) { - lh += padding; - - if (pos == "bottom") { - plotOffset.bottom += lh + axisMargin; - axis.box = { top: surface.height - plotOffset.bottom, height: lh }; - } - else { - axis.box = { top: plotOffset.top + axisMargin, height: lh }; - plotOffset.top += lh + axisMargin; - } - } - else { - lw += padding; - - if (pos == "left") { - axis.box = { left: plotOffset.left + axisMargin, width: lw }; - plotOffset.left += lw + axisMargin; - } - else { - plotOffset.right += lw + axisMargin; - axis.box = { left: surface.width - plotOffset.right, width: lw }; - } - } - - // save for future reference - axis.position = pos; - axis.tickLength = tickLength; - axis.box.padding = padding; - axis.innermost = innermost; - } - - function allocateAxisBoxSecondPhase(axis) { - // now that all axis boxes have been placed in one - // dimension, we can set the remaining dimension coordinates - if (axis.direction == "x") { - axis.box.left = plotOffset.left - axis.labelWidth / 2; - axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; - } - else { - axis.box.top = plotOffset.top - axis.labelHeight / 2; - axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; - } - } - - function adjustLayoutForThingsStickingOut() { - // possibly adjust plot offset to ensure everything stays - // inside the canvas and isn't clipped off - - var minMargin = options.grid.minBorderMargin, - axis, i; - - // check stuff from the plot (FIXME: this should just read - // a value from the series, otherwise it's impossible to - // customize) - if (minMargin == null) { - minMargin = 0; - for (i = 0; i < series.length; ++i) - minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); - } - - var margins = { - left: minMargin, - right: minMargin, - top: minMargin, - bottom: minMargin - }; - - // check axis labels, note we don't check the actual - // labels but instead use the overall width/height to not - // jump as much around with replots - $.each(allAxes(), function (_, axis) { - if (axis.reserveSpace && axis.ticks && axis.ticks.length) { - var lastTick = axis.ticks[axis.ticks.length - 1]; - if (axis.direction === "x") { - margins.left = Math.max(margins.left, axis.labelWidth / 2); - if (lastTick.v <= axis.max) { - margins.right = Math.max(margins.right, axis.labelWidth / 2); - } - } else { - margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); - if (lastTick.v <= axis.max) { - margins.top = Math.max(margins.top, axis.labelHeight / 2); - } - } - } - }); - - plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); - plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); - plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); - plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); - } - - function setupGrid() { - var i, axes = allAxes(), showGrid = options.grid.show; - - // Initialize the plot's offset from the edge of the canvas - - for (var a in plotOffset) { - var margin = options.grid.margin || 0; - plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; - } - - executeHooks(hooks.processOffset, [plotOffset]); - - // If the grid is visible, add its border width to the offset - - for (var a in plotOffset) { - if(typeof(options.grid.borderWidth) == "object") { - plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; - } - else { - plotOffset[a] += showGrid ? options.grid.borderWidth : 0; - } - } - - // init axes - $.each(axes, function (_, axis) { - axis.show = axis.options.show; - if (axis.show == null) - axis.show = axis.used; // by default an axis is visible if it's got data - - axis.reserveSpace = axis.show || axis.options.reserveSpace; - - setRange(axis); - }); - - if (showGrid) { - - var allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); - - $.each(allocatedAxes, function (_, axis) { - // make the ticks - setupTickGeneration(axis); - setTicks(axis); - snapRangeToTicks(axis, axis.ticks); - // find labelWidth/Height for axis - measureTickLabels(axis); - }); - - // with all dimensions calculated, we can compute the - // axis bounding boxes, start from the outside - // (reverse order) - for (i = allocatedAxes.length - 1; i >= 0; --i) - allocateAxisBoxFirstPhase(allocatedAxes[i]); - - // make sure we've got enough space for things that - // might stick out - adjustLayoutForThingsStickingOut(); - - $.each(allocatedAxes, function (_, axis) { - allocateAxisBoxSecondPhase(axis); - }); - } - - plotWidth = surface.width - plotOffset.left - plotOffset.right; - plotHeight = surface.height - plotOffset.bottom - plotOffset.top; - - // now we got the proper plot dimensions, we can compute the scaling - $.each(axes, function (_, axis) { - setTransformationHelpers(axis); - }); - - if (showGrid) { - drawAxisLabels(); - } - - insertLegend(); - } - - function setRange(axis) { - var opts = axis.options, - min = +(opts.min != null ? opts.min : axis.datamin), - max = +(opts.max != null ? opts.max : axis.datamax), - delta = max - min; - - if (delta == 0.0) { - // degenerate case - var widen = max == 0 ? 1 : 0.01; - - if (opts.min == null) - min -= widen; - // always widen max if we couldn't widen min to ensure we - // don't fall into min == max which doesn't work - if (opts.max == null || opts.min != null) - max += widen; - } - else { - // consider autoscaling - var margin = opts.autoscaleMargin; - if (margin != null) { - if (opts.min == null) { - min -= delta * margin; - // make sure we don't go below zero if all values - // are positive - if (min < 0 && axis.datamin != null && axis.datamin >= 0) - min = 0; - } - if (opts.max == null) { - max += delta * margin; - if (max > 0 && axis.datamax != null && axis.datamax <= 0) - max = 0; - } - } - } - axis.min = min; - axis.max = max; - } - - function setupTickGeneration(axis) { - var opts = axis.options; - - // estimate number of ticks - var noTicks; - if (typeof opts.ticks == "number" && opts.ticks > 0) - noTicks = opts.ticks; - else - // heuristic based on the model a*sqrt(x) fitted to - // some data points that seemed reasonable - noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); - - var delta = (axis.max - axis.min) / noTicks, - dec = -Math.floor(Math.log(delta) / Math.LN10), - maxDec = opts.tickDecimals; - - if (maxDec != null && dec > maxDec) { - dec = maxDec; - } - - var magn = Math.pow(10, -dec), - norm = delta / magn, // norm is between 1.0 and 10.0 - size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - if (opts.minTickSize != null && size < opts.minTickSize) { - size = opts.minTickSize; - } - - axis.delta = delta; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; - - // Time mode was moved to a plug-in in 0.8, but since so many people use this - // we'll add an especially friendly make sure they remembered to include it. - - if (opts.mode == "time" && !axis.tickGenerator) { - throw new Error("Time mode requires the flot.time plugin."); - } - - // Flot supports base-10 axes; any other mode else is handled by a plug-in, - // like flot.time.js. - - if (!axis.tickGenerator) { - - axis.tickGenerator = function (axis) { - - var ticks = [], - start = floorInBase(axis.min, axis.tickSize), - i = 0, - v = Number.NaN, - prev; - - do { - prev = v; - v = start + i * axis.tickSize; - ticks.push(v); - ++i; - } while (v < axis.max && v != prev); - return ticks; - }; - - axis.tickFormatter = function (value, axis) { - - var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; - var formatted = "" + Math.round(value * factor) / factor; - - // If tickDecimals was specified, ensure that we have exactly that - // much precision; otherwise default to the value's own precision. - - if (axis.tickDecimals != null) { - var decimal = formatted.indexOf("."); - var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; - if (precision < axis.tickDecimals) { - return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); - } - } - - return formatted; - }; - } - - if ($.isFunction(opts.tickFormatter)) - axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; - - if (opts.alignTicksWithAxis != null) { - var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; - if (otherAxis && otherAxis.used && otherAxis != axis) { - // consider snapping min/max to outermost nice ticks - var niceTicks = axis.tickGenerator(axis); - if (niceTicks.length > 0) { - if (opts.min == null) - axis.min = Math.min(axis.min, niceTicks[0]); - if (opts.max == null && niceTicks.length > 1) - axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); - } - - axis.tickGenerator = function (axis) { - // copy ticks, scaled to this axis - var ticks = [], v, i; - for (i = 0; i < otherAxis.ticks.length; ++i) { - v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); - v = axis.min + v * (axis.max - axis.min); - ticks.push(v); - } - return ticks; - }; - - // we might need an extra decimal since forced - // ticks don't necessarily fit naturally - if (!axis.mode && opts.tickDecimals == null) { - var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), - ts = axis.tickGenerator(axis); - - // only proceed if the tick interval rounded - // with an extra decimal doesn't give us a - // zero at end - if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) - axis.tickDecimals = extraDec; - } - } - } - } - - function setTicks(axis) { - var oticks = axis.options.ticks, ticks = []; - if (oticks == null || (typeof oticks == "number" && oticks > 0)) - ticks = axis.tickGenerator(axis); - else if (oticks) { - if ($.isFunction(oticks)) - // generate the ticks - ticks = oticks(axis); - else - ticks = oticks; - } - - // clean up/labelify the supplied ticks, copy them over - var i, v; - axis.ticks = []; - for (i = 0; i < ticks.length; ++i) { - var label = null; - var t = ticks[i]; - if (typeof t == "object") { - v = +t[0]; - if (t.length > 1) - label = t[1]; - } - else - v = +t; - if (label == null) - label = axis.tickFormatter(v, axis); - if (!isNaN(v)) - axis.ticks.push({ v: v, label: label }); - } - } - - function snapRangeToTicks(axis, ticks) { - if (axis.options.autoscaleMargin && ticks.length > 0) { - // snap to ticks - if (axis.options.min == null) - axis.min = Math.min(axis.min, ticks[0].v); - if (axis.options.max == null && ticks.length > 1) - axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); - } - } - - function draw() { - - surface.clear(); - - executeHooks(hooks.drawBackground, [ctx]); - - var grid = options.grid; - - // draw background, if any - if (grid.show && grid.backgroundColor) - drawBackground(); - - if (grid.show && !grid.aboveData) { - drawGrid(); - } - - for (var i = 0; i < series.length; ++i) { - executeHooks(hooks.drawSeries, [ctx, series[i]]); - drawSeries(series[i]); - } - - executeHooks(hooks.draw, [ctx]); - - if (grid.show && grid.aboveData) { - drawGrid(); - } - - surface.render(); - - // A draw implies that either the axes or data have changed, so we - // should probably update the overlay highlights as well. - - triggerRedrawOverlay(); - } - - function extractRange(ranges, coord) { - var axis, from, to, key, axes = allAxes(); - - for (var i = 0; i < axes.length; ++i) { - axis = axes[i]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? xaxes[0] : yaxes[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function drawBackground() { - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); - ctx.fillRect(0, 0, plotWidth, plotHeight); - ctx.restore(); - } - - function drawGrid() { - var i, axes, bw, bc; - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // draw markings - var markings = options.grid.markings; - if (markings) { - if ($.isFunction(markings)) { - axes = plot.getAxes(); - // xmin etc. is backwards compatibility, to be - // removed in the future - axes.xmin = axes.xaxis.min; - axes.xmax = axes.xaxis.max; - axes.ymin = axes.yaxis.min; - axes.ymax = axes.yaxis.max; - - markings = markings(axes); - } - - for (i = 0; i < markings.length; ++i) { - var m = markings[i], - xrange = extractRange(m, "x"), - yrange = extractRange(m, "y"); - - // fill in missing - if (xrange.from == null) - xrange.from = xrange.axis.min; - if (xrange.to == null) - xrange.to = xrange.axis.max; - if (yrange.from == null) - yrange.from = yrange.axis.min; - if (yrange.to == null) - yrange.to = yrange.axis.max; - - // clip - if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || - yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) - continue; - - xrange.from = Math.max(xrange.from, xrange.axis.min); - xrange.to = Math.min(xrange.to, xrange.axis.max); - yrange.from = Math.max(yrange.from, yrange.axis.min); - yrange.to = Math.min(yrange.to, yrange.axis.max); - - if (xrange.from == xrange.to && yrange.from == yrange.to) - continue; - - // then draw - xrange.from = xrange.axis.p2c(xrange.from); - xrange.to = xrange.axis.p2c(xrange.to); - yrange.from = yrange.axis.p2c(yrange.from); - yrange.to = yrange.axis.p2c(yrange.to); - - if (xrange.from == xrange.to || yrange.from == yrange.to) { - // draw line - ctx.beginPath(); - ctx.strokeStyle = m.color || options.grid.markingsColor; - ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; - ctx.moveTo(xrange.from, yrange.from); - ctx.lineTo(xrange.to, yrange.to); - ctx.stroke(); - } - else { - // fill area - ctx.fillStyle = m.color || options.grid.markingsColor; - ctx.fillRect(xrange.from, yrange.to, - xrange.to - xrange.from, - yrange.from - yrange.to); - } - } - } - - // draw the ticks - axes = allAxes(); - bw = options.grid.borderWidth; - - for (var j = 0; j < axes.length; ++j) { - var axis = axes[j], box = axis.box, - t = axis.tickLength, x, y, xoff, yoff; - if (!axis.show || axis.ticks.length == 0) - continue; - - ctx.lineWidth = 1; - - // find the edges - if (axis.direction == "x") { - x = 0; - if (t == "full") - y = (axis.position == "top" ? 0 : plotHeight); - else - y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); - } - else { - y = 0; - if (t == "full") - x = (axis.position == "left" ? 0 : plotWidth); - else - x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); - } - - // draw tick bar - if (!axis.innermost) { - ctx.strokeStyle = axis.options.color; - ctx.beginPath(); - xoff = yoff = 0; - if (axis.direction == "x") - xoff = plotWidth + 1; - else - yoff = plotHeight + 1; - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") { - y = Math.floor(y) + 0.5; - } else { - x = Math.floor(x) + 0.5; - } - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - ctx.stroke(); - } - - // draw ticks - - ctx.strokeStyle = axis.options.tickColor; - - ctx.beginPath(); - for (i = 0; i < axis.ticks.length; ++i) { - var v = axis.ticks[i].v; - - xoff = yoff = 0; - - if (isNaN(v) || v < axis.min || v > axis.max - // skip those lying on the axes if we got a border - || (t == "full" - && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) - && (v == axis.min || v == axis.max))) - continue; - - if (axis.direction == "x") { - x = axis.p2c(v); - yoff = t == "full" ? -plotHeight : t; - - if (axis.position == "top") - yoff = -yoff; - } - else { - y = axis.p2c(v); - xoff = t == "full" ? -plotWidth : t; - - if (axis.position == "left") - xoff = -xoff; - } - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") - x = Math.floor(x) + 0.5; - else - y = Math.floor(y) + 0.5; - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - } - - ctx.stroke(); - } - - - // draw border - if (bw) { - // If either borderWidth or borderColor is an object, then draw the border - // line by line instead of as one rectangle - bc = options.grid.borderColor; - if(typeof bw == "object" || typeof bc == "object") { - if (typeof bw !== "object") { - bw = {top: bw, right: bw, bottom: bw, left: bw}; - } - if (typeof bc !== "object") { - bc = {top: bc, right: bc, bottom: bc, left: bc}; - } - - if (bw.top > 0) { - ctx.strokeStyle = bc.top; - ctx.lineWidth = bw.top; - ctx.beginPath(); - ctx.moveTo(0 - bw.left, 0 - bw.top/2); - ctx.lineTo(plotWidth, 0 - bw.top/2); - ctx.stroke(); - } - - if (bw.right > 0) { - ctx.strokeStyle = bc.right; - ctx.lineWidth = bw.right; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); - ctx.lineTo(plotWidth + bw.right / 2, plotHeight); - ctx.stroke(); - } - - if (bw.bottom > 0) { - ctx.strokeStyle = bc.bottom; - ctx.lineWidth = bw.bottom; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); - ctx.lineTo(0, plotHeight + bw.bottom / 2); - ctx.stroke(); - } - - if (bw.left > 0) { - ctx.strokeStyle = bc.left; - ctx.lineWidth = bw.left; - ctx.beginPath(); - ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); - ctx.lineTo(0- bw.left/2, 0); - ctx.stroke(); - } - } - else { - ctx.lineWidth = bw; - ctx.strokeStyle = options.grid.borderColor; - ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); - } - } - - ctx.restore(); - } - - function drawAxisLabels() { - - $.each(allAxes(), function (_, axis) { - var box = axis.box, - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = axis.options.font || "flot-tick-label tickLabel", - tick, x, y, halign, valign; - - // Remove text before checking for axis.show and ticks.length; - // otherwise plugins, like flot-tickrotor, that draw their own - // tick labels will end up with both theirs and the defaults. - - surface.removeText(layer); - - if (!axis.show || axis.ticks.length == 0) - return; - - for (var i = 0; i < axis.ticks.length; ++i) { - - tick = axis.ticks[i]; - if (!tick.label || tick.v < axis.min || tick.v > axis.max) - continue; - - if (axis.direction == "x") { - halign = "center"; - x = plotOffset.left + axis.p2c(tick.v); - if (axis.position == "bottom") { - y = box.top + box.padding; - } else { - y = box.top + box.height - box.padding; - valign = "bottom"; - } - } else { - valign = "middle"; - y = plotOffset.top + axis.p2c(tick.v); - if (axis.position == "left") { - x = box.left + box.width - box.padding; - halign = "right"; - } else { - x = box.left + box.padding; - } - } - - surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); - } - }); - } - - function drawSeries(series) { - if (series.lines.show) - drawSeriesLines(series); - if (series.bars.show) - drawSeriesBars(series); - if (series.points.show) - drawSeriesPoints(series); - } - - function drawSeriesLines(series) { - function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - prevx = null, prevy = null; - - ctx.beginPath(); - for (var i = ps; i < points.length; i += ps) { - var x1 = points[i - ps], y1 = points[i - ps + 1], - x2 = points[i], y2 = points[i + 1]; - - if (x1 == null || x2 == null) - continue; - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min) { - if (y2 < axisy.min) - continue; // line segment is outside - // compute new intersection point - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min) { - if (y1 < axisy.min) - continue; - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max) { - if (y2 > axisy.max) - continue; - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max) { - if (y1 > axisy.max) - continue; - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (x1 != prevx || y1 != prevy) - ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); - - prevx = x2; - prevy = y2; - ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); - } - ctx.stroke(); - } - - function plotLineArea(datapoints, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - bottom = Math.min(Math.max(0, axisy.min), axisy.max), - i = 0, top, areaOpen = false, - ypos = 1, segmentStart = 0, segmentEnd = 0; - - // we process each segment in two turns, first forward - // direction to sketch out top, then once we hit the - // end we go backwards to sketch the bottom - while (true) { - if (ps > 0 && i > points.length + ps) - break; - - i += ps; // ps is negative if going backwards - - var x1 = points[i - ps], - y1 = points[i - ps + ypos], - x2 = points[i], y2 = points[i + ypos]; - - if (areaOpen) { - if (ps > 0 && x1 != null && x2 == null) { - // at turning point - segmentEnd = i; - ps = -ps; - ypos = 2; - continue; - } - - if (ps < 0 && i == segmentStart + ps) { - // done with the reverse sweep - ctx.fill(); - areaOpen = false; - ps = -ps; - ypos = 1; - i = segmentStart = segmentEnd + ps; - continue; - } - } - - if (x1 == null || x2 == null) - continue; - - // clip x values - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (!areaOpen) { - // open area - ctx.beginPath(); - ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); - areaOpen = true; - } - - // now first check the case where both is outside - if (y1 >= axisy.max && y2 >= axisy.max) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); - continue; - } - else if (y1 <= axisy.min && y2 <= axisy.min) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); - continue; - } - - // else it's a bit more complicated, there might - // be a flat maxed out rectangle first, then a - // triangular cutout or reverse; to find these - // keep track of the current x values - var x1old = x1, x2old = x2; - - // clip the y values, without shortcutting, we - // go through all cases in turn - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // if the x value was changed we got a rectangle - // to fill - if (x1 != x1old) { - ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); - // it goes to (x1, y1), but we fill that below - } - - // fill triangular section, this sometimes result - // in redundant points if (x1, y1) hasn't changed - // from previous line to, but we just ignore that - ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - - // fill the other rectangle if it's there - if (x2 != x2old) { - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); - } - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - ctx.lineJoin = "round"; - - var lw = series.lines.lineWidth, - sw = series.shadowSize; - // FIXME: consider another form of shadow when filling is turned on - if (lw > 0 && sw > 0) { - // draw shadow as a thick and thin line with transparency - ctx.lineWidth = sw; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - // position shadow at angle from the mid of line - var angle = Math.PI/18; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); - ctx.lineWidth = sw/2; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); - if (fillStyle) { - ctx.fillStyle = fillStyle; - plotLineArea(series.datapoints, series.xaxis, series.yaxis); - } - - if (lw > 0) - plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); - ctx.restore(); - } - - function drawSeriesPoints(series) { - function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var x = points[i], y = points[i + 1]; - if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - continue; - - ctx.beginPath(); - x = axisx.p2c(x); - y = axisy.p2c(y) + offset; - if (symbol == "circle") - ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); - else - symbol(ctx, x, y, radius, shadow); - ctx.closePath(); - - if (fillStyle) { - ctx.fillStyle = fillStyle; - ctx.fill(); - } - ctx.stroke(); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var lw = series.points.lineWidth, - sw = series.shadowSize, - radius = series.points.radius, - symbol = series.points.symbol; - - // If the user sets the line width to 0, we change it to a very - // small value. A line width of 0 seems to force the default of 1. - // Doing the conditional here allows the shadow setting to still be - // optional even with a lineWidth of 0. - - if( lw == 0 ) - lw = 0.0001; - - if (lw > 0 && sw > 0) { - // draw shadow in two steps - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - plotPoints(series.datapoints, radius, null, w + w/2, true, - series.xaxis, series.yaxis, symbol); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - plotPoints(series.datapoints, radius, null, w/2, true, - series.xaxis, series.yaxis, symbol); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - plotPoints(series.datapoints, radius, - getFillStyle(series.points, series.color), 0, false, - series.xaxis, series.yaxis, symbol); - ctx.restore(); - } - - function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { - var left, right, bottom, top, - drawLeft, drawRight, drawTop, drawBottom, - tmp; - - // in horizontal mode, we start the bar from the left - // instead of from the bottom so it appears to be - // horizontal rather than vertical - if (horizontal) { - drawBottom = drawRight = drawTop = true; - drawLeft = false; - left = b; - right = x; - top = y + barLeft; - bottom = y + barRight; - - // account for negative bars - if (right < left) { - tmp = right; - right = left; - left = tmp; - drawLeft = true; - drawRight = false; - } - } - else { - drawLeft = drawRight = drawTop = true; - drawBottom = false; - left = x + barLeft; - right = x + barRight; - bottom = b; - top = y; - - // account for negative bars - if (top < bottom) { - tmp = top; - top = bottom; - bottom = tmp; - drawBottom = true; - drawTop = false; - } - } - - // clip - if (right < axisx.min || left > axisx.max || - top < axisy.min || bottom > axisy.max) - return; - - if (left < axisx.min) { - left = axisx.min; - drawLeft = false; - } - - if (right > axisx.max) { - right = axisx.max; - drawRight = false; - } - - if (bottom < axisy.min) { - bottom = axisy.min; - drawBottom = false; - } - - if (top > axisy.max) { - top = axisy.max; - drawTop = false; - } - - left = axisx.p2c(left); - bottom = axisy.p2c(bottom); - right = axisx.p2c(right); - top = axisy.p2c(top); - - // fill the bar - if (fillStyleCallback) { - c.fillStyle = fillStyleCallback(bottom, top); - c.fillRect(left, top, right - left, bottom - top) - } - - // draw outline - if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { - c.beginPath(); - - // FIXME: inline moveTo is buggy with excanvas - c.moveTo(left, bottom); - if (drawLeft) - c.lineTo(left, top); - else - c.moveTo(left, top); - if (drawTop) - c.lineTo(right, top); - else - c.moveTo(right, top); - if (drawRight) - c.lineTo(right, bottom); - else - c.moveTo(right, bottom); - if (drawBottom) - c.lineTo(left, bottom); - else - c.moveTo(left, bottom); - c.stroke(); - } - } - - function drawSeriesBars(series) { - function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // FIXME: figure out a way to add shadows (for instance along the right edge) - ctx.lineWidth = series.bars.lineWidth; - ctx.strokeStyle = series.color; - - var barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; - plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); - ctx.restore(); - } - - function getFillStyle(filloptions, seriesColor, bottom, top) { - var fill = filloptions.fill; - if (!fill) - return null; - - if (filloptions.fillColor) - return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); - - var c = $.color.parse(seriesColor); - c.a = typeof fill == "number" ? fill : 0.4; - c.normalize(); - return c.toString(); - } - - function insertLegend() { - - if (options.legend.container != null) { - $(options.legend.container).html(""); - } else { - placeholder.find(".legend").remove(); - } - - if (!options.legend.show) { - return; - } - - var fragments = [], entries = [], rowStarted = false, - lf = options.legend.labelFormatter, s, label; - - // Build a list of legend entries, with each having a label and a color - - for (var i = 0; i < series.length; ++i) { - s = series[i]; - if (s.label) { - label = lf ? lf(s.label, s) : s.label; - if (label) { - entries.push({ - label: label, - color: s.color - }); - } - } - } - - // Sort the legend using either the default or a custom comparator - - if (options.legend.sorted) { - if ($.isFunction(options.legend.sorted)) { - entries.sort(options.legend.sorted); - } else if (options.legend.sorted == "reverse") { - entries.reverse(); - } else { - var ascending = options.legend.sorted != "descending"; - entries.sort(function(a, b) { - return a.label == b.label ? 0 : ( - (a.label < b.label) != ascending ? 1 : -1 // Logical XOR - ); - }); - } - } - - // Generate markup for the list of entries, in their final order - - for (var i = 0; i < entries.length; ++i) { - - var entry = entries[i]; - - if (i % options.legend.noColumns == 0) { - if (rowStarted) - fragments.push(''); - fragments.push(''); - rowStarted = true; - } - - fragments.push( - '
      ' + - '' + entry.label + '' - ); - } - - if (rowStarted) - fragments.push(''); - - if (fragments.length == 0) - return; - - var table = '' + fragments.join("") + '
      '; - if (options.legend.container != null) - $(options.legend.container).html(table); - else { - var pos = "", - p = options.legend.position, - m = options.legend.margin; - if (m[0] == null) - m = [m, m]; - if (p.charAt(0) == "n") - pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; - else if (p.charAt(0) == "s") - pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; - if (p.charAt(1) == "e") - pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; - else if (p.charAt(1) == "w") - pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; - var legend = $('
      ' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
      ').appendTo(placeholder); - if (options.legend.backgroundOpacity != 0.0) { - // put in the transparent background - // separately to avoid blended labels and - // label boxes - var c = options.legend.backgroundColor; - if (c == null) { - c = options.grid.backgroundColor; - if (c && typeof c == "string") - c = $.color.parse(c); - else - c = $.color.extract(legend, 'background-color'); - c.a = 1; - c = c.toString(); - } - var div = legend.children(); - $('
      ').prependTo(legend).css('opacity', options.legend.backgroundOpacity); - } - } - } - - - // interactive features - - var highlights = [], - redrawTimeout = null; - - // returns the data item the mouse is over, or null if none is found - function findNearbyItem(mouseX, mouseY, seriesFilter) { - var maxDistance = options.grid.mouseActiveRadius, - smallestDistance = maxDistance * maxDistance + 1, - item = null, foundPoint = false, i, j, ps; - - for (i = series.length - 1; i >= 0; --i) { - if (!seriesFilter(series[i])) - continue; - - var s = series[i], - axisx = s.xaxis, - axisy = s.yaxis, - points = s.datapoints.points, - mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster - my = axisy.c2p(mouseY), - maxx = maxDistance / axisx.scale, - maxy = maxDistance / axisy.scale; - - ps = s.datapoints.pointsize; - // with inverse transforms, we can't use the maxx/maxy - // optimization, sadly - if (axisx.options.inverseTransform) - maxx = Number.MAX_VALUE; - if (axisy.options.inverseTransform) - maxy = Number.MAX_VALUE; - - if (s.lines.show || s.points.show) { - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1]; - if (x == null) - continue; - - // For points and lines, the cursor must be within a - // certain distance to the data point - if (x - mx > maxx || x - mx < -maxx || - y - my > maxy || y - my < -maxy) - continue; - - // We have to calculate distances in pixels, not in - // data units, because the scales of the axes may be different - var dx = Math.abs(axisx.p2c(x) - mouseX), - dy = Math.abs(axisy.p2c(y) - mouseY), - dist = dx * dx + dy * dy; // we save the sqrt - - // use <= to ensure last point takes precedence - // (last generally means on top of) - if (dist < smallestDistance) { - smallestDistance = dist; - item = [i, j / ps]; - } - } - } - - if (s.bars.show && !item) { // no other point can be nearby - - var barLeft, barRight; - - switch (s.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -s.bars.barWidth; - break; - default: - barLeft = -s.bars.barWidth / 2; - } - - barRight = barLeft + s.bars.barWidth; - - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1], b = points[j + 2]; - if (x == null) - continue; - - // for a bar graph, the cursor must be inside the bar - if (series[i].bars.horizontal ? - (mx <= Math.max(b, x) && mx >= Math.min(b, x) && - my >= y + barLeft && my <= y + barRight) : - (mx >= x + barLeft && mx <= x + barRight && - my >= Math.min(b, y) && my <= Math.max(b, y))) - item = [i, j / ps]; - } - } - } - - if (item) { - i = item[0]; - j = item[1]; - ps = series[i].datapoints.pointsize; - - return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), - dataIndex: j, - series: series[i], - seriesIndex: i }; - } - - return null; - } - - function onMouseMove(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return s["hoverable"] != false; }); - } - - function onMouseLeave(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return false; }); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e, - function (s) { return s["clickable"] != false; }); - } - - // trigger click or hover event (they send the same parameters - // so we share their code) - function triggerClickHoverEvent(eventname, event, seriesFilter) { - var offset = eventHolder.offset(), - canvasX = event.pageX - offset.left - plotOffset.left, - canvasY = event.pageY - offset.top - plotOffset.top, - pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); - - pos.pageX = event.pageX; - pos.pageY = event.pageY; - - var item = findNearbyItem(canvasX, canvasY, seriesFilter); - - if (item) { - // fill in mouse pos for any listeners out there - item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); - item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); - } - - if (options.grid.autoHighlight) { - // clear auto-highlights - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && - !(item && h.series == item.series && - h.point[0] == item.datapoint[0] && - h.point[1] == item.datapoint[1])) - unhighlight(h.series, h.point); - } - - if (item) - highlight(item.series, item.datapoint, eventname); - } - - placeholder.trigger(eventname, [ pos, item ]); - } - - function triggerRedrawOverlay() { - var t = options.interaction.redrawOverlayInterval; - if (t == -1) { // skip event queue - drawOverlay(); - return; - } - - if (!redrawTimeout) - redrawTimeout = setTimeout(drawOverlay, t); - } - - function drawOverlay() { - redrawTimeout = null; - - // draw highlights - octx.save(); - overlay.clear(); - octx.translate(plotOffset.left, plotOffset.top); - - var i, hi; - for (i = 0; i < highlights.length; ++i) { - hi = highlights[i]; - - if (hi.series.bars.show) - drawBarHighlight(hi.series, hi.point); - else - drawPointHighlight(hi.series, hi.point); - } - octx.restore(); - - executeHooks(hooks.drawOverlay, [octx]); - } - - function highlight(s, point, auto) { - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i == -1) { - highlights.push({ series: s, point: point, auto: auto }); - - triggerRedrawOverlay(); - } - else if (!auto) - highlights[i].auto = false; - } - - function unhighlight(s, point) { - if (s == null && point == null) { - highlights = []; - triggerRedrawOverlay(); - return; - } - - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i != -1) { - highlights.splice(i, 1); - - triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s, p) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s && h.point[0] == p[0] - && h.point[1] == p[1]) - return i; - } - return -1; - } - - function drawPointHighlight(series, point) { - var x = point[0], y = point[1], - axisx = series.xaxis, axisy = series.yaxis, - highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); - - if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - return; - - var pointRadius = series.points.radius + series.points.lineWidth / 2; - octx.lineWidth = pointRadius; - octx.strokeStyle = highlightColor; - var radius = 1.5 * pointRadius; - x = axisx.p2c(x); - y = axisy.p2c(y); - - octx.beginPath(); - if (series.points.symbol == "circle") - octx.arc(x, y, radius, 0, 2 * Math.PI, false); - else - series.points.symbol(octx, x, y, radius, false); - octx.closePath(); - octx.stroke(); - } - - function drawBarHighlight(series, point) { - var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), - fillStyle = highlightColor, - barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - octx.lineWidth = series.bars.lineWidth; - octx.strokeStyle = highlightColor; - - drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, - function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); - } - - function getColorOrGradient(spec, bottom, top, defaultColor) { - if (typeof spec == "string") - return spec; - else { - // assume this is a gradient spec; IE currently only - // supports a simple vertical gradient properly, so that's - // what we support too - var gradient = ctx.createLinearGradient(0, top, 0, bottom); - - for (var i = 0, l = spec.colors.length; i < l; ++i) { - var c = spec.colors[i]; - if (typeof c != "string") { - var co = $.color.parse(defaultColor); - if (c.brightness != null) - co = co.scale('rgb', c.brightness); - if (c.opacity != null) - co.a *= c.opacity; - c = co.toString(); - } - gradient.addColorStop(i / (l - 1), c); - } - - return gradient; - } - } - } - - // Add the plot function to the top level of the jQuery object - - $.plot = function(placeholder, data, options) { - //var t0 = new Date(); - var plot = new Plot($(placeholder), data, options, $.plot.plugins); - //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); - return plot; - }; - - $.plot.version = "0.8.2"; - - $.plot.plugins = []; - - // Also add the plot function as a chainable property - - $.fn.plot = function(data, options) { - return this.each(function() { - $.plot(this, data, options); - }); - }; - - // round to nearby lower multiple of base - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.min.js deleted file mode 100755 index 9620fc0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.min.js +++ /dev/null @@ -1,2 +0,0 @@ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("
      ").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("
      ").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("
      ").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;imaxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;iaxis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;mxmax)xmax=val}if(f.y){if(valymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;ito){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;ixrange.axis.max||yrange.toyrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max); -yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);if(xrange.from==xrange.to&&yrange.from==yrange.to)continue;xrange.from=xrange.axis.p2c(xrange.from);xrange.to=xrange.axis.p2c(xrange.to);yrange.from=yrange.axis.p2c(yrange.from);yrange.to=yrange.axis.p2c(yrange.to);if(xrange.from==xrange.to||yrange.from==yrange.to){ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=m.lineWidth||options.grid.markingsLineWidth;ctx.moveTo(xrange.from,yrange.from);ctx.lineTo(xrange.to,yrange.to);ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;jaxis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;iaxis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;iaxisx.max||yaxisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(rightaxisx.max||topaxisy.max)return;if(leftaxisx.max){right=axisx.max;drawRight=false}if(bottomaxisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i");fragments.push("");rowStarted=true}fragments.push('
      '+''+entry.label+"")}if(rowStarted)fragments.push("");if(fragments.length==0)return;var table=''+fragments.join("")+"
      ";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('
      '+table.replace('style="','style="position:absolute;'+pos+";")+"
      ").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('
      ').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;jmaxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;iaxisx.max||yaxisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY) max) { - // make sure min < max - var tmp = min; - min = max; - max = tmp; - } - - //Check that we are in panRange - if (pr) { - if (pr[0] != null && min < pr[0]) { - min = pr[0]; - } - if (pr[1] != null && max > pr[1]) { - max = pr[1]; - } - } - - var range = max - min; - if (zr && - ((zr[0] != null && range < zr[0]) || - (zr[1] != null && range > zr[1]))) - return; - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotzoom", [ plot, args ]); - }; - - plot.pan = function (args) { - var delta = { - x: +args.left, - y: +args.top - }; - - if (isNaN(delta.x)) - delta.x = 0; - if (isNaN(delta.y)) - delta.y = 0; - - $.each(plot.getAxes(), function (_, axis) { - var opts = axis.options, - min, max, d = delta[axis.direction]; - - min = axis.c2p(axis.p2c(axis.min) + d), - max = axis.c2p(axis.p2c(axis.max) + d); - - var pr = opts.panRange; - if (pr === false) // no panning on this axis - return; - - if (pr) { - // check whether we hit the wall - if (pr[0] != null && pr[0] > min) { - d = pr[0] - min; - min += d; - max += d; - } - - if (pr[1] != null && pr[1] < max) { - d = pr[1] - max; - min += d; - max += d; - } - } - - opts.min = min; - opts.max = max; - }); - - plot.setupGrid(); - plot.draw(); - - if (!args.preventEvent) - plot.getPlaceholder().trigger("plotpan", [ plot, args ]); - }; - - function shutdown(plot, eventHolder) { - eventHolder.unbind(plot.getOptions().zoom.trigger, onZoomClick); - eventHolder.unbind("mousewheel", onMouseWheel); - eventHolder.unbind("dragstart", onDragStart); - eventHolder.unbind("drag", onDrag); - eventHolder.unbind("dragend", onDragEnd); - if (panTimeout) - clearTimeout(panTimeout); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'navigate', - version: '1.3' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.navigate.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.navigate.min.js deleted file mode 100755 index a69a939..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.navigate.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)max){var tmp=min;min=max;max=tmp}if(pr){if(pr[0]!=null&&minpr[1]){max=pr[1]}}var range=max-min;if(zr&&(zr[0]!=null&&rangezr[1]))return;opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotzoom",[plot,args])};plot.pan=function(args){var delta={x:+args.left,y:+args.top};if(isNaN(delta.x))delta.x=0;if(isNaN(delta.y))delta.y=0;$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min,max,d=delta[axis.direction];min=axis.c2p(axis.p2c(axis.min)+d),max=axis.c2p(axis.p2c(axis.max)+d);var pr=opts.panRange;if(pr===false)return;if(pr){if(pr[0]!=null&&pr[0]>min){d=pr[0]-min;min+=d;max+=d}if(pr[1]!=null&&pr[1] 1) { - options.series.pie.tilt = 1; - } else if (options.series.pie.tilt < 0) { - options.series.pie.tilt = 0; - } - } - }); - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var options = plot.getOptions(); - if (options.series.pie.show) { - if (options.grid.hoverable) { - eventHolder.unbind("mousemove").mousemove(onMouseMove); - } - if (options.grid.clickable) { - eventHolder.unbind("click").click(onClick); - } - } - }); - - plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { - var options = plot.getOptions(); - if (options.series.pie.show) { - processDatapoints(plot, series, data, datapoints); - } - }); - - plot.hooks.drawOverlay.push(function(plot, octx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - drawOverlay(plot, octx); - } - }); - - plot.hooks.draw.push(function(plot, newCtx) { - var options = plot.getOptions(); - if (options.series.pie.show) { - draw(plot, newCtx); - } - }); - - function processDatapoints(plot, series, datapoints) { - if (!processed) { - processed = true; - canvas = plot.getCanvas(); - target = $(canvas).parent(); - options = plot.getOptions(); - plot.setData(combine(plot.getData())); - } - } - - function combine(data) { - - var total = 0, - combined = 0, - numCombined = 0, - color = options.series.pie.combine.color, - newdata = []; - - // Fix up the raw data from Flot, ensuring the data is numeric - - for (var i = 0; i < data.length; ++i) { - - var value = data[i].data; - - // If the data is an array, we'll assume that it's a standard - // Flot x-y pair, and are concerned only with the second value. - - // Note how we use the original array, rather than creating a - // new one; this is more efficient and preserves any extra data - // that the user may have stored in higher indexes. - - if ($.isArray(value) && value.length == 1) { - value = value[0]; - } - - if ($.isArray(value)) { - // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 - if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { - value[1] = +value[1]; - } else { - value[1] = 0; - } - } else if (!isNaN(parseFloat(value)) && isFinite(value)) { - value = [1, +value]; - } else { - value = [1, 0]; - } - - data[i].data = [value]; - } - - // Sum up all the slices, so we can calculate percentages for each - - for (var i = 0; i < data.length; ++i) { - total += data[i].data[0][1]; - } - - // Count the number of slices with percentages below the combine - // threshold; if it turns out to be just one, we won't combine. - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (value / total <= options.series.pie.combine.threshold) { - combined += value; - numCombined++; - if (!color) { - color = data[i].color; - } - } - } - - for (var i = 0; i < data.length; ++i) { - var value = data[i].data[0][1]; - if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { - newdata.push({ - data: [[1, value]], - color: data[i].color, - label: data[i].label, - angle: value * Math.PI * 2 / total, - percent: value / (total / 100) - }); - } - } - - if (numCombined > 1) { - newdata.push({ - data: [[1, combined]], - color: color, - label: options.series.pie.combine.label, - angle: combined * Math.PI * 2 / total, - percent: combined / (total / 100) - }); - } - - return newdata; - } - - function draw(plot, newCtx) { - - if (!target) { - return; // if no series were passed - } - - var canvasWidth = plot.getPlaceholder().width(), - canvasHeight = plot.getPlaceholder().height(), - legendWidth = target.children().filter(".legend").children().width() || 0; - - ctx = newCtx; - - // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! - - // When combining smaller slices into an 'other' slice, we need to - // add a new series. Since Flot gives plugins no way to modify the - // list of series, the pie plugin uses a hack where the first call - // to processDatapoints results in a call to setData with the new - // list of series, then subsequent processDatapoints do nothing. - - // The plugin-global 'processed' flag is used to control this hack; - // it starts out false, and is set to true after the first call to - // processDatapoints. - - // Unfortunately this turns future setData calls into no-ops; they - // call processDatapoints, the flag is true, and nothing happens. - - // To fix this we'll set the flag back to false here in draw, when - // all series have been processed, so the next sequence of calls to - // processDatapoints once again starts out with a slice-combine. - // This is really a hack; in 0.9 we need to give plugins a proper - // way to modify series before any processing begins. - - processed = false; - - // calculate maximum radius and center point - - maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; - centerTop = canvasHeight / 2 + options.series.pie.offset.top; - centerLeft = canvasWidth / 2; - - if (options.series.pie.offset.left == "auto") { - if (options.legend.position.match("w")) { - centerLeft += legendWidth / 2; - } else { - centerLeft -= legendWidth / 2; - } - if (centerLeft < maxRadius) { - centerLeft = maxRadius; - } else if (centerLeft > canvasWidth - maxRadius) { - centerLeft = canvasWidth - maxRadius; - } - } else { - centerLeft += options.series.pie.offset.left; - } - - var slices = plot.getData(), - attempts = 0; - - // Keep shrinking the pie's radius until drawPie returns true, - // indicating that all the labels fit, or we try too many times. - - do { - if (attempts > 0) { - maxRadius *= REDRAW_SHRINK; - } - attempts += 1; - clear(); - if (options.series.pie.tilt <= 0.8) { - drawShadow(); - } - } while (!drawPie() && attempts < REDRAW_ATTEMPTS); - - if (attempts >= REDRAW_ATTEMPTS) { - clear(); - target.prepend("
      Could not draw pie with labels contained inside canvas
      "); - } - - if (plot.setSeries && plot.insertLegend) { - plot.setSeries(slices); - plot.insertLegend(); - } - - // we're actually done at this point, just defining internal functions at this point - - function clear() { - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - target.children().filter(".pieLabel, .pieLabelBackground").remove(); - } - - function drawShadow() { - - var shadowLeft = options.series.pie.shadow.left; - var shadowTop = options.series.pie.shadow.top; - var edge = 10; - var alpha = options.series.pie.shadow.alpha; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { - return; // shadow would be outside canvas, so don't draw it - } - - ctx.save(); - ctx.translate(shadowLeft,shadowTop); - ctx.globalAlpha = alpha; - ctx.fillStyle = "#000"; - - // center and rotate to starting position - - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - - //radius -= edge; - - for (var i = 1; i <= edge; i++) { - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2, false); - ctx.fill(); - radius -= i; - } - - ctx.restore(); - } - - function drawPie() { - - var startAngle = Math.PI * options.series.pie.startAngle; - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - // center and rotate to starting position - - ctx.save(); - ctx.translate(centerLeft,centerTop); - ctx.scale(1, options.series.pie.tilt); - //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera - - // draw slices - - ctx.save(); - var currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - slices[i].startAngle = currentAngle; - drawSlice(slices[i].angle, slices[i].color, true); - } - ctx.restore(); - - // draw slice outlines - - if (options.series.pie.stroke.width > 0) { - ctx.save(); - ctx.lineWidth = options.series.pie.stroke.width; - currentAngle = startAngle; - for (var i = 0; i < slices.length; ++i) { - drawSlice(slices[i].angle, options.series.pie.stroke.color, false); - } - ctx.restore(); - } - - // draw donut hole - - drawDonutHole(ctx); - - ctx.restore(); - - // Draw the labels, returning true if they fit within the plot - - if (options.series.pie.label.show) { - return drawLabels(); - } else return true; - - function drawSlice(angle, color, fill) { - - if (angle <= 0 || isNaN(angle)) { - return; - } - - if (fill) { - ctx.fillStyle = color; - } else { - ctx.strokeStyle = color; - ctx.lineJoin = "round"; - } - - ctx.beginPath(); - if (Math.abs(angle - Math.PI * 2) > 0.000000001) { - ctx.moveTo(0, 0); // Center of the pie - } - - //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera - ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); - ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); - ctx.closePath(); - //ctx.rotate(angle); // This doesn't work properly in Opera - currentAngle += angle; - - if (fill) { - ctx.fill(); - } else { - ctx.stroke(); - } - } - - function drawLabels() { - - var currentAngle = startAngle; - var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; - - for (var i = 0; i < slices.length; ++i) { - if (slices[i].percent >= options.series.pie.label.threshold * 100) { - if (!drawLabel(slices[i], currentAngle, i)) { - return false; - } - } - currentAngle += slices[i].angle; - } - - return true; - - function drawLabel(slice, startAngle, index) { - - if (slice.data[0][1] == 0) { - return true; - } - - // format label text - - var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; - - if (lf) { - text = lf(slice.label, slice); - } else { - text = slice.label; - } - - if (plf) { - text = plf(text, slice); - } - - var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; - var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); - var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; - - var html = "" + text + ""; - target.append(html); - - var label = target.children("#pieLabel" + index); - var labelTop = (y - label.height() / 2); - var labelLeft = (x - label.width() / 2); - - label.css("top", labelTop); - label.css("left", labelLeft); - - // check to make sure that the label is not outside the canvas - - if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { - return false; - } - - if (options.series.pie.label.background.opacity != 0) { - - // put in the transparent background separately to avoid blended labels and label boxes - - var c = options.series.pie.label.background.color; - - if (c == null) { - c = slice.color; - } - - var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; - $("
      ") - .css("opacity", options.series.pie.label.background.opacity) - .insertBefore(label); - } - - return true; - } // end individual label function - } // end drawLabels function - } // end drawPie function - } // end draw function - - // Placed here because it needs to be accessed from multiple locations - - function drawDonutHole(layer) { - if (options.series.pie.innerRadius > 0) { - - // subtract the center - - layer.save(); - var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; - layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color - layer.beginPath(); - layer.fillStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.fill(); - layer.closePath(); - layer.restore(); - - // add inner stroke - - layer.save(); - layer.beginPath(); - layer.strokeStyle = options.series.pie.stroke.color; - layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); - layer.stroke(); - layer.closePath(); - layer.restore(); - - // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. - } - } - - //-- Additional Interactive related functions -- - - function isPointInPoly(poly, pt) { - for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) - ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) - && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) - && (c = !c); - return c; - } - - function findNearbySlice(mouseX, mouseY) { - - var slices = plot.getData(), - options = plot.getOptions(), - radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, - x, y; - - for (var i = 0; i < slices.length; ++i) { - - var s = slices[i]; - - if (s.pie.show) { - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(0, 0); // Center of the pie - //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. - ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); - ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); - ctx.closePath(); - x = mouseX - centerLeft; - y = mouseY - centerTop; - - if (ctx.isPointInPath) { - if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } else { - - // excanvas for IE doesn;t support isPointInPath, this is a workaround. - - var p1X = radius * Math.cos(s.startAngle), - p1Y = radius * Math.sin(s.startAngle), - p2X = radius * Math.cos(s.startAngle + s.angle / 4), - p2Y = radius * Math.sin(s.startAngle + s.angle / 4), - p3X = radius * Math.cos(s.startAngle + s.angle / 2), - p3Y = radius * Math.sin(s.startAngle + s.angle / 2), - p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), - p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), - p5X = radius * Math.cos(s.startAngle + s.angle), - p5Y = radius * Math.sin(s.startAngle + s.angle), - arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], - arrPoint = [x, y]; - - // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? - - if (isPointInPoly(arrPoly, arrPoint)) { - ctx.restore(); - return { - datapoint: [s.percent, s.data], - dataIndex: 0, - series: s, - seriesIndex: i - }; - } - } - - ctx.restore(); - } - } - - return null; - } - - function onMouseMove(e) { - triggerClickHoverEvent("plothover", e); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e); - } - - // trigger click or hover event (they send the same parameters so we share their code) - - function triggerClickHoverEvent(eventname, e) { - - var offset = plot.offset(); - var canvasX = parseInt(e.pageX - offset.left); - var canvasY = parseInt(e.pageY - offset.top); - var item = findNearbySlice(canvasX, canvasY); - - if (options.grid.autoHighlight) { - - // clear auto-highlights - - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && !(item && h.series == item.series)) { - unhighlight(h.series); - } - } - } - - // highlight the slice - - if (item) { - highlight(item.series, eventname); - } - - // trigger any hover bind events - - var pos = { pageX: e.pageX, pageY: e.pageY }; - target.trigger(eventname, [pos, item]); - } - - function highlight(s, auto) { - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i == -1) { - highlights.push({ series: s, auto: auto }); - plot.triggerRedrawOverlay(); - } else if (!auto) { - highlights[i].auto = false; - } - } - - function unhighlight(s) { - if (s == null) { - highlights = []; - plot.triggerRedrawOverlay(); - } - - //if (typeof s == "number") { - // s = series[s]; - //} - - var i = indexOfHighlight(s); - - if (i != -1) { - highlights.splice(i, 1); - plot.triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s) - return i; - } - return -1; - } - - function drawOverlay(plot, octx) { - - var options = plot.getOptions(); - - var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; - - octx.save(); - octx.translate(centerLeft, centerTop); - octx.scale(1, options.series.pie.tilt); - - for (var i = 0; i < highlights.length; ++i) { - drawHighlight(highlights[i].series); - } - - drawDonutHole(octx); - - octx.restore(); - - function drawHighlight(series) { - - if (series.angle <= 0 || isNaN(series.angle)) { - return; - } - - //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); - octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor - octx.beginPath(); - if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { - octx.moveTo(0, 0); // Center of the pie - } - octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); - octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); - octx.closePath(); - octx.fill(); - } - } - } // end init (plugin body) - - // define pie specific options and their default values - - var options = { - series: { - pie: { - show: false, - radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) - innerRadius: 0, /* for donut */ - startAngle: 3/2, - tilt: 1, - shadow: { - left: 5, // shadow left offset - top: 15, // shadow top offset - alpha: 0.02 // shadow alpha - }, - offset: { - top: 0, - left: "auto" - }, - stroke: { - color: "#fff", - width: 1 - }, - label: { - show: "auto", - formatter: function(label, slice) { - return "
      " + label + "
      " + Math.round(slice.percent) + "%
      "; - }, // formatter function - radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) - background: { - color: null, - opacity: 0 - }, - threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) - }, - combine: { - threshold: -1, // percentage at which to combine little slices into one larger slice - color: null, // color to give the new slice (auto-generated if null) - label: "Other" // label to give the new slice - }, - highlight: { - //color: "#fff", // will add this functionality once parseColor is available - opacity: 0.5 - } - } - } - }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "pie", - version: "1.1" - }); - -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.pie.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.pie.min.js deleted file mode 100755 index 88ffc9c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.pie.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=null;var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=false;if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=false}else{options.series.pie.label.show=true}}if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4}else{options.series.pie.radius=1}}if(options.series.pie.tilt>1){options.series.pie.tilt=1}else if(options.series.pie.tilt<0){options.series.pie.tilt=0}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;ioptions.series.pie.combine.threshold){newdata.push({data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)})}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=.8){drawShadow()}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("
      Could not draw pie with labels contained inside canvas
      ")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=(startAngle+slice.angle+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=y-label.height()/2;var labelLeft=x-label.width()/2;label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("
      ").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"
      "+label+"
      "+Math.round(slice.percent)+"%
      "},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.js deleted file mode 100755 index 44e04f8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.js +++ /dev/null @@ -1,60 +0,0 @@ -/* Flot plugin for automatically redrawing plots as the placeholder resizes. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -It works by listening for changes on the placeholder div (through the jQuery -resize event plugin) - if the size changes, it will redraw the plot. - -There are no options. If you need to disable the plugin for some plots, you -can just fix the size of their placeholders. - -*/ - -/* Inline dependency: - * jQuery resize event - v1.1 - 3/14/2010 - * http://benalman.com/projects/jquery-resize-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ - -(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this); - -(function ($) { - var options = { }; // no options - - function init(plot) { - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - plot.resize(); - plot.setupGrid(); - plot.draw(); - } - - function bindEvents(plot, eventHolder) { - plot.getPlaceholder().resize(onResize); - } - - function shutdown(plot, eventHolder) { - plot.getPlaceholder().unbind("resize", onResize); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'resize', - version: '1.0' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.min.js deleted file mode 100755 index 2983842..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.resize.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.js deleted file mode 100755 index f8fa668..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.js +++ /dev/null @@ -1,360 +0,0 @@ -/* Flot plugin for selecting regions of a plot. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - -selection: { - mode: null or "x" or "y" or "xy", - color: color, - shape: "round" or "miter" or "bevel", - minSize: number of pixels -} - -Selection support is enabled by setting the mode to one of "x", "y" or "xy". -In "x" mode, the user will only be able to specify the x range, similarly for -"y" mode. For "xy", the selection becomes a rectangle where both ranges can be -specified. "color" is color of the selection (if you need to change the color -later on, you can get to it with plot.getOptions().selection.color). "shape" -is the shape of the corners of the selection. - -"minSize" is the minimum size a selection can be in pixels. This value can -be customized to determine the smallest size a selection can be and still -have the selection rectangle be displayed. When customizing this value, the -fact that it refers to pixels, not axis units must be taken into account. -Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 -minute, setting "minSize" to 1 will not make the minimum selection size 1 -minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent -"plotunselected" events from being fired when the user clicks the mouse without -dragging. - -When selection support is enabled, a "plotselected" event will be emitted on -the DOM element you passed into the plot function. The event handler gets a -parameter with the ranges selected on the axes, like this: - - placeholder.bind( "plotselected", function( event, ranges ) { - alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) - // similar for yaxis - with multiple axes, the extra ones are in - // x2axis, x3axis, ... - }); - -The "plotselected" event is only fired when the user has finished making the -selection. A "plotselecting" event is fired during the process with the same -parameters as the "plotselected" event, in case you want to know what's -happening while it's happening, - -A "plotunselected" event with no arguments is emitted when the user clicks the -mouse to remove the selection. As stated above, setting "minSize" to 0 will -destroy this behavior. - -The plugin allso adds the following methods to the plot object: - -- setSelection( ranges, preventEvent ) - - Set the selection rectangle. The passed in ranges is on the same form as - returned in the "plotselected" event. If the selection mode is "x", you - should put in either an xaxis range, if the mode is "y" you need to put in - an yaxis range and both xaxis and yaxis if the selection mode is "xy", like - this: - - setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); - - setSelection will trigger the "plotselected" event when called. If you don't - want that to happen, e.g. if you're inside a "plotselected" handler, pass - true as the second parameter. If you are using multiple axes, you can - specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of - xaxis, the plugin picks the first one it sees. - -- clearSelection( preventEvent ) - - Clear the selection rectangle. Pass in true to avoid getting a - "plotunselected" event. - -- getSelection() - - Returns the current selection in the same format as the "plotselected" - event. If there's currently no selection, the function returns null. - -*/ - -(function ($) { - function init(plot) { - var selection = { - first: { x: -1, y: -1}, second: { x: -1, y: -1}, - show: false, - active: false - }; - - // FIXME: The drag handling implemented here should be - // abstracted out, there's some similar code from a library in - // the navigation plugin, this should be massaged a bit to fit - // the Flot cases here better and reused. Doing this would - // make this plugin much slimmer. - var savedhandlers = {}; - - var mouseUpHandler = null; - - function onMouseMove(e) { - if (selection.active) { - updateSelection(e); - - plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); - } - } - - function onMouseDown(e) { - if (e.which != 1) // only accept left-click - return; - - // cancel out any text selections - document.body.focus(); - - // prevent text selection and drag in old-school browsers - if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { - savedhandlers.onselectstart = document.onselectstart; - document.onselectstart = function () { return false; }; - } - if (document.ondrag !== undefined && savedhandlers.ondrag == null) { - savedhandlers.ondrag = document.ondrag; - document.ondrag = function () { return false; }; - } - - setSelectionPos(selection.first, e); - - selection.active = true; - - // this is a bit silly, but we have to use a closure to be - // able to whack the same handler again - mouseUpHandler = function (e) { onMouseUp(e); }; - - $(document).one("mouseup", mouseUpHandler); - } - - function onMouseUp(e) { - mouseUpHandler = null; - - // revert drag stuff for old-school browsers - if (document.onselectstart !== undefined) - document.onselectstart = savedhandlers.onselectstart; - if (document.ondrag !== undefined) - document.ondrag = savedhandlers.ondrag; - - // no more dragging - selection.active = false; - updateSelection(e); - - if (selectionIsSane()) - triggerSelectedEvent(); - else { - // this counts as a clear - plot.getPlaceholder().trigger("plotunselected", [ ]); - plot.getPlaceholder().trigger("plotselecting", [ null ]); - } - - return false; - } - - function getSelection() { - if (!selectionIsSane()) - return null; - - if (!selection.show) return null; - - var r = {}, c1 = selection.first, c2 = selection.second; - $.each(plot.getAxes(), function (name, axis) { - if (axis.used) { - var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); - r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; - } - }); - return r; - } - - function triggerSelectedEvent() { - var r = getSelection(); - - plot.getPlaceholder().trigger("plotselected", [ r ]); - - // backwards-compat stuff, to be removed in future - if (r.xaxis && r.yaxis) - plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); - } - - function clamp(min, value, max) { - return value < min ? min: (value > max ? max: value); - } - - function setSelectionPos(pos, e) { - var o = plot.getOptions(); - var offset = plot.getPlaceholder().offset(); - var plotOffset = plot.getPlotOffset(); - pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); - pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); - - if (o.selection.mode == "y") - pos.x = pos == selection.first ? 0 : plot.width(); - - if (o.selection.mode == "x") - pos.y = pos == selection.first ? 0 : plot.height(); - } - - function updateSelection(pos) { - if (pos.pageX == null) - return; - - setSelectionPos(selection.second, pos); - if (selectionIsSane()) { - selection.show = true; - plot.triggerRedrawOverlay(); - } - else - clearSelection(true); - } - - function clearSelection(preventEvent) { - if (selection.show) { - selection.show = false; - plot.triggerRedrawOverlay(); - if (!preventEvent) - plot.getPlaceholder().trigger("plotunselected", [ ]); - } - } - - // function taken from markings support in Flot - function extractRange(ranges, coord) { - var axis, from, to, key, axes = plot.getAxes(); - - for (var k in axes) { - axis = axes[k]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function setSelection(ranges, preventEvent) { - var axis, range, o = plot.getOptions(); - - if (o.selection.mode == "y") { - selection.first.x = 0; - selection.second.x = plot.width(); - } - else { - range = extractRange(ranges, "x"); - - selection.first.x = range.axis.p2c(range.from); - selection.second.x = range.axis.p2c(range.to); - } - - if (o.selection.mode == "x") { - selection.first.y = 0; - selection.second.y = plot.height(); - } - else { - range = extractRange(ranges, "y"); - - selection.first.y = range.axis.p2c(range.from); - selection.second.y = range.axis.p2c(range.to); - } - - selection.show = true; - plot.triggerRedrawOverlay(); - if (!preventEvent && selectionIsSane()) - triggerSelectedEvent(); - } - - function selectionIsSane() { - var minSize = plot.getOptions().selection.minSize; - return Math.abs(selection.second.x - selection.first.x) >= minSize && - Math.abs(selection.second.y - selection.first.y) >= minSize; - } - - plot.clearSelection = clearSelection; - plot.setSelection = setSelection; - plot.getSelection = getSelection; - - plot.hooks.bindEvents.push(function(plot, eventHolder) { - var o = plot.getOptions(); - if (o.selection.mode != null) { - eventHolder.mousemove(onMouseMove); - eventHolder.mousedown(onMouseDown); - } - }); - - - plot.hooks.drawOverlay.push(function (plot, ctx) { - // draw selection - if (selection.show && selectionIsSane()) { - var plotOffset = plot.getPlotOffset(); - var o = plot.getOptions(); - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var c = $.color.parse(o.selection.color); - - ctx.strokeStyle = c.scale('a', 0.8).toString(); - ctx.lineWidth = 1; - ctx.lineJoin = o.selection.shape; - ctx.fillStyle = c.scale('a', 0.4).toString(); - - var x = Math.min(selection.first.x, selection.second.x) + 0.5, - y = Math.min(selection.first.y, selection.second.y) + 0.5, - w = Math.abs(selection.second.x - selection.first.x) - 1, - h = Math.abs(selection.second.y - selection.first.y) - 1; - - ctx.fillRect(x, y, w, h); - ctx.strokeRect(x, y, w, h); - - ctx.restore(); - } - }); - - plot.hooks.shutdown.push(function (plot, eventHolder) { - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mousedown", onMouseDown); - - if (mouseUpHandler) - $(document).unbind("mouseup", mouseUpHandler); - }); - - } - - $.plot.plugins.push({ - init: init, - options: { - selection: { - mode: null, // one of null, "x", "y" or "xy" - color: "#e8cfac", - shape: "round", // one of "round", "miter", or "bevel" - minSize: 5 // minimum number of pixels - } - }, - name: 'selection', - version: '1.1' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.min.js deleted file mode 100755 index 6e31978..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.selection.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1)return;document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined)document.onselectstart=savedhandlers.onselectstart;if(document.ondrag!==undefined)document.ondrag=savedhandlers.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane())triggerSelectedEvent();else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection.show)return null;var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis)plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}function clamp(min,value,max){return valuemax?max:value}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y")pos.x=pos==selection.first?0:plot.width();if(o.selection.mode=="x")pos.y=pos==selection.first?0:plot.height()}function updateSelection(pos){if(pos.pageX==null)return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent)plot.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",.4).toString();var x=Math.min(selection.first.x,selection.second.x)+.5,y=Math.min(selection.first.y,selection.second.y)+.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler)$(document).unbind("mouseup",mouseUpHandler)})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.js deleted file mode 100755 index c01de67..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.js +++ /dev/null @@ -1,188 +0,0 @@ -/* Flot plugin for stacking data sets rather than overlyaing them. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin assumes the data is sorted on x (or y if stacking horizontally). -For line charts, it is assumed that if a line has an undefined gap (from a -null point), then the line above it should have the same gap - insert zeros -instead of "null" if you want another behaviour. This also holds for the start -and end of the chart. Note that stacking a mix of positive and negative values -in most instances doesn't make sense (so it looks weird). - -Two or more series are stacked when their "stack" attribute is set to the same -key (which can be any number or string or just "true"). To specify the default -stack, you can set the stack option like this: - - series: { - stack: null/false, true, or a key (number/string) - } - -You can also specify it for a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - stack: true - }]) - -The stacking order is determined by the order of the data series in the array -(later series end up on top of the previous). - -Internally, the plugin modifies the datapoints in each series, adding an -offset to the y value. For line series, extra data points are inserted through -interpolation. If there's a second y value, it's also adjusted (e.g for bar -charts or filled areas). - -*/ - -(function ($) { - var options = { - series: { stack: null } // or number/string - }; - - function init(plot) { - function findMatchingSeries(s, allseries) { - var res = null; - for (var i = 0; i < allseries.length; ++i) { - if (s == allseries[i]) - break; - - if (allseries[i].stack == s.stack) - res = allseries[i]; - } - - return res; - } - - function stackData(plot, s, datapoints) { - if (s.stack == null || s.stack === false) - return; - - var other = findMatchingSeries(s, plot.getData()); - if (!other) - return; - - var ps = datapoints.pointsize, - points = datapoints.points, - otherps = other.datapoints.pointsize, - otherpoints = other.datapoints.points, - newpoints = [], - px, py, intery, qx, qy, bottom, - withlines = s.lines.show, - horizontal = s.bars.horizontal, - withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), - withsteps = withlines && s.lines.steps, - fromgap = true, - keyOffset = horizontal ? 1 : 0, - accumulateOffset = horizontal ? 0 : 1, - i = 0, j = 0, l, m; - - while (true) { - if (i >= points.length) - break; - - l = newpoints.length; - - if (points[i] == null) { - // copy gaps - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - i += ps; - } - else if (j >= otherpoints.length) { - // for lines, we can't use the rest of the points - if (!withlines) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - } - i += ps; - } - else if (otherpoints[j] == null) { - // oops, got a gap - for (m = 0; m < ps; ++m) - newpoints.push(null); - fromgap = true; - j += otherps; - } - else { - // cases where we actually got two points - px = points[i + keyOffset]; - py = points[i + accumulateOffset]; - qx = otherpoints[j + keyOffset]; - qy = otherpoints[j + accumulateOffset]; - bottom = 0; - - if (px == qx) { - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - newpoints[l + accumulateOffset] += qy; - bottom = qy; - - i += ps; - j += otherps; - } - else if (px > qx) { - // we got past point below, might need to - // insert interpolated extra point - if (withlines && i > 0 && points[i - ps] != null) { - intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); - newpoints.push(qx); - newpoints.push(intery + qy); - for (m = 2; m < ps; ++m) - newpoints.push(points[i + m]); - bottom = qy; - } - - j += otherps; - } - else { // px < qx - if (fromgap && withlines) { - // if we come from a gap, we just skip this point - i += ps; - continue; - } - - for (m = 0; m < ps; ++m) - newpoints.push(points[i + m]); - - // we might be able to interpolate a point below, - // this can give us a better y - if (withlines && j > 0 && otherpoints[j - otherps] != null) - bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); - - newpoints[l + accumulateOffset] += bottom; - - i += ps; - } - - fromgap = false; - - if (l != newpoints.length && withbottom) - newpoints[l + 2] += bottom; - } - - // maintain the line steps invariant - if (withsteps && l != newpoints.length && l > 0 - && newpoints[l] != null - && newpoints[l] != newpoints[l - ps] - && newpoints[l + 1] != newpoints[l - ps + 1]) { - for (m = 0; m < ps; ++m) - newpoints[l + ps + m] = newpoints[l + m]; - newpoints[l + 1] = newpoints[l - ps + 1]; - } - } - - datapoints.points = newpoints; - } - - plot.hooks.processDatapoints.push(stackData); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'stack', - version: '1.2' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.min.js deleted file mode 100755 index 57785eb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.stack.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.rect(x - size, y - size, size + size, size + size); - }, - diamond: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) - var size = radius * Math.sqrt(Math.PI / 2); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y - size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x - size, y); - }, - triangle: function (ctx, x, y, radius, shadow) { - // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) - var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); - var height = size * Math.sin(Math.PI / 3); - ctx.moveTo(x - size/2, y + height/2); - ctx.lineTo(x + size/2, y + height/2); - if (!shadow) { - ctx.lineTo(x, y - height/2); - ctx.lineTo(x - size/2, y + height/2); - } - }, - cross: function (ctx, x, y, radius, shadow) { - // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 - var size = radius * Math.sqrt(Math.PI) / 2; - ctx.moveTo(x - size, y - size); - ctx.lineTo(x + size, y + size); - ctx.moveTo(x - size, y + size); - ctx.lineTo(x + size, y - size); - } - }; - - var s = series.points.symbol; - if (handlers[s]) - series.points.symbol = handlers[s]; - } - - function init(plot) { - plot.hooks.processDatapoints.push(processRawData); - } - - $.plot.plugins.push({ - init: init, - name: 'symbols', - version: '1.0' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.symbol.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.symbol.min.js deleted file mode 100755 index 3eab213..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.symbol.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.js deleted file mode 100755 index 2f6e635..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.js +++ /dev/null @@ -1,142 +0,0 @@ -/* Flot plugin for thresholding data. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -The plugin supports these options: - - series: { - threshold: { - below: number - color: colorspec - } - } - -It can also be applied to a single series, like this: - - $.plot( $("#placeholder"), [{ - data: [ ... ], - threshold: { ... } - }]) - -An array can be passed for multiple thresholding, like this: - - threshold: [{ - below: number1 - color: color1 - },{ - below: number2 - color: color2 - }] - -These multiple threshold objects can be passed in any order since they are -sorted by the processing function. - -The data points below "below" are drawn with the specified color. This makes -it easy to mark points below 0, e.g. for budget data. - -Internally, the plugin works by splitting the data into two series, above and -below the threshold. The extra series below the threshold will have its label -cleared and the special "originSeries" attribute set to the original series. -You may need to check for this in hover events. - -*/ - -(function ($) { - var options = { - series: { threshold: null } // or { below: number, color: color spec} - }; - - function init(plot) { - function thresholdData(plot, s, datapoints, below, color) { - var ps = datapoints.pointsize, i, x, y, p, prevp, - thresholded = $.extend({}, s); // note: shallow copy - - thresholded.datapoints = { points: [], pointsize: ps, format: datapoints.format }; - thresholded.label = null; - thresholded.color = color; - thresholded.threshold = null; - thresholded.originSeries = s; - thresholded.data = []; - - var origpoints = datapoints.points, - addCrossingPoints = s.lines.show; - - var threspoints = []; - var newpoints = []; - var m; - - for (i = 0; i < origpoints.length; i += ps) { - x = origpoints[i]; - y = origpoints[i + 1]; - - prevp = p; - if (y < below) - p = threspoints; - else - p = newpoints; - - if (addCrossingPoints && prevp != p && x != null - && i > 0 && origpoints[i - ps] != null) { - var interx = x + (below - y) * (x - origpoints[i - ps]) / (y - origpoints[i - ps + 1]); - prevp.push(interx); - prevp.push(below); - for (m = 2; m < ps; ++m) - prevp.push(origpoints[i + m]); - - p.push(null); // start new segment - p.push(null); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - p.push(interx); - p.push(below); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - p.push(x); - p.push(y); - for (m = 2; m < ps; ++m) - p.push(origpoints[i + m]); - } - - datapoints.points = newpoints; - thresholded.datapoints.points = threspoints; - - if (thresholded.datapoints.points.length > 0) { - var origIndex = $.inArray(s, plot.getData()); - // Insert newly-generated series right after original one (to prevent it from becoming top-most) - plot.getData().splice(origIndex + 1, 0, thresholded); - } - - // FIXME: there are probably some edge cases left in bars - } - - function processThresholds(plot, s, datapoints) { - if (!s.threshold) - return; - - if (s.threshold instanceof Array) { - s.threshold.sort(function(a, b) { - return a.below - b.below; - }); - - $(s.threshold).each(function(i, th) { - thresholdData(plot, s, datapoints, th.below, th.color); - }); - } - else { - thresholdData(plot, s, datapoints, s.threshold.below, s.threshold.color); - } - } - - plot.hooks.processDatapoints.push(processThresholds); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'threshold', - version: '1.2' - }); -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.min.js deleted file mode 100755 index a53849a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.threshold.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.js deleted file mode 100755 index ac9e666..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.js +++ /dev/null @@ -1,429 +0,0 @@ -/* Pretty handling of time axes. - -Copyright (c) 2007-2013 IOLA and Ole Laursen. -Licensed under the MIT license. - -Set axis.mode to "time" to enable. See the section "Time series data" in -API.txt for details. - -*/ - -(function($) { - - var options = { - xaxis: { - timezone: null, // "browser" for local to the client or timezone for timezone-js - timeformat: null, // format string to use - twelveHourClock: false, // 12 or 24 time in time mode - monthNames: null // list of names of months - } - }; - - // round to nearby lower multiple of base - - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - - // Returns a string with the date d formatted according to fmt. - // A subset of the Open Group's strftime format is supported. - - function formatDate(d, fmt, monthNames, dayNames) { - - if (typeof d.strftime == "function") { - return d.strftime(fmt); - } - - var leftPad = function(n, pad) { - n = "" + n; - pad = "" + (pad == null ? "0" : pad); - return n.length == 1 ? pad + n : n; - }; - - var r = []; - var escape = false; - var hours = d.getHours(); - var isAM = hours < 12; - - if (monthNames == null) { - monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - } - - if (dayNames == null) { - dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - } - - var hours12; - - if (hours > 12) { - hours12 = hours - 12; - } else if (hours == 0) { - hours12 = 12; - } else { - hours12 = hours; - } - - for (var i = 0; i < fmt.length; ++i) { - - var c = fmt.charAt(i); - - if (escape) { - switch (c) { - case 'a': c = "" + dayNames[d.getDay()]; break; - case 'b': c = "" + monthNames[d.getMonth()]; break; - case 'd': c = leftPad(d.getDate()); break; - case 'e': c = leftPad(d.getDate(), " "); break; - case 'h': // For back-compat with 0.7; remove in 1.0 - case 'H': c = leftPad(hours); break; - case 'I': c = leftPad(hours12); break; - case 'l': c = leftPad(hours12, " "); break; - case 'm': c = leftPad(d.getMonth() + 1); break; - case 'M': c = leftPad(d.getMinutes()); break; - // quarters not in Open Group's strftime specification - case 'q': - c = "" + (Math.floor(d.getMonth() / 3) + 1); break; - case 'S': c = leftPad(d.getSeconds()); break; - case 'y': c = leftPad(d.getFullYear() % 100); break; - case 'Y': c = "" + d.getFullYear(); break; - case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; - case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; - case 'w': c = "" + d.getDay(); break; - } - r.push(c); - escape = false; - } else { - if (c == "%") { - escape = true; - } else { - r.push(c); - } - } - } - - return r.join(""); - } - - // To have a consistent view of time-based data independent of which time - // zone the client happens to be in we need a date-like object independent - // of time zones. This is done through a wrapper that only calls the UTC - // versions of the accessor methods. - - function makeUtcWrapper(d) { - - function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { - sourceObj[sourceMethod] = function() { - return targetObj[targetMethod].apply(targetObj, arguments); - }; - } - var utc = { - date: d - }; - - // support strftime, if found - - if (d.strftime != undefined) { - addProxyMethod(utc, "strftime", d, "strftime"); - } - - addProxyMethod(utc, "getTime", d, "getTime"); - addProxyMethod(utc, "setTime", d, "setTime"); - - var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; - - for (var p = 0; p < props.length; p++) { - addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); - addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); - } - - return utc; - } - // select time zone strategy. This returns a date-like object tied to the - // desired timezone - - function dateGenerator(ts, opts) { - if (opts.timezone == "browser") { - return new Date(ts); - } else if (!opts.timezone || opts.timezone == "utc") { - return makeUtcWrapper(new Date(ts)); - } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { - var d = new timezoneJS.Date(); - // timezone-js is fickle, so be sure to set the time zone before - // setting the time. - d.setTimezone(opts.timezone); - d.setTime(ts); - return d; - } else { - return makeUtcWrapper(new Date(ts)); - } - } - - // map of app. size of time units in milliseconds - - var timeUnitSize = { - "second": 1000, - "minute": 60 * 1000, - "hour": 60 * 60 * 1000, - "day": 24 * 60 * 60 * 1000, - "month": 30 * 24 * 60 * 60 * 1000, - "quarter": 3 * 30 * 24 * 60 * 60 * 1000, - "year": 365.2425 * 24 * 60 * 60 * 1000 - }; - - // the allowed tick sizes, after 1 year we use - // an integer algorithm - - var baseSpec = [ - [1, "second"], [2, "second"], [5, "second"], [10, "second"], - [30, "second"], - [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], - [30, "minute"], - [1, "hour"], [2, "hour"], [4, "hour"], - [8, "hour"], [12, "hour"], - [1, "day"], [2, "day"], [3, "day"], - [0.25, "month"], [0.5, "month"], [1, "month"], - [2, "month"] - ]; - - // we don't know which variant(s) we'll need yet, but generating both is - // cheap - - var specMonths = baseSpec.concat([[3, "month"], [6, "month"], - [1, "year"]]); - var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], - [1, "year"]]); - - function init(plot) { - plot.hooks.processOptions.push(function (plot, options) { - $.each(plot.getAxes(), function(axisName, axis) { - - var opts = axis.options; - - if (opts.mode == "time") { - axis.tickGenerator = function(axis) { - - var ticks = []; - var d = dateGenerator(axis.min, opts); - var minSize = 0; - - // make quarter use a possibility if quarters are - // mentioned in either of these options - - var spec = (opts.tickSize && opts.tickSize[1] === - "quarter") || - (opts.minTickSize && opts.minTickSize[1] === - "quarter") ? specQuarters : specMonths; - - if (opts.minTickSize != null) { - if (typeof opts.tickSize == "number") { - minSize = opts.tickSize; - } else { - minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; - } - } - - for (var i = 0; i < spec.length - 1; ++i) { - if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] - + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 - && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { - break; - } - } - - var size = spec[i][0]; - var unit = spec[i][1]; - - // special-case the possibility of several years - - if (unit == "year") { - - // if given a minTickSize in years, just use it, - // ensuring that it's an integer - - if (opts.minTickSize != null && opts.minTickSize[1] == "year") { - size = Math.floor(opts.minTickSize[0]); - } else { - - var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); - var norm = (axis.delta / timeUnitSize.year) / magn; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - } - - // minimum size for years is 1 - - if (size < 1) { - size = 1; - } - } - - axis.tickSize = opts.tickSize || [size, unit]; - var tickSize = axis.tickSize[0]; - unit = axis.tickSize[1]; - - var step = tickSize * timeUnitSize[unit]; - - if (unit == "second") { - d.setSeconds(floorInBase(d.getSeconds(), tickSize)); - } else if (unit == "minute") { - d.setMinutes(floorInBase(d.getMinutes(), tickSize)); - } else if (unit == "hour") { - d.setHours(floorInBase(d.getHours(), tickSize)); - } else if (unit == "month") { - d.setMonth(floorInBase(d.getMonth(), tickSize)); - } else if (unit == "quarter") { - d.setMonth(3 * floorInBase(d.getMonth() / 3, - tickSize)); - } else if (unit == "year") { - d.setFullYear(floorInBase(d.getFullYear(), tickSize)); - } - - // reset smaller components - - d.setMilliseconds(0); - - if (step >= timeUnitSize.minute) { - d.setSeconds(0); - } - if (step >= timeUnitSize.hour) { - d.setMinutes(0); - } - if (step >= timeUnitSize.day) { - d.setHours(0); - } - if (step >= timeUnitSize.day * 4) { - d.setDate(1); - } - if (step >= timeUnitSize.month * 2) { - d.setMonth(floorInBase(d.getMonth(), 3)); - } - if (step >= timeUnitSize.quarter * 2) { - d.setMonth(floorInBase(d.getMonth(), 6)); - } - if (step >= timeUnitSize.year) { - d.setMonth(0); - } - - var carry = 0; - var v = Number.NaN; - var prev; - - do { - - prev = v; - v = d.getTime(); - ticks.push(v); - - if (unit == "month" || unit == "quarter") { - if (tickSize < 1) { - - // a bit complicated - we'll divide the - // month/quarter up but we need to take - // care of fractions so we don't end up in - // the middle of a day - - d.setDate(1); - var start = d.getTime(); - d.setMonth(d.getMonth() + - (unit == "quarter" ? 3 : 1)); - var end = d.getTime(); - d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); - carry = d.getHours(); - d.setHours(0); - } else { - d.setMonth(d.getMonth() + - tickSize * (unit == "quarter" ? 3 : 1)); - } - } else if (unit == "year") { - d.setFullYear(d.getFullYear() + tickSize); - } else { - d.setTime(v + step); - } - } while (v < axis.max && v != prev); - - return ticks; - }; - - axis.tickFormatter = function (v, axis) { - - var d = dateGenerator(v, axis.options); - - // first check global format - - if (opts.timeformat != null) { - return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); - } - - // possibly use quarters if quarters are mentioned in - // any of these places - - var useQuarters = (axis.options.tickSize && - axis.options.tickSize[1] == "quarter") || - (axis.options.minTickSize && - axis.options.minTickSize[1] == "quarter"); - - var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; - var span = axis.max - axis.min; - var suffix = (opts.twelveHourClock) ? " %p" : ""; - var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; - var fmt; - - if (t < timeUnitSize.minute) { - fmt = hourCode + ":%M:%S" + suffix; - } else if (t < timeUnitSize.day) { - if (span < 2 * timeUnitSize.day) { - fmt = hourCode + ":%M" + suffix; - } else { - fmt = "%b %d " + hourCode + ":%M" + suffix; - } - } else if (t < timeUnitSize.month) { - fmt = "%b %d"; - } else if ((useQuarters && t < timeUnitSize.quarter) || - (!useQuarters && t < timeUnitSize.year)) { - if (span < timeUnitSize.year) { - fmt = "%b"; - } else { - fmt = "%b %Y"; - } - } else if (useQuarters && t < timeUnitSize.year) { - if (span < timeUnitSize.year) { - fmt = "Q%q"; - } else { - fmt = "Q%q %Y"; - } - } else { - fmt = "%Y"; - } - - var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); - - return rt; - }; - } - }); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'time', - version: '1.0' - }); - - // Time-axis support used to be in Flot core, which exposed the - // formatDate function on the plot object. Various plugins depend - // on the function, so we need to re-expose it here. - - $.plot.formatDate = formatDate; - -})(jQuery); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.min.js deleted file mode 100755 index aaf319c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/flot-old/jquery.flot.time.min.js +++ /dev/null @@ -1 +0,0 @@ -(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else if(hours==0){hours12=12}else{hours12=hours}for(var i=0;i=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=axis.delta/timeUnitSize.year/magn;if(norm<1.5){size=1}else if(norm<3){size=2}else if(norm<7.5){size=5}else{size=10}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}while(v"))m(e,u,-9999);else{var p=document.createTextNode(e);u.appendChild(p)}u.style.position="absolute",u.style.maxWidth=i,u.setAttributeNS(null,"x",-9999),u.setAttributeNS(null,"y",-9999),"object"===_typeof(n)?(u.style.font=a,u.style.fill=n.fill):"string"==typeof n&&u.setAttribute("class",n),this.getSVGLayer(t).appendChild(u);var h=u.getBBox();for(l=s[c]={width:h.width,height:h.height,measured:!0,element:u,positions:[]};u.firstChild;)u.removeChild(u.firstChild);u.parentNode.removeChild(u)}return l.measured=!0,l},t.prototype.addText=function(t,e,n,o,i,a,r,s,l,c){var u=this.getTextInfo(t,o,i,a,r),p=u.positions;"center"===s?e-=u.width/2:"right"===s&&(e-=u.width),"middle"===l?n-=u.height/2:"bottom"===l&&(n-=u.height),n+=.75*u.height;for(var h,d=0;p[d];d++){if((h=p[d]).x===e&&h.y===n&&h.text===o)return h.active=!0,void f(h.element,c);if(!1===h.active)return h.active=!0,-1!==(h.text=o).indexOf("
      ")?(n-=.25*u.height,m(o,h.element,e)):h.element.textContent=o,h.element.setAttributeNS(null,"x",e),h.element.setAttributeNS(null,"y",n),h.x=e,h.y=n,void f(h.element,c)}h={active:!0,rendered:!1,element:p.length?u.element.cloneNode():u.element,text:o,x:e,y:n},p.push(h),-1!==o.indexOf("
      ")?(n-=.25*u.height,m(o,h.element,e)):h.element.textContent=o,h.element.setAttributeNS(null,"x",e),h.element.setAttributeNS(null,"y",n),h.element.style.textAlign=s,f(h.element,c)};var m=function(t,e,n){var o,i,a,r=t.split("
      ");for(i=0;il.xmax&&(l.xmax=p)),!0===h.y&&(pl.ymax&&(l.ymax=p))))}return l},M.adjustSeriesDataRange=function(t,e){if(t.bars.show){var n,o=t.bars.barWidth[1];t.datapoints&&t.datapoints.points&&!o&&function(t){var e=[],n=t.datapoints.pointsize,o=Number.MAX_VALUE;t.datapoints.points.length<=n&&(o=1);for(var i=t.bars.horizontal?1:0;it.datamax&&n!==1/0&&(t.datamax=n)}function g(t,e){return t&&t[e]&&t[e].datapoints&&t[e].datapoints.points?t[e].datapoints.points:[]}for(J.each(L(),function(t,e){!0!==e.options.growOnly?(e.datamin=d,e.datamax=f):(void 0===e.datamin&&(e.datamin=d),void 0===e.datamax&&(e.datamax=f)),e.used=!1}),e=0;eo.max?d:(l=x.getTextInfo(p,t.label,h),"x"===o.direction?(r="center",i=b.left+o.p2c(t.v),"bottom"===o.position?a=u.top+u.padding-o.boxPosition.centerY:(a=u.top+u.height-u.padding+o.boxPosition.centerY,s="bottom")):(s="middle",a=b.top+o.p2c(t.v),"left"===o.position?(i=u.left+u.width-u.padding-o.boxPosition.centerX,r="right"):i=u.left+u.padding+o.boxPosition.centerX),c={x:i-l.width/2-3,y:a-3,width:l.width+6,height:l.height+6},n=c,e.some(function(t){return m(n.x,n.y,n.x+n.width,n.y+n.height,t.x,t.y,t.x+t.width,t.y+t.height)})?d:(x.addText(p,i,a,t.label,h,null,null,r,s),c));var n};if(x.removeText(p),P(k.drawAxis,[o,x]),o.show)switch(o.options.showTickLabels){case"none":break;case"endpoints":f.push(g(o.ticks[0],f)),f.push(g(o.ticks[o.ticks.length-1],f));break;case"major":for(f.push(g(o.ticks[0],f)),f.push(g(o.ticks[o.ticks.length-1],f)),e=1;e=t.min&&c<=t.max&&("x"===t.direction?(a=t.p2c(c),p=e,"top"===t.position&&(p=-p)):(r=t.p2c(c),u=e,"left"===t.position&&(u=-u)),"x"===t.direction?a=X(g.lineWidth,a):r=X(g.lineWidth,r),g.moveTo(a,r),g.lineTo(a+u,r+p)),!0===n&&st.max||(n=i,void 0,o=f.grid.borderWidth,(!("object"===_typeof(o)&&0i.axis.max||a.toa.axis.max)){i.from=Math.max(i.from,i.axis.min),i.to=Math.min(i.to,i.axis.max),a.from=Math.max(a.from,a.axis.min),a.to=Math.min(a.to,a.axis.max);var r=i.from===i.to,s=a.from===a.to;if(!r||!s)if(i.from=Math.floor(i.axis.p2c(i.from)),i.to=Math.floor(i.axis.p2c(i.to)),a.from=Math.floor(a.axis.p2c(a.from)),a.to=Math.floor(a.axis.p2c(a.to)),r||s){var l=o.lineWidth||f.grid.markingsLineWidth,c=l%2?.5:0;g.beginPath(),g.strokeStyle=o.color||f.grid.markingsColor,g.lineWidth=l,r?(g.moveTo(i.to+c,a.from),g.lineTo(i.to+c,a.to)):(g.moveTo(i.from,a.to+c),g.lineTo(i.to,a.to+c)),g.stroke()}else g.fillStyle=o.color||f.grid.markingsColor,g.fillRect(i.from,a.to,i.to-i.from,a.from-a.to)}}}(),t=L(),e=f.grid.borderWidth;for(var i=0;it.yaxis.min?Math.min(t.yaxis.max,u):t.yaxis.min,h=-1,d=0;d=Math.min(p,f)&&m+o<=s&&s<=m+i:f+o<=r&&r<=f+i&&s>=Math.min(p,m)&&s<=Math.max(p,m))&&(h=d/c))}return h}function U(){var t=f.interaction.redrawOverlayInterval;-1!==t?s||(s=setTimeout(function(){Q(M)},t)):Q()}function Q(t){if(s=null,a){n.clear(),P(k.drawOverlay,[a,n]);var e=new CustomEvent("onDrawingDone");t.getEventHolder().dispatchEvent(e),t.getPlaceholder().trigger("drawingdone")}}function Z(t,e,n,o){if("string"==typeof t)return t;for(var i=g.createLinearGradient(0,n,0,e),a=0,r=t.colors.length;ar.max||vs.max||(mr.max&&(g=r.max,h=!1),xs.max&&(v=s.max,d=!1),m=r.p2c(m),x=s.p2c(x),g=r.p2c(g),v=s.p2c(v),a&&(l.fillStyle=a(x,v),l.fillRect(m,v,g-m,x-v)),0n.min?Math.min(n.max,o):n.min,c=0,u=1,p=!1,h=0,d=0,f=null,m=null;!(0r.length+s);){var g=r[(c+=s)-s],x=r[c-s+u],v=r[c],b=r[c+u];if(-2===s&&(x=b=l),p){if(0e.max){if(v>e.max)continue;x=(e.max-g)/(v-g)*(b-x)+x,g=e.max}else if(g<=v&&v>e.max){if(g>e.max)continue;b=(e.max-g)/(v-g)*(b-x)+x,v=e.max}if(p||(i.beginPath(),i.moveTo(e.p2c(g),n.p2c(l)),p=!0),x>=n.max&&b>=n.max)i.lineTo(e.p2c(g),n.p2c(n.max)),i.lineTo(e.p2c(v),n.p2c(n.max));else if(x<=n.min&&b<=n.min)i.lineTo(e.p2c(g),n.p2c(n.min)),i.lineTo(e.p2c(v),n.p2c(n.min));else{var y=g,w=v;x<=b&&x=n.min?(g=(n.min-x)/(b-x)*(v-g)+g,x=n.min):b<=x&&b=n.min&&(v=(n.min-x)/(b-x)*(v-g)+g,b=n.min),b<=x&&x>n.max&&b<=n.max?(g=(n.max-x)/(b-x)*(v-g)+g,x=n.max):x<=b&&b>n.max&&x<=n.max&&(v=(n.max-x)/(b-x)*(v-g)+g,b=n.max),g!==y&&i.lineTo(e.p2c(y),n.p2c(x)),i.lineTo(e.p2c(g),n.p2c(x)),i.lineTo(e.p2c(v),n.p2c(b)),v!==w&&(i.lineTo(e.p2c(v),n.p2c(b)),i.lineTo(e.p2c(w),n.p2c(b)))}}else m=f=null}}(s,t.xaxis,t.yaxis,t.lines.fillTowards||0,e,t.lines.steps)),0i.max){if(f>i.max)continue;p=(i.max-h)/(f-h)*(d-p)+p,h=i.max}else if(h<=f&&f>i.max){if(h>i.max)continue;d=(i.max-h)/(f-h)*(d-p)+p,f=i.max}if(p<=d&&po.max){if(d>o.max)continue;h=(o.max-p)/(d-p)*(f-h)+h,p=o.max}else if(p<=d&&d>o.max){if(p>o.max)continue;f=(o.max-p)/(d-p)*(f-h)+h,d=o.max}p===c&&h===u||a.moveTo(o.p2c(p)+e,i.p2c(h)+n),c=d,u=f,a.lineTo(o.p2c(d)+e,i.p2c(f)+n)}else g=m=null;a.stroke()}(s,0,0,t.xaxis,t.yaxis,e,t.lines.steps),e.restore()},this.drawSeriesPoints=function(t,d,e,n,o,i,a){function r(t,e,n,o,i,a){t.moveTo(e+o,n),t.arc(e,n,o,0,i?Math.PI:2*Math.PI,!1)}r.fill=!0,d.save(),d.translate(e.left,e.top);var s={format:t.datapoints.format,points:t.datapoints.points,pointsize:t.datapoints.pointsize};t.decimatePoints&&(s.points=t.decimatePoints(t,t.xaxis.min,t.xaxis.max,n,t.yaxis.min,t.yaxis.max,o));var l,c=t.points.lineWidth,u=t.points.radius,p=t.points.symbol;"circle"===p?l=r:"string"==typeof p&&i&&i[p]?l=i[p]:"function"==typeof i&&(l=i),0===c&&(c=1e-4),d.lineWidth=c,d.fillStyle=m(t.points,t.color,null,null,a),d.strokeStyle=t.color,function(t,e,n,o,i,a,r,s){var l=t.points,c=t.pointsize;d.beginPath();for(var u=0;ua.max||hr.max||(p=a.p2c(p),h=r.p2c(h)+o,s(d,p,h,e,i,n))}s.fill&&!i&&d.fill(),d.stroke()}(s,u,!0,0,!1,t.xaxis,t.yaxis,l),d.restore()},this.drawSeriesBars=function(h,d,t,e,n,o,i){d.save(),d.translate(t.left,t.top);var a,r={format:h.datapoints.format,points:h.datapoints.points,pointsize:h.datapoints.pointsize};h.decimate&&(r.points=h.decimate(h,h.xaxis.min,h.xaxis.max,e)),d.lineWidth=h.bars.lineWidth,d.strokeStyle=h.color;var s=h.bars.barWidth[0]||h.bars.barWidth;switch(h.bars.align){case"left":a=0;break;case"right":a=-s;break;default:a=-s/2}!function(t,e,n,o,i,a){for(var r=t.points,s=t.pointsize,l=h.bars.fillTowards||0,c=l>a.min?Math.min(a.max,l):a.min,u=0;ur[1].max||gr[0].max))continue;if("y"===l[d].err&&(m>r[0].max||mr[1].max))continue;var b=!0,y=!0;x>f[1]&&(b=!1,x=f[1]),v=f?d={pixelCoord:p,idealPixelCoord:d.idealPixelCoord-f}:h=null,h&&o.push(h);o.reverse()}else{var g=t.computeTickSize(l,c,n),x={min:l,max:c,tickSize:g};o=v.plot.linearTickGenerator(x)}return o},w=function(t,e){var n=t.min,o=t.max;return n<=0&&o<(n=null===t.datamin?t.min=.1:h(e,t))&&(t.max=null!==t.datamax?t.datamax:t.options.max,t.options.offset.below=0,t.options.offset.above=0),n},a=function(t,e,n){var o=0e.left&&a.lefte.top&&a.tope.left&&n.lefte.top&&n.top=N||Math.abs(r.x)=N),b=y.getAxes();o=n?function(t){switch(!k&&Math.max(Math.abs(t.x),Math.abs(t.y))>=N&&(k=Math.abs(t.x)=N?{x:0,y:s.y}:Math.abs(s.y)=N?{x:s.x,y:0}:s),l=o,0e.left&&n.lefte.top&&n.top=e.length?null:e[t.fillBetween]:null}(e,t.getData());if(o){for(var i,a,r,s,l,c,u,p,h=n.pointsize,d=n.points,f=o.datapoints.pointsize,m=o.datapoints.points,g=[],x=e.lines.show,v=2=d.length);){if(u=g.length,null==d[w]){for(p=0;p=m.length){if(!x)for(p=0;p=t.min&&o<=t.max&&e.push([o,n])}return e.sort(function(t,e){return t[0]-e[0]}),e}function o(t,e,n){if("categories"===t[e].options.mode){if(!t[e].categories){var o={},i=t[e].options.categories||{};if(s.isArray(i))for(var a=0;ae&&(e=t[n]);return e+1}(n),l=0;l=m.length);){if(h=v.length,null==m[S]){for(d=0;d=x.length){if(!b)for(d=0;dm)&&(e=c,n=h,o=d,i=(t=u).offset(),a={left:0,top:0},r=x(e)/n.prevDistance,s=x(e),a.left=y(e,"pinch").x-i.left,a.top=y(e,"pinch").y-i.top,t.zoom({center:a,amount:r,axes:o.touchedAxis}),n.prevDistance=s,h.zoomEnable=!0),p=null},1e3/60))},end:function(t){p&&(clearTimeout(p),p=null),f(t,"pinch",h),h.prevDistance=null}},a={recenterPlot:function(t){t&&t.detail&&"touchstart"===t.detail.type&&function(t,e,n,o){if(a=t,r=e,s=o,l=a.getTouchedAxis(r.detail.firstTouch.x,r.detail.firstTouch.y),void 0!==l[0]&&(s.prevTouchedAxis=l[0].direction),void 0!==(l=a.getTouchedAxis(r.detail.secondTouch.x,r.detail.secondTouch.y))[0]&&(s.touchedAxis=l,s.currentTouchedAxis=l[0].direction),g(s)&&(s.touchedAxis=null,s.prevTouchedAxis="none",s.currentTouchedAxis="none"),"x"===o.currentTouchedAxis&&"x"===o.prevTouchedAxis||"y"===o.currentTouchedAxis&&"y"===o.prevTouchedAxis||"none"===o.currentTouchedAxis&&"none"===o.prevTouchedAxis){var i;t.recenter({axes:o.touchedAxis}),i=o.touchedAxis?new c.Event("re-center",{detail:{axisTouched:o.touchedAxis}}):new c.Event("re-center",{detail:e}),t.getPlaceholder().trigger(i)}var a,r,s,l}(u,t,0,d)}},!0!==t.pan.enableTouch&&!0!==t.zoom.enableTouch||(u.hooks.bindEvents.push(function(t,e){var n=t.getOptions();n.zoom.interactive&&n.zoom.enableTouch&&(e[0].addEventListener("pinchstart",i.start,!1),e[0].addEventListener("pinchdrag",i.drag,!1),e[0].addEventListener("pinchend",i.end,!1)),n.pan.interactive&&n.pan.enableTouch&&(e[0].addEventListener("panstart",o.start,!1),e[0].addEventListener("pandrag",o.drag,!1),e[0].addEventListener("panend",o.end,!1)),n.recenter.interactive&&n.recenter.enableTouch&&e[0].addEventListener("doubletap",a.recenterPlot,!1)}),u.hooks.shutdown.push(function(t,e){e[0].removeEventListener("panstart",o.start),e[0].removeEventListener("pandrag",o.drag),e[0].removeEventListener("panend",o.end),e[0].removeEventListener("pinchstart",i.start),e[0].removeEventListener("pinchdrag",i.drag),e[0].removeEventListener("pinchend",i.end),e[0].removeEventListener("doubletap",a.recenterPlot)}))}function g(t){return!t.touchedAxis||0===t.touchedAxis.length}function l(t,e,n,o){var i,a=y(t,e);switch(o.navigationConstraint){case"unconstrained":o.touchedAxis=null,n.prevTapPosition={x:n.prevPanPosition.x,y:n.prevPanPosition.y},n.prevPanPosition={x:a.x,y:a.y};break;case"axisConstrained":i=o.touchedAxis[0].direction,o.currentTouchedAxis=i,n.prevTapPosition[i]=n.prevPanPosition[i],n.prevPanPosition[i]=a[i]}}function x(t){var e,n,o,i,a=t.detail.touches[0],r=t.detail.touches[1];return e=a.pageX,n=a.pageY,o=r.pageX,i=r.pageY,Math.sqrt((e-o)*(e-o)+(n-i)*(n-i))}function v(t,e,n,o){var i=y(t,e);switch(o.navigationConstraint){case"unconstrained":n.prevPanPosition.x=i.x,n.prevPanPosition.y=i.y;break;case"axisConstrained":n.prevPanPosition[o.currentTouchedAxis]=i[o.currentTouchedAxis]}}function b(t,e,n){var o=y(t,e);return{x:o.x-n.prevPanPosition.x,y:o.y-n.prevPanPosition.y}}function y(t,e){return"pinch"===e?{x:(t.detail.touches[0].pageX+t.detail.touches[1].pageX)/2,y:(t.detail.touches[0].pageY+t.detail.touches[1].pageY)/2}:{x:t.detail.touches[0].pageX,y:t.detail.touches[0].pageY}}c.plot.plugins.push({init:function(t){t.hooks.processOptions.push(e)},options:{zoom:{enableTouch:!1},pan:{enableTouch:!1,touchMode:"manual"},recenter:{enableTouch:!0}},name:"navigateTouch",version:"0.3"})}(jQuery),function(y){var w=y.plot.browser,e="click",T="hover";y.plot.plugins.push({init:function(f){var n,m=[];function o(t){var e=f.getOptions(),n=new CustomEvent("mouseevent");return n.pageX=t.detail.changedTouches[0].pageX,n.pageY=t.detail.changedTouches[0].pageY,n.clientX=t.detail.changedTouches[0].clientX,n.clientY=t.detail.changedTouches[0].clientY,e.grid.hoverable&&i(n,T,30),!1}function i(t,e,n){var o=f.getData();if(void 0!==t&&0r.max||as.max)){var c=t.points.radius+t.points.lineWidth/2;n.lineWidth=c,n.strokeStyle=l;var u=1.5*c;i=r.p2c(i),a=s.p2c(a),n.beginPath();var p=t.points.symbol;"circle"===p?n.arc(i,a,u,0,2*Math.PI,!1):"string"==typeof p&&o.drawSymbol&&o.drawSymbol[p]&&o.drawSymbol[p](n,i,a,u,!1),n.closePath(),n.stroke()}}function b(t,e,n){var o,i="string"==typeof t.highlightColor?t.highlightColor:y.color.parse(t.color).scale("a",.5).toString(),a=i,r=t.bars.barWidth[0]||t.bars.barWidth;switch(t.bars.align){case"left":o=0;break;case"right":o=-r;break;default:o=-r/2}n.lineWidth=t.bars.lineWidth,n.strokeStyle=i;var s=t.bars.fillTowards||0,l=s>t.yaxis.min?Math.min(t.yaxis.max,s):t.yaxis.min;y.plot.drawSeries.drawBar(e[0],e[1],e[2]||l,o,o+r,function(){return a},t.xaxis,t.yaxis,n,t.bars.horizontal,t.bars.lineWidth)}f.hooks.bindEvents.push(function(t,e){var n=t.getOptions();(n.grid.hoverable||n.grid.clickable)&&(e[0].addEventListener("touchevent",l,!1),e[0].addEventListener("tap",o,!1)),n.grid.clickable&&e.bind("click",s),n.grid.hoverable&&(e.bind("mousemove",a),e.bind("mouseleave",r))}),f.hooks.shutdown.push(function(t,e){e[0].removeEventListener("tap",o),e[0].removeEventListener("touchevent",l),e.unbind("mousemove",a),e.unbind("mouseleave",r),e.unbind("click",s),m=[]}),f.hooks.processOptions.push(function(t,e){t.highlight=g,t.unhighlight=x,(e.grid.hoverable||e.grid.clickable)&&(t.hooks.drawOverlay.push(d),t.hooks.processDatapoints.push(p),t.hooks.setupGrid.push(h)),n=t.getPlaceholder()[0].lastMouseMoveEvent})},options:{grid:{hoverable:!1,clickable:!1}},name:"hover",version:"0.1"})}(jQuery),function(t){function e(n,t){var o,i={twoTouches:!1,currentTapStart:{x:0,y:0},currentTapEnd:{x:0,y:0},prevTap:{x:0,y:0},currentTap:{x:0,y:0},interceptedLongTap:!1,isUnsupportedGesture:!1,prevTapTime:null,tapStartTime:null,longTapTriggerId:null},a=20,r=500;function s(t){var e=n.getOptions();(e.pan.active||e.zoom.active)&&(3<=t.touches.length?i.isUnsupportedGesture=!0:i.isUnsupportedGesture=!1,o.dispatchEvent(new CustomEvent("touchevent",{detail:t})),v(t)?l(t,"pinch"):(l(t,"pan"),x(t)||(function(t){var e=(new Date).getTime(),n=e-i.prevTapTime;if(0<=n&&n=a);++s);var l=r[s][0],c=r[s][1];if("year"===c){if(null!==n.minTickSize&&void 0!==n.minTickSize&&"year"===n.minTickSize[1])l=Math.floor(n.minTickSize[0]);else{var u=parseFloat("1e"+Math.floor(Math.log(t.delta/e.year)/Math.LN10)),p=t.delta/e.year/u;l=p<1.5?1:p<3?2:p<7.5?5:10,l*=u}l<1&&(l=1)}t.tickSize=n.tickSize||[l,c];var h=t.tickSize[0],d=h*e[c=t.tickSize[1]];"microsecond"===c?i.setMicroseconds(y(i.getMicroseconds(),h)):"millisecond"===c?i.setMilliseconds(y(i.getMilliseconds(),h)):"second"===c?i.setSeconds(y(i.getSeconds(),h)):"minute"===c?i.setMinutes(y(i.getMinutes(),h)):"hour"===c?i.setHours(y(i.getHours(),h)):"month"===c?i.setMonth(y(i.getMonth(),h)):"quarter"===c?i.setMonth(3*y(i.getMonth()/3,h)):"year"===c&&i.setFullYear(y(i.getFullYear(),h)),d>=e.millisecond&&(d>=e.second?i.setMicroseconds(0):i.setMicroseconds(1e3*i.getMilliseconds())),d>=e.minute&&i.setSeconds(0),d>=e.hour&&i.setMinutes(0),d>=e.day&&i.setHours(0),d>=4*e.day&&i.setDate(1),d>=2*e.month&&i.setMonth(y(i.getMonth(),3)),d>=2*e.quarter&&i.setMonth(y(i.getMonth(),6)),d>=e.year&&i.setMonth(0);var f,m,g=0,x=Number.NaN;do{if(m=x,f=i.getTime(),x=n&&"seconds"===n.timeBase?f/1e3:n&&"microseconds"===n.timeBase?1e3*f:f,o.push(x),"month"===c||"quarter"===c)if(h<1){i.setDate(1);var v=i.getTime();i.setMonth(i.getMonth()+("quarter"===c?3:1));var b=i.getTime();i.setTime(x+g*e.hour+(b-v)*h),g=i.getHours(),i.setHours(0)}else i.setMonth(i.getMonth()+h*("quarter"===c?3:1));else"year"===c?i.setFullYear(i.getFullYear()+h):"seconds"===n.timeBase?i.setTime(1e3*(x+d)):"microseconds"===n.timeBase?i.setTime((x+d)/1e3):i.setTime(x+d)}while(x=t&&Math.abs(T.second.y-T.first.y)>=t}c.clearSelection=h,c.setSelection=function(t,e){var n;"y"===k(c)?(T.first.x=0,T.second.x=c.width()):(n=d(t,"x"),T.first.x=n.axis.p2c(n.from),T.second.x=n.axis.p2c(n.to)),"x"===k(c)?(T.first.y=0,T.second.y=c.height()):(n=d(t,"y"),T.first.y=n.axis.p2c(n.from),T.second.y=n.axis.p2c(n.to)),T.show=!0,c.triggerRedrawOverlay(),!e&&M()&&s()},c.getSelection=e,c.hooks.bindEvents.push(function(t,e){null!=t.getOptions().selection.mode&&(t.addEventHandler("dragstart",a,e,0),t.addEventHandler("drag",o,e,0),t.addEventHandler("dragend",r,e,0))}),c.hooks.drawOverlay.push(function(t,e){if(T.show&&M()){var n=t.getPlotOffset(),o=t.getOptions();e.save(),e.translate(n.left,n.top);var i=S.color.parse(o.selection.color),a=o.selection.visualization,r=1;"fill"===a&&(r=.8),e.strokeStyle=i.scale("a",r).toString(),e.lineWidth=1,e.lineJoin=o.selection.shape,e.fillStyle=i.scale("a",.4).toString();var s=Math.min(T.first.x,T.second.x)+.5,l=s,c=Math.min(T.first.y,T.second.y)+.5,u=c,p=Math.abs(T.second.x-T.first.x)-1,h=Math.abs(T.second.y-T.first.y)-1;"x"===k(t)&&(h+=c,c=0),"y"===k(t)&&(p+=s,s=0),"fill"===a?(e.fillRect(s,c,p,h),e.strokeRect(s,c,p,h)):(e.fillRect(0,0,t.width(),t.height()),e.clearRect(s,c,p,h),d=e,f=s,m=c,g=p,x=h,v=l,b=u,y=k(t),w=Math.max(0,Math.min(15,g/2-2,x/2-2)),d.fillStyle="#ffffff","xy"===y&&(d.beginPath(),d.moveTo(f,m+w),d.lineTo(f-3,m+w),d.lineTo(f-3,m-3),d.lineTo(f+w,m-3),d.lineTo(f+w,m),d.lineTo(f,m),d.closePath(),d.moveTo(f,m+x-w),d.lineTo(f-3,m+x-w),d.lineTo(f-3,m+x+3),d.lineTo(f+w,m+x+3),d.lineTo(f+w,m+x),d.lineTo(f,m+x),d.closePath(),d.moveTo(f+g,m+w),d.lineTo(f+g+3,m+w),d.lineTo(f+g+3,m-3),d.lineTo(f+g-w,m-3),d.lineTo(f+g-w,m),d.lineTo(f+g,m),d.closePath(),d.moveTo(f+g,m+x-w),d.lineTo(f+g+3,m+x-w),d.lineTo(f+g+3,m+x+3),d.lineTo(f+g-w,m+x+3),d.lineTo(f+g-w,m+x),d.lineTo(f+g,m+x),d.closePath(),d.stroke(),d.fill()),f=v,m=b,"x"===y&&(d.beginPath(),d.moveTo(f,m+15),d.lineTo(f,m-15),d.lineTo(f-3,m-15),d.lineTo(f-3,m+15),d.closePath(),d.moveTo(f+g,m+15),d.lineTo(f+g,m-15),d.lineTo(f+g+3,m-15),d.lineTo(f+g+3,m+15),d.closePath(),d.stroke(),d.fill()),"y"===y&&(d.beginPath(),d.moveTo(f-15,m),d.lineTo(f+15,m),d.lineTo(f+15,m-3),d.lineTo(f-15,m-3),d.closePath(),d.moveTo(f-15,m+x),d.lineTo(f+15,m+x),d.lineTo(f+15,m+x+3),d.lineTo(f-15,m+x+3),d.closePath(),d.stroke(),d.fill())),e.restore()}var d,f,m,g,x,v,b,y,w}),c.hooks.shutdown.push(function(t,e){e.unbind("dragstart",a),e.unbind("drag",o),e.unbind("dragend",r)})},options:{selection:{mode:null,visualization:"focus",color:"#888888",shape:"round",minSize:5}},name:"selection",version:"1.1"})}(jQuery),function(t){var e=-100,c=0,u=-1,p=-2,h=1,g=t.plot.browser,a=g.getPixelRatio;function n(t,e){var n=t.filter(r);h=a(e.getContext("2d"));var o,i=n.map(function(t){var f,m,e=new Image;return new Promise((m=t,(f=e).sourceDescription='',f.sourceComponent=m,function(e,t){var n,o,i,a,r,s,l,c,u,p,h,d;f.onload=function(t){f.successfullyLoaded=!0,e(f)},f.onabort=function(t){f.successfullyLoaded=!1,console.log("Can't generate temp image from "+f.sourceDescription+". It is possible that it is missing some properties or its content is not supported by this browser. Source component:",f.sourceComponent),e(f)},f.onerror=function(t){f.successfullyLoaded=!1,console.log("Can't generate temp image from "+f.sourceDescription+". It is possible that it is missing some properties or its content is not supported by this browser. Source component:",f.sourceComponent),e(f)},o=f,"CANVAS"===(n=m).tagName&&(i=n,o.src=i.toDataURL("image/png")),"svg"===n.tagName&&(a=n,r=o,g.isSafari()||g.isMobileSafari()?(s=a,l=r,p=b(p=v(x(document),s)),u=function(t){for(var e="",n=new Uint8Array(t),o=0;ot[l].genLeft&&(i=t[l].genLeft),a>t[l].genTop&&(a=t[l].genTop);for(l=1;l',"",e.innerHTML,""].join("\n")}function b(t){var e="";return t.match(/^]+xmlns="http:\/\/www\.w3\.org\/2000\/svg"/)||(e=t.replace(/^]+"http:\/\/www\.w3\.org\/1999\/xlink"/)||(e=t.replace(/^\r\n'+e}function s(){return e}t.plot.composeImages=n,t.plot.plugins.push({init:function(t){t.composeImages=n},name:"composeImages",version:"1.0"})}(jQuery),function(M){function S(t){var e="",n=t.name,o=t.xPos,i=t.yPos,a=t.fillColor,r=t.strokeColor,s=t.strokeWidth;switch(n){case"circle":e='';break;case"diamond":e='';break;case"cross":e='';break;case"rectangle":e='';break;case"plus":e='';break;case"bar":e='';break;case"area":e='';break;case"line":e='';break;default:e=''}return e}var C='';function l(t,e){for(var n in t)if(t.hasOwnProperty(n)&&t[n]!==e[n])return!0;return!1}M.plot.plugins.push({init:function(t){t.hooks.setupGrid.push(function(t){var e=t.getOptions(),n=t.getData(),o=e.legend.labelFormatter,i=e.legend.legendEntries,a=e.legend.plotOffset,r=function(t,e,n){var a=e,o=t.reduce(function(t,e,n){var o=a?a(e.label,e):e.label;if(!e.hasOwnProperty("label")||o){var i={label:o||"Plot "+(n+1),color:e.color,options:{lines:e.lines,points:e.points,bars:e.bars}};t.push(i)}return t},[]);if(n)if(M.isFunction(n))o.sort(n);else if("reverse"===n)o.reverse();else{var i="descending"!==n;o.sort(function(t,e){return t.label===e.label?0:t.label',u[p++]='',u[p++]=C;var g=0,x=[],v=window.getComputedStyle(document.querySelector("body"));for(s=0;sx[b]&&(x[b]=y+48):x[b]=y+48}for(s=0;s'+m.label+"",u[p++]=""+r+a+"";u[p++]="",null==f[0]&&(f=[f,f]),"n"===d.charAt(0)?h+="top:"+(f[1]+c.top)+"px;":"s"===d.charAt(0)&&(h+="bottom:"+(f[1]+c.bottom)+"px;"),"e"===d.charAt(1)?h+="right:"+(f[0]+c.right)+"px;":"w"===d.charAt(1)&&(h+="left:"+(f[0]+c.left)+"px;");var w=6;for(s=0;s'+u.join("")+"
      ").appendTo(n)).css("width",w+"px"),T.css("height",k+"em"),T.css("pointerEvents","none"))}}(t,e,t.getPlaceholder(),r)})},options:{legend:{show:!1,noColumns:1,labelFormatter:null,container:null,position:"ne",margin:5,sorted:null}},name:"legend",version:"1.0"})}(jQuery); -//# sourceMappingURL=jquery.flot.js.map diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/LICENSE.txt b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/LICENSE.txt deleted file mode 100644 index 2149cfb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2019 Adam Shaw - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.css deleted file mode 100644 index 3dc71f5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.css +++ /dev/null @@ -1,36 +0,0 @@ -.fc.fc-bootstrap a { - text-decoration: none; -} - -.fc.fc-bootstrap a[data-goto]:hover { - text-decoration: underline; -} - -.fc-bootstrap hr.fc-divider { - border-color: inherit; -} - -.fc-bootstrap .fc-today.alert { - border-radius: 0; -} - -.fc-bootstrap a.fc-event:not([href]):not([tabindex]) { - color: #fff; -} - -.fc-bootstrap .fc-popover.card { - position: absolute; -} - -/* Popover ---------------------------------------------------------------------------------------------------*/ -.fc-bootstrap .fc-popover .card-body { - padding: 0; -} - -/* TimeGrid Slats (lines that run horizontally) ---------------------------------------------------------------------------------------------------*/ -.fc-bootstrap .fc-time-grid .fc-slats table { - /* some themes have background color. see through to slats */ - background: none; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.d.ts deleted file mode 100644 index 4aa91f3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Generated by dts-bundle v0.7.3-fork.1 -// Dependencies for this module: -// ../../../../../@fullcalendar/core - -declare module '@fullcalendar/bootstrap' { - import { Theme } from '@fullcalendar/core'; - export class BootstrapTheme extends Theme { - } - const _default: import("@fullcalendar/core").PluginDef; - export default _default; -} - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.esm.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.esm.js deleted file mode 100644 index 8a02e1b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.esm.js +++ /dev/null @@ -1,83 +0,0 @@ -/*! -FullCalendar Bootstrap Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -import { createPlugin, Theme } from '@fullcalendar/core'; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var BootstrapTheme = /** @class */ (function (_super) { - __extends(BootstrapTheme, _super); - function BootstrapTheme() { - return _super !== null && _super.apply(this, arguments) || this; - } - return BootstrapTheme; -}(Theme)); -BootstrapTheme.prototype.classes = { - widget: 'fc-bootstrap', - tableGrid: 'table-bordered', - tableList: 'table', - tableListHeading: 'table-active', - buttonGroup: 'btn-group', - button: 'btn btn-primary', - buttonActive: 'active', - today: 'alert alert-info', - popover: 'card card-primary', - popoverHeader: 'card-header', - popoverContent: 'card-body', - // day grid - // for left/right border color when border is inset from edges (all-day in timeGrid view) - // avoid `table` class b/c don't want margins/padding/structure. only border color. - headerRow: 'table-bordered', - dayRow: 'table-bordered', - // list view - listView: 'card card-primary' -}; -BootstrapTheme.prototype.baseIconClass = 'fa'; -BootstrapTheme.prototype.iconClasses = { - close: 'fa-times', - prev: 'fa-chevron-left', - next: 'fa-chevron-right', - prevYear: 'fa-angle-double-left', - nextYear: 'fa-angle-double-right' -}; -BootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; -BootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome'; -BootstrapTheme.prototype.iconOverridePrefix = 'fa-'; -var main = createPlugin({ - themeClasses: { - bootstrap: BootstrapTheme - } -}); - -export default main; -export { BootstrapTheme }; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.js deleted file mode 100644 index b063deb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.js +++ /dev/null @@ -1,91 +0,0 @@ -/*! -FullCalendar Bootstrap Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) : - typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) : - (global = global || self, factory(global.FullCalendarBootstrap = {}, global.FullCalendar)); -}(this, function (exports, core) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var BootstrapTheme = /** @class */ (function (_super) { - __extends(BootstrapTheme, _super); - function BootstrapTheme() { - return _super !== null && _super.apply(this, arguments) || this; - } - return BootstrapTheme; - }(core.Theme)); - BootstrapTheme.prototype.classes = { - widget: 'fc-bootstrap', - tableGrid: 'table-bordered', - tableList: 'table', - tableListHeading: 'table-active', - buttonGroup: 'btn-group', - button: 'btn btn-primary', - buttonActive: 'active', - today: 'alert alert-info', - popover: 'card card-primary', - popoverHeader: 'card-header', - popoverContent: 'card-body', - // day grid - // for left/right border color when border is inset from edges (all-day in timeGrid view) - // avoid `table` class b/c don't want margins/padding/structure. only border color. - headerRow: 'table-bordered', - dayRow: 'table-bordered', - // list view - listView: 'card card-primary' - }; - BootstrapTheme.prototype.baseIconClass = 'fa'; - BootstrapTheme.prototype.iconClasses = { - close: 'fa-times', - prev: 'fa-chevron-left', - next: 'fa-chevron-right', - prevYear: 'fa-angle-double-left', - nextYear: 'fa-angle-double-right' - }; - BootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; - BootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome'; - BootstrapTheme.prototype.iconOverridePrefix = 'fa-'; - var main = core.createPlugin({ - themeClasses: { - bootstrap: BootstrapTheme - } - }); - - exports.BootstrapTheme = BootstrapTheme; - exports.default = main; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.css deleted file mode 100644 index e9249b5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.css +++ /dev/null @@ -1 +0,0 @@ -.fc.fc-bootstrap a{text-decoration:none}.fc.fc-bootstrap a[data-goto]:hover{text-decoration:underline}.fc-bootstrap hr.fc-divider{border-color:inherit}.fc-bootstrap .fc-today.alert{border-radius:0}.fc-bootstrap a.fc-event:not([href]):not([tabindex]){color:#fff}.fc-bootstrap .fc-popover.card{position:absolute}.fc-bootstrap .fc-popover .card-body{padding:0}.fc-bootstrap .fc-time-grid .fc-slats table{background:0 0} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.js deleted file mode 100644 index 107ed48..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-bootstrap/main.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -FullCalendar Bootstrap Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarBootstrap={},e.FullCalendar)}(this,function(e,t){"use strict";var o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)};var r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return function(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t}(t.Theme);r.prototype.classes={widget:"fc-bootstrap",tableGrid:"table-bordered",tableList:"table",tableListHeading:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",buttonActive:"active",today:"alert alert-info",popover:"card card-primary",popoverHeader:"card-header",popoverContent:"card-body",headerRow:"table-bordered",dayRow:"table-bordered",listView:"card card-primary"},r.prototype.baseIconClass="fa",r.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},r.prototype.iconOverrideOption="bootstrapFontAwesome",r.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",r.prototype.iconOverridePrefix="fa-";var a=t.createPlugin({themeClasses:{bootstrap:r}});e.BootstrapTheme=r,e.default=a,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/LICENSE.txt b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/LICENSE.txt deleted file mode 100644 index 2149cfb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2019 Adam Shaw - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.css deleted file mode 100644 index 81f5895..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.css +++ /dev/null @@ -1,78 +0,0 @@ -/* DayGridView ---------------------------------------------------------------------------------------------------*/ -/* day row structure */ -.fc-dayGridWeek-view .fc-content-skeleton, -.fc-dayGridDay-view .fc-content-skeleton { - /* there may be week numbers in these views, so no padding-top */ - padding-bottom: 1em; - /* ensure a space at bottom of cell for user selecting/clicking */ -} - -.fc-dayGrid-view .fc-body .fc-row { - min-height: 4em; - /* ensure that all rows are at least this tall */ -} - -/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ -.fc-row.fc-rigid { - overflow: hidden; -} - -.fc-row.fc-rigid .fc-content-skeleton { - position: absolute; - top: 0; - left: 0; - right: 0; -} - -/* week and day number styling */ -.fc-day-top.fc-other-month { - opacity: 0.3; -} - -.fc-dayGrid-view .fc-week-number, -.fc-dayGrid-view .fc-day-number { - padding: 2px; -} - -.fc-dayGrid-view th.fc-week-number, -.fc-dayGrid-view th.fc-day-number { - padding: 0 2px; - /* column headers can't have as much v space */ -} - -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number { - float: right; -} - -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number { - float: left; -} - -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number { - float: left; - border-radius: 0 0 3px 0; -} - -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number { - float: right; - border-radius: 0 0 0 3px; -} - -.fc-dayGrid-view .fc-day-top .fc-week-number { - min-width: 1.5em; - text-align: center; - background-color: #f2f2f2; - color: #808080; -} - -/* when week/day number have own column */ -.fc-dayGrid-view td.fc-week-number { - text-align: center; -} - -.fc-dayGrid-view td.fc-week-number > * { - /* work around the way we do column resizing and ensure a minimum width */ - display: inline-block; - min-width: 1.25em; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.d.ts deleted file mode 100644 index ed214f2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.d.ts +++ /dev/null @@ -1,310 +0,0 @@ -// Generated by dts-bundle v0.7.3-fork.1 -// Dependencies for this module: -// ../../../../../@fullcalendar/core - -declare module '@fullcalendar/daygrid' { - export { default as SimpleDayGrid, DayGridSlicer } from '@fullcalendar/daygrid/SimpleDayGrid'; - export { default as DayGrid, DayGridSeg } from '@fullcalendar/daygrid/DayGrid'; - export { default as AbstractDayGridView } from '@fullcalendar/daygrid/AbstractDayGridView'; - export { default as DayGridView, buildDayTable as buildBasicDayTable } from '@fullcalendar/daygrid/DayGridView'; - export { default as DayBgRow } from '@fullcalendar/daygrid/DayBgRow'; - const _default: import("@fullcalendar/core").PluginDef; - export default _default; -} - -declare module '@fullcalendar/daygrid/SimpleDayGrid' { - import { DateProfile, EventStore, EventUiHash, DateSpan, EventInteractionState, DayTable, Duration, DateComponent, DateRange, Slicer, Hit, ComponentContext } from '@fullcalendar/core'; - import { default as DayGrid, DayGridSeg } from '@fullcalendar/daygrid/DayGrid'; - export interface SimpleDayGridProps { - dateProfile: DateProfile | null; - dayTable: DayTable; - nextDayThreshold: Duration; - businessHours: EventStore; - eventStore: EventStore; - eventUiBases: EventUiHash; - dateSelection: DateSpan | null; - eventSelection: string; - eventDrag: EventInteractionState | null; - eventResize: EventInteractionState | null; - isRigid: boolean; - } - export { SimpleDayGrid as default, SimpleDayGrid }; - class SimpleDayGrid extends DateComponent { - dayGrid: DayGrid; - constructor(context: ComponentContext, dayGrid: DayGrid); - destroy(): void; - render(props: SimpleDayGridProps): void; - buildPositionCaches(): void; - queryHit(positionLeft: number, positionTop: number): Hit; - } - export class DayGridSlicer extends Slicer { - sliceRange(dateRange: DateRange, dayTable: DayTable): DayGridSeg[]; - } -} - -declare module '@fullcalendar/daygrid/DayGrid' { - import { PositionCache, DateMarker, DateComponent, EventSegUiInteractionState, Seg, DateProfile } from '@fullcalendar/core'; - import Popover from '@fullcalendar/daygrid/Popover'; - import DayGridEventRenderer from '@fullcalendar/daygrid/DayGridEventRenderer'; - import DayTile from '@fullcalendar/daygrid/DayTile'; - export interface RenderProps { - renderNumberIntroHtml: (row: number, dayGrid: DayGrid) => string; - renderBgIntroHtml: () => string; - renderIntroHtml: () => string; - colWeekNumbersVisible: boolean; - cellWeekNumbersVisible: boolean; - } - export interface DayGridSeg extends Seg { - row: number; - firstCol: number; - lastCol: number; - } - export interface DayGridCell { - date: DateMarker; - htmlAttrs?: string; - } - export interface DayGridProps { - dateProfile: DateProfile; - cells: DayGridCell[][]; - businessHourSegs: DayGridSeg[]; - bgEventSegs: DayGridSeg[]; - fgEventSegs: DayGridSeg[]; - dateSelectionSegs: DayGridSeg[]; - eventSelection: string; - eventDrag: EventSegUiInteractionState | null; - eventResize: EventSegUiInteractionState | null; - isRigid: boolean; - } - export { DayGrid as default, DayGrid }; - class DayGrid extends DateComponent { - eventRenderer: DayGridEventRenderer; - renderProps: RenderProps; - rowCnt: number; - colCnt: number; - bottomCoordPadding: number; - rowEls: HTMLElement[]; - cellEls: HTMLElement[]; - isCellSizesDirty: boolean; - rowPositions: PositionCache; - colPositions: PositionCache; - segPopover: Popover; - segPopoverTile: DayTile; - constructor(context: any, el: any, renderProps: RenderProps); - render(props: DayGridProps): void; - destroy(): void; - getCellRange(row: any, col: any): { - start: Date; - end: Date; - }; - updateSegPopoverTile(date?: any, segs?: any): void; - _renderCells(cells: DayGridCell[][], isRigid: boolean): void; - _unrenderCells(): void; - renderDayRowHtml(row: any, isRigid: any): string; - getIsNumbersVisible(): boolean; - getIsDayNumbersVisible(): boolean; - renderNumberTrHtml(row: number): string; - renderNumberCellsHtml(row: any): string; - renderNumberCellHtml(date: any): string; - updateSize(isResize: boolean): void; - buildPositionCaches(): void; - buildColPositions(): void; - buildRowPositions(): void; - positionToHit(leftPosition: any, topPosition: any): { - row: any; - col: any; - dateSpan: { - range: { - start: Date; - end: Date; - }; - allDay: boolean; - }; - dayEl: HTMLElement; - relativeRect: { - left: any; - right: any; - top: any; - bottom: any; - }; - }; - getCellEl(row: any, col: any): HTMLElement; - _renderEventDrag(state: EventSegUiInteractionState): void; - _unrenderEventDrag(state: EventSegUiInteractionState): void; - _renderEventResize(state: EventSegUiInteractionState): void; - _unrenderEventResize(state: EventSegUiInteractionState): void; - removeSegPopover(): void; - limitRows(levelLimit: any): void; - computeRowLevelLimit(row: any): (number | false); - limitRow(row: any, levelLimit: any): void; - unlimitRow(row: any): void; - renderMoreLink(row: any, col: any, hiddenSegs: any): HTMLElement; - showSegPopover(row: any, col: any, moreLink: HTMLElement, segs: any): void; - resliceDaySegs(segs: any, dayDate: any): any[]; - getMoreLinkText(num: any): any; - getCellSegs(row: any, col: any, startLevel?: any): any[]; - } -} - -declare module '@fullcalendar/daygrid/AbstractDayGridView' { - import { ScrollComponent, View, ComponentContext, ViewSpec, DateProfileGenerator, Duration } from '@fullcalendar/core'; - import DayGrid from '@fullcalendar/daygrid/DayGrid'; - export { DayGridView as default, DayGridView }; - abstract class DayGridView extends View { - scroller: ScrollComponent; - dayGrid: DayGrid; - colWeekNumbersVisible: boolean; - weekNumberWidth: number; - constructor(context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement); - destroy(): void; - renderSkeletonHtml(): string; - weekNumberStyleAttr(): string; - hasRigidRows(): boolean; - updateSize(isResize: boolean, viewHeight: number, isAuto: boolean): void; - updateBaseSize(isResize: boolean, viewHeight: number, isAuto: boolean): void; - computeScrollerHeight(viewHeight: any): number; - setGridHeight(height: any, isAuto: any): void; - computeDateScroll(duration: Duration): { - top: number; - }; - queryDateScroll(): { - top: number; - }; - applyDateScroll(scroll: any): void; - renderHeadIntroHtml: () => string; - renderDayGridNumberIntroHtml: (row: number, dayGrid: DayGrid) => string; - renderDayGridBgIntroHtml: () => string; - renderDayGridIntroHtml: () => string; - } -} - -declare module '@fullcalendar/daygrid/DayGridView' { - import { DayHeader, ComponentContext, ViewSpec, DateProfileGenerator, DateProfile, ViewProps, DayTable } from '@fullcalendar/core'; - import AbstractDayGridView from '@fullcalendar/daygrid/AbstractDayGridView'; - import SimpleDayGrid from '@fullcalendar/daygrid/SimpleDayGrid'; - export { DayGridView as default, DayGridView }; - class DayGridView extends AbstractDayGridView { - header: DayHeader; - simpleDayGrid: SimpleDayGrid; - dayTable: DayTable; - constructor(_context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement); - destroy(): void; - render(props: ViewProps): void; - } - export function buildDayTable(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTable; -} - -declare module '@fullcalendar/daygrid/DayBgRow' { - import { ComponentContext, DateMarker, DateProfile } from '@fullcalendar/core'; - export interface DayBgCell { - date: DateMarker; - htmlAttrs?: string; - } - export interface DayBgRowProps { - cells: DayBgCell[]; - dateProfile: DateProfile; - renderIntroHtml?: () => string; - } - export { DayBgRow as default, DayBgRow }; - class DayBgRow { - context: ComponentContext; - constructor(context: ComponentContext); - renderHtml(props: DayBgRowProps): string; - } -} - -declare module '@fullcalendar/daygrid/Popover' { - export interface PopoverOptions { - className?: string; - content?: (el: HTMLElement) => void; - parentEl: HTMLElement; - autoHide?: boolean; - top?: number; - left?: number; - right?: number; - viewportConstrain?: boolean; - } - export { Popover as default, Popover }; - class Popover { - isHidden: boolean; - options: PopoverOptions; - el: HTMLElement; - margin: number; - constructor(options: PopoverOptions); - show(): void; - hide(): void; - render(): void; - documentMousedown: (ev: any) => void; - destroy(): void; - position(): void; - trigger(name: any): void; - } -} - -declare module '@fullcalendar/daygrid/DayGridEventRenderer' { - import { Seg } from '@fullcalendar/core'; - import DayGrid from '@fullcalendar/daygrid/DayGrid'; - import SimpleDayGridEventRenderer from '@fullcalendar/daygrid/SimpleDayGridEventRenderer'; - export { DayGridEventRenderer as default, DayGridEventRenderer }; - class DayGridEventRenderer extends SimpleDayGridEventRenderer { - dayGrid: DayGrid; - rowStructs: any; - constructor(dayGrid: DayGrid); - attachSegs(segs: Seg[], mirrorInfo: any): void; - detachSegs(): void; - renderSegRows(segs: Seg[]): any[]; - renderSegRow(row: any, rowSegs: any): { - row: any; - tbodyEl: HTMLTableSectionElement; - cellMatrix: any[]; - segMatrix: any[]; - segLevels: any[]; - segs: any; - }; - buildSegLevels(segs: Seg[]): any[]; - groupSegRows(segs: Seg[]): any[]; - computeDisplayEventEnd(): boolean; - } -} - -declare module '@fullcalendar/daygrid/DayTile' { - import { DateComponent, Seg, Hit, DateMarker, ComponentContext, EventInstanceHash } from '@fullcalendar/core'; - import SimpleDayGridEventRenderer from '@fullcalendar/daygrid/SimpleDayGridEventRenderer'; - export interface DayTileProps { - date: DateMarker; - fgSegs: Seg[]; - eventSelection: string; - eventDragInstances: EventInstanceHash; - eventResizeInstances: EventInstanceHash; - } - export { DayTile as default, DayTile }; - class DayTile extends DateComponent { - segContainerEl: HTMLElement; - constructor(context: ComponentContext, el: HTMLElement); - render(props: DayTileProps): void; - destroy(): void; - _renderFrame(date: DateMarker): void; - queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null; - } - export class DayTileEventRenderer extends SimpleDayGridEventRenderer { - dayTile: DayTile; - constructor(dayTile: any); - attachSegs(segs: Seg[]): void; - detachSegs(segs: Seg[]): void; - } -} - -declare module '@fullcalendar/daygrid/SimpleDayGridEventRenderer' { - import { FgEventRenderer, Seg } from '@fullcalendar/core'; - export { SimpleDayGridEventRenderer as default, SimpleDayGridEventRenderer }; - abstract class SimpleDayGridEventRenderer extends FgEventRenderer { - renderSegHtml(seg: Seg, mirrorInfo: any): string; - computeEventTimeFormat(): { - hour: string; - minute: string; - omitZeroMinute: boolean; - meridiem: string; - }; - computeDisplayEventEnd(): boolean; - } -} - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.esm.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.esm.js deleted file mode 100644 index 28c2a24..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.esm.js +++ /dev/null @@ -1,1627 +0,0 @@ -/*! -FullCalendar Day Grid Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -import { addWeeks, diffWeeks, DateProfileGenerator, createElement, listenBySelector, removeElement, computeRect, computeClippingRect, applyStyle, cssToStr, htmlEscape, FgEventRenderer, appendToElement, prependToElement, htmlToElement, FillRenderer, memoizeRendering, createFormatter, addDays, DateComponent, rangeContainsMarker, getDayClasses, findElements, PositionCache, buildGotoAnchorHtml, findChildren, insertAfterElement, intersectRanges, ScrollComponent, matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight, distributeHeight, undistributeHeight, View, Slicer, memoize, DayHeader, DaySeries, DayTable, createPlugin } from '@fullcalendar/core'; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -var DayGridDateProfileGenerator = /** @class */ (function (_super) { - __extends(DayGridDateProfileGenerator, _super); - function DayGridDateProfileGenerator() { - return _super !== null && _super.apply(this, arguments) || this; - } - // Computes the date range that will be rendered. - DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { - var dateEnv = this.dateEnv; - var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); - var start = renderRange.start; - var end = renderRange.end; - var endOfWeek; - // year and month views should be aligned with weeks. this is already done for week - if (/^(year|month)$/.test(currentRangeUnit)) { - start = dateEnv.startOfWeek(start); - // make end-of-week if not already - endOfWeek = dateEnv.startOfWeek(end); - if (endOfWeek.valueOf() !== end.valueOf()) { - end = addWeeks(endOfWeek, 1); - } - } - // ensure 6 weeks - if (this.options.monthMode && - this.options.fixedWeekCount) { - var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays - diffWeeks(start, end)); - end = addWeeks(end, 6 - rowCnt); - } - return { start: start, end: end }; - }; - return DayGridDateProfileGenerator; -}(DateProfileGenerator)); - -/* A rectangular panel that is absolutely positioned over other content ------------------------------------------------------------------------------------------------------------------------- -Options: - - className (string) - - content (HTML string, element, or element array) - - parentEl - - top - - left - - right (the x coord of where the right edge should be. not a "CSS" right) - - autoHide (boolean) - - show (callback) - - hide (callback) -*/ -var Popover = /** @class */ (function () { - function Popover(options) { - var _this = this; - this.isHidden = true; - this.margin = 10; // the space required between the popover and the edges of the scroll container - // Triggered when the user clicks *anywhere* in the document, for the autoHide feature - this.documentMousedown = function (ev) { - // only hide the popover if the click happened outside the popover - if (_this.el && !_this.el.contains(ev.target)) { - _this.hide(); - } - }; - this.options = options; - } - // Shows the popover on the specified position. Renders it if not already - Popover.prototype.show = function () { - if (this.isHidden) { - if (!this.el) { - this.render(); - } - this.el.style.display = ''; - this.position(); - this.isHidden = false; - this.trigger('show'); - } - }; - // Hides the popover, through CSS, but does not remove it from the DOM - Popover.prototype.hide = function () { - if (!this.isHidden) { - this.el.style.display = 'none'; - this.isHidden = true; - this.trigger('hide'); - } - }; - // Creates `this.el` and renders content inside of it - Popover.prototype.render = function () { - var _this = this; - var options = this.options; - var el = this.el = createElement('div', { - className: 'fc-popover ' + (options.className || ''), - style: { - top: '0', - left: '0' - } - }); - if (typeof options.content === 'function') { - options.content(el); - } - options.parentEl.appendChild(el); - // when a click happens on anything inside with a 'fc-close' className, hide the popover - listenBySelector(el, 'click', '.fc-close', function (ev) { - _this.hide(); - }); - if (options.autoHide) { - document.addEventListener('mousedown', this.documentMousedown); - } - }; - // Hides and unregisters any handlers - Popover.prototype.destroy = function () { - this.hide(); - if (this.el) { - removeElement(this.el); - this.el = null; - } - document.removeEventListener('mousedown', this.documentMousedown); - }; - // Positions the popover optimally, using the top/left/right options - Popover.prototype.position = function () { - var options = this.options; - var el = this.el; - var elDims = el.getBoundingClientRect(); // only used for width,height - var origin = computeRect(el.offsetParent); - var clippingRect = computeClippingRect(options.parentEl); - var top; // the "position" (not "offset") values for the popover - var left; // - // compute top and left - top = options.top || 0; - if (options.left !== undefined) { - left = options.left; - } - else if (options.right !== undefined) { - left = options.right - elDims.width; // derive the left value from the right value - } - else { - left = 0; - } - // constrain to the view port. if constrained by two edges, give precedence to top/left - top = Math.min(top, clippingRect.bottom - elDims.height - this.margin); - top = Math.max(top, clippingRect.top + this.margin); - left = Math.min(left, clippingRect.right - elDims.width - this.margin); - left = Math.max(left, clippingRect.left + this.margin); - applyStyle(el, { - top: top - origin.top, - left: left - origin.left - }); - }; - // Triggers a callback. Calls a function in the option hash of the same name. - // Arguments beyond the first `name` are forwarded on. - // TODO: better code reuse for this. Repeat code - // can kill this??? - Popover.prototype.trigger = function (name) { - if (this.options[name]) { - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); - } - }; - return Popover; -}()); - -/* Event-rendering methods for the DayGrid class -----------------------------------------------------------------------------------------------------------------------*/ -// "Simple" is bad a name. has nothing to do with SimpleDayGrid -var SimpleDayGridEventRenderer = /** @class */ (function (_super) { - __extends(SimpleDayGridEventRenderer, _super); - function SimpleDayGridEventRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - // Builds the HTML to be used for the default element for an individual segment - SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) { - var _a = this.context, view = _a.view, options = _a.options; - var eventRange = seg.eventRange; - var eventDef = eventRange.def; - var eventUi = eventRange.ui; - var allDay = eventDef.allDay; - var isDraggable = view.computeEventDraggable(eventDef, eventUi); - var isResizableFromStart = allDay && seg.isStart && view.computeEventStartResizable(eventDef, eventUi); - var isResizableFromEnd = allDay && seg.isEnd && view.computeEventEndResizable(eventDef, eventUi); - var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo); - var skinCss = cssToStr(this.getSkinCss(eventUi)); - var timeHtml = ''; - var timeText; - var titleHtml; - classes.unshift('fc-day-grid-event', 'fc-h-event'); - // Only display a timed events time if it is the starting segment - if (seg.isStart) { - timeText = this.getTimeText(eventRange); - if (timeText) { - timeHtml = '' + htmlEscape(timeText) + ''; - } - } - titleHtml = - '' + - (htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height - ''; - return '' + - '
      ' + - (options.dir === 'rtl' ? - titleHtml + ' ' + timeHtml : // put a natural space in between - timeHtml + ' ' + titleHtml // - ) + - '
      ' + - (isResizableFromStart ? - '
      ' : - '') + - (isResizableFromEnd ? - '
      ' : - '') + - '
      '; - }; - // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined - SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () { - return { - hour: 'numeric', - minute: '2-digit', - omitZeroMinute: true, - meridiem: 'narrow' - }; - }; - SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () { - return false; // TODO: somehow consider the originating DayGrid's column count - }; - return SimpleDayGridEventRenderer; -}(FgEventRenderer)); - -/* Event-rendering methods for the DayGrid class -----------------------------------------------------------------------------------------------------------------------*/ -var DayGridEventRenderer = /** @class */ (function (_super) { - __extends(DayGridEventRenderer, _super); - function DayGridEventRenderer(dayGrid) { - var _this = _super.call(this, dayGrid.context) || this; - _this.dayGrid = dayGrid; - return _this; - } - // Renders the given foreground event segments onto the grid - DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) { - var rowStructs = this.rowStructs = this.renderSegRows(segs); - // append to each row's content skeleton - this.dayGrid.rowEls.forEach(function (rowNode, i) { - rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl); - }); - // removes the "more.." events popover - if (!mirrorInfo) { - this.dayGrid.removeSegPopover(); - } - }; - // Unrenders all currently rendered foreground event segments - DayGridEventRenderer.prototype.detachSegs = function () { - var rowStructs = this.rowStructs || []; - var rowStruct; - while ((rowStruct = rowStructs.pop())) { - removeElement(rowStruct.tbodyEl); - } - this.rowStructs = null; - }; - // Uses the given events array to generate elements that should be appended to each row's content skeleton. - // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). - // PRECONDITION: each segment shoud already have a rendered and assigned `.el` - DayGridEventRenderer.prototype.renderSegRows = function (segs) { - var rowStructs = []; - var segRows; - var row; - segRows = this.groupSegRows(segs); // group into nested arrays - // iterate each row of segment groupings - for (row = 0; row < segRows.length; row++) { - rowStructs.push(this.renderSegRow(row, segRows[row])); - } - return rowStructs; - }; - // Given a row # and an array of segments all in the same row, render a element, a skeleton that contains - // the segments. Returns object with a bunch of internal data about how the render was calculated. - // NOTE: modifies rowSegs - DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) { - var dayGrid = this.dayGrid; - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; - var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels - var levelCnt = Math.max(1, segLevels.length); // ensure at least one level - var tbody = document.createElement('tbody'); - var segMatrix = []; // lookup for which segments are rendered into which level+col cells - var cellMatrix = []; // lookup for all elements of the level+col matrix - var loneCellMatrix = []; // lookup for elements that only take up a single column - var i; - var levelSegs; - var col; - var tr; - var j; - var seg; - var td; - // populates empty cells from the current column (`col`) to `endCol` - function emptyCellsUntil(endCol) { - while (col < endCol) { - // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell - td = (loneCellMatrix[i - 1] || [])[col]; - if (td) { - td.rowSpan = (td.rowSpan || 1) + 1; - } - else { - td = document.createElement('td'); - tr.appendChild(td); - } - cellMatrix[i][col] = td; - loneCellMatrix[i][col] = td; - col++; - } - } - for (i = 0; i < levelCnt; i++) { // iterate through all levels - levelSegs = segLevels[i]; - col = 0; - tr = document.createElement('tr'); - segMatrix.push([]); - cellMatrix.push([]); - loneCellMatrix.push([]); - // levelCnt might be 1 even though there are no actual levels. protect against this. - // this single empty row is useful for styling. - if (levelSegs) { - for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level - seg = levelSegs[j]; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - emptyCellsUntil(leftCol); - // create a container that occupies or more columns. append the event element. - td = createElement('td', { className: 'fc-event-container' }, seg.el); - if (leftCol !== rightCol) { - td.colSpan = rightCol - leftCol + 1; - } - else { // a single-column segment - loneCellMatrix[i][col] = td; - } - while (col <= rightCol) { - cellMatrix[i][col] = td; - segMatrix[i][col] = seg; - col++; - } - tr.appendChild(td); - } - } - emptyCellsUntil(colCnt); // finish off the row - var introHtml = dayGrid.renderProps.renderIntroHtml(); - if (introHtml) { - if (dayGrid.isRtl) { - appendToElement(tr, introHtml); - } - else { - prependToElement(tr, introHtml); - } - } - tbody.appendChild(tr); - } - return { - row: row, - tbodyEl: tbody, - cellMatrix: cellMatrix, - segMatrix: segMatrix, - segLevels: segLevels, - segs: rowSegs - }; - }; - // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. - // NOTE: modifies segs - DayGridEventRenderer.prototype.buildSegLevels = function (segs) { - var _a = this.dayGrid, isRtl = _a.isRtl, colCnt = _a.colCnt; - var levels = []; - var i; - var seg; - var j; - // Give preference to elements with certain criteria, so they have - // a chance to be closer to the top. - segs = this.sortEventSegs(segs); - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - // loop through levels, starting with the topmost, until the segment doesn't collide with other segments - for (j = 0; j < levels.length; j++) { - if (!isDaySegCollision(seg, levels[j])) { - break; - } - } - // `j` now holds the desired subrow index - seg.level = j; - seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only - seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only - ; - (levels[j] || (levels[j] = [])).push(seg); - } - // order segments left-to-right. very important if calendar is RTL - for (j = 0; j < levels.length; j++) { - levels[j].sort(compareDaySegCols); - } - return levels; - }; - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row - DayGridEventRenderer.prototype.groupSegRows = function (segs) { - var segRows = []; - var i; - for (i = 0; i < this.dayGrid.rowCnt; i++) { - segRows.push([]); - } - for (i = 0; i < segs.length; i++) { - segRows[segs[i].row].push(segs[i]); - } - return segRows; - }; - // Computes a default `displayEventEnd` value if one is not expliclty defined - DayGridEventRenderer.prototype.computeDisplayEventEnd = function () { - return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day - }; - return DayGridEventRenderer; -}(SimpleDayGridEventRenderer)); -// Computes whether two segments' columns collide. They are assumed to be in the same row. -function isDaySegCollision(seg, otherSegs) { - var i; - var otherSeg; - for (i = 0; i < otherSegs.length; i++) { - otherSeg = otherSegs[i]; - if (otherSeg.firstCol <= seg.lastCol && - otherSeg.lastCol >= seg.firstCol) { - return true; - } - } - return false; -} -// A cmp function for determining the leftmost event -function compareDaySegCols(a, b) { - return a.leftCol - b.leftCol; -} - -var DayGridMirrorRenderer = /** @class */ (function (_super) { - __extends(DayGridMirrorRenderer, _super); - function DayGridMirrorRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) { - var sourceSeg = mirrorInfo.sourceSeg; - var rowStructs = this.rowStructs = this.renderSegRows(segs); - // inject each new event skeleton into each associated row - this.dayGrid.rowEls.forEach(function (rowNode, row) { - var skeletonEl = htmlToElement('
      '); // will be absolutely positioned - var skeletonTopEl; - var skeletonTop; - // If there is an original segment, match the top position. Otherwise, put it at the row's top level - if (sourceSeg && sourceSeg.row === row) { - skeletonTopEl = sourceSeg.el; - } - else { - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody'); - if (!skeletonTopEl) { // when no events - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table'); - } - } - skeletonTop = skeletonTopEl.getBoundingClientRect().top - - rowNode.getBoundingClientRect().top; // the offsetParent origin - skeletonEl.style.top = skeletonTop + 'px'; - skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl); - rowNode.appendChild(skeletonEl); - }); - }; - return DayGridMirrorRenderer; -}(DayGridEventRenderer)); - -var EMPTY_CELL_HTML = ''; -var DayGridFillRenderer = /** @class */ (function (_super) { - __extends(DayGridFillRenderer, _super); - function DayGridFillRenderer(dayGrid) { - var _this = _super.call(this, dayGrid.context) || this; - _this.fillSegTag = 'td'; // override the default tag name - _this.dayGrid = dayGrid; - return _this; - } - DayGridFillRenderer.prototype.renderSegs = function (type, segs) { - // don't render timed background events - if (type === 'bgEvent') { - segs = segs.filter(function (seg) { - return seg.eventRange.def.allDay; - }); - } - _super.prototype.renderSegs.call(this, type, segs); - }; - DayGridFillRenderer.prototype.attachSegs = function (type, segs) { - var els = []; - var i; - var seg; - var skeletonEl; - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - skeletonEl = this.renderFillRow(type, seg); - this.dayGrid.rowEls[seg.row].appendChild(skeletonEl); - els.push(skeletonEl); - } - return els; - }; - // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. - DayGridFillRenderer.prototype.renderFillRow = function (type, seg) { - var dayGrid = this.dayGrid; - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - var startCol = leftCol; - var endCol = rightCol + 1; - var className; - var skeletonEl; - var trEl; - if (type === 'businessHours') { - className = 'bgevent'; - } - else { - className = type.toLowerCase(); - } - skeletonEl = htmlToElement('
      ' + - '
      ' + - '
      '); - trEl = skeletonEl.getElementsByTagName('tr')[0]; - if (startCol > 0) { - appendToElement(trEl, - // will create (startCol + 1) td's - new Array(startCol + 1).join(EMPTY_CELL_HTML)); - } - seg.el.colSpan = endCol - startCol; - trEl.appendChild(seg.el); - if (endCol < colCnt) { - appendToElement(trEl, - // will create (colCnt - endCol) td's - new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML)); - } - var introHtml = dayGrid.renderProps.renderIntroHtml(); - if (introHtml) { - if (dayGrid.isRtl) { - appendToElement(trEl, introHtml); - } - else { - prependToElement(trEl, introHtml); - } - } - return skeletonEl; - }; - return DayGridFillRenderer; -}(FillRenderer)); - -var DayTile = /** @class */ (function (_super) { - __extends(DayTile, _super); - function DayTile(context, el) { - var _this = _super.call(this, context, el) || this; - var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this); - var renderFrame = _this.renderFrame = memoizeRendering(_this._renderFrame); - _this.renderFgEvents = memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]); - _this.renderEventSelection = memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); - _this.renderEventDrag = memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); - _this.renderEventResize = memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); - context.calendar.registerInteractiveComponent(_this, { - el: _this.el, - useEventCenter: false - }); - return _this; - } - DayTile.prototype.render = function (props) { - this.renderFrame(props.date); - this.renderFgEvents(props.fgSegs); - this.renderEventSelection(props.eventSelection); - this.renderEventDrag(props.eventDragInstances); - this.renderEventResize(props.eventResizeInstances); - }; - DayTile.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderFrame.unrender(); // should unrender everything else - this.calendar.unregisterInteractiveComponent(this); - }; - DayTile.prototype._renderFrame = function (date) { - var _a = this, theme = _a.theme, dateEnv = _a.dateEnv; - var title = dateEnv.format(date, createFormatter(this.opt('dayPopoverFormat')) // TODO: cache - ); - this.el.innerHTML = - '
      ' + - '' + - htmlEscape(title) + - '' + - '' + - '
      ' + - '
      ' + - '
      ' + - '
      '; - this.segContainerEl = this.el.querySelector('.fc-event-container'); - }; - DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { - var date = this.props.date; // HACK - if (positionLeft < elWidth && positionTop < elHeight) { - return { - component: this, - dateSpan: { - allDay: true, - range: { start: date, end: addDays(date, 1) } - }, - dayEl: this.el, - rect: { - left: 0, - top: 0, - right: elWidth, - bottom: elHeight - }, - layer: 1 - }; - } - }; - return DayTile; -}(DateComponent)); -var DayTileEventRenderer = /** @class */ (function (_super) { - __extends(DayTileEventRenderer, _super); - function DayTileEventRenderer(dayTile) { - var _this = _super.call(this, dayTile.context) || this; - _this.dayTile = dayTile; - return _this; - } - DayTileEventRenderer.prototype.attachSegs = function (segs) { - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - this.dayTile.segContainerEl.appendChild(seg.el); - } - }; - DayTileEventRenderer.prototype.detachSegs = function (segs) { - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - removeElement(seg.el); - } - }; - return DayTileEventRenderer; -}(SimpleDayGridEventRenderer)); - -var DayBgRow = /** @class */ (function () { - function DayBgRow(context) { - this.context = context; - } - DayBgRow.prototype.renderHtml = function (props) { - var parts = []; - if (props.renderIntroHtml) { - parts.push(props.renderIntroHtml()); - } - for (var _i = 0, _a = props.cells; _i < _a.length; _i++) { - var cell = _a[_i]; - parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs)); - } - if (!props.cells.length) { - parts.push(''); - } - if (this.context.options.dir === 'rtl') { - parts.reverse(); - } - return '' + parts.join('') + ''; - }; - return DayBgRow; -}()); -function renderCellHtml(date, dateProfile, context, otherAttrs) { - var dateEnv = context.dateEnv, theme = context.theme; - var isDateValid = rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. - var classes = getDayClasses(date, dateProfile, context); - classes.unshift('fc-day', theme.getClass('widgetContent')); - return ''; -} - -var DAY_NUM_FORMAT = createFormatter({ day: 'numeric' }); -var WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' }); -var DayGrid = /** @class */ (function (_super) { - __extends(DayGrid, _super); - function DayGrid(context, el, renderProps) { - var _this = _super.call(this, context, el) || this; - _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid - _this.isCellSizesDirty = false; - var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this); - var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this); - _this.mirrorRenderer = new DayGridMirrorRenderer(_this); - var renderCells = _this.renderCells = memoizeRendering(_this._renderCells, _this._unrenderCells); - _this.renderBusinessHours = memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]); - _this.renderDateSelection = memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]); - _this.renderBgEvents = memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]); - _this.renderFgEvents = memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]); - _this.renderEventSelection = memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); - _this.renderEventDrag = memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]); - _this.renderEventResize = memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]); - _this.renderProps = renderProps; - return _this; - } - DayGrid.prototype.render = function (props) { - var cells = props.cells; - this.rowCnt = cells.length; - this.colCnt = cells[0].length; - this.renderCells(cells, props.isRigid); - this.renderBusinessHours(props.businessHourSegs); - this.renderDateSelection(props.dateSelectionSegs); - this.renderBgEvents(props.bgEventSegs); - this.renderFgEvents(props.fgEventSegs); - this.renderEventSelection(props.eventSelection); - this.renderEventDrag(props.eventDrag); - this.renderEventResize(props.eventResize); - if (this.segPopoverTile) { - this.updateSegPopoverTile(); - } - }; - DayGrid.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderCells.unrender(); // will unrender everything else - }; - DayGrid.prototype.getCellRange = function (row, col) { - var start = this.props.cells[row][col].date; - var end = addDays(start, 1); - return { start: start, end: end }; - }; - DayGrid.prototype.updateSegPopoverTile = function (date, segs) { - var ownProps = this.props; - this.segPopoverTile.receiveProps({ - date: date || this.segPopoverTile.props.date, - fgSegs: segs || this.segPopoverTile.props.fgSegs, - eventSelection: ownProps.eventSelection, - eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null, - eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null - }); - }; - /* Date Rendering - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderCells = function (cells, isRigid) { - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt; - var html = ''; - var row; - var col; - for (row = 0; row < rowCnt; row++) { - html += this.renderDayRowHtml(row, isRigid); - } - this.el.innerHTML = html; - this.rowEls = findElements(this.el, '.fc-row'); - this.cellEls = findElements(this.el, '.fc-day, .fc-disabled-day'); - if (this.isRtl) { - this.cellEls.reverse(); - } - this.rowPositions = new PositionCache(this.el, this.rowEls, false, true // vertical - ); - this.colPositions = new PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row - true, false // horizontal - ); - // trigger dayRender with each cell's element - for (row = 0; row < rowCnt; row++) { - for (col = 0; col < colCnt; col++) { - this.publiclyTrigger('dayRender', [ - { - date: dateEnv.toDate(cells[row][col].date), - el: this.getCellEl(row, col), - view: view - } - ]); - } - } - this.isCellSizesDirty = true; - }; - DayGrid.prototype._unrenderCells = function () { - this.removeSegPopover(); - }; - // Generates the HTML for a single row, which is a div that wraps a table. - // `row` is the row number. - DayGrid.prototype.renderDayRowHtml = function (row, isRigid) { - var theme = this.theme; - var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')]; - if (isRigid) { - classes.push('fc-rigid'); - } - var bgRow = new DayBgRow(this.context); - return '' + - '
      ' + - '
      ' + - '' + - bgRow.renderHtml({ - cells: this.props.cells[row], - dateProfile: this.props.dateProfile, - renderIntroHtml: this.renderProps.renderBgIntroHtml - }) + - '
      ' + - '
      ' + - '
      ' + - '' + - (this.getIsNumbersVisible() ? - '' + - this.renderNumberTrHtml(row) + - '' : - '') + - '
      ' + - '
      ' + - '
      '; - }; - DayGrid.prototype.getIsNumbersVisible = function () { - return this.getIsDayNumbersVisible() || - this.renderProps.cellWeekNumbersVisible || - this.renderProps.colWeekNumbersVisible; - }; - DayGrid.prototype.getIsDayNumbersVisible = function () { - return this.rowCnt > 1; - }; - /* Grid Number Rendering - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.renderNumberTrHtml = function (row) { - var intro = this.renderProps.renderNumberIntroHtml(row, this); - return '' + - '' + - (this.isRtl ? '' : intro) + - this.renderNumberCellsHtml(row) + - (this.isRtl ? intro : '') + - ''; - }; - DayGrid.prototype.renderNumberCellsHtml = function (row) { - var htmls = []; - var col; - var date; - for (col = 0; col < this.colCnt; col++) { - date = this.props.cells[row][col].date; - htmls.push(this.renderNumberCellHtml(date)); - } - if (this.isRtl) { - htmls.reverse(); - } - return htmls.join(''); - }; - // Generates the HTML for the s of the "number" row in the DayGrid's content skeleton. - // The number row will only exist if either day numbers or week numbers are turned on. - DayGrid.prototype.renderNumberCellHtml = function (date) { - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var html = ''; - var isDateValid = rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. - var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid; - var classes; - var weekCalcFirstDow; - if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) { - // no numbers in day cell (week number must be along the side) - return ''; // will create an empty space above events :( - } - classes = getDayClasses(date, this.props.dateProfile, this.context); - classes.unshift('fc-day-top'); - if (this.renderProps.cellWeekNumbersVisible) { - weekCalcFirstDow = dateEnv.weekDow; - } - html += ''; - if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) { - html += buildGotoAnchorHtml(view, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML - ); - } - if (isDayNumberVisible) { - html += buildGotoAnchorHtml(view, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML - ); - } - html += ''; - return html; - }; - /* Sizing - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.updateSize = function (isResize) { - var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer; - if (isResize || - this.isCellSizesDirty || - this.view.calendar.isEventsUpdated // hack - ) { - this.buildPositionCaches(); - this.isCellSizesDirty = false; - } - fillRenderer.computeSizes(isResize); - eventRenderer.computeSizes(isResize); - mirrorRenderer.computeSizes(isResize); - fillRenderer.assignSizes(isResize); - eventRenderer.assignSizes(isResize); - mirrorRenderer.assignSizes(isResize); - }; - DayGrid.prototype.buildPositionCaches = function () { - this.buildColPositions(); - this.buildRowPositions(); - }; - DayGrid.prototype.buildColPositions = function () { - this.colPositions.build(); - }; - DayGrid.prototype.buildRowPositions = function () { - this.rowPositions.build(); - this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack - }; - /* Hit System - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.positionToHit = function (leftPosition, topPosition) { - var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; - var col = colPositions.leftToIndex(leftPosition); - var row = rowPositions.topToIndex(topPosition); - if (row != null && col != null) { - return { - row: row, - col: col, - dateSpan: { - range: this.getCellRange(row, col), - allDay: true - }, - dayEl: this.getCellEl(row, col), - relativeRect: { - left: colPositions.lefts[col], - right: colPositions.rights[col], - top: rowPositions.tops[row], - bottom: rowPositions.bottoms[row] - } - }; - } - }; - /* Cell System - ------------------------------------------------------------------------------------------------------------------*/ - // FYI: the first column is the leftmost column, regardless of date - DayGrid.prototype.getCellEl = function (row, col) { - return this.cellEls[row * this.colCnt + col]; - }; - /* Event Drag Visualization - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderEventDrag = function (state) { - if (state) { - this.eventRenderer.hideByHash(state.affectedInstances); - this.fillRenderer.renderSegs('highlight', state.segs); - } - }; - DayGrid.prototype._unrenderEventDrag = function (state) { - if (state) { - this.eventRenderer.showByHash(state.affectedInstances); - this.fillRenderer.unrender('highlight'); - } - }; - /* Event Resize Visualization - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderEventResize = function (state) { - if (state) { - this.eventRenderer.hideByHash(state.affectedInstances); - this.fillRenderer.renderSegs('highlight', state.segs); - this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); - } - }; - DayGrid.prototype._unrenderEventResize = function (state) { - if (state) { - this.eventRenderer.showByHash(state.affectedInstances); - this.fillRenderer.unrender('highlight'); - this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); - } - }; - /* More+ Link Popover - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.removeSegPopover = function () { - if (this.segPopover) { - this.segPopover.hide(); // in handler, will call segPopover's removeElement - } - }; - // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. - // `levelLimit` can be false (don't limit), a number, or true (should be computed). - DayGrid.prototype.limitRows = function (levelLimit) { - var rowStructs = this.eventRenderer.rowStructs || []; - var row; // row # - var rowLevelLimit; - for (row = 0; row < rowStructs.length; row++) { - this.unlimitRow(row); - if (!levelLimit) { - rowLevelLimit = false; - } - else if (typeof levelLimit === 'number') { - rowLevelLimit = levelLimit; - } - else { - rowLevelLimit = this.computeRowLevelLimit(row); - } - if (rowLevelLimit !== false) { - this.limitRow(row, rowLevelLimit); - } - } - }; - // Computes the number of levels a row will accomodate without going outside its bounds. - // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). - // `row` is the row number. - DayGrid.prototype.computeRowLevelLimit = function (row) { - var rowEl = this.rowEls[row]; // the containing "fake" row div - var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport! - var trEls = findChildren(this.eventRenderer.rowStructs[row].tbodyEl); - var i; - var trEl; - // Reveal one level at a time and stop when we find one out of bounds - for (i = 0; i < trEls.length; i++) { - trEl = trEls[i]; - trEl.classList.remove('fc-limited'); // reset to original state (reveal) - if (trEl.getBoundingClientRect().bottom > rowBottom) { - return i; - } - } - return false; // should not limit at all - }; - // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. - // `row` is the row number. - // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. - DayGrid.prototype.limitRow = function (row, levelLimit) { - var _this = this; - var _a = this, colCnt = _a.colCnt, isRtl = _a.isRtl; - var rowStruct = this.eventRenderer.rowStructs[row]; - var moreNodes = []; // array of "more" links and DOM nodes - var col = 0; // col #, left-to-right (not chronologically) - var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right - var cellMatrix; // a matrix (by level, then column) of all elements in the row - var limitedNodes; // array of temporarily hidden level and segment DOM nodes - var i; - var seg; - var segsBelow; // array of segment objects below `seg` in the current `col` - var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies - var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) - var td; - var rowSpan; - var segMoreNodes; // array of "more" cells that will stand-in for the current seg's cell - var j; - var moreTd; - var moreWrap; - var moreLink; - // Iterates through empty level cells and places "more" links inside if need be - var emptyCellsUntil = function (endCol) { - while (col < endCol) { - segsBelow = _this.getCellSegs(row, col, levelLimit); - if (segsBelow.length) { - td = cellMatrix[levelLimit - 1][col]; - moreLink = _this.renderMoreLink(row, col, segsBelow); - moreWrap = createElement('div', null, moreLink); - td.appendChild(moreWrap); - moreNodes.push(moreWrap); - } - col++; - } - }; - if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? - levelSegs = rowStruct.segLevels[levelLimit - 1]; - cellMatrix = rowStruct.cellMatrix; - limitedNodes = findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level elements past the limit - limitedNodes.forEach(function (node) { - node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array - }); - // iterate though segments in the last allowable level - for (i = 0; i < levelSegs.length; i++) { - seg = levelSegs[i]; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - emptyCellsUntil(leftCol); // process empty cells before the segment - // determine *all* segments below `seg` that occupy the same columns - colSegsBelow = []; - totalSegsBelow = 0; - while (col <= rightCol) { - segsBelow = this.getCellSegs(row, col, levelLimit); - colSegsBelow.push(segsBelow); - totalSegsBelow += segsBelow.length; - col++; - } - if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? - td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell - rowSpan = td.rowSpan || 1; - segMoreNodes = []; - // make a replacement for each column the segment occupies. will be one for each colspan - for (j = 0; j < colSegsBelow.length; j++) { - moreTd = createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan }); - segsBelow = colSegsBelow[j]; - moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too - ); - moreWrap = createElement('div', null, moreLink); - moreTd.appendChild(moreWrap); - segMoreNodes.push(moreTd); - moreNodes.push(moreTd); - } - td.classList.add('fc-limited'); - insertAfterElement(td, segMoreNodes); - limitedNodes.push(td); - } - } - emptyCellsUntil(this.colCnt); // finish off the level - rowStruct.moreEls = moreNodes; // for easy undoing later - rowStruct.limitedEls = limitedNodes; // for easy undoing later - } - }; - // Reveals all levels and removes all "more"-related elements for a grid's row. - // `row` is a row number. - DayGrid.prototype.unlimitRow = function (row) { - var rowStruct = this.eventRenderer.rowStructs[row]; - if (rowStruct.moreEls) { - rowStruct.moreEls.forEach(removeElement); - rowStruct.moreEls = null; - } - if (rowStruct.limitedEls) { - rowStruct.limitedEls.forEach(function (limitedEl) { - limitedEl.classList.remove('fc-limited'); - }); - rowStruct.limitedEls = null; - } - }; - // Renders an element that represents hidden event element for a cell. - // Responsible for attaching click handler as well. - DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) { - var _this = this; - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var a = createElement('a', { className: 'fc-more' }); - a.innerText = this.getMoreLinkText(hiddenSegs.length); - a.addEventListener('click', function (ev) { - var clickOption = _this.opt('eventLimitClick'); - var _col = _this.isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? - var date = _this.props.cells[row][_col].date; - var moreEl = ev.currentTarget; - var dayEl = _this.getCellEl(row, col); - var allSegs = _this.getCellSegs(row, col); - // rescope the segments to be within the cell's date - var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); - var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); - if (typeof clickOption === 'function') { - // the returned value can be an atomic option - clickOption = _this.publiclyTrigger('eventLimitClick', [ - { - date: dateEnv.toDate(date), - allDay: true, - dayEl: dayEl, - moreEl: moreEl, - segs: reslicedAllSegs, - hiddenSegs: reslicedHiddenSegs, - jsEvent: ev, - view: view - } - ]); - } - if (clickOption === 'popover') { - _this.showSegPopover(row, col, moreEl, reslicedAllSegs); - } - else if (typeof clickOption === 'string') { // a view name - view.calendar.zoomTo(date, clickOption); - } - }); - return a; - }; - // Reveals the popover that displays all events within a cell - DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) { - var _this = this; - var _a = this, calendar = _a.calendar, view = _a.view, theme = _a.theme; - var _col = this.isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? - var moreWrap = moreLink.parentNode; // the
      wrapper around the - var topEl; // the element we want to match the top coordinate of - var options; - if (this.rowCnt === 1) { - topEl = view.el; // will cause the popover to cover any sort of header - } - else { - topEl = this.rowEls[row]; // will align with top of row - } - options = { - className: 'fc-more-popover ' + theme.getClass('popover'), - parentEl: view.el, - top: computeRect(topEl).top, - autoHide: true, - content: function (el) { - _this.segPopoverTile = new DayTile(_this.context, el); - _this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs); - }, - hide: function () { - _this.segPopoverTile.destroy(); - _this.segPopoverTile = null; - _this.segPopover.destroy(); - _this.segPopover = null; - } - }; - // Determine horizontal coordinate. - // We use the moreWrap instead of the to avoid border confusion. - if (this.isRtl) { - options.right = computeRect(moreWrap).right + 1; // +1 to be over cell border - } - else { - options.left = computeRect(moreWrap).left - 1; // -1 to be over cell border - } - this.segPopover = new Popover(options); - this.segPopover.show(); - calendar.releaseAfterSizingTriggers(); // hack for eventPositioned - }; - // Given the events within an array of segment objects, reslice them to be in a single day - DayGrid.prototype.resliceDaySegs = function (segs, dayDate) { - var dayStart = dayDate; - var dayEnd = addDays(dayStart, 1); - var dayRange = { start: dayStart, end: dayEnd }; - var newSegs = []; - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - var eventRange = seg.eventRange; - var origRange = eventRange.range; - var slicedRange = intersectRanges(origRange, dayRange); - if (slicedRange) { - newSegs.push(__assign({}, seg, { eventRange: { - def: eventRange.def, - ui: __assign({}, eventRange.ui, { durationEditable: false }), - instance: eventRange.instance, - range: slicedRange - }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() })); - } - } - return newSegs; - }; - // Generates the text that should be inside a "more" link, given the number of events it represents - DayGrid.prototype.getMoreLinkText = function (num) { - var opt = this.opt('eventLimitText'); - if (typeof opt === 'function') { - return opt(num); - } - else { - return '+' + num + ' ' + opt; - } - }; - // Returns segments within a given cell. - // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. - DayGrid.prototype.getCellSegs = function (row, col, startLevel) { - var segMatrix = this.eventRenderer.rowStructs[row].segMatrix; - var level = startLevel || 0; - var segs = []; - var seg; - while (level < segMatrix.length) { - seg = segMatrix[level][col]; - if (seg) { - segs.push(seg); - } - level++; - } - return segs; - }; - return DayGrid; -}(DateComponent)); - -var WEEK_NUM_FORMAT$1 = createFormatter({ week: 'numeric' }); -/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. -----------------------------------------------------------------------------------------------------------------------*/ -// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. -// It is responsible for managing width/height. -var DayGridView = /** @class */ (function (_super) { - __extends(DayGridView, _super); - function DayGridView(context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this; - /* Header Rendering - ------------------------------------------------------------------------------------------------------------------*/ - // Generates the HTML that will go before the day-of week header cells - _this.renderHeadIntroHtml = function () { - var theme = _this.theme; - if (_this.colWeekNumbersVisible) { - return '' + - '' + - '' + // needed for matchCellWidths - htmlEscape(_this.opt('weekLabel')) + - '' + - ''; - } - return ''; - }; - /* Day Grid Rendering - ------------------------------------------------------------------------------------------------------------------*/ - // Generates the HTML that will go before content-skeleton cells that display the day/week numbers - _this.renderDayGridNumberIntroHtml = function (row, dayGrid) { - var dateEnv = _this.dateEnv; - var weekStart = dayGrid.props.cells[row][0].date; - if (_this.colWeekNumbersVisible) { - return '' + - '' + - buildGotoAnchorHtml(// aside from link, important for matchCellWidths - _this, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML - ) + - ''; - } - return ''; - }; - // Generates the HTML that goes before the day bg cells for each day-row - _this.renderDayGridBgIntroHtml = function () { - var theme = _this.theme; - if (_this.colWeekNumbersVisible) { - return ''; - } - return ''; - }; - // Generates the HTML that goes before every other type of row generated by DayGrid. - // Affects mirror-skeleton and highlight-skeleton rows. - _this.renderDayGridIntroHtml = function () { - if (_this.colWeekNumbersVisible) { - return ''; - } - return ''; - }; - _this.el.classList.add('fc-dayGrid-view'); - _this.el.innerHTML = _this.renderSkeletonHtml(); - _this.scroller = new ScrollComponent('hidden', // overflow x - 'auto' // overflow y - ); - var dayGridContainerEl = _this.scroller.el; - _this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl); - dayGridContainerEl.classList.add('fc-day-grid-container'); - var dayGridEl = createElement('div', { className: 'fc-day-grid' }); - dayGridContainerEl.appendChild(dayGridEl); - var cellWeekNumbersVisible; - if (_this.opt('weekNumbers')) { - if (_this.opt('weekNumbersWithinDays')) { - cellWeekNumbersVisible = true; - _this.colWeekNumbersVisible = false; - } - else { - cellWeekNumbersVisible = false; - _this.colWeekNumbersVisible = true; - } - } - else { - _this.colWeekNumbersVisible = false; - cellWeekNumbersVisible = false; - } - _this.dayGrid = new DayGrid(_this.context, dayGridEl, { - renderNumberIntroHtml: _this.renderDayGridNumberIntroHtml, - renderBgIntroHtml: _this.renderDayGridBgIntroHtml, - renderIntroHtml: _this.renderDayGridIntroHtml, - colWeekNumbersVisible: _this.colWeekNumbersVisible, - cellWeekNumbersVisible: cellWeekNumbersVisible - }); - return _this; - } - DayGridView.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.dayGrid.destroy(); - this.scroller.destroy(); - }; - // Builds the HTML skeleton for the view. - // The day-grid component will render inside of a container defined by this HTML. - DayGridView.prototype.renderSkeletonHtml = function () { - var theme = this.theme; - return '' + - '' + - (this.opt('columnHeader') ? - '' + - '' + - '' + - '' + - '' : - '') + - '' + - '' + - '' + - '' + - '' + - '
       
      '; - }; - // Generates an HTML attribute string for setting the width of the week number column, if it is known - DayGridView.prototype.weekNumberStyleAttr = function () { - if (this.weekNumberWidth != null) { - return 'style="width:' + this.weekNumberWidth + 'px"'; - } - return ''; - }; - // Determines whether each row should have a constant height - DayGridView.prototype.hasRigidRows = function () { - var eventLimit = this.opt('eventLimit'); - return eventLimit && typeof eventLimit !== 'number'; - }; - /* Dimensions - ------------------------------------------------------------------------------------------------------------------*/ - DayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) { - _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first - this.dayGrid.updateSize(isResize); - }; - // Refreshes the horizontal dimensions of the view - DayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) { - var dayGrid = this.dayGrid; - var eventLimit = this.opt('eventLimit'); - var headRowEl = this.header ? this.header.el : null; // HACK - var scrollerHeight; - var scrollbarWidths; - // hack to give the view some height prior to dayGrid's columns being rendered - // TODO: separate setting height from scroller VS dayGrid. - if (!dayGrid.rowEls) { - if (!isAuto) { - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.scroller.setHeight(scrollerHeight); - } - return; - } - if (this.colWeekNumbersVisible) { - // Make sure all week number cells running down the side have the same width. - this.weekNumberWidth = matchCellWidths(findElements(this.el, '.fc-week-number')); - } - // reset all heights to be natural - this.scroller.clear(); - if (headRowEl) { - uncompensateScroll(headRowEl); - } - dayGrid.removeSegPopover(); // kill the "more" popover if displayed - // is the event limit a constant level number? - if (eventLimit && typeof eventLimit === 'number') { - dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after - } - // distribute the height to the rows - // (viewHeight is a "recommended" value if isAuto) - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.setGridHeight(scrollerHeight, isAuto); - // is the event limit dynamically calculated? - if (eventLimit && typeof eventLimit !== 'number') { - dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set - } - if (!isAuto) { // should we force dimensions of the scroll container? - this.scroller.setHeight(scrollerHeight); - scrollbarWidths = this.scroller.getScrollbarWidths(); - if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? - if (headRowEl) { - compensateScroll(headRowEl, scrollbarWidths); - } - // doing the scrollbar compensation might have created text overflow which created more height. redo - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.scroller.setHeight(scrollerHeight); - } - // guarantees the same scrollbar widths - this.scroller.lockOverflow(scrollbarWidths); - } - }; - // given a desired total height of the view, returns what the height of the scroller should be - DayGridView.prototype.computeScrollerHeight = function (viewHeight) { - return viewHeight - - subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller - }; - // Sets the height of just the DayGrid component in this view - DayGridView.prototype.setGridHeight = function (height, isAuto) { - if (this.opt('monthMode')) { - // if auto, make the height of each row the height that it would be if there were 6 weeks - if (isAuto) { - height *= this.dayGrid.rowCnt / 6; - } - distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows - } - else { - if (isAuto) { - undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding - } - else { - distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows - } - } - }; - /* Scroll - ------------------------------------------------------------------------------------------------------------------*/ - DayGridView.prototype.computeDateScroll = function (duration) { - return { top: 0 }; - }; - DayGridView.prototype.queryDateScroll = function () { - return { top: this.scroller.getScrollTop() }; - }; - DayGridView.prototype.applyDateScroll = function (scroll) { - if (scroll.top !== undefined) { - this.scroller.setScrollTop(scroll.top); - } - }; - return DayGridView; -}(View)); -DayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator; - -var SimpleDayGrid = /** @class */ (function (_super) { - __extends(SimpleDayGrid, _super); - function SimpleDayGrid(context, dayGrid) { - var _this = _super.call(this, context, dayGrid.el) || this; - _this.slicer = new DayGridSlicer(); - _this.dayGrid = dayGrid; - context.calendar.registerInteractiveComponent(_this, { el: _this.dayGrid.el }); - return _this; - } - SimpleDayGrid.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.calendar.unregisterInteractiveComponent(this); - }; - SimpleDayGrid.prototype.render = function (props) { - var dayGrid = this.dayGrid; - var dateProfile = props.dateProfile, dayTable = props.dayTable; - dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid })); - }; - SimpleDayGrid.prototype.buildPositionCaches = function () { - this.dayGrid.buildPositionCaches(); - }; - SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) { - var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop); - if (rawHit) { - return { - component: this.dayGrid, - dateSpan: rawHit.dateSpan, - dayEl: rawHit.dayEl, - rect: { - left: rawHit.relativeRect.left, - right: rawHit.relativeRect.right, - top: rawHit.relativeRect.top, - bottom: rawHit.relativeRect.bottom - }, - layer: 0 - }; - } - }; - return SimpleDayGrid; -}(DateComponent)); -var DayGridSlicer = /** @class */ (function (_super) { - __extends(DayGridSlicer, _super); - function DayGridSlicer() { - return _super !== null && _super.apply(this, arguments) || this; - } - DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) { - return dayTable.sliceRange(dateRange); - }; - return DayGridSlicer; -}(Slicer)); - -var DayGridView$1 = /** @class */ (function (_super) { - __extends(DayGridView, _super); - function DayGridView(_context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this; - _this.buildDayTable = memoize(buildDayTable); - if (_this.opt('columnHeader')) { - _this.header = new DayHeader(_this.context, _this.el.querySelector('.fc-head-container')); - } - _this.simpleDayGrid = new SimpleDayGrid(_this.context, _this.dayGrid); - return _this; - } - DayGridView.prototype.destroy = function () { - _super.prototype.destroy.call(this); - if (this.header) { - this.header.destroy(); - } - this.simpleDayGrid.destroy(); - }; - DayGridView.prototype.render = function (props) { - _super.prototype.render.call(this, props); - var dateProfile = this.props.dateProfile; - var dayTable = this.dayTable = - this.buildDayTable(dateProfile, this.dateProfileGenerator); - if (this.header) { - this.header.receiveProps({ - dateProfile: dateProfile, - dates: dayTable.headerDates, - datesRepDistinctDays: dayTable.rowCnt === 1, - renderIntroHtml: this.renderHeadIntroHtml - }); - } - this.simpleDayGrid.receiveProps({ - dateProfile: dateProfile, - dayTable: dayTable, - businessHours: props.businessHours, - dateSelection: props.dateSelection, - eventStore: props.eventStore, - eventUiBases: props.eventUiBases, - eventSelection: props.eventSelection, - eventDrag: props.eventDrag, - eventResize: props.eventResize, - isRigid: this.hasRigidRows(), - nextDayThreshold: this.nextDayThreshold - }); - }; - return DayGridView; -}(DayGridView)); -function buildDayTable(dateProfile, dateProfileGenerator) { - var daySeries = new DaySeries(dateProfile.renderRange, dateProfileGenerator); - return new DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); -} - -var main = createPlugin({ - defaultView: 'dayGridMonth', - views: { - dayGrid: DayGridView$1, - dayGridDay: { - type: 'dayGrid', - duration: { days: 1 } - }, - dayGridWeek: { - type: 'dayGrid', - duration: { weeks: 1 } - }, - dayGridMonth: { - type: 'dayGrid', - duration: { months: 1 }, - monthMode: true, - fixedWeekCount: true - } - } -}); - -export default main; -export { DayGridView as AbstractDayGridView, DayBgRow, DayGrid, DayGridSlicer, DayGridView$1 as DayGridView, SimpleDayGrid, buildDayTable as buildBasicDayTable }; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.js deleted file mode 100644 index d1cc407..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.js +++ /dev/null @@ -1,1641 +0,0 @@ -/*! -FullCalendar Day Grid Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) : - typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) : - (global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar)); -}(this, function (exports, core) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - var DayGridDateProfileGenerator = /** @class */ (function (_super) { - __extends(DayGridDateProfileGenerator, _super); - function DayGridDateProfileGenerator() { - return _super !== null && _super.apply(this, arguments) || this; - } - // Computes the date range that will be rendered. - DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { - var dateEnv = this.dateEnv; - var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); - var start = renderRange.start; - var end = renderRange.end; - var endOfWeek; - // year and month views should be aligned with weeks. this is already done for week - if (/^(year|month)$/.test(currentRangeUnit)) { - start = dateEnv.startOfWeek(start); - // make end-of-week if not already - endOfWeek = dateEnv.startOfWeek(end); - if (endOfWeek.valueOf() !== end.valueOf()) { - end = core.addWeeks(endOfWeek, 1); - } - } - // ensure 6 weeks - if (this.options.monthMode && - this.options.fixedWeekCount) { - var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays - core.diffWeeks(start, end)); - end = core.addWeeks(end, 6 - rowCnt); - } - return { start: start, end: end }; - }; - return DayGridDateProfileGenerator; - }(core.DateProfileGenerator)); - - /* A rectangular panel that is absolutely positioned over other content - ------------------------------------------------------------------------------------------------------------------------ - Options: - - className (string) - - content (HTML string, element, or element array) - - parentEl - - top - - left - - right (the x coord of where the right edge should be. not a "CSS" right) - - autoHide (boolean) - - show (callback) - - hide (callback) - */ - var Popover = /** @class */ (function () { - function Popover(options) { - var _this = this; - this.isHidden = true; - this.margin = 10; // the space required between the popover and the edges of the scroll container - // Triggered when the user clicks *anywhere* in the document, for the autoHide feature - this.documentMousedown = function (ev) { - // only hide the popover if the click happened outside the popover - if (_this.el && !_this.el.contains(ev.target)) { - _this.hide(); - } - }; - this.options = options; - } - // Shows the popover on the specified position. Renders it if not already - Popover.prototype.show = function () { - if (this.isHidden) { - if (!this.el) { - this.render(); - } - this.el.style.display = ''; - this.position(); - this.isHidden = false; - this.trigger('show'); - } - }; - // Hides the popover, through CSS, but does not remove it from the DOM - Popover.prototype.hide = function () { - if (!this.isHidden) { - this.el.style.display = 'none'; - this.isHidden = true; - this.trigger('hide'); - } - }; - // Creates `this.el` and renders content inside of it - Popover.prototype.render = function () { - var _this = this; - var options = this.options; - var el = this.el = core.createElement('div', { - className: 'fc-popover ' + (options.className || ''), - style: { - top: '0', - left: '0' - } - }); - if (typeof options.content === 'function') { - options.content(el); - } - options.parentEl.appendChild(el); - // when a click happens on anything inside with a 'fc-close' className, hide the popover - core.listenBySelector(el, 'click', '.fc-close', function (ev) { - _this.hide(); - }); - if (options.autoHide) { - document.addEventListener('mousedown', this.documentMousedown); - } - }; - // Hides and unregisters any handlers - Popover.prototype.destroy = function () { - this.hide(); - if (this.el) { - core.removeElement(this.el); - this.el = null; - } - document.removeEventListener('mousedown', this.documentMousedown); - }; - // Positions the popover optimally, using the top/left/right options - Popover.prototype.position = function () { - var options = this.options; - var el = this.el; - var elDims = el.getBoundingClientRect(); // only used for width,height - var origin = core.computeRect(el.offsetParent); - var clippingRect = core.computeClippingRect(options.parentEl); - var top; // the "position" (not "offset") values for the popover - var left; // - // compute top and left - top = options.top || 0; - if (options.left !== undefined) { - left = options.left; - } - else if (options.right !== undefined) { - left = options.right - elDims.width; // derive the left value from the right value - } - else { - left = 0; - } - // constrain to the view port. if constrained by two edges, give precedence to top/left - top = Math.min(top, clippingRect.bottom - elDims.height - this.margin); - top = Math.max(top, clippingRect.top + this.margin); - left = Math.min(left, clippingRect.right - elDims.width - this.margin); - left = Math.max(left, clippingRect.left + this.margin); - core.applyStyle(el, { - top: top - origin.top, - left: left - origin.left - }); - }; - // Triggers a callback. Calls a function in the option hash of the same name. - // Arguments beyond the first `name` are forwarded on. - // TODO: better code reuse for this. Repeat code - // can kill this??? - Popover.prototype.trigger = function (name) { - if (this.options[name]) { - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); - } - }; - return Popover; - }()); - - /* Event-rendering methods for the DayGrid class - ----------------------------------------------------------------------------------------------------------------------*/ - // "Simple" is bad a name. has nothing to do with SimpleDayGrid - var SimpleDayGridEventRenderer = /** @class */ (function (_super) { - __extends(SimpleDayGridEventRenderer, _super); - function SimpleDayGridEventRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - // Builds the HTML to be used for the default element for an individual segment - SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) { - var _a = this.context, view = _a.view, options = _a.options; - var eventRange = seg.eventRange; - var eventDef = eventRange.def; - var eventUi = eventRange.ui; - var allDay = eventDef.allDay; - var isDraggable = view.computeEventDraggable(eventDef, eventUi); - var isResizableFromStart = allDay && seg.isStart && view.computeEventStartResizable(eventDef, eventUi); - var isResizableFromEnd = allDay && seg.isEnd && view.computeEventEndResizable(eventDef, eventUi); - var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo); - var skinCss = core.cssToStr(this.getSkinCss(eventUi)); - var timeHtml = ''; - var timeText; - var titleHtml; - classes.unshift('fc-day-grid-event', 'fc-h-event'); - // Only display a timed events time if it is the starting segment - if (seg.isStart) { - timeText = this.getTimeText(eventRange); - if (timeText) { - timeHtml = '' + core.htmlEscape(timeText) + ''; - } - } - titleHtml = - '' + - (core.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height - ''; - return '
      ' + - '
      ' + - (options.dir === 'rtl' ? - titleHtml + ' ' + timeHtml : // put a natural space in between - timeHtml + ' ' + titleHtml // - ) + - '
      ' + - (isResizableFromStart ? - '
      ' : - '') + - (isResizableFromEnd ? - '
      ' : - '') + - '
      '; - }; - // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined - SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () { - return { - hour: 'numeric', - minute: '2-digit', - omitZeroMinute: true, - meridiem: 'narrow' - }; - }; - SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () { - return false; // TODO: somehow consider the originating DayGrid's column count - }; - return SimpleDayGridEventRenderer; - }(core.FgEventRenderer)); - - /* Event-rendering methods for the DayGrid class - ----------------------------------------------------------------------------------------------------------------------*/ - var DayGridEventRenderer = /** @class */ (function (_super) { - __extends(DayGridEventRenderer, _super); - function DayGridEventRenderer(dayGrid) { - var _this = _super.call(this, dayGrid.context) || this; - _this.dayGrid = dayGrid; - return _this; - } - // Renders the given foreground event segments onto the grid - DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) { - var rowStructs = this.rowStructs = this.renderSegRows(segs); - // append to each row's content skeleton - this.dayGrid.rowEls.forEach(function (rowNode, i) { - rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl); - }); - // removes the "more.." events popover - if (!mirrorInfo) { - this.dayGrid.removeSegPopover(); - } - }; - // Unrenders all currently rendered foreground event segments - DayGridEventRenderer.prototype.detachSegs = function () { - var rowStructs = this.rowStructs || []; - var rowStruct; - while ((rowStruct = rowStructs.pop())) { - core.removeElement(rowStruct.tbodyEl); - } - this.rowStructs = null; - }; - // Uses the given events array to generate elements that should be appended to each row's content skeleton. - // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). - // PRECONDITION: each segment shoud already have a rendered and assigned `.el` - DayGridEventRenderer.prototype.renderSegRows = function (segs) { - var rowStructs = []; - var segRows; - var row; - segRows = this.groupSegRows(segs); // group into nested arrays - // iterate each row of segment groupings - for (row = 0; row < segRows.length; row++) { - rowStructs.push(this.renderSegRow(row, segRows[row])); - } - return rowStructs; - }; - // Given a row # and an array of segments all in the same row, render a element, a skeleton that contains - // the segments. Returns object with a bunch of internal data about how the render was calculated. - // NOTE: modifies rowSegs - DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) { - var dayGrid = this.dayGrid; - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; - var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels - var levelCnt = Math.max(1, segLevels.length); // ensure at least one level - var tbody = document.createElement('tbody'); - var segMatrix = []; // lookup for which segments are rendered into which level+col cells - var cellMatrix = []; // lookup for all elements of the level+col matrix - var loneCellMatrix = []; // lookup for elements that only take up a single column - var i; - var levelSegs; - var col; - var tr; - var j; - var seg; - var td; - // populates empty cells from the current column (`col`) to `endCol` - function emptyCellsUntil(endCol) { - while (col < endCol) { - // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell - td = (loneCellMatrix[i - 1] || [])[col]; - if (td) { - td.rowSpan = (td.rowSpan || 1) + 1; - } - else { - td = document.createElement('td'); - tr.appendChild(td); - } - cellMatrix[i][col] = td; - loneCellMatrix[i][col] = td; - col++; - } - } - for (i = 0; i < levelCnt; i++) { // iterate through all levels - levelSegs = segLevels[i]; - col = 0; - tr = document.createElement('tr'); - segMatrix.push([]); - cellMatrix.push([]); - loneCellMatrix.push([]); - // levelCnt might be 1 even though there are no actual levels. protect against this. - // this single empty row is useful for styling. - if (levelSegs) { - for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level - seg = levelSegs[j]; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - emptyCellsUntil(leftCol); - // create a container that occupies or more columns. append the event element. - td = core.createElement('td', { className: 'fc-event-container' }, seg.el); - if (leftCol !== rightCol) { - td.colSpan = rightCol - leftCol + 1; - } - else { // a single-column segment - loneCellMatrix[i][col] = td; - } - while (col <= rightCol) { - cellMatrix[i][col] = td; - segMatrix[i][col] = seg; - col++; - } - tr.appendChild(td); - } - } - emptyCellsUntil(colCnt); // finish off the row - var introHtml = dayGrid.renderProps.renderIntroHtml(); - if (introHtml) { - if (dayGrid.isRtl) { - core.appendToElement(tr, introHtml); - } - else { - core.prependToElement(tr, introHtml); - } - } - tbody.appendChild(tr); - } - return { - row: row, - tbodyEl: tbody, - cellMatrix: cellMatrix, - segMatrix: segMatrix, - segLevels: segLevels, - segs: rowSegs - }; - }; - // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. - // NOTE: modifies segs - DayGridEventRenderer.prototype.buildSegLevels = function (segs) { - var _a = this.dayGrid, isRtl = _a.isRtl, colCnt = _a.colCnt; - var levels = []; - var i; - var seg; - var j; - // Give preference to elements with certain criteria, so they have - // a chance to be closer to the top. - segs = this.sortEventSegs(segs); - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - // loop through levels, starting with the topmost, until the segment doesn't collide with other segments - for (j = 0; j < levels.length; j++) { - if (!isDaySegCollision(seg, levels[j])) { - break; - } - } - // `j` now holds the desired subrow index - seg.level = j; - seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only - seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only - ; - (levels[j] || (levels[j] = [])).push(seg); - } - // order segments left-to-right. very important if calendar is RTL - for (j = 0; j < levels.length; j++) { - levels[j].sort(compareDaySegCols); - } - return levels; - }; - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row - DayGridEventRenderer.prototype.groupSegRows = function (segs) { - var segRows = []; - var i; - for (i = 0; i < this.dayGrid.rowCnt; i++) { - segRows.push([]); - } - for (i = 0; i < segs.length; i++) { - segRows[segs[i].row].push(segs[i]); - } - return segRows; - }; - // Computes a default `displayEventEnd` value if one is not expliclty defined - DayGridEventRenderer.prototype.computeDisplayEventEnd = function () { - return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day - }; - return DayGridEventRenderer; - }(SimpleDayGridEventRenderer)); - // Computes whether two segments' columns collide. They are assumed to be in the same row. - function isDaySegCollision(seg, otherSegs) { - var i; - var otherSeg; - for (i = 0; i < otherSegs.length; i++) { - otherSeg = otherSegs[i]; - if (otherSeg.firstCol <= seg.lastCol && - otherSeg.lastCol >= seg.firstCol) { - return true; - } - } - return false; - } - // A cmp function for determining the leftmost event - function compareDaySegCols(a, b) { - return a.leftCol - b.leftCol; - } - - var DayGridMirrorRenderer = /** @class */ (function (_super) { - __extends(DayGridMirrorRenderer, _super); - function DayGridMirrorRenderer() { - return _super !== null && _super.apply(this, arguments) || this; - } - DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) { - var sourceSeg = mirrorInfo.sourceSeg; - var rowStructs = this.rowStructs = this.renderSegRows(segs); - // inject each new event skeleton into each associated row - this.dayGrid.rowEls.forEach(function (rowNode, row) { - var skeletonEl = core.htmlToElement('
      '); // will be absolutely positioned - var skeletonTopEl; - var skeletonTop; - // If there is an original segment, match the top position. Otherwise, put it at the row's top level - if (sourceSeg && sourceSeg.row === row) { - skeletonTopEl = sourceSeg.el; - } - else { - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody'); - if (!skeletonTopEl) { // when no events - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table'); - } - } - skeletonTop = skeletonTopEl.getBoundingClientRect().top - - rowNode.getBoundingClientRect().top; // the offsetParent origin - skeletonEl.style.top = skeletonTop + 'px'; - skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl); - rowNode.appendChild(skeletonEl); - }); - }; - return DayGridMirrorRenderer; - }(DayGridEventRenderer)); - - var EMPTY_CELL_HTML = ''; - var DayGridFillRenderer = /** @class */ (function (_super) { - __extends(DayGridFillRenderer, _super); - function DayGridFillRenderer(dayGrid) { - var _this = _super.call(this, dayGrid.context) || this; - _this.fillSegTag = 'td'; // override the default tag name - _this.dayGrid = dayGrid; - return _this; - } - DayGridFillRenderer.prototype.renderSegs = function (type, segs) { - // don't render timed background events - if (type === 'bgEvent') { - segs = segs.filter(function (seg) { - return seg.eventRange.def.allDay; - }); - } - _super.prototype.renderSegs.call(this, type, segs); - }; - DayGridFillRenderer.prototype.attachSegs = function (type, segs) { - var els = []; - var i; - var seg; - var skeletonEl; - for (i = 0; i < segs.length; i++) { - seg = segs[i]; - skeletonEl = this.renderFillRow(type, seg); - this.dayGrid.rowEls[seg.row].appendChild(skeletonEl); - els.push(skeletonEl); - } - return els; - }; - // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. - DayGridFillRenderer.prototype.renderFillRow = function (type, seg) { - var dayGrid = this.dayGrid; - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - var startCol = leftCol; - var endCol = rightCol + 1; - var className; - var skeletonEl; - var trEl; - if (type === 'businessHours') { - className = 'bgevent'; - } - else { - className = type.toLowerCase(); - } - skeletonEl = core.htmlToElement('
      ' + - '
      ' + - '
      '); - trEl = skeletonEl.getElementsByTagName('tr')[0]; - if (startCol > 0) { - core.appendToElement(trEl, - // will create (startCol + 1) td's - new Array(startCol + 1).join(EMPTY_CELL_HTML)); - } - seg.el.colSpan = endCol - startCol; - trEl.appendChild(seg.el); - if (endCol < colCnt) { - core.appendToElement(trEl, - // will create (colCnt - endCol) td's - new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML)); - } - var introHtml = dayGrid.renderProps.renderIntroHtml(); - if (introHtml) { - if (dayGrid.isRtl) { - core.appendToElement(trEl, introHtml); - } - else { - core.prependToElement(trEl, introHtml); - } - } - return skeletonEl; - }; - return DayGridFillRenderer; - }(core.FillRenderer)); - - var DayTile = /** @class */ (function (_super) { - __extends(DayTile, _super); - function DayTile(context, el) { - var _this = _super.call(this, context, el) || this; - var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this); - var renderFrame = _this.renderFrame = core.memoizeRendering(_this._renderFrame); - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]); - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); - _this.renderEventDrag = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); - _this.renderEventResize = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); - context.calendar.registerInteractiveComponent(_this, { - el: _this.el, - useEventCenter: false - }); - return _this; - } - DayTile.prototype.render = function (props) { - this.renderFrame(props.date); - this.renderFgEvents(props.fgSegs); - this.renderEventSelection(props.eventSelection); - this.renderEventDrag(props.eventDragInstances); - this.renderEventResize(props.eventResizeInstances); - }; - DayTile.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderFrame.unrender(); // should unrender everything else - this.calendar.unregisterInteractiveComponent(this); - }; - DayTile.prototype._renderFrame = function (date) { - var _a = this, theme = _a.theme, dateEnv = _a.dateEnv; - var title = dateEnv.format(date, core.createFormatter(this.opt('dayPopoverFormat')) // TODO: cache - ); - this.el.innerHTML = - '
      ' + - '' + - core.htmlEscape(title) + - '' + - '' + - '
      ' + - '
      ' + - '
      ' + - '
      '; - this.segContainerEl = this.el.querySelector('.fc-event-container'); - }; - DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { - var date = this.props.date; // HACK - if (positionLeft < elWidth && positionTop < elHeight) { - return { - component: this, - dateSpan: { - allDay: true, - range: { start: date, end: core.addDays(date, 1) } - }, - dayEl: this.el, - rect: { - left: 0, - top: 0, - right: elWidth, - bottom: elHeight - }, - layer: 1 - }; - } - }; - return DayTile; - }(core.DateComponent)); - var DayTileEventRenderer = /** @class */ (function (_super) { - __extends(DayTileEventRenderer, _super); - function DayTileEventRenderer(dayTile) { - var _this = _super.call(this, dayTile.context) || this; - _this.dayTile = dayTile; - return _this; - } - DayTileEventRenderer.prototype.attachSegs = function (segs) { - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - this.dayTile.segContainerEl.appendChild(seg.el); - } - }; - DayTileEventRenderer.prototype.detachSegs = function (segs) { - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - core.removeElement(seg.el); - } - }; - return DayTileEventRenderer; - }(SimpleDayGridEventRenderer)); - - var DayBgRow = /** @class */ (function () { - function DayBgRow(context) { - this.context = context; - } - DayBgRow.prototype.renderHtml = function (props) { - var parts = []; - if (props.renderIntroHtml) { - parts.push(props.renderIntroHtml()); - } - for (var _i = 0, _a = props.cells; _i < _a.length; _i++) { - var cell = _a[_i]; - parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs)); - } - if (!props.cells.length) { - parts.push(''); - } - if (this.context.options.dir === 'rtl') { - parts.reverse(); - } - return '' + parts.join('') + ''; - }; - return DayBgRow; - }()); - function renderCellHtml(date, dateProfile, context, otherAttrs) { - var dateEnv = context.dateEnv, theme = context.theme; - var isDateValid = core.rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. - var classes = core.getDayClasses(date, dateProfile, context); - classes.unshift('fc-day', theme.getClass('widgetContent')); - return ''; - } - - var DAY_NUM_FORMAT = core.createFormatter({ day: 'numeric' }); - var WEEK_NUM_FORMAT = core.createFormatter({ week: 'numeric' }); - var DayGrid = /** @class */ (function (_super) { - __extends(DayGrid, _super); - function DayGrid(context, el, renderProps) { - var _this = _super.call(this, context, el) || this; - _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid - _this.isCellSizesDirty = false; - var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this); - var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this); - _this.mirrorRenderer = new DayGridMirrorRenderer(_this); - var renderCells = _this.renderCells = core.memoizeRendering(_this._renderCells, _this._unrenderCells); - _this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]); - _this.renderDateSelection = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]); - _this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]); - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]); - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); - _this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]); - _this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]); - _this.renderProps = renderProps; - return _this; - } - DayGrid.prototype.render = function (props) { - var cells = props.cells; - this.rowCnt = cells.length; - this.colCnt = cells[0].length; - this.renderCells(cells, props.isRigid); - this.renderBusinessHours(props.businessHourSegs); - this.renderDateSelection(props.dateSelectionSegs); - this.renderBgEvents(props.bgEventSegs); - this.renderFgEvents(props.fgEventSegs); - this.renderEventSelection(props.eventSelection); - this.renderEventDrag(props.eventDrag); - this.renderEventResize(props.eventResize); - if (this.segPopoverTile) { - this.updateSegPopoverTile(); - } - }; - DayGrid.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderCells.unrender(); // will unrender everything else - }; - DayGrid.prototype.getCellRange = function (row, col) { - var start = this.props.cells[row][col].date; - var end = core.addDays(start, 1); - return { start: start, end: end }; - }; - DayGrid.prototype.updateSegPopoverTile = function (date, segs) { - var ownProps = this.props; - this.segPopoverTile.receiveProps({ - date: date || this.segPopoverTile.props.date, - fgSegs: segs || this.segPopoverTile.props.fgSegs, - eventSelection: ownProps.eventSelection, - eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null, - eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null - }); - }; - /* Date Rendering - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderCells = function (cells, isRigid) { - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt; - var html = ''; - var row; - var col; - for (row = 0; row < rowCnt; row++) { - html += this.renderDayRowHtml(row, isRigid); - } - this.el.innerHTML = html; - this.rowEls = core.findElements(this.el, '.fc-row'); - this.cellEls = core.findElements(this.el, '.fc-day, .fc-disabled-day'); - if (this.isRtl) { - this.cellEls.reverse(); - } - this.rowPositions = new core.PositionCache(this.el, this.rowEls, false, true // vertical - ); - this.colPositions = new core.PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row - true, false // horizontal - ); - // trigger dayRender with each cell's element - for (row = 0; row < rowCnt; row++) { - for (col = 0; col < colCnt; col++) { - this.publiclyTrigger('dayRender', [ - { - date: dateEnv.toDate(cells[row][col].date), - el: this.getCellEl(row, col), - view: view - } - ]); - } - } - this.isCellSizesDirty = true; - }; - DayGrid.prototype._unrenderCells = function () { - this.removeSegPopover(); - }; - // Generates the HTML for a single row, which is a div that wraps a table. - // `row` is the row number. - DayGrid.prototype.renderDayRowHtml = function (row, isRigid) { - var theme = this.theme; - var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')]; - if (isRigid) { - classes.push('fc-rigid'); - } - var bgRow = new DayBgRow(this.context); - return '' + - '
      ' + - '
      ' + - '' + - bgRow.renderHtml({ - cells: this.props.cells[row], - dateProfile: this.props.dateProfile, - renderIntroHtml: this.renderProps.renderBgIntroHtml - }) + - '
      ' + - '
      ' + - '
      ' + - '' + - (this.getIsNumbersVisible() ? - '' + - this.renderNumberTrHtml(row) + - '' : - '') + - '
      ' + - '
      ' + - '
      '; - }; - DayGrid.prototype.getIsNumbersVisible = function () { - return this.getIsDayNumbersVisible() || - this.renderProps.cellWeekNumbersVisible || - this.renderProps.colWeekNumbersVisible; - }; - DayGrid.prototype.getIsDayNumbersVisible = function () { - return this.rowCnt > 1; - }; - /* Grid Number Rendering - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.renderNumberTrHtml = function (row) { - var intro = this.renderProps.renderNumberIntroHtml(row, this); - return '' + - '' + - (this.isRtl ? '' : intro) + - this.renderNumberCellsHtml(row) + - (this.isRtl ? intro : '') + - ''; - }; - DayGrid.prototype.renderNumberCellsHtml = function (row) { - var htmls = []; - var col; - var date; - for (col = 0; col < this.colCnt; col++) { - date = this.props.cells[row][col].date; - htmls.push(this.renderNumberCellHtml(date)); - } - if (this.isRtl) { - htmls.reverse(); - } - return htmls.join(''); - }; - // Generates the HTML for the s of the "number" row in the DayGrid's content skeleton. - // The number row will only exist if either day numbers or week numbers are turned on. - DayGrid.prototype.renderNumberCellHtml = function (date) { - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var html = ''; - var isDateValid = core.rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. - var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid; - var classes; - var weekCalcFirstDow; - if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) { - // no numbers in day cell (week number must be along the side) - return ''; // will create an empty space above events :( - } - classes = core.getDayClasses(date, this.props.dateProfile, this.context); - classes.unshift('fc-day-top'); - if (this.renderProps.cellWeekNumbersVisible) { - weekCalcFirstDow = dateEnv.weekDow; - } - html += ''; - if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) { - html += core.buildGotoAnchorHtml(view, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML - ); - } - if (isDayNumberVisible) { - html += core.buildGotoAnchorHtml(view, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML - ); - } - html += ''; - return html; - }; - /* Sizing - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.updateSize = function (isResize) { - var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer; - if (isResize || - this.isCellSizesDirty || - this.view.calendar.isEventsUpdated // hack - ) { - this.buildPositionCaches(); - this.isCellSizesDirty = false; - } - fillRenderer.computeSizes(isResize); - eventRenderer.computeSizes(isResize); - mirrorRenderer.computeSizes(isResize); - fillRenderer.assignSizes(isResize); - eventRenderer.assignSizes(isResize); - mirrorRenderer.assignSizes(isResize); - }; - DayGrid.prototype.buildPositionCaches = function () { - this.buildColPositions(); - this.buildRowPositions(); - }; - DayGrid.prototype.buildColPositions = function () { - this.colPositions.build(); - }; - DayGrid.prototype.buildRowPositions = function () { - this.rowPositions.build(); - this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack - }; - /* Hit System - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.positionToHit = function (leftPosition, topPosition) { - var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; - var col = colPositions.leftToIndex(leftPosition); - var row = rowPositions.topToIndex(topPosition); - if (row != null && col != null) { - return { - row: row, - col: col, - dateSpan: { - range: this.getCellRange(row, col), - allDay: true - }, - dayEl: this.getCellEl(row, col), - relativeRect: { - left: colPositions.lefts[col], - right: colPositions.rights[col], - top: rowPositions.tops[row], - bottom: rowPositions.bottoms[row] - } - }; - } - }; - /* Cell System - ------------------------------------------------------------------------------------------------------------------*/ - // FYI: the first column is the leftmost column, regardless of date - DayGrid.prototype.getCellEl = function (row, col) { - return this.cellEls[row * this.colCnt + col]; - }; - /* Event Drag Visualization - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderEventDrag = function (state) { - if (state) { - this.eventRenderer.hideByHash(state.affectedInstances); - this.fillRenderer.renderSegs('highlight', state.segs); - } - }; - DayGrid.prototype._unrenderEventDrag = function (state) { - if (state) { - this.eventRenderer.showByHash(state.affectedInstances); - this.fillRenderer.unrender('highlight'); - } - }; - /* Event Resize Visualization - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype._renderEventResize = function (state) { - if (state) { - this.eventRenderer.hideByHash(state.affectedInstances); - this.fillRenderer.renderSegs('highlight', state.segs); - this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); - } - }; - DayGrid.prototype._unrenderEventResize = function (state) { - if (state) { - this.eventRenderer.showByHash(state.affectedInstances); - this.fillRenderer.unrender('highlight'); - this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); - } - }; - /* More+ Link Popover - ------------------------------------------------------------------------------------------------------------------*/ - DayGrid.prototype.removeSegPopover = function () { - if (this.segPopover) { - this.segPopover.hide(); // in handler, will call segPopover's removeElement - } - }; - // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. - // `levelLimit` can be false (don't limit), a number, or true (should be computed). - DayGrid.prototype.limitRows = function (levelLimit) { - var rowStructs = this.eventRenderer.rowStructs || []; - var row; // row # - var rowLevelLimit; - for (row = 0; row < rowStructs.length; row++) { - this.unlimitRow(row); - if (!levelLimit) { - rowLevelLimit = false; - } - else if (typeof levelLimit === 'number') { - rowLevelLimit = levelLimit; - } - else { - rowLevelLimit = this.computeRowLevelLimit(row); - } - if (rowLevelLimit !== false) { - this.limitRow(row, rowLevelLimit); - } - } - }; - // Computes the number of levels a row will accomodate without going outside its bounds. - // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). - // `row` is the row number. - DayGrid.prototype.computeRowLevelLimit = function (row) { - var rowEl = this.rowEls[row]; // the containing "fake" row div - var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport! - var trEls = core.findChildren(this.eventRenderer.rowStructs[row].tbodyEl); - var i; - var trEl; - // Reveal one level at a time and stop when we find one out of bounds - for (i = 0; i < trEls.length; i++) { - trEl = trEls[i]; - trEl.classList.remove('fc-limited'); // reset to original state (reveal) - if (trEl.getBoundingClientRect().bottom > rowBottom) { - return i; - } - } - return false; // should not limit at all - }; - // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. - // `row` is the row number. - // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. - DayGrid.prototype.limitRow = function (row, levelLimit) { - var _this = this; - var _a = this, colCnt = _a.colCnt, isRtl = _a.isRtl; - var rowStruct = this.eventRenderer.rowStructs[row]; - var moreNodes = []; // array of "more" links and DOM nodes - var col = 0; // col #, left-to-right (not chronologically) - var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right - var cellMatrix; // a matrix (by level, then column) of all elements in the row - var limitedNodes; // array of temporarily hidden level and segment DOM nodes - var i; - var seg; - var segsBelow; // array of segment objects below `seg` in the current `col` - var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies - var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) - var td; - var rowSpan; - var segMoreNodes; // array of "more" cells that will stand-in for the current seg's cell - var j; - var moreTd; - var moreWrap; - var moreLink; - // Iterates through empty level cells and places "more" links inside if need be - var emptyCellsUntil = function (endCol) { - while (col < endCol) { - segsBelow = _this.getCellSegs(row, col, levelLimit); - if (segsBelow.length) { - td = cellMatrix[levelLimit - 1][col]; - moreLink = _this.renderMoreLink(row, col, segsBelow); - moreWrap = core.createElement('div', null, moreLink); - td.appendChild(moreWrap); - moreNodes.push(moreWrap); - } - col++; - } - }; - if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? - levelSegs = rowStruct.segLevels[levelLimit - 1]; - cellMatrix = rowStruct.cellMatrix; - limitedNodes = core.findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level elements past the limit - limitedNodes.forEach(function (node) { - node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array - }); - // iterate though segments in the last allowable level - for (i = 0; i < levelSegs.length; i++) { - seg = levelSegs[i]; - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; - emptyCellsUntil(leftCol); // process empty cells before the segment - // determine *all* segments below `seg` that occupy the same columns - colSegsBelow = []; - totalSegsBelow = 0; - while (col <= rightCol) { - segsBelow = this.getCellSegs(row, col, levelLimit); - colSegsBelow.push(segsBelow); - totalSegsBelow += segsBelow.length; - col++; - } - if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? - td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell - rowSpan = td.rowSpan || 1; - segMoreNodes = []; - // make a replacement for each column the segment occupies. will be one for each colspan - for (j = 0; j < colSegsBelow.length; j++) { - moreTd = core.createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan }); - segsBelow = colSegsBelow[j]; - moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too - ); - moreWrap = core.createElement('div', null, moreLink); - moreTd.appendChild(moreWrap); - segMoreNodes.push(moreTd); - moreNodes.push(moreTd); - } - td.classList.add('fc-limited'); - core.insertAfterElement(td, segMoreNodes); - limitedNodes.push(td); - } - } - emptyCellsUntil(this.colCnt); // finish off the level - rowStruct.moreEls = moreNodes; // for easy undoing later - rowStruct.limitedEls = limitedNodes; // for easy undoing later - } - }; - // Reveals all levels and removes all "more"-related elements for a grid's row. - // `row` is a row number. - DayGrid.prototype.unlimitRow = function (row) { - var rowStruct = this.eventRenderer.rowStructs[row]; - if (rowStruct.moreEls) { - rowStruct.moreEls.forEach(core.removeElement); - rowStruct.moreEls = null; - } - if (rowStruct.limitedEls) { - rowStruct.limitedEls.forEach(function (limitedEl) { - limitedEl.classList.remove('fc-limited'); - }); - rowStruct.limitedEls = null; - } - }; - // Renders an element that represents hidden event element for a cell. - // Responsible for attaching click handler as well. - DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) { - var _this = this; - var _a = this, view = _a.view, dateEnv = _a.dateEnv; - var a = core.createElement('a', { className: 'fc-more' }); - a.innerText = this.getMoreLinkText(hiddenSegs.length); - a.addEventListener('click', function (ev) { - var clickOption = _this.opt('eventLimitClick'); - var _col = _this.isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? - var date = _this.props.cells[row][_col].date; - var moreEl = ev.currentTarget; - var dayEl = _this.getCellEl(row, col); - var allSegs = _this.getCellSegs(row, col); - // rescope the segments to be within the cell's date - var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); - var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); - if (typeof clickOption === 'function') { - // the returned value can be an atomic option - clickOption = _this.publiclyTrigger('eventLimitClick', [ - { - date: dateEnv.toDate(date), - allDay: true, - dayEl: dayEl, - moreEl: moreEl, - segs: reslicedAllSegs, - hiddenSegs: reslicedHiddenSegs, - jsEvent: ev, - view: view - } - ]); - } - if (clickOption === 'popover') { - _this.showSegPopover(row, col, moreEl, reslicedAllSegs); - } - else if (typeof clickOption === 'string') { // a view name - view.calendar.zoomTo(date, clickOption); - } - }); - return a; - }; - // Reveals the popover that displays all events within a cell - DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) { - var _this = this; - var _a = this, calendar = _a.calendar, view = _a.view, theme = _a.theme; - var _col = this.isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? - var moreWrap = moreLink.parentNode; // the
      wrapper around the - var topEl; // the element we want to match the top coordinate of - var options; - if (this.rowCnt === 1) { - topEl = view.el; // will cause the popover to cover any sort of header - } - else { - topEl = this.rowEls[row]; // will align with top of row - } - options = { - className: 'fc-more-popover ' + theme.getClass('popover'), - parentEl: view.el, - top: core.computeRect(topEl).top, - autoHide: true, - content: function (el) { - _this.segPopoverTile = new DayTile(_this.context, el); - _this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs); - }, - hide: function () { - _this.segPopoverTile.destroy(); - _this.segPopoverTile = null; - _this.segPopover.destroy(); - _this.segPopover = null; - } - }; - // Determine horizontal coordinate. - // We use the moreWrap instead of the to avoid border confusion. - if (this.isRtl) { - options.right = core.computeRect(moreWrap).right + 1; // +1 to be over cell border - } - else { - options.left = core.computeRect(moreWrap).left - 1; // -1 to be over cell border - } - this.segPopover = new Popover(options); - this.segPopover.show(); - calendar.releaseAfterSizingTriggers(); // hack for eventPositioned - }; - // Given the events within an array of segment objects, reslice them to be in a single day - DayGrid.prototype.resliceDaySegs = function (segs, dayDate) { - var dayStart = dayDate; - var dayEnd = core.addDays(dayStart, 1); - var dayRange = { start: dayStart, end: dayEnd }; - var newSegs = []; - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - var eventRange = seg.eventRange; - var origRange = eventRange.range; - var slicedRange = core.intersectRanges(origRange, dayRange); - if (slicedRange) { - newSegs.push(__assign({}, seg, { eventRange: { - def: eventRange.def, - ui: __assign({}, eventRange.ui, { durationEditable: false }), - instance: eventRange.instance, - range: slicedRange - }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() })); - } - } - return newSegs; - }; - // Generates the text that should be inside a "more" link, given the number of events it represents - DayGrid.prototype.getMoreLinkText = function (num) { - var opt = this.opt('eventLimitText'); - if (typeof opt === 'function') { - return opt(num); - } - else { - return '+' + num + ' ' + opt; - } - }; - // Returns segments within a given cell. - // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. - DayGrid.prototype.getCellSegs = function (row, col, startLevel) { - var segMatrix = this.eventRenderer.rowStructs[row].segMatrix; - var level = startLevel || 0; - var segs = []; - var seg; - while (level < segMatrix.length) { - seg = segMatrix[level][col]; - if (seg) { - segs.push(seg); - } - level++; - } - return segs; - }; - return DayGrid; - }(core.DateComponent)); - - var WEEK_NUM_FORMAT$1 = core.createFormatter({ week: 'numeric' }); - /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. - ----------------------------------------------------------------------------------------------------------------------*/ - // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. - // It is responsible for managing width/height. - var DayGridView = /** @class */ (function (_super) { - __extends(DayGridView, _super); - function DayGridView(context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this; - /* Header Rendering - ------------------------------------------------------------------------------------------------------------------*/ - // Generates the HTML that will go before the day-of week header cells - _this.renderHeadIntroHtml = function () { - var theme = _this.theme; - if (_this.colWeekNumbersVisible) { - return '' + - '' + - '' + // needed for matchCellWidths - core.htmlEscape(_this.opt('weekLabel')) + - '' + - ''; - } - return ''; - }; - /* Day Grid Rendering - ------------------------------------------------------------------------------------------------------------------*/ - // Generates the HTML that will go before content-skeleton cells that display the day/week numbers - _this.renderDayGridNumberIntroHtml = function (row, dayGrid) { - var dateEnv = _this.dateEnv; - var weekStart = dayGrid.props.cells[row][0].date; - if (_this.colWeekNumbersVisible) { - return '' + - '' + - core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths - _this, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML - ) + - ''; - } - return ''; - }; - // Generates the HTML that goes before the day bg cells for each day-row - _this.renderDayGridBgIntroHtml = function () { - var theme = _this.theme; - if (_this.colWeekNumbersVisible) { - return ''; - } - return ''; - }; - // Generates the HTML that goes before every other type of row generated by DayGrid. - // Affects mirror-skeleton and highlight-skeleton rows. - _this.renderDayGridIntroHtml = function () { - if (_this.colWeekNumbersVisible) { - return ''; - } - return ''; - }; - _this.el.classList.add('fc-dayGrid-view'); - _this.el.innerHTML = _this.renderSkeletonHtml(); - _this.scroller = new core.ScrollComponent('hidden', // overflow x - 'auto' // overflow y - ); - var dayGridContainerEl = _this.scroller.el; - _this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl); - dayGridContainerEl.classList.add('fc-day-grid-container'); - var dayGridEl = core.createElement('div', { className: 'fc-day-grid' }); - dayGridContainerEl.appendChild(dayGridEl); - var cellWeekNumbersVisible; - if (_this.opt('weekNumbers')) { - if (_this.opt('weekNumbersWithinDays')) { - cellWeekNumbersVisible = true; - _this.colWeekNumbersVisible = false; - } - else { - cellWeekNumbersVisible = false; - _this.colWeekNumbersVisible = true; - } - } - else { - _this.colWeekNumbersVisible = false; - cellWeekNumbersVisible = false; - } - _this.dayGrid = new DayGrid(_this.context, dayGridEl, { - renderNumberIntroHtml: _this.renderDayGridNumberIntroHtml, - renderBgIntroHtml: _this.renderDayGridBgIntroHtml, - renderIntroHtml: _this.renderDayGridIntroHtml, - colWeekNumbersVisible: _this.colWeekNumbersVisible, - cellWeekNumbersVisible: cellWeekNumbersVisible - }); - return _this; - } - DayGridView.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.dayGrid.destroy(); - this.scroller.destroy(); - }; - // Builds the HTML skeleton for the view. - // The day-grid component will render inside of a container defined by this HTML. - DayGridView.prototype.renderSkeletonHtml = function () { - var theme = this.theme; - return '' + - '' + - (this.opt('columnHeader') ? - '' + - '' + - '' + - '' + - '' : - '') + - '' + - '' + - '' + - '' + - '' + - '
       
      '; - }; - // Generates an HTML attribute string for setting the width of the week number column, if it is known - DayGridView.prototype.weekNumberStyleAttr = function () { - if (this.weekNumberWidth != null) { - return 'style="width:' + this.weekNumberWidth + 'px"'; - } - return ''; - }; - // Determines whether each row should have a constant height - DayGridView.prototype.hasRigidRows = function () { - var eventLimit = this.opt('eventLimit'); - return eventLimit && typeof eventLimit !== 'number'; - }; - /* Dimensions - ------------------------------------------------------------------------------------------------------------------*/ - DayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) { - _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first - this.dayGrid.updateSize(isResize); - }; - // Refreshes the horizontal dimensions of the view - DayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) { - var dayGrid = this.dayGrid; - var eventLimit = this.opt('eventLimit'); - var headRowEl = this.header ? this.header.el : null; // HACK - var scrollerHeight; - var scrollbarWidths; - // hack to give the view some height prior to dayGrid's columns being rendered - // TODO: separate setting height from scroller VS dayGrid. - if (!dayGrid.rowEls) { - if (!isAuto) { - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.scroller.setHeight(scrollerHeight); - } - return; - } - if (this.colWeekNumbersVisible) { - // Make sure all week number cells running down the side have the same width. - this.weekNumberWidth = core.matchCellWidths(core.findElements(this.el, '.fc-week-number')); - } - // reset all heights to be natural - this.scroller.clear(); - if (headRowEl) { - core.uncompensateScroll(headRowEl); - } - dayGrid.removeSegPopover(); // kill the "more" popover if displayed - // is the event limit a constant level number? - if (eventLimit && typeof eventLimit === 'number') { - dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after - } - // distribute the height to the rows - // (viewHeight is a "recommended" value if isAuto) - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.setGridHeight(scrollerHeight, isAuto); - // is the event limit dynamically calculated? - if (eventLimit && typeof eventLimit !== 'number') { - dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set - } - if (!isAuto) { // should we force dimensions of the scroll container? - this.scroller.setHeight(scrollerHeight); - scrollbarWidths = this.scroller.getScrollbarWidths(); - if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? - if (headRowEl) { - core.compensateScroll(headRowEl, scrollbarWidths); - } - // doing the scrollbar compensation might have created text overflow which created more height. redo - scrollerHeight = this.computeScrollerHeight(viewHeight); - this.scroller.setHeight(scrollerHeight); - } - // guarantees the same scrollbar widths - this.scroller.lockOverflow(scrollbarWidths); - } - }; - // given a desired total height of the view, returns what the height of the scroller should be - DayGridView.prototype.computeScrollerHeight = function (viewHeight) { - return viewHeight - - core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller - }; - // Sets the height of just the DayGrid component in this view - DayGridView.prototype.setGridHeight = function (height, isAuto) { - if (this.opt('monthMode')) { - // if auto, make the height of each row the height that it would be if there were 6 weeks - if (isAuto) { - height *= this.dayGrid.rowCnt / 6; - } - core.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows - } - else { - if (isAuto) { - core.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding - } - else { - core.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows - } - } - }; - /* Scroll - ------------------------------------------------------------------------------------------------------------------*/ - DayGridView.prototype.computeDateScroll = function (duration) { - return { top: 0 }; - }; - DayGridView.prototype.queryDateScroll = function () { - return { top: this.scroller.getScrollTop() }; - }; - DayGridView.prototype.applyDateScroll = function (scroll) { - if (scroll.top !== undefined) { - this.scroller.setScrollTop(scroll.top); - } - }; - return DayGridView; - }(core.View)); - DayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator; - - var SimpleDayGrid = /** @class */ (function (_super) { - __extends(SimpleDayGrid, _super); - function SimpleDayGrid(context, dayGrid) { - var _this = _super.call(this, context, dayGrid.el) || this; - _this.slicer = new DayGridSlicer(); - _this.dayGrid = dayGrid; - context.calendar.registerInteractiveComponent(_this, { el: _this.dayGrid.el }); - return _this; - } - SimpleDayGrid.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.calendar.unregisterInteractiveComponent(this); - }; - SimpleDayGrid.prototype.render = function (props) { - var dayGrid = this.dayGrid; - var dateProfile = props.dateProfile, dayTable = props.dayTable; - dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid })); - }; - SimpleDayGrid.prototype.buildPositionCaches = function () { - this.dayGrid.buildPositionCaches(); - }; - SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) { - var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop); - if (rawHit) { - return { - component: this.dayGrid, - dateSpan: rawHit.dateSpan, - dayEl: rawHit.dayEl, - rect: { - left: rawHit.relativeRect.left, - right: rawHit.relativeRect.right, - top: rawHit.relativeRect.top, - bottom: rawHit.relativeRect.bottom - }, - layer: 0 - }; - } - }; - return SimpleDayGrid; - }(core.DateComponent)); - var DayGridSlicer = /** @class */ (function (_super) { - __extends(DayGridSlicer, _super); - function DayGridSlicer() { - return _super !== null && _super.apply(this, arguments) || this; - } - DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) { - return dayTable.sliceRange(dateRange); - }; - return DayGridSlicer; - }(core.Slicer)); - - var DayGridView$1 = /** @class */ (function (_super) { - __extends(DayGridView, _super); - function DayGridView(_context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this; - _this.buildDayTable = core.memoize(buildDayTable); - if (_this.opt('columnHeader')) { - _this.header = new core.DayHeader(_this.context, _this.el.querySelector('.fc-head-container')); - } - _this.simpleDayGrid = new SimpleDayGrid(_this.context, _this.dayGrid); - return _this; - } - DayGridView.prototype.destroy = function () { - _super.prototype.destroy.call(this); - if (this.header) { - this.header.destroy(); - } - this.simpleDayGrid.destroy(); - }; - DayGridView.prototype.render = function (props) { - _super.prototype.render.call(this, props); - var dateProfile = this.props.dateProfile; - var dayTable = this.dayTable = - this.buildDayTable(dateProfile, this.dateProfileGenerator); - if (this.header) { - this.header.receiveProps({ - dateProfile: dateProfile, - dates: dayTable.headerDates, - datesRepDistinctDays: dayTable.rowCnt === 1, - renderIntroHtml: this.renderHeadIntroHtml - }); - } - this.simpleDayGrid.receiveProps({ - dateProfile: dateProfile, - dayTable: dayTable, - businessHours: props.businessHours, - dateSelection: props.dateSelection, - eventStore: props.eventStore, - eventUiBases: props.eventUiBases, - eventSelection: props.eventSelection, - eventDrag: props.eventDrag, - eventResize: props.eventResize, - isRigid: this.hasRigidRows(), - nextDayThreshold: this.nextDayThreshold - }); - }; - return DayGridView; - }(DayGridView)); - function buildDayTable(dateProfile, dateProfileGenerator) { - var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator); - return new core.DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); - } - - var main = core.createPlugin({ - defaultView: 'dayGridMonth', - views: { - dayGrid: DayGridView$1, - dayGridDay: { - type: 'dayGrid', - duration: { days: 1 } - }, - dayGridWeek: { - type: 'dayGrid', - duration: { weeks: 1 } - }, - dayGridMonth: { - type: 'dayGrid', - duration: { months: 1 }, - monthMode: true, - fixedWeekCount: true - } - } - }); - - exports.AbstractDayGridView = DayGridView; - exports.DayBgRow = DayBgRow; - exports.DayGrid = DayGrid; - exports.DayGridSlicer = DayGridSlicer; - exports.DayGridView = DayGridView$1; - exports.SimpleDayGrid = SimpleDayGrid; - exports.buildBasicDayTable = buildDayTable; - exports.default = main; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.css deleted file mode 100644 index 55a5724..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.css +++ /dev/null @@ -1 +0,0 @@ -.fc-dayGridDay-view .fc-content-skeleton,.fc-dayGridWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-dayGrid-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-dayGrid-view .fc-day-number,.fc-dayGrid-view .fc-week-number{padding:2px}.fc-dayGrid-view th.fc-day-number,.fc-dayGrid-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-dayGrid-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-dayGrid-view td.fc-week-number{text-align:center}.fc-dayGrid-view td.fc-week-number>*{display:inline-block;min-width:1.25em} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.js deleted file mode 100644 index 2f4c0d4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-daygrid/main.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -FullCalendar Day Grid Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarDayGrid={},e.FullCalendar)}(this,function(e,t){"use strict";var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function n(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r'+t.htmlEscape(n)+""),i=''+(t.htmlEscape(d.title||"")||" ")+"",'
      '+("rtl"===l.dir?i+" "+y:y+" "+i)+"
      "+(u?'
      ':"")+(f?'
      ':"")+"
      "},r.prototype.computeEventTimeFormat=function(){return{hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"}},r.prototype.computeDisplayEventEnd=function(){return!1},r}(t.FgEventRenderer),a=function(e){function r(t){var r=e.call(this,t.context)||this;return r.dayGrid=t,r}return n(r,e),r.prototype.attachSegs=function(e,t){var r=this.rowStructs=this.renderSegRows(e);this.dayGrid.rowEls.forEach(function(e,t){e.querySelector(".fc-content-skeleton > table").appendChild(r[t].tbodyEl)}),t||this.dayGrid.removeSegPopover()},r.prototype.detachSegs=function(){for(var e,r=this.rowStructs||[];e=r.pop();)t.removeElement(e.tbodyEl);this.rowStructs=null},r.prototype.renderSegRows=function(e){var t,r,n=[];for(t=this.groupSegRows(e),r=0;r=e.firstCol)return!0;return!1}function c(e,t){return e.leftCol-t.leftCol}var h=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return n(r,e),r.prototype.attachSegs=function(e,r){var n=r.sourceSeg,i=this.rowStructs=this.renderSegRows(e);this.dayGrid.rowEls.forEach(function(e,r){var o,s,l=t.htmlToElement('
      ');n&&n.row===r?o=n.el:(o=e.querySelector(".fc-content-skeleton tbody"))||(o=e.querySelector(".fc-content-skeleton table")),s=o.getBoundingClientRect().top-e.getBoundingClientRect().top,l.style.top=s+"px",l.querySelector("table").appendChild(i[r].tbodyEl),e.appendChild(l)})},r}(a),p=function(e){function r(t){var r=e.call(this,t.context)||this;return r.fillSegTag="td",r.dayGrid=t,r}return n(r,e),r.prototype.renderSegs=function(t,r){"bgEvent"===t&&(r=r.filter(function(e){return e.eventRange.def.allDay})),e.prototype.renderSegs.call(this,t,r)},r.prototype.attachSegs=function(e,t){var r,n,i,o=[];for(r=0;r
      ')).getElementsByTagName("tr")[0],d>0&&t.appendToElement(o,new Array(d+1).join('')),r.el.colSpan=c-d,o.appendChild(r.el),c'));var h=s.renderProps.renderIntroHtml();return h&&(s.isRtl?t.appendToElement(o,h):t.prependToElement(o,h)),i},r}(t.FillRenderer),u=function(e){function r(r,n){var i=e.call(this,r,n)||this,o=i.eventRenderer=new f(i),s=i.renderFrame=t.memoizeRendering(i._renderFrame);return i.renderFgEvents=t.memoizeRendering(o.renderSegs.bind(o),o.unrender.bind(o),[s]),i.renderEventSelection=t.memoizeRendering(o.selectByInstanceId.bind(o),o.unselectByInstanceId.bind(o),[i.renderFgEvents]),i.renderEventDrag=t.memoizeRendering(o.hideByHash.bind(o),o.showByHash.bind(o),[s]),i.renderEventResize=t.memoizeRendering(o.hideByHash.bind(o),o.showByHash.bind(o),[s]),r.calendar.registerInteractiveComponent(i,{el:i.el,useEventCenter:!1}),i}return n(r,e),r.prototype.render=function(e){this.renderFrame(e.date),this.renderFgEvents(e.fgSegs),this.renderEventSelection(e.eventSelection),this.renderEventDrag(e.eventDragInstances),this.renderEventResize(e.eventResizeInstances)},r.prototype.destroy=function(){e.prototype.destroy.call(this),this.renderFrame.unrender(),this.calendar.unregisterInteractiveComponent(this)},r.prototype._renderFrame=function(e){var r=this.theme,n=this.dateEnv.format(e,t.createFormatter(this.opt("dayPopoverFormat")));this.el.innerHTML='
      '+t.htmlEscape(n)+'
      ',this.segContainerEl=this.el.querySelector(".fc-event-container")},r.prototype.queryHit=function(e,r,n,i){var o=this.props.date;if(e'),"rtl"===this.context.options.dir&&t.reverse(),""+t.join("")+""},e}();function m(e,r,n,i){var o=n.dateEnv,s=n.theme,l=t.rangeContainsMarker(r.activeRange,e),a=t.getDayClasses(e,r,n);return a.unshift("fc-day",s.getClass("widgetContent")),'"}var y=t.createFormatter({day:"numeric"}),v=t.createFormatter({week:"numeric"}),b=function(e){function r(r,n,i){var o=e.call(this,r,n)||this;o.bottomCoordPadding=0,o.isCellSizesDirty=!1;var s=o.eventRenderer=new a(o),l=o.fillRenderer=new p(o);o.mirrorRenderer=new h(o);var d=o.renderCells=t.memoizeRendering(o._renderCells,o._unrenderCells);return o.renderBusinessHours=t.memoizeRendering(l.renderSegs.bind(l,"businessHours"),l.unrender.bind(l,"businessHours"),[d]),o.renderDateSelection=t.memoizeRendering(l.renderSegs.bind(l,"highlight"),l.unrender.bind(l,"highlight"),[d]),o.renderBgEvents=t.memoizeRendering(l.renderSegs.bind(l,"bgEvent"),l.unrender.bind(l,"bgEvent"),[d]),o.renderFgEvents=t.memoizeRendering(s.renderSegs.bind(s),s.unrender.bind(s),[d]),o.renderEventSelection=t.memoizeRendering(s.selectByInstanceId.bind(s),s.unselectByInstanceId.bind(s),[o.renderFgEvents]),o.renderEventDrag=t.memoizeRendering(o._renderEventDrag,o._unrenderEventDrag,[d]),o.renderEventResize=t.memoizeRendering(o._renderEventResize,o._unrenderEventResize,[d]),o.renderProps=i,o}return n(r,e),r.prototype.render=function(e){var t=e.cells;this.rowCnt=t.length,this.colCnt=t[0].length,this.renderCells(t,e.isRigid),this.renderBusinessHours(e.businessHourSegs),this.renderDateSelection(e.dateSelectionSegs),this.renderBgEvents(e.bgEventSegs),this.renderFgEvents(e.fgEventSegs),this.renderEventSelection(e.eventSelection),this.renderEventDrag(e.eventDrag),this.renderEventResize(e.eventResize),this.segPopoverTile&&this.updateSegPopoverTile()},r.prototype.destroy=function(){e.prototype.destroy.call(this),this.renderCells.unrender()},r.prototype.getCellRange=function(e,r){var n=this.props.cells[e][r].date;return{start:n,end:t.addDays(n,1)}},r.prototype.updateSegPopoverTile=function(e,t){var r=this.props;this.segPopoverTile.receiveProps({date:e||this.segPopoverTile.props.date,fgSegs:t||this.segPopoverTile.props.fgSegs,eventSelection:r.eventSelection,eventDragInstances:r.eventDrag?r.eventDrag.affectedInstances:null,eventResizeInstances:r.eventResize?r.eventResize.affectedInstances:null})},r.prototype._renderCells=function(e,r){var n,i,o=this.view,s=this.dateEnv,l=this.rowCnt,a=this.colCnt,d="";for(n=0;n
      '+i.renderHtml({cells:this.props.cells[e],dateProfile:this.props.dateProfile,renderIntroHtml:this.renderProps.renderBgIntroHtml})+'
      '+(this.getIsNumbersVisible()?""+this.renderNumberTrHtml(e)+"":"")+"
      "},r.prototype.getIsNumbersVisible=function(){return this.getIsDayNumbersVisible()||this.renderProps.cellWeekNumbersVisible||this.renderProps.colWeekNumbersVisible},r.prototype.getIsDayNumbersVisible=function(){return this.rowCnt>1},r.prototype.renderNumberTrHtml=function(e){var t=this.renderProps.renderNumberIntroHtml(e,this);return""+(this.isRtl?"":t)+this.renderNumberCellsHtml(e)+(this.isRtl?t:"")+""},r.prototype.renderNumberCellsHtml=function(e){var t,r,n=[];for(t=0;t",this.renderProps.cellWeekNumbersVisible&&e.getUTCDay()===n&&(s+=t.buildGotoAnchorHtml(i,{date:e,type:"week"},{class:"fc-week-number"},o.format(e,v))),a&&(s+=t.buildGotoAnchorHtml(i,e,{class:"fc-day-number"},o.format(e,y))),s+=""):""},r.prototype.updateSize=function(e){var t=this.fillRenderer,r=this.eventRenderer,n=this.mirrorRenderer;(e||this.isCellSizesDirty||this.view.calendar.isEventsUpdated)&&(this.buildPositionCaches(),this.isCellSizesDirty=!1),t.computeSizes(e),r.computeSizes(e),n.computeSizes(e),t.assignSizes(e),r.assignSizes(e),n.assignSizes(e)},r.prototype.buildPositionCaches=function(){this.buildColPositions(),this.buildRowPositions()},r.prototype.buildColPositions=function(){this.colPositions.build()},r.prototype.buildRowPositions=function(){this.rowPositions.build(),this.rowPositions.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},r.prototype.positionToHit=function(e,t){var r=this.colPositions,n=this.rowPositions,i=r.leftToIndex(e),o=n.topToIndex(t);if(null!=o&&null!=i)return{row:o,col:i,dateSpan:{range:this.getCellRange(o,i),allDay:!0},dayEl:this.getCellEl(o,i),relativeRect:{left:r.lefts[i],right:r.rights[i],top:n.tops[o],bottom:n.bottoms[o]}}},r.prototype.getCellEl=function(e,t){return this.cellEls[e*this.colCnt+t]},r.prototype._renderEventDrag=function(e){e&&(this.eventRenderer.hideByHash(e.affectedInstances),this.fillRenderer.renderSegs("highlight",e.segs))},r.prototype._unrenderEventDrag=function(e){e&&(this.eventRenderer.showByHash(e.affectedInstances),this.fillRenderer.unrender("highlight"))},r.prototype._renderEventResize=function(e){e&&(this.eventRenderer.hideByHash(e.affectedInstances),this.fillRenderer.renderSegs("highlight",e.segs),this.mirrorRenderer.renderSegs(e.segs,{isResizing:!0,sourceSeg:e.sourceSeg}))},r.prototype._unrenderEventResize=function(e){e&&(this.eventRenderer.showByHash(e.affectedInstances),this.fillRenderer.unrender("highlight"),this.mirrorRenderer.unrender(e.segs,{isResizing:!0,sourceSeg:e.sourceSeg}))},r.prototype.removeSegPopover=function(){this.segPopover&&this.segPopover.hide()},r.prototype.limitRows=function(e){var t,r,n=this.eventRenderer.rowStructs||[];for(t=0;ti)return r;return!1},r.prototype.limitRow=function(e,r){var n,i,o,s,l,a,d,c,h,p,u,f,g,m,y,v=this,b=this.colCnt,w=this.isRtl,S=this.eventRenderer.rowStructs[e],C=[],E=0,R=function(n){for(;E"+t.htmlEscape(s.opt("weekLabel"))+"":""},s.renderDayGridNumberIntroHtml=function(e,r){var n=s.dateEnv,i=r.props.cells[e][0].date;return s.colWeekNumbersVisible?'"+t.buildGotoAnchorHtml(s,{date:i,type:"week",forceOff:1===r.colCnt},n.format(i,w))+"":""},s.renderDayGridBgIntroHtml=function(){var e=s.theme;return s.colWeekNumbersVisible?'":""},s.renderDayGridIntroHtml=function(){return s.colWeekNumbersVisible?'":""},s.el.classList.add("fc-dayGrid-view"),s.el.innerHTML=s.renderSkeletonHtml(),s.scroller=new t.ScrollComponent("hidden","auto");var l=s.scroller.el;s.el.querySelector(".fc-body > tr > td").appendChild(l),l.classList.add("fc-day-grid-container");var a,d=t.createElement("div",{className:"fc-day-grid"});return l.appendChild(d),s.opt("weekNumbers")?s.opt("weekNumbersWithinDays")?(a=!0,s.colWeekNumbersVisible=!1):(a=!1,s.colWeekNumbersVisible=!0):(s.colWeekNumbersVisible=!1,a=!1),s.dayGrid=new b(s.context,d,{renderNumberIntroHtml:s.renderDayGridNumberIntroHtml,renderBgIntroHtml:s.renderDayGridBgIntroHtml,renderIntroHtml:s.renderDayGridIntroHtml,colWeekNumbersVisible:s.colWeekNumbersVisible,cellWeekNumbersVisible:a}),s}return n(r,e),r.prototype.destroy=function(){e.prototype.destroy.call(this),this.dayGrid.destroy(),this.scroller.destroy()},r.prototype.renderSkeletonHtml=function(){var e=this.theme;return''+(this.opt("columnHeader")?'':"")+'
       
      '},r.prototype.weekNumberStyleAttr=function(){return null!=this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},r.prototype.hasRigidRows=function(){var e=this.opt("eventLimit");return e&&"number"!=typeof e},r.prototype.updateSize=function(t,r,n){e.prototype.updateSize.call(this,t,r,n),this.dayGrid.updateSize(t)},r.prototype.updateBaseSize=function(e,r,n){var i,o,s=this.dayGrid,l=this.opt("eventLimit"),a=this.header?this.header.el:null;s.rowEls?(this.colWeekNumbersVisible&&(this.weekNumberWidth=t.matchCellWidths(t.findElements(this.el,".fc-week-number"))),this.scroller.clear(),a&&t.uncompensateScroll(a),s.removeSegPopover(),l&&"number"==typeof l&&s.limitRows(l),i=this.computeScrollerHeight(r),this.setGridHeight(i,n),l&&"number"!=typeof l&&s.limitRows(l),n||(this.scroller.setHeight(i),((o=this.scroller.getScrollbarWidths()).left||o.right)&&(a&&t.compensateScroll(a,o),i=this.computeScrollerHeight(r),this.scroller.setHeight(i)),this.scroller.lockOverflow(o))):n||(i=this.computeScrollerHeight(r),this.scroller.setHeight(i))},r.prototype.computeScrollerHeight=function(e){return e-t.subtractInnerElHeight(this.el,this.scroller.el)},r.prototype.setGridHeight=function(e,r){this.opt("monthMode")?(r&&(e*=this.dayGrid.rowCnt/6),t.distributeHeight(this.dayGrid.rowEls,e,!r)):r?t.undistributeHeight(this.dayGrid.rowEls):t.distributeHeight(this.dayGrid.rowEls,e,!0)},r.prototype.computeDateScroll=function(e){return{top:0}},r.prototype.queryDateScroll=function(){return{top:this.scroller.getScrollTop()}},r.prototype.applyDateScroll=function(e){void 0!==e.top&&this.scroller.setScrollTop(e.top)},r}(t.View);S.prototype.dateProfileGeneratorClass=o;var C=function(e){function t(t,r){var n=e.call(this,t,r.el)||this;return n.slicer=new E,n.dayGrid=r,t.calendar.registerInteractiveComponent(n,{el:n.dayGrid.el}),n}return n(t,e),t.prototype.destroy=function(){e.prototype.destroy.call(this),this.calendar.unregisterInteractiveComponent(this)},t.prototype.render=function(e){var t=this.dayGrid,r=e.dateProfile,n=e.dayTable;t.receiveProps(i({},this.slicer.sliceProps(e,r,e.nextDayThreshold,t,n),{dateProfile:r,cells:n.cells,isRigid:e.isRigid}))},t.prototype.buildPositionCaches=function(){this.dayGrid.buildPositionCaches()},t.prototype.queryHit=function(e,t){var r=this.dayGrid.positionToHit(e,t);if(r)return{component:this.dayGrid,dateSpan:r.dateSpan,dayEl:r.dayEl,rect:{left:r.relativeRect.left,right:r.relativeRect.right,top:r.relativeRect.top,bottom:r.relativeRect.bottom},layer:0}},t}(t.DateComponent),E=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(t.Slicer),R=function(e){function r(r,n,i,o){var s=e.call(this,r,n,i,o)||this;return s.buildDayTable=t.memoize(H),s.opt("columnHeader")&&(s.header=new t.DayHeader(s.context,s.el.querySelector(".fc-head-container"))),s.simpleDayGrid=new C(s.context,s.dayGrid),s}return n(r,e),r.prototype.destroy=function(){e.prototype.destroy.call(this),this.header&&this.header.destroy(),this.simpleDayGrid.destroy()},r.prototype.render=function(t){e.prototype.render.call(this,t);var r=this.props.dateProfile,n=this.dayTable=this.buildDayTable(r,this.dateProfileGenerator);this.header&&this.header.receiveProps({dateProfile:r,dates:n.headerDates,datesRepDistinctDays:1===n.rowCnt,renderIntroHtml:this.renderHeadIntroHtml}),this.simpleDayGrid.receiveProps({dateProfile:r,dayTable:n,businessHours:t.businessHours,dateSelection:t.dateSelection,eventStore:t.eventStore,eventUiBases:t.eventUiBases,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,isRigid:this.hasRigidRows(),nextDayThreshold:this.nextDayThreshold})},r}(S);function H(e,r){var n=new t.DaySeries(e.renderRange,r);return new t.DayTable(n,/year|month|week/.test(e.currentRangeUnit))}var D=t.createPlugin({defaultView:"dayGridMonth",views:{dayGrid:R,dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}});e.AbstractDayGridView=S,e.DayBgRow=g,e.DayGrid=b,e.DayGridSlicer=E,e.DayGridView=R,e.SimpleDayGrid=C,e.buildBasicDayTable=H,e.default=D,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/LICENSE.txt b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/LICENSE.txt deleted file mode 100644 index 2149cfb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2019 Adam Shaw - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.d.ts deleted file mode 100644 index b7398ba..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.d.ts +++ /dev/null @@ -1,323 +0,0 @@ -// Generated by dts-bundle v0.7.3-fork.1 -// Dependencies for this module: -// ../../../../../@fullcalendar/core - -declare module '@fullcalendar/interaction' { - import FeaturefulElementDragging from '@fullcalendar/interaction/dnd/FeaturefulElementDragging'; - const _default: import("@fullcalendar/core").PluginDef; - export default _default; - export { FeaturefulElementDragging }; - export { default as PointerDragging } from '@fullcalendar/interaction/dnd/PointerDragging'; - export { default as Draggable } from '@fullcalendar/interaction/interactions-external/ExternalDraggable'; - export { default as ThirdPartyDraggable } from '@fullcalendar/interaction/interactions-external/ThirdPartyDraggable'; -} - -declare module '@fullcalendar/interaction/dnd/FeaturefulElementDragging' { - import { PointerDragEvent, ElementDragging } from '@fullcalendar/core'; - import PointerDragging from '@fullcalendar/interaction/dnd/PointerDragging'; - import ElementMirror from '@fullcalendar/interaction/dnd/ElementMirror'; - import AutoScroller from '@fullcalendar/interaction/dnd/AutoScroller'; - export { FeaturefulElementDragging as default, FeaturefulElementDragging }; - class FeaturefulElementDragging extends ElementDragging { - pointer: PointerDragging; - mirror: ElementMirror; - autoScroller: AutoScroller; - delay: number | null; - minDistance: number; - touchScrollAllowed: boolean; - mirrorNeedsRevert: boolean; - isInteracting: boolean; - isDragging: boolean; - isDelayEnded: boolean; - isDistanceSurpassed: boolean; - delayTimeoutId: number | null; - constructor(containerEl: HTMLElement); - destroy(): void; - onPointerDown: (ev: PointerDragEvent) => void; - onPointerMove: (ev: PointerDragEvent) => void; - onPointerUp: (ev: PointerDragEvent) => void; - startDelay(ev: PointerDragEvent): void; - handleDelayEnd(ev: PointerDragEvent): void; - handleDistanceSurpassed(ev: PointerDragEvent): void; - tryStartDrag(ev: PointerDragEvent): void; - tryStopDrag(ev: PointerDragEvent): void; - stopDrag(ev: PointerDragEvent): void; - setIgnoreMove(bool: boolean): void; - setMirrorIsVisible(bool: boolean): void; - setMirrorNeedsRevert(bool: boolean): void; - setAutoScrollEnabled(bool: boolean): void; - } -} - -declare module '@fullcalendar/interaction/dnd/PointerDragging' { - import { EmitterMixin, PointerDragEvent } from '@fullcalendar/core'; - export { PointerDragging as default, PointerDragging }; - class PointerDragging { - containerEl: EventTarget; - subjectEl: HTMLElement | null; - downEl: HTMLElement | null; - emitter: EmitterMixin; - selector: string; - handleSelector: string; - shouldIgnoreMove: boolean; - shouldWatchScroll: boolean; - isDragging: boolean; - isTouchDragging: boolean; - wasTouchScroll: boolean; - origPageX: number; - origPageY: number; - prevPageX: number; - prevPageY: number; - prevScrollX: number; - prevScrollY: number; - constructor(containerEl: EventTarget); - destroy(): void; - tryStart(ev: UIEvent): boolean; - cleanup(): void; - querySubjectEl(ev: UIEvent): HTMLElement; - handleMouseDown: (ev: MouseEvent) => void; - handleMouseMove: (ev: MouseEvent) => void; - handleMouseUp: (ev: MouseEvent) => void; - shouldIgnoreMouse(): number | boolean; - handleTouchStart: (ev: TouchEvent) => void; - handleTouchMove: (ev: TouchEvent) => void; - handleTouchEnd: (ev: TouchEvent) => void; - handleTouchScroll: () => void; - cancelTouchScroll(): void; - initScrollWatch(ev: PointerDragEvent): void; - recordCoords(ev: PointerDragEvent): void; - handleScroll: (ev: UIEvent) => void; - destroyScrollWatch(): void; - createEventFromMouse(ev: MouseEvent, isFirst?: boolean): PointerDragEvent; - createEventFromTouch(ev: TouchEvent, isFirst?: boolean): PointerDragEvent; - } -} - -declare module '@fullcalendar/interaction/interactions-external/ExternalDraggable' { - import { PointerDragEvent } from '@fullcalendar/core'; - import FeaturefulElementDragging from '@fullcalendar/interaction/dnd/FeaturefulElementDragging'; - import { DragMetaGenerator } from '@fullcalendar/interaction/interactions-external/ExternalElementDragging'; - export interface ExternalDraggableSettings { - eventData?: DragMetaGenerator; - itemSelector?: string; - minDistance?: number; - longPressDelay?: number; - appendTo?: HTMLElement; - } - export { ExternalDraggable as default, ExternalDraggable }; - class ExternalDraggable { - dragging: FeaturefulElementDragging; - settings: ExternalDraggableSettings; - constructor(el: HTMLElement, settings?: ExternalDraggableSettings); - handlePointerDown: (ev: PointerDragEvent) => void; - handleDragStart: (ev: PointerDragEvent) => void; - destroy(): void; - } -} - -declare module '@fullcalendar/interaction/interactions-external/ThirdPartyDraggable' { - import { DragMetaGenerator } from '@fullcalendar/interaction/interactions-external/ExternalElementDragging'; - import InferredElementDragging from '@fullcalendar/interaction/interactions-external/InferredElementDragging'; - export interface ThirdPartyDraggableSettings { - eventData?: DragMetaGenerator; - itemSelector?: string; - mirrorSelector?: string; - } - export { ThirdPartyDraggable as default, ThirdPartyDraggable }; - class ThirdPartyDraggable { - dragging: InferredElementDragging; - constructor(containerOrSettings?: EventTarget | ThirdPartyDraggableSettings, settings?: ThirdPartyDraggableSettings); - destroy(): void; - } -} - -declare module '@fullcalendar/interaction/dnd/ElementMirror' { - import { Rect } from '@fullcalendar/core'; - export { ElementMirror as default, ElementMirror }; - class ElementMirror { - isVisible: boolean; - origScreenX?: number; - origScreenY?: number; - deltaX?: number; - deltaY?: number; - sourceEl: HTMLElement | null; - mirrorEl: HTMLElement | null; - sourceElRect: Rect | null; - parentNode: HTMLElement; - zIndex: number; - revertDuration: number; - start(sourceEl: HTMLElement, pageX: number, pageY: number): void; - handleMove(pageX: number, pageY: number): void; - setIsVisible(bool: boolean): void; - stop(needsRevertAnimation: boolean, callback: () => void): void; - doRevertAnimation(callback: () => void, revertDuration: number): void; - cleanup(): void; - updateElPosition(): void; - getMirrorEl(): HTMLElement; - } -} - -declare module '@fullcalendar/interaction/dnd/AutoScroller' { - import { ScrollGeomCache } from '@fullcalendar/interaction/scroll-geom-cache'; - export { AutoScroller as default, AutoScroller }; - class AutoScroller { - isEnabled: boolean; - scrollQuery: (Window | string)[]; - edgeThreshold: number; - maxVelocity: number; - pointerScreenX: number | null; - pointerScreenY: number | null; - isAnimating: boolean; - scrollCaches: ScrollGeomCache[] | null; - msSinceRequest?: number; - everMovedUp: boolean; - everMovedDown: boolean; - everMovedLeft: boolean; - everMovedRight: boolean; - start(pageX: number, pageY: number): void; - handleMove(pageX: number, pageY: number): void; - stop(): void; - requestAnimation(now: number): void; - } -} - -declare module '@fullcalendar/interaction/interactions-external/ExternalElementDragging' { - import { Hit, PointerDragEvent, EventTuple, DatePointApi, Calendar, EventInteractionState, DragMetaInput, DragMeta, View, ElementDragging } from '@fullcalendar/core'; - import HitDragging from '@fullcalendar/interaction/interactions/HitDragging'; - export type DragMetaGenerator = DragMetaInput | ((el: HTMLElement) => DragMetaInput); - export interface ExternalDropApi extends DatePointApi { - draggedEl: HTMLElement; - jsEvent: UIEvent; - view: View; - } - export { ExternalElementDragging as default, ExternalElementDragging }; - class ExternalElementDragging { - hitDragging: HitDragging; - receivingCalendar: Calendar | null; - droppableEvent: EventTuple | null; - suppliedDragMeta: DragMetaGenerator | null; - dragMeta: DragMeta | null; - constructor(dragging: ElementDragging, suppliedDragMeta?: DragMetaGenerator); - handleDragStart: (ev: PointerDragEvent) => void; - buildDragMeta(subjectEl: HTMLElement): DragMeta; - handleHitUpdate: (hit: Hit, isFinal: boolean, ev: PointerDragEvent) => void; - handleDragEnd: (pev: PointerDragEvent) => void; - displayDrag(nextCalendar: Calendar | null, state: EventInteractionState): void; - clearDrag(): void; - canDropElOnCalendar(el: HTMLElement, receivingCalendar: Calendar): boolean; - } -} - -declare module '@fullcalendar/interaction/interactions-external/InferredElementDragging' { - import { PointerDragEvent, ElementDragging } from '@fullcalendar/core'; - import PointerDragging from '@fullcalendar/interaction/dnd/PointerDragging'; - export { InferredElementDragging as default, InferredElementDragging }; - class InferredElementDragging extends ElementDragging { - pointer: PointerDragging; - shouldIgnoreMove: boolean; - mirrorSelector: string; - currentMirrorEl: HTMLElement | null; - constructor(containerEl: HTMLElement); - destroy(): void; - handlePointerDown: (ev: PointerDragEvent) => void; - handlePointerMove: (ev: PointerDragEvent) => void; - handlePointerUp: (ev: PointerDragEvent) => void; - setIgnoreMove(bool: boolean): void; - setMirrorIsVisible(bool: boolean): void; - } -} - -declare module '@fullcalendar/interaction/scroll-geom-cache' { - import { Rect, ScrollController } from '@fullcalendar/core'; - export abstract class ScrollGeomCache extends ScrollController { - clientRect: Rect; - origScrollTop: number; - origScrollLeft: number; - protected scrollController: ScrollController; - protected doesListening: boolean; - protected scrollTop: number; - protected scrollLeft: number; - protected scrollWidth: number; - protected scrollHeight: number; - protected clientWidth: number; - protected clientHeight: number; - constructor(scrollController: ScrollController, doesListening: boolean); - abstract getEventTarget(): EventTarget; - abstract computeClientRect(): Rect; - destroy(): void; - handleScroll: () => void; - getScrollTop(): number; - getScrollLeft(): number; - setScrollTop(top: number): void; - setScrollLeft(top: number): void; - getClientWidth(): number; - getClientHeight(): number; - getScrollWidth(): number; - getScrollHeight(): number; - handleScrollChange(): void; - } - export class ElementScrollGeomCache extends ScrollGeomCache { - constructor(el: HTMLElement, doesListening: boolean); - getEventTarget(): EventTarget; - computeClientRect(): { - left: number; - right: number; - top: number; - bottom: number; - }; - } - export class WindowScrollGeomCache extends ScrollGeomCache { - constructor(doesListening: boolean); - getEventTarget(): EventTarget; - computeClientRect(): Rect; - handleScrollChange(): void; - } -} - -declare module '@fullcalendar/interaction/interactions/HitDragging' { - import { EmitterMixin, PointerDragEvent, Point, Hit, InteractionSettingsStore, ElementDragging } from '@fullcalendar/core'; - import OffsetTracker from '@fullcalendar/interaction/OffsetTracker'; - export { HitDragging as default, HitDragging }; - class HitDragging { - droppableStore: InteractionSettingsStore; - dragging: ElementDragging; - emitter: EmitterMixin; - useSubjectCenter: boolean; - requireInitial: boolean; - offsetTrackers: { - [componentUid: string]: OffsetTracker; - }; - initialHit: Hit | null; - movingHit: Hit | null; - finalHit: Hit | null; - coordAdjust?: Point; - constructor(dragging: ElementDragging, droppableStore: InteractionSettingsStore); - handlePointerDown: (ev: PointerDragEvent) => void; - processFirstCoord(ev: PointerDragEvent): void; - handleDragStart: (ev: PointerDragEvent) => void; - handleDragMove: (ev: PointerDragEvent) => void; - handlePointerUp: (ev: PointerDragEvent) => void; - handleDragEnd: (ev: PointerDragEvent) => void; - handleMove(ev: PointerDragEvent, forceHandle?: boolean): void; - prepareHits(): void; - releaseHits(): void; - queryHitForOffset(offsetLeft: number, offsetTop: number): Hit | null; - } - export function isHitsEqual(hit0: Hit | null, hit1: Hit | null): boolean; -} - -declare module '@fullcalendar/interaction/OffsetTracker' { - import { Rect } from '@fullcalendar/core'; - import { ElementScrollGeomCache } from '@fullcalendar/interaction/scroll-geom-cache'; - export { OffsetTracker as default, OffsetTracker }; - class OffsetTracker { - scrollCaches: ElementScrollGeomCache[]; - origRect: Rect; - constructor(el: HTMLElement); - destroy(): void; - computeLeft(): number; - computeTop(): number; - isWithinClipping(pageX: number, pageY: number): boolean; - } -} - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.esm.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.esm.js deleted file mode 100644 index 13f834e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.esm.js +++ /dev/null @@ -1,2132 +0,0 @@ -/*! -FullCalendar Interaction Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -import { config, elementClosest, EmitterMixin, applyStyle, whenTransitionDone, removeElement, ScrollController, ElementScrollController, computeInnerRect, WindowScrollController, preventSelection, preventContextMenu, allowSelection, allowContextMenu, ElementDragging, computeRect, getClippingParents, pointInsideRect, isDateSpansEqual, constrainPoint, intersectRects, getRectCenter, diffPoints, mapHash, rangeContainsRange, interactionSettingsToStore, Interaction, enableCursor, disableCursor, compareNumbers, getElSeg, getRelevantEvents, EventApi, createEmptyEventStore, applyMutationToEventStore, interactionSettingsStore, startOfDay, diffDates, createDuration, eventTupleToStore, isInteractionValid, parseDragMeta, elementMatches, parseEventDef, createEventInstance, globalDefaults, createPlugin } from '@fullcalendar/core'; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -config.touchMouseIgnoreWait = 500; -var ignoreMouseDepth = 0; -var listenerCnt = 0; -var isWindowTouchMoveCancelled = false; -/* -Uses a "pointer" abstraction, which monitors UI events for both mouse and touch. -Tracks when the pointer "drags" on a certain element, meaning down+move+up. - -Also, tracks if there was touch-scrolling. -Also, can prevent touch-scrolling from happening. -Also, can fire pointermove events when scrolling happens underneath, even when no real pointer movement. - -emits: -- pointerdown -- pointermove -- pointerup -*/ -var PointerDragging = /** @class */ (function () { - function PointerDragging(containerEl) { - var _this = this; - this.subjectEl = null; - this.downEl = null; - // options that can be directly assigned by caller - this.selector = ''; // will cause subjectEl in all emitted events to be this element - this.handleSelector = ''; - this.shouldIgnoreMove = false; - this.shouldWatchScroll = true; // for simulating pointermove on scroll - // internal states - this.isDragging = false; - this.isTouchDragging = false; - this.wasTouchScroll = false; - // Mouse - // ---------------------------------------------------------------------------------------------------- - this.handleMouseDown = function (ev) { - if (!_this.shouldIgnoreMouse() && - isPrimaryMouseButton(ev) && - _this.tryStart(ev)) { - var pev = _this.createEventFromMouse(ev, true); - _this.emitter.trigger('pointerdown', pev); - _this.initScrollWatch(pev); - if (!_this.shouldIgnoreMove) { - document.addEventListener('mousemove', _this.handleMouseMove); - } - document.addEventListener('mouseup', _this.handleMouseUp); - } - }; - this.handleMouseMove = function (ev) { - var pev = _this.createEventFromMouse(ev); - _this.recordCoords(pev); - _this.emitter.trigger('pointermove', pev); - }; - this.handleMouseUp = function (ev) { - document.removeEventListener('mousemove', _this.handleMouseMove); - document.removeEventListener('mouseup', _this.handleMouseUp); - _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev)); - _this.cleanup(); // call last so that pointerup has access to props - }; - // Touch - // ---------------------------------------------------------------------------------------------------- - this.handleTouchStart = function (ev) { - if (_this.tryStart(ev)) { - _this.isTouchDragging = true; - var pev = _this.createEventFromTouch(ev, true); - _this.emitter.trigger('pointerdown', pev); - _this.initScrollWatch(pev); - // unlike mouse, need to attach to target, not document - // https://stackoverflow.com/a/45760014 - var target = ev.target; - if (!_this.shouldIgnoreMove) { - target.addEventListener('touchmove', _this.handleTouchMove); - } - target.addEventListener('touchend', _this.handleTouchEnd); - target.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end - // attach a handler to get called when ANY scroll action happens on the page. - // this was impossible to do with normal on/off because 'scroll' doesn't bubble. - // http://stackoverflow.com/a/32954565/96342 - window.addEventListener('scroll', _this.handleTouchScroll, true // useCapture - ); - } - }; - this.handleTouchMove = function (ev) { - var pev = _this.createEventFromTouch(ev); - _this.recordCoords(pev); - _this.emitter.trigger('pointermove', pev); - }; - this.handleTouchEnd = function (ev) { - if (_this.isDragging) { // done to guard against touchend followed by touchcancel - var target = ev.target; - target.removeEventListener('touchmove', _this.handleTouchMove); - target.removeEventListener('touchend', _this.handleTouchEnd); - target.removeEventListener('touchcancel', _this.handleTouchEnd); - window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true - _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev)); - _this.cleanup(); // call last so that pointerup has access to props - _this.isTouchDragging = false; - startIgnoringMouse(); - } - }; - this.handleTouchScroll = function () { - _this.wasTouchScroll = true; - }; - this.handleScroll = function (ev) { - if (!_this.shouldIgnoreMove) { - var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX; - var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY; - _this.emitter.trigger('pointermove', { - origEvent: ev, - isTouch: _this.isTouchDragging, - subjectEl: _this.subjectEl, - pageX: pageX, - pageY: pageY, - deltaX: pageX - _this.origPageX, - deltaY: pageY - _this.origPageY - }); - } - }; - this.containerEl = containerEl; - this.emitter = new EmitterMixin(); - containerEl.addEventListener('mousedown', this.handleMouseDown); - containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true }); - listenerCreated(); - } - PointerDragging.prototype.destroy = function () { - this.containerEl.removeEventListener('mousedown', this.handleMouseDown); - this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true }); - listenerDestroyed(); - }; - PointerDragging.prototype.tryStart = function (ev) { - var subjectEl = this.querySubjectEl(ev); - var downEl = ev.target; - if (subjectEl && - (!this.handleSelector || elementClosest(downEl, this.handleSelector))) { - this.subjectEl = subjectEl; - this.downEl = downEl; - this.isDragging = true; // do this first so cancelTouchScroll will work - this.wasTouchScroll = false; - return true; - } - return false; - }; - PointerDragging.prototype.cleanup = function () { - isWindowTouchMoveCancelled = false; - this.isDragging = false; - this.subjectEl = null; - this.downEl = null; - // keep wasTouchScroll around for later access - this.destroyScrollWatch(); - }; - PointerDragging.prototype.querySubjectEl = function (ev) { - if (this.selector) { - return elementClosest(ev.target, this.selector); - } - else { - return this.containerEl; - } - }; - PointerDragging.prototype.shouldIgnoreMouse = function () { - return ignoreMouseDepth || this.isTouchDragging; - }; - // can be called by user of this class, to cancel touch-based scrolling for the current drag - PointerDragging.prototype.cancelTouchScroll = function () { - if (this.isDragging) { - isWindowTouchMoveCancelled = true; - } - }; - // Scrolling that simulates pointermoves - // ---------------------------------------------------------------------------------------------------- - PointerDragging.prototype.initScrollWatch = function (ev) { - if (this.shouldWatchScroll) { - this.recordCoords(ev); - window.addEventListener('scroll', this.handleScroll, true); // useCapture=true - } - }; - PointerDragging.prototype.recordCoords = function (ev) { - if (this.shouldWatchScroll) { - this.prevPageX = ev.pageX; - this.prevPageY = ev.pageY; - this.prevScrollX = window.pageXOffset; - this.prevScrollY = window.pageYOffset; - } - }; - PointerDragging.prototype.destroyScrollWatch = function () { - if (this.shouldWatchScroll) { - window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true - } - }; - // Event Normalization - // ---------------------------------------------------------------------------------------------------- - PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) { - var deltaX = 0; - var deltaY = 0; - // TODO: repeat code - if (isFirst) { - this.origPageX = ev.pageX; - this.origPageY = ev.pageY; - } - else { - deltaX = ev.pageX - this.origPageX; - deltaY = ev.pageY - this.origPageY; - } - return { - origEvent: ev, - isTouch: false, - subjectEl: this.subjectEl, - pageX: ev.pageX, - pageY: ev.pageY, - deltaX: deltaX, - deltaY: deltaY - }; - }; - PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) { - var touches = ev.touches; - var pageX; - var pageY; - var deltaX = 0; - var deltaY = 0; - // if touch coords available, prefer, - // because FF would give bad ev.pageX ev.pageY - if (touches && touches.length) { - pageX = touches[0].pageX; - pageY = touches[0].pageY; - } - else { - pageX = ev.pageX; - pageY = ev.pageY; - } - // TODO: repeat code - if (isFirst) { - this.origPageX = pageX; - this.origPageY = pageY; - } - else { - deltaX = pageX - this.origPageX; - deltaY = pageY - this.origPageY; - } - return { - origEvent: ev, - isTouch: true, - subjectEl: this.subjectEl, - pageX: pageX, - pageY: pageY, - deltaX: deltaX, - deltaY: deltaY - }; - }; - return PointerDragging; -}()); -// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) -function isPrimaryMouseButton(ev) { - return ev.button === 0 && !ev.ctrlKey; -} -// Ignoring fake mouse events generated by touch -// ---------------------------------------------------------------------------------------------------- -function startIgnoringMouse() { - ignoreMouseDepth++; - setTimeout(function () { - ignoreMouseDepth--; - }, config.touchMouseIgnoreWait); -} -// We want to attach touchmove as early as possible for Safari -// ---------------------------------------------------------------------------------------------------- -function listenerCreated() { - if (!(listenerCnt++)) { - window.addEventListener('touchmove', onWindowTouchMove, { passive: false }); - } -} -function listenerDestroyed() { - if (!(--listenerCnt)) { - window.removeEventListener('touchmove', onWindowTouchMove, { passive: false }); - } -} -function onWindowTouchMove(ev) { - if (isWindowTouchMoveCancelled) { - ev.preventDefault(); - } -} - -/* -An effect in which an element follows the movement of a pointer across the screen. -The moving element is a clone of some other element. -Must call start + handleMove + stop. -*/ -var ElementMirror = /** @class */ (function () { - function ElementMirror() { - this.isVisible = false; // must be explicitly enabled - this.sourceEl = null; - this.mirrorEl = null; - this.sourceElRect = null; // screen coords relative to viewport - // options that can be set directly by caller - this.parentNode = document.body; - this.zIndex = 9999; - this.revertDuration = 0; - } - ElementMirror.prototype.start = function (sourceEl, pageX, pageY) { - this.sourceEl = sourceEl; - this.sourceElRect = this.sourceEl.getBoundingClientRect(); - this.origScreenX = pageX - window.pageXOffset; - this.origScreenY = pageY - window.pageYOffset; - this.deltaX = 0; - this.deltaY = 0; - this.updateElPosition(); - }; - ElementMirror.prototype.handleMove = function (pageX, pageY) { - this.deltaX = (pageX - window.pageXOffset) - this.origScreenX; - this.deltaY = (pageY - window.pageYOffset) - this.origScreenY; - this.updateElPosition(); - }; - // can be called before start - ElementMirror.prototype.setIsVisible = function (bool) { - if (bool) { - if (!this.isVisible) { - if (this.mirrorEl) { - this.mirrorEl.style.display = ''; - } - this.isVisible = bool; // needs to happen before updateElPosition - this.updateElPosition(); // because was not updating the position while invisible - } - } - else { - if (this.isVisible) { - if (this.mirrorEl) { - this.mirrorEl.style.display = 'none'; - } - this.isVisible = bool; - } - } - }; - // always async - ElementMirror.prototype.stop = function (needsRevertAnimation, callback) { - var _this = this; - var done = function () { - _this.cleanup(); - callback(); - }; - if (needsRevertAnimation && - this.mirrorEl && - this.isVisible && - this.revertDuration && // if 0, transition won't work - (this.deltaX || this.deltaY) // if same coords, transition won't work - ) { - this.doRevertAnimation(done, this.revertDuration); - } - else { - setTimeout(done, 0); - } - }; - ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) { - var mirrorEl = this.mirrorEl; - var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened - mirrorEl.style.transition = - 'top ' + revertDuration + 'ms,' + - 'left ' + revertDuration + 'ms'; - applyStyle(mirrorEl, { - left: finalSourceElRect.left, - top: finalSourceElRect.top - }); - whenTransitionDone(mirrorEl, function () { - mirrorEl.style.transition = ''; - callback(); - }); - }; - ElementMirror.prototype.cleanup = function () { - if (this.mirrorEl) { - removeElement(this.mirrorEl); - this.mirrorEl = null; - } - this.sourceEl = null; - }; - ElementMirror.prototype.updateElPosition = function () { - if (this.sourceEl && this.isVisible) { - applyStyle(this.getMirrorEl(), { - left: this.sourceElRect.left + this.deltaX, - top: this.sourceElRect.top + this.deltaY - }); - } - }; - ElementMirror.prototype.getMirrorEl = function () { - var sourceElRect = this.sourceElRect; - var mirrorEl = this.mirrorEl; - if (!mirrorEl) { - mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true - // we don't want long taps or any mouse interaction causing selection/menus. - // would use preventSelection(), but that prevents selectstart, causing problems. - mirrorEl.classList.add('fc-unselectable'); - mirrorEl.classList.add('fc-dragging'); - applyStyle(mirrorEl, { - position: 'fixed', - zIndex: this.zIndex, - visibility: '', - boxSizing: 'border-box', - width: sourceElRect.right - sourceElRect.left, - height: sourceElRect.bottom - sourceElRect.top, - right: 'auto', - bottom: 'auto', - margin: 0 - }); - this.parentNode.appendChild(mirrorEl); - } - return mirrorEl; - }; - return ElementMirror; -}()); - -/* -Is a cache for a given element's scroll information (all the info that ScrollController stores) -in addition the "client rectangle" of the element.. the area within the scrollbars. - -The cache can be in one of two modes: -- doesListening:false - ignores when the container is scrolled by someone else -- doesListening:true - watch for scrolling and update the cache -*/ -var ScrollGeomCache = /** @class */ (function (_super) { - __extends(ScrollGeomCache, _super); - function ScrollGeomCache(scrollController, doesListening) { - var _this = _super.call(this) || this; - _this.handleScroll = function () { - _this.scrollTop = _this.scrollController.getScrollTop(); - _this.scrollLeft = _this.scrollController.getScrollLeft(); - _this.handleScrollChange(); - }; - _this.scrollController = scrollController; - _this.doesListening = doesListening; - _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop(); - _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft(); - _this.scrollWidth = scrollController.getScrollWidth(); - _this.scrollHeight = scrollController.getScrollHeight(); - _this.clientWidth = scrollController.getClientWidth(); - _this.clientHeight = scrollController.getClientHeight(); - _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values - if (_this.doesListening) { - _this.getEventTarget().addEventListener('scroll', _this.handleScroll); - } - return _this; - } - ScrollGeomCache.prototype.destroy = function () { - if (this.doesListening) { - this.getEventTarget().removeEventListener('scroll', this.handleScroll); - } - }; - ScrollGeomCache.prototype.getScrollTop = function () { - return this.scrollTop; - }; - ScrollGeomCache.prototype.getScrollLeft = function () { - return this.scrollLeft; - }; - ScrollGeomCache.prototype.setScrollTop = function (top) { - this.scrollController.setScrollTop(top); - if (!this.doesListening) { - // we are not relying on the element to normalize out-of-bounds scroll values - // so we need to sanitize ourselves - this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0); - this.handleScrollChange(); - } - }; - ScrollGeomCache.prototype.setScrollLeft = function (top) { - this.scrollController.setScrollLeft(top); - if (!this.doesListening) { - // we are not relying on the element to normalize out-of-bounds scroll values - // so we need to sanitize ourselves - this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0); - this.handleScrollChange(); - } - }; - ScrollGeomCache.prototype.getClientWidth = function () { - return this.clientWidth; - }; - ScrollGeomCache.prototype.getClientHeight = function () { - return this.clientHeight; - }; - ScrollGeomCache.prototype.getScrollWidth = function () { - return this.scrollWidth; - }; - ScrollGeomCache.prototype.getScrollHeight = function () { - return this.scrollHeight; - }; - ScrollGeomCache.prototype.handleScrollChange = function () { - }; - return ScrollGeomCache; -}(ScrollController)); -var ElementScrollGeomCache = /** @class */ (function (_super) { - __extends(ElementScrollGeomCache, _super); - function ElementScrollGeomCache(el, doesListening) { - return _super.call(this, new ElementScrollController(el), doesListening) || this; - } - ElementScrollGeomCache.prototype.getEventTarget = function () { - return this.scrollController.el; - }; - ElementScrollGeomCache.prototype.computeClientRect = function () { - return computeInnerRect(this.scrollController.el); - }; - return ElementScrollGeomCache; -}(ScrollGeomCache)); -var WindowScrollGeomCache = /** @class */ (function (_super) { - __extends(WindowScrollGeomCache, _super); - function WindowScrollGeomCache(doesListening) { - return _super.call(this, new WindowScrollController(), doesListening) || this; - } - WindowScrollGeomCache.prototype.getEventTarget = function () { - return window; - }; - WindowScrollGeomCache.prototype.computeClientRect = function () { - return { - left: this.scrollLeft, - right: this.scrollLeft + this.clientWidth, - top: this.scrollTop, - bottom: this.scrollTop + this.clientHeight - }; - }; - // the window is the only scroll object that changes it's rectangle relative - // to the document's topleft as it scrolls - WindowScrollGeomCache.prototype.handleScrollChange = function () { - this.clientRect = this.computeClientRect(); - }; - return WindowScrollGeomCache; -}(ScrollGeomCache)); - -// If available we are using native "performance" API instead of "Date" -// Read more about it on MDN: -// https://developer.mozilla.org/en-US/docs/Web/API/Performance -var getTime = typeof performance === 'function' ? performance.now : Date.now; -/* -For a pointer interaction, automatically scrolls certain scroll containers when the pointer -approaches the edge. - -The caller must call start + handleMove + stop. -*/ -var AutoScroller = /** @class */ (function () { - function AutoScroller() { - var _this = this; - // options that can be set by caller - this.isEnabled = true; - this.scrollQuery = [window, '.fc-scroller']; - this.edgeThreshold = 50; // pixels - this.maxVelocity = 300; // pixels per second - // internal state - this.pointerScreenX = null; - this.pointerScreenY = null; - this.isAnimating = false; - this.scrollCaches = null; - // protect against the initial pointerdown being too close to an edge and starting the scroll - this.everMovedUp = false; - this.everMovedDown = false; - this.everMovedLeft = false; - this.everMovedRight = false; - this.animate = function () { - if (_this.isAnimating) { // wasn't cancelled between animation calls - var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset); - if (edge) { - var now = getTime(); - _this.handleSide(edge, (now - _this.msSinceRequest) / 1000); - _this.requestAnimation(now); - } - else { - _this.isAnimating = false; // will stop animation - } - } - }; - } - AutoScroller.prototype.start = function (pageX, pageY) { - if (this.isEnabled) { - this.scrollCaches = this.buildCaches(); - this.pointerScreenX = null; - this.pointerScreenY = null; - this.everMovedUp = false; - this.everMovedDown = false; - this.everMovedLeft = false; - this.everMovedRight = false; - this.handleMove(pageX, pageY); - } - }; - AutoScroller.prototype.handleMove = function (pageX, pageY) { - if (this.isEnabled) { - var pointerScreenX = pageX - window.pageXOffset; - var pointerScreenY = pageY - window.pageYOffset; - var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY; - var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX; - if (yDelta < 0) { - this.everMovedUp = true; - } - else if (yDelta > 0) { - this.everMovedDown = true; - } - if (xDelta < 0) { - this.everMovedLeft = true; - } - else if (xDelta > 0) { - this.everMovedRight = true; - } - this.pointerScreenX = pointerScreenX; - this.pointerScreenY = pointerScreenY; - if (!this.isAnimating) { - this.isAnimating = true; - this.requestAnimation(getTime()); - } - } - }; - AutoScroller.prototype.stop = function () { - if (this.isEnabled) { - this.isAnimating = false; // will stop animation - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - scrollCache.destroy(); - } - this.scrollCaches = null; - } - }; - AutoScroller.prototype.requestAnimation = function (now) { - this.msSinceRequest = now; - requestAnimationFrame(this.animate); - }; - AutoScroller.prototype.handleSide = function (edge, seconds) { - var scrollCache = edge.scrollCache; - var edgeThreshold = this.edgeThreshold; - var invDistance = edgeThreshold - edge.distance; - var velocity = // the closer to the edge, the faster we scroll - (invDistance * invDistance) / (edgeThreshold * edgeThreshold) * // quadratic - this.maxVelocity * seconds; - var sign = 1; - switch (edge.name) { - case 'left': - sign = -1; - // falls through - case 'right': - scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign); - break; - case 'top': - sign = -1; - // falls through - case 'bottom': - scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign); - break; - } - }; - // left/top are relative to document topleft - AutoScroller.prototype.computeBestEdge = function (left, top) { - var edgeThreshold = this.edgeThreshold; - var bestSide = null; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - var rect = scrollCache.clientRect; - var leftDist = left - rect.left; - var rightDist = rect.right - left; - var topDist = top - rect.top; - var bottomDist = rect.bottom - top; - // completely within the rect? - if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) { - if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() && - (!bestSide || bestSide.distance > topDist)) { - bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist }; - } - if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() && - (!bestSide || bestSide.distance > bottomDist)) { - bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist }; - } - if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() && - (!bestSide || bestSide.distance > leftDist)) { - bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist }; - } - if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() && - (!bestSide || bestSide.distance > rightDist)) { - bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist }; - } - } - } - return bestSide; - }; - AutoScroller.prototype.buildCaches = function () { - return this.queryScrollEls().map(function (el) { - if (el === window) { - return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls - } - else { - return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls - } - }); - }; - AutoScroller.prototype.queryScrollEls = function () { - var els = []; - for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) { - var query = _a[_i]; - if (typeof query === 'object') { - els.push(query); - } - else { - els.push.apply(els, Array.prototype.slice.call(document.querySelectorAll(query))); - } - } - return els; - }; - return AutoScroller; -}()); - -/* -Monitors dragging on an element. Has a number of high-level features: -- minimum distance required before dragging -- minimum wait time ("delay") before dragging -- a mirror element that follows the pointer -*/ -var FeaturefulElementDragging = /** @class */ (function (_super) { - __extends(FeaturefulElementDragging, _super); - function FeaturefulElementDragging(containerEl) { - var _this = _super.call(this, containerEl) || this; - // options that can be directly set by caller - // the caller can also set the PointerDragging's options as well - _this.delay = null; - _this.minDistance = 0; - _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag - _this.mirrorNeedsRevert = false; - _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup - _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation - _this.isDelayEnded = false; - _this.isDistanceSurpassed = false; - _this.delayTimeoutId = null; - _this.onPointerDown = function (ev) { - if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going - _this.isInteracting = true; - _this.isDelayEnded = false; - _this.isDistanceSurpassed = false; - preventSelection(document.body); - preventContextMenu(document.body); - // prevent links from being visited if there's an eventual drag. - // also prevents selection in older browsers (maybe?). - // not necessary for touch, besides, browser would complain about passiveness. - if (!ev.isTouch) { - ev.origEvent.preventDefault(); - } - _this.emitter.trigger('pointerdown', ev); - if (!_this.pointer.shouldIgnoreMove) { - // actions related to initiating dragstart+dragmove+dragend... - _this.mirror.setIsVisible(false); // reset. caller must set-visible - _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down - _this.startDelay(ev); - if (!_this.minDistance) { - _this.handleDistanceSurpassed(ev); - } - } - } - }; - _this.onPointerMove = function (ev) { - if (_this.isInteracting) { // if false, still waiting for previous drag's revert - _this.emitter.trigger('pointermove', ev); - if (!_this.isDistanceSurpassed) { - var minDistance = _this.minDistance; - var distanceSq = void 0; // current distance from the origin, squared - var deltaX = ev.deltaX, deltaY = ev.deltaY; - distanceSq = deltaX * deltaX + deltaY * deltaY; - if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem - _this.handleDistanceSurpassed(ev); - } - } - if (_this.isDragging) { - // a real pointer move? (not one simulated by scrolling) - if (ev.origEvent.type !== 'scroll') { - _this.mirror.handleMove(ev.pageX, ev.pageY); - _this.autoScroller.handleMove(ev.pageX, ev.pageY); - } - _this.emitter.trigger('dragmove', ev); - } - } - }; - _this.onPointerUp = function (ev) { - if (_this.isInteracting) { // if false, still waiting for previous drag's revert - _this.isInteracting = false; - allowSelection(document.body); - allowContextMenu(document.body); - _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert - if (_this.isDragging) { - _this.autoScroller.stop(); - _this.tryStopDrag(ev); // which will stop the mirror - } - if (_this.delayTimeoutId) { - clearTimeout(_this.delayTimeoutId); - _this.delayTimeoutId = null; - } - } - }; - var pointer = _this.pointer = new PointerDragging(containerEl); - pointer.emitter.on('pointerdown', _this.onPointerDown); - pointer.emitter.on('pointermove', _this.onPointerMove); - pointer.emitter.on('pointerup', _this.onPointerUp); - _this.mirror = new ElementMirror(); - _this.autoScroller = new AutoScroller(); - return _this; - } - FeaturefulElementDragging.prototype.destroy = function () { - this.pointer.destroy(); - }; - FeaturefulElementDragging.prototype.startDelay = function (ev) { - var _this = this; - if (typeof this.delay === 'number') { - this.delayTimeoutId = setTimeout(function () { - _this.delayTimeoutId = null; - _this.handleDelayEnd(ev); - }, this.delay); // not assignable to number! - } - else { - this.handleDelayEnd(ev); - } - }; - FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) { - this.isDelayEnded = true; - this.tryStartDrag(ev); - }; - FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) { - this.isDistanceSurpassed = true; - this.tryStartDrag(ev); - }; - FeaturefulElementDragging.prototype.tryStartDrag = function (ev) { - if (this.isDelayEnded && this.isDistanceSurpassed) { - if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) { - this.isDragging = true; - this.mirrorNeedsRevert = false; - this.autoScroller.start(ev.pageX, ev.pageY); - this.emitter.trigger('dragstart', ev); - if (this.touchScrollAllowed === false) { - this.pointer.cancelTouchScroll(); - } - } - } - }; - FeaturefulElementDragging.prototype.tryStopDrag = function (ev) { - // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events - // that come from the document to fire beforehand. much more convenient this way. - this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev) // bound with args - ); - }; - FeaturefulElementDragging.prototype.stopDrag = function (ev) { - this.isDragging = false; - this.emitter.trigger('dragend', ev); - }; - // fill in the implementations... - FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) { - this.pointer.shouldIgnoreMove = bool; - }; - FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) { - this.mirror.setIsVisible(bool); - }; - FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) { - this.mirrorNeedsRevert = bool; - }; - FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) { - this.autoScroller.isEnabled = bool; - }; - return FeaturefulElementDragging; -}(ElementDragging)); - -/* -When this class is instantiated, it records the offset of an element (relative to the document topleft), -and continues to monitor scrolling, updating the cached coordinates if it needs to. -Does not access the DOM after instantiation, so highly performant. - -Also keeps track of all scrolling/overflow:hidden containers that are parents of the given element -and an determine if a given point is inside the combined clipping rectangle. -*/ -var OffsetTracker = /** @class */ (function () { - function OffsetTracker(el) { - this.origRect = computeRect(el); - // will work fine for divs that have overflow:hidden - this.scrollCaches = getClippingParents(el).map(function (el) { - return new ElementScrollGeomCache(el, true); // listen=true - }); - } - OffsetTracker.prototype.destroy = function () { - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - scrollCache.destroy(); - } - }; - OffsetTracker.prototype.computeLeft = function () { - var left = this.origRect.left; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - left += scrollCache.origScrollLeft - scrollCache.getScrollLeft(); - } - return left; - }; - OffsetTracker.prototype.computeTop = function () { - var top = this.origRect.top; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - top += scrollCache.origScrollTop - scrollCache.getScrollTop(); - } - return top; - }; - OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) { - var point = { left: pageX, top: pageY }; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - if (!isIgnoredClipping(scrollCache.getEventTarget()) && - !pointInsideRect(point, scrollCache.clientRect)) { - return false; - } - } - return true; - }; - return OffsetTracker; -}()); -// certain clipping containers should never constrain interactions, like and -// https://github.com/fullcalendar/fullcalendar/issues/3615 -function isIgnoredClipping(node) { - var tagName = node.tagName; - return tagName === 'HTML' || tagName === 'BODY'; -} - -/* -Tracks movement over multiple droppable areas (aka "hits") -that exist in one or more DateComponents. -Relies on an existing draggable. - -emits: -- pointerdown -- dragstart -- hitchange - fires initially, even if not over a hit -- pointerup -- (hitchange - again, to null, if ended over a hit) -- dragend -*/ -var HitDragging = /** @class */ (function () { - function HitDragging(dragging, droppableStore) { - var _this = this; - // options that can be set by caller - this.useSubjectCenter = false; - this.requireInitial = true; // if doesn't start out on a hit, won't emit any events - this.initialHit = null; - this.movingHit = null; - this.finalHit = null; // won't ever be populated if shouldIgnoreMove - this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - _this.initialHit = null; - _this.movingHit = null; - _this.finalHit = null; - _this.prepareHits(); - _this.processFirstCoord(ev); - if (_this.initialHit || !_this.requireInitial) { - dragging.setIgnoreMove(false); - _this.emitter.trigger('pointerdown', ev); // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :( - } - else { - dragging.setIgnoreMove(true); - } - }; - this.handleDragStart = function (ev) { - _this.emitter.trigger('dragstart', ev); - _this.handleMove(ev, true); // force = fire even if initially null - }; - this.handleDragMove = function (ev) { - _this.emitter.trigger('dragmove', ev); - _this.handleMove(ev); - }; - this.handlePointerUp = function (ev) { - _this.releaseHits(); - _this.emitter.trigger('pointerup', ev); - }; - this.handleDragEnd = function (ev) { - if (_this.movingHit) { - _this.emitter.trigger('hitupdate', null, true, ev); - } - _this.finalHit = _this.movingHit; - _this.movingHit = null; - _this.emitter.trigger('dragend', ev); - }; - this.droppableStore = droppableStore; - dragging.emitter.on('pointerdown', this.handlePointerDown); - dragging.emitter.on('dragstart', this.handleDragStart); - dragging.emitter.on('dragmove', this.handleDragMove); - dragging.emitter.on('pointerup', this.handlePointerUp); - dragging.emitter.on('dragend', this.handleDragEnd); - this.dragging = dragging; - this.emitter = new EmitterMixin(); - } - // sets initialHit - // sets coordAdjust - HitDragging.prototype.processFirstCoord = function (ev) { - var origPoint = { left: ev.pageX, top: ev.pageY }; - var adjustedPoint = origPoint; - var subjectEl = ev.subjectEl; - var subjectRect; - if (subjectEl !== document) { - subjectRect = computeRect(subjectEl); - adjustedPoint = constrainPoint(adjustedPoint, subjectRect); - } - var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top); - if (initialHit) { - if (this.useSubjectCenter && subjectRect) { - var slicedSubjectRect = intersectRects(subjectRect, initialHit.rect); - if (slicedSubjectRect) { - adjustedPoint = getRectCenter(slicedSubjectRect); - } - } - this.coordAdjust = diffPoints(adjustedPoint, origPoint); - } - else { - this.coordAdjust = { left: 0, top: 0 }; - } - }; - HitDragging.prototype.handleMove = function (ev, forceHandle) { - var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top); - if (forceHandle || !isHitsEqual(this.movingHit, hit)) { - this.movingHit = hit; - this.emitter.trigger('hitupdate', hit, false, ev); - } - }; - HitDragging.prototype.prepareHits = function () { - this.offsetTrackers = mapHash(this.droppableStore, function (interactionSettings) { - interactionSettings.component.buildPositionCaches(); - return new OffsetTracker(interactionSettings.el); - }); - }; - HitDragging.prototype.releaseHits = function () { - var offsetTrackers = this.offsetTrackers; - for (var id in offsetTrackers) { - offsetTrackers[id].destroy(); - } - this.offsetTrackers = {}; - }; - HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) { - var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers; - var bestHit = null; - for (var id in droppableStore) { - var component = droppableStore[id].component; - var offsetTracker = offsetTrackers[id]; - if (offsetTracker.isWithinClipping(offsetLeft, offsetTop)) { - var originLeft = offsetTracker.computeLeft(); - var originTop = offsetTracker.computeTop(); - var positionLeft = offsetLeft - originLeft; - var positionTop = offsetTop - originTop; - var origRect = offsetTracker.origRect; - var width = origRect.right - origRect.left; - var height = origRect.bottom - origRect.top; - if ( - // must be within the element's bounds - positionLeft >= 0 && positionLeft < width && - positionTop >= 0 && positionTop < height) { - var hit = component.queryHit(positionLeft, positionTop, width, height); - if (hit && - ( - // make sure the hit is within activeRange, meaning it's not a deal cell - !component.props.dateProfile || // hack for DayTile - rangeContainsRange(component.props.dateProfile.activeRange, hit.dateSpan.range)) && - (!bestHit || hit.layer > bestHit.layer)) { - // TODO: better way to re-orient rectangle - hit.rect.left += originLeft; - hit.rect.right += originLeft; - hit.rect.top += originTop; - hit.rect.bottom += originTop; - bestHit = hit; - } - } - } - } - return bestHit; - }; - return HitDragging; -}()); -function isHitsEqual(hit0, hit1) { - if (!hit0 && !hit1) { - return true; - } - if (Boolean(hit0) !== Boolean(hit1)) { - return false; - } - return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan); -} - -/* -Monitors when the user clicks on a specific date/time of a component. -A pointerdown+pointerup on the same "hit" constitutes a click. -*/ -var DateClicking = /** @class */ (function (_super) { - __extends(DateClicking, _super); - function DateClicking(settings) { - var _this = _super.call(this, settings) || this; - _this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired - dragging.setIgnoreMove(!_this.component.isValidDateDownEl(dragging.pointer.downEl)); - }; - // won't even fire if moving was ignored - _this.handleDragEnd = function (ev) { - var component = _this.component; - var pointer = _this.dragging.pointer; - if (!pointer.wasTouchScroll) { - var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit; - if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) { - component.calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, component.view, ev.origEvent); - } - } - }; - var component = settings.component; - // we DO want to watch pointer moves because otherwise finalHit won't get populated - _this.dragging = new FeaturefulElementDragging(component.el); - _this.dragging.autoScroller.isEnabled = false; - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - DateClicking.prototype.destroy = function () { - this.dragging.destroy(); - }; - return DateClicking; -}(Interaction)); - -/* -Tracks when the user selects a portion of time of a component, -constituted by a drag over date cells, with a possible delay at the beginning of the drag. -*/ -var DateSelecting = /** @class */ (function (_super) { - __extends(DateSelecting, _super); - function DateSelecting(settings) { - var _this = _super.call(this, settings) || this; - _this.dragSelection = null; - _this.handlePointerDown = function (ev) { - var _a = _this, component = _a.component, dragging = _a.dragging; - var canSelect = component.opt('selectable') && - component.isValidDateDownEl(ev.origEvent.target); - // don't bother to watch expensive moves if component won't do selection - dragging.setIgnoreMove(!canSelect); - // if touch, require user to hold down - dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null; - }; - _this.handleDragStart = function (ev) { - _this.component.calendar.unselect(ev); // unselect previous selections - }; - _this.handleHitUpdate = function (hit, isFinal) { - var calendar = _this.component.calendar; - var dragSelection = null; - var isInvalid = false; - if (hit) { - dragSelection = joinHitsIntoSelection(_this.hitDragging.initialHit, hit, calendar.pluginSystem.hooks.dateSelectionTransformers); - if (!dragSelection || !_this.component.isDateSelectionValid(dragSelection)) { - isInvalid = true; - dragSelection = null; - } - } - if (dragSelection) { - calendar.dispatch({ type: 'SELECT_DATES', selection: dragSelection }); - } - else if (!isFinal) { // only unselect if moved away while dragging - calendar.dispatch({ type: 'UNSELECT_DATES' }); - } - if (!isInvalid) { - enableCursor(); - } - else { - disableCursor(); - } - if (!isFinal) { - _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging - } - }; - _this.handlePointerUp = function (pev) { - if (_this.dragSelection) { - // selection is already rendered, so just need to report selection - _this.component.calendar.triggerDateSelect(_this.dragSelection, pev); - _this.dragSelection = null; - } - }; - var component = settings.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.touchScrollAllowed = false; - dragging.minDistance = component.opt('selectMinDistance') || 0; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('pointerup', _this.handlePointerUp); - return _this; - } - DateSelecting.prototype.destroy = function () { - this.dragging.destroy(); - }; - return DateSelecting; -}(Interaction)); -function getComponentTouchDelay(component) { - var delay = component.opt('selectLongPressDelay'); - if (delay == null) { - delay = component.opt('longPressDelay'); - } - return delay; -} -function joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) { - var dateSpan0 = hit0.dateSpan; - var dateSpan1 = hit1.dateSpan; - var ms = [ - dateSpan0.range.start, - dateSpan0.range.end, - dateSpan1.range.start, - dateSpan1.range.end - ]; - ms.sort(compareNumbers); - var props = {}; - for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) { - var transformer = dateSelectionTransformers_1[_i]; - var res = transformer(hit0, hit1); - if (res === false) { - return null; - } - else if (res) { - __assign(props, res); - } - } - props.range = { start: ms[0], end: ms[3] }; - props.allDay = dateSpan0.allDay; - return props; -} - -var EventDragging = /** @class */ (function (_super) { - __extends(EventDragging, _super); - function EventDragging(settings) { - var _this = _super.call(this, settings) || this; - // internal state - _this.subjectSeg = null; // the seg being selected/dragged - _this.isDragging = false; - _this.eventRange = null; - _this.relevantEvents = null; // the events being dragged - _this.receivingCalendar = null; - _this.validMutation = null; - _this.mutatedRelevantEvents = null; - _this.handlePointerDown = function (ev) { - var origTarget = ev.origEvent.target; - var _a = _this, component = _a.component, dragging = _a.dragging; - var mirror = dragging.mirror; - var initialCalendar = component.calendar; - var subjectSeg = _this.subjectSeg = getElSeg(ev.subjectEl); - var eventRange = _this.eventRange = subjectSeg.eventRange; - var eventInstanceId = eventRange.instance.instanceId; - _this.relevantEvents = getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId); - dragging.minDistance = ev.isTouch ? 0 : component.opt('eventDragMinDistance'); - dragging.delay = - // only do a touch delay if touch and this event hasn't been selected yet - (ev.isTouch && eventInstanceId !== component.props.eventSelection) ? - getComponentTouchDelay$1(component) : - null; - mirror.parentNode = initialCalendar.el; - mirror.revertDuration = component.opt('dragRevertDuration'); - var isValid = component.isValidSegDownEl(origTarget) && - !elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer - dragging.setIgnoreMove(!isValid); - // disable dragging for elements that are resizable (ie, selectable) - // but are not draggable - _this.isDragging = isValid && - ev.subjectEl.classList.contains('fc-draggable'); - }; - _this.handleDragStart = function (ev) { - var initialCalendar = _this.component.calendar; - var eventRange = _this.eventRange; - var eventInstanceId = eventRange.instance.instanceId; - if (ev.isTouch) { - // need to select a different event? - if (eventInstanceId !== _this.component.props.eventSelection) { - initialCalendar.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId }); - } - } - else { - // if now using mouse, but was previous touch interaction, clear selected event - initialCalendar.dispatch({ type: 'UNSELECT_EVENT' }); - } - if (_this.isDragging) { - initialCalendar.unselect(ev); // unselect *date* selection - initialCalendar.publiclyTrigger('eventDragStart', [ - { - el: _this.subjectSeg.el, - event: new EventApi(initialCalendar, eventRange.def, eventRange.instance), - jsEvent: ev.origEvent, - view: _this.component.view - } - ]); - } - }; - _this.handleHitUpdate = function (hit, isFinal) { - if (!_this.isDragging) { - return; - } - var relevantEvents = _this.relevantEvents; - var initialHit = _this.hitDragging.initialHit; - var initialCalendar = _this.component.calendar; - // states based on new hit - var receivingCalendar = null; - var mutation = null; - var mutatedRelevantEvents = null; - var isInvalid = false; - var interaction = { - affectedEvents: relevantEvents, - mutatedEvents: createEmptyEventStore(), - isEvent: true, - origSeg: _this.subjectSeg - }; - if (hit) { - var receivingComponent = hit.component; - receivingCalendar = receivingComponent.calendar; - if (initialCalendar === receivingCalendar || - receivingComponent.opt('editable') && receivingComponent.opt('droppable')) { - mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers); - if (mutation) { - mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar); - interaction.mutatedEvents = mutatedRelevantEvents; - if (!receivingComponent.isInteractionValid(interaction)) { - isInvalid = true; - mutation = null; - mutatedRelevantEvents = null; - interaction.mutatedEvents = createEmptyEventStore(); - } - } - } - else { - receivingCalendar = null; - } - } - _this.displayDrag(receivingCalendar, interaction); - if (!isInvalid) { - enableCursor(); - } - else { - disableCursor(); - } - if (!isFinal) { - if (initialCalendar === receivingCalendar && // TODO: write test for this - isHitsEqual(initialHit, hit)) { - mutation = null; - } - _this.dragging.setMirrorNeedsRevert(!mutation); - // render the mirror if no already-rendered mirror - // TODO: wish we could somehow wait for dispatch to guarantee render - _this.dragging.setMirrorIsVisible(!hit || !document.querySelector('.fc-mirror')); - // assign states based on new hit - _this.receivingCalendar = receivingCalendar; - _this.validMutation = mutation; - _this.mutatedRelevantEvents = mutatedRelevantEvents; - } - }; - _this.handlePointerUp = function () { - if (!_this.isDragging) { - _this.cleanup(); // because handleDragEnd won't fire - } - }; - _this.handleDragEnd = function (ev) { - if (_this.isDragging) { - var initialCalendar_1 = _this.component.calendar; - var initialView = _this.component.view; - var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation; - var eventDef = _this.eventRange.def; - var eventInstance = _this.eventRange.instance; - var eventApi = new EventApi(initialCalendar_1, eventDef, eventInstance); - var relevantEvents_1 = _this.relevantEvents; - var mutatedRelevantEvents = _this.mutatedRelevantEvents; - var finalHit = _this.hitDragging.finalHit; - _this.clearDrag(); // must happen after revert animation - initialCalendar_1.publiclyTrigger('eventDragStop', [ - { - el: _this.subjectSeg.el, - event: eventApi, - jsEvent: ev.origEvent, - view: initialView - } - ]); - if (validMutation) { - // dropped within same calendar - if (receivingCalendar === initialCalendar_1) { - initialCalendar_1.dispatch({ - type: 'MERGE_EVENTS', - eventStore: mutatedRelevantEvents - }); - var transformed = {}; - for (var _i = 0, _b = initialCalendar_1.pluginSystem.hooks.eventDropTransformers; _i < _b.length; _i++) { - var transformer = _b[_i]; - __assign(transformed, transformer(validMutation, initialCalendar_1)); - } - var eventDropArg = __assign({}, transformed, { el: ev.subjectEl, delta: validMutation.datesDelta, oldEvent: eventApi, event: new EventApi(// the data AFTER the mutation - initialCalendar_1, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), revert: function () { - initialCalendar_1.dispatch({ - type: 'MERGE_EVENTS', - eventStore: relevantEvents_1 - }); - }, jsEvent: ev.origEvent, view: initialView }); - initialCalendar_1.publiclyTrigger('eventDrop', [eventDropArg]); - // dropped in different calendar - } - else if (receivingCalendar) { - initialCalendar_1.publiclyTrigger('eventLeave', [ - { - draggedEl: ev.subjectEl, - event: eventApi, - view: initialView - } - ]); - initialCalendar_1.dispatch({ - type: 'REMOVE_EVENT_INSTANCES', - instances: _this.mutatedRelevantEvents.instances - }); - receivingCalendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: _this.mutatedRelevantEvents - }); - if (ev.isTouch) { - receivingCalendar.dispatch({ - type: 'SELECT_EVENT', - eventInstanceId: eventInstance.instanceId - }); - } - var dropArg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component // should this be finalHit.component.view? See #4644 - }); - receivingCalendar.publiclyTrigger('drop', [dropArg]); - receivingCalendar.publiclyTrigger('eventReceive', [ - { - draggedEl: ev.subjectEl, - event: new EventApi(// the data AFTER the mutation - receivingCalendar, mutatedRelevantEvents.defs[eventDef.defId], mutatedRelevantEvents.instances[eventInstance.instanceId]), - view: finalHit.component // should this be finalHit.component.view? See #4644 - } - ]); - } - } - else { - initialCalendar_1.publiclyTrigger('_noEventDrop'); - } - } - _this.cleanup(); - }; - var component = _this.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.pointer.selector = EventDragging.SELECTOR; - dragging.touchScrollAllowed = false; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsStore); - hitDragging.useSubjectCenter = settings.useEventCenter; - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('pointerup', _this.handlePointerUp); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - EventDragging.prototype.destroy = function () { - this.dragging.destroy(); - }; - // render a drag state on the next receivingCalendar - EventDragging.prototype.displayDrag = function (nextCalendar, state) { - var initialCalendar = this.component.calendar; - var prevCalendar = this.receivingCalendar; - // does the previous calendar need to be cleared? - if (prevCalendar && prevCalendar !== nextCalendar) { - // does the initial calendar need to be cleared? - // if so, don't clear all the way. we still need to to hide the affectedEvents - if (prevCalendar === initialCalendar) { - prevCalendar.dispatch({ - type: 'SET_EVENT_DRAG', - state: { - affectedEvents: state.affectedEvents, - mutatedEvents: createEmptyEventStore(), - isEvent: true, - origSeg: state.origSeg - } - }); - // completely clear the old calendar if it wasn't the initial - } - else { - prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - } - if (nextCalendar) { - nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state }); - } - }; - EventDragging.prototype.clearDrag = function () { - var initialCalendar = this.component.calendar; - var receivingCalendar = this.receivingCalendar; - if (receivingCalendar) { - receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - // the initial calendar might have an dummy drag state from displayDrag - if (initialCalendar !== receivingCalendar) { - initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - }; - EventDragging.prototype.cleanup = function () { - this.subjectSeg = null; - this.isDragging = false; - this.eventRange = null; - this.relevantEvents = null; - this.receivingCalendar = null; - this.validMutation = null; - this.mutatedRelevantEvents = null; - }; - EventDragging.SELECTOR = '.fc-draggable, .fc-resizable'; // TODO: test this in IE11 - return EventDragging; -}(Interaction)); -function computeEventMutation(hit0, hit1, massagers) { - var dateSpan0 = hit0.dateSpan; - var dateSpan1 = hit1.dateSpan; - var date0 = dateSpan0.range.start; - var date1 = dateSpan1.range.start; - var standardProps = {}; - if (dateSpan0.allDay !== dateSpan1.allDay) { - standardProps.allDay = dateSpan1.allDay; - standardProps.hasEnd = hit1.component.opt('allDayMaintainDuration'); - if (dateSpan1.allDay) { - // means date1 is already start-of-day, - // but date0 needs to be converted - date0 = startOfDay(date0); - } - } - var delta = diffDates(date0, date1, hit0.component.dateEnv, hit0.component === hit1.component ? - hit0.component.largeUnit : - null); - if (delta.milliseconds) { // has hours/minutes/seconds - standardProps.allDay = false; - } - var mutation = { - datesDelta: delta, - standardProps: standardProps - }; - for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) { - var massager = massagers_1[_i]; - massager(mutation, hit0, hit1); - } - return mutation; -} -function getComponentTouchDelay$1(component) { - var delay = component.opt('eventLongPressDelay'); - if (delay == null) { - delay = component.opt('longPressDelay'); - } - return delay; -} - -var EventDragging$1 = /** @class */ (function (_super) { - __extends(EventDragging, _super); - function EventDragging(settings) { - var _this = _super.call(this, settings) || this; - // internal state - _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg? - _this.eventRange = null; - _this.relevantEvents = null; - _this.validMutation = null; - _this.mutatedRelevantEvents = null; - _this.handlePointerDown = function (ev) { - var component = _this.component; - var seg = _this.querySeg(ev); - var eventRange = _this.eventRange = seg.eventRange; - _this.dragging.minDistance = component.opt('eventDragMinDistance'); - // if touch, need to be working with a selected event - _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) || - (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId)); - }; - _this.handleDragStart = function (ev) { - var calendar = _this.component.calendar; - var eventRange = _this.eventRange; - _this.relevantEvents = getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId); - _this.draggingSeg = _this.querySeg(ev); - calendar.unselect(); - calendar.publiclyTrigger('eventResizeStart', [ - { - el: _this.draggingSeg.el, - event: new EventApi(calendar, eventRange.def, eventRange.instance), - jsEvent: ev.origEvent, - view: _this.component.view - } - ]); - }; - _this.handleHitUpdate = function (hit, isFinal, ev) { - var calendar = _this.component.calendar; - var relevantEvents = _this.relevantEvents; - var initialHit = _this.hitDragging.initialHit; - var eventInstance = _this.eventRange.instance; - var mutation = null; - var mutatedRelevantEvents = null; - var isInvalid = false; - var interaction = { - affectedEvents: relevantEvents, - mutatedEvents: createEmptyEventStore(), - isEvent: true, - origSeg: _this.draggingSeg - }; - if (hit) { - mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-start-resizer'), eventInstance.range, calendar.pluginSystem.hooks.eventResizeJoinTransforms); - } - if (mutation) { - mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, calendar.eventUiBases, mutation, calendar); - interaction.mutatedEvents = mutatedRelevantEvents; - if (!_this.component.isInteractionValid(interaction)) { - isInvalid = true; - mutation = null; - mutatedRelevantEvents = null; - interaction.mutatedEvents = null; - } - } - if (mutatedRelevantEvents) { - calendar.dispatch({ - type: 'SET_EVENT_RESIZE', - state: interaction - }); - } - else { - calendar.dispatch({ type: 'UNSET_EVENT_RESIZE' }); - } - if (!isInvalid) { - enableCursor(); - } - else { - disableCursor(); - } - if (!isFinal) { - if (mutation && isHitsEqual(initialHit, hit)) { - mutation = null; - } - _this.validMutation = mutation; - _this.mutatedRelevantEvents = mutatedRelevantEvents; - } - }; - _this.handleDragEnd = function (ev) { - var calendar = _this.component.calendar; - var view = _this.component.view; - var eventDef = _this.eventRange.def; - var eventInstance = _this.eventRange.instance; - var eventApi = new EventApi(calendar, eventDef, eventInstance); - var relevantEvents = _this.relevantEvents; - var mutatedRelevantEvents = _this.mutatedRelevantEvents; - calendar.publiclyTrigger('eventResizeStop', [ - { - el: _this.draggingSeg.el, - event: eventApi, - jsEvent: ev.origEvent, - view: view - } - ]); - if (_this.validMutation) { - calendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: mutatedRelevantEvents - }); - calendar.publiclyTrigger('eventResize', [ - { - el: _this.draggingSeg.el, - startDelta: _this.validMutation.startDelta || createDuration(0), - endDelta: _this.validMutation.endDelta || createDuration(0), - prevEvent: eventApi, - event: new EventApi(// the data AFTER the mutation - calendar, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), - revert: function () { - calendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: relevantEvents - }); - }, - jsEvent: ev.origEvent, - view: view - } - ]); - } - else { - calendar.publiclyTrigger('_noEventResize'); - } - // reset all internal state - _this.draggingSeg = null; - _this.relevantEvents = null; - _this.validMutation = null; - // okay to keep eventInstance around. useful to set it in handlePointerDown - }; - var component = settings.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.pointer.selector = '.fc-resizer'; - dragging.touchScrollAllowed = false; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - EventDragging.prototype.destroy = function () { - this.dragging.destroy(); - }; - EventDragging.prototype.querySeg = function (ev) { - return getElSeg(elementClosest(ev.subjectEl, this.component.fgSegSelector)); - }; - return EventDragging; -}(Interaction)); -function computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) { - var dateEnv = hit0.component.dateEnv; - var date0 = hit0.dateSpan.range.start; - var date1 = hit1.dateSpan.range.start; - var delta = diffDates(date0, date1, dateEnv, hit0.component.largeUnit); - var props = {}; - for (var _i = 0, transforms_1 = transforms; _i < transforms_1.length; _i++) { - var transform = transforms_1[_i]; - var res = transform(hit0, hit1); - if (res === false) { - return null; - } - else if (res) { - __assign(props, res); - } - } - if (isFromStart) { - if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) { - props.startDelta = delta; - return props; - } - } - else { - if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) { - props.endDelta = delta; - return props; - } - } - return null; -} - -var UnselectAuto = /** @class */ (function () { - function UnselectAuto(calendar) { - var _this = this; - this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system - this.onSelect = function (selectInfo) { - if (selectInfo.jsEvent) { - _this.isRecentPointerDateSelect = true; - } - }; - this.onDocumentPointerUp = function (pev) { - var _a = _this, calendar = _a.calendar, documentPointer = _a.documentPointer; - var state = calendar.state; - // touch-scrolling should never unfocus any type of selection - if (!documentPointer.wasTouchScroll) { - if (state.dateSelection && // an existing date selection? - !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp? - ) { - var unselectAuto = calendar.viewOpt('unselectAuto'); - var unselectCancel = calendar.viewOpt('unselectCancel'); - if (unselectAuto && (!unselectAuto || !elementClosest(documentPointer.downEl, unselectCancel))) { - calendar.unselect(pev); - } - } - if (state.eventSelection && // an existing event selected? - !elementClosest(documentPointer.downEl, EventDragging.SELECTOR) // interaction DIDN'T start on an event - ) { - calendar.dispatch({ type: 'UNSELECT_EVENT' }); - } - } - _this.isRecentPointerDateSelect = false; - }; - this.calendar = calendar; - var documentPointer = this.documentPointer = new PointerDragging(document); - documentPointer.shouldIgnoreMove = true; - documentPointer.shouldWatchScroll = false; - documentPointer.emitter.on('pointerup', this.onDocumentPointerUp); - /* - TODO: better way to know about whether there was a selection with the pointer - */ - calendar.on('select', this.onSelect); - } - UnselectAuto.prototype.destroy = function () { - this.calendar.off('select', this.onSelect); - this.documentPointer.destroy(); - }; - return UnselectAuto; -}()); - -/* -Given an already instantiated draggable object for one-or-more elements, -Interprets any dragging as an attempt to drag an events that lives outside -of a calendar onto a calendar. -*/ -var ExternalElementDragging = /** @class */ (function () { - function ExternalElementDragging(dragging, suppliedDragMeta) { - var _this = this; - this.receivingCalendar = null; - this.droppableEvent = null; // will exist for all drags, even if create:false - this.suppliedDragMeta = null; - this.dragMeta = null; - this.handleDragStart = function (ev) { - _this.dragMeta = _this.buildDragMeta(ev.subjectEl); - }; - this.handleHitUpdate = function (hit, isFinal, ev) { - var dragging = _this.hitDragging.dragging; - var receivingCalendar = null; - var droppableEvent = null; - var isInvalid = false; - var interaction = { - affectedEvents: createEmptyEventStore(), - mutatedEvents: createEmptyEventStore(), - isEvent: _this.dragMeta.create, - origSeg: null - }; - if (hit) { - receivingCalendar = hit.component.calendar; - if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) { - droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar); - interaction.mutatedEvents = eventTupleToStore(droppableEvent); - isInvalid = !isInteractionValid(interaction, receivingCalendar); - if (isInvalid) { - interaction.mutatedEvents = createEmptyEventStore(); - droppableEvent = null; - } - } - } - _this.displayDrag(receivingCalendar, interaction); - // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?) - // TODO: wish we could somehow wait for dispatch to guarantee render - dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-mirror')); - if (!isInvalid) { - enableCursor(); - } - else { - disableCursor(); - } - if (!isFinal) { - dragging.setMirrorNeedsRevert(!droppableEvent); - _this.receivingCalendar = receivingCalendar; - _this.droppableEvent = droppableEvent; - } - }; - this.handleDragEnd = function (pev) { - var _a = _this, receivingCalendar = _a.receivingCalendar, droppableEvent = _a.droppableEvent; - _this.clearDrag(); - if (receivingCalendar && droppableEvent) { - var finalHit = _this.hitDragging.finalHit; - var finalView = finalHit.component.view; - var dragMeta = _this.dragMeta; - var arg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }); - receivingCalendar.publiclyTrigger('drop', [arg]); - if (dragMeta.create) { - receivingCalendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: eventTupleToStore(droppableEvent) - }); - if (pev.isTouch) { - receivingCalendar.dispatch({ - type: 'SELECT_EVENT', - eventInstanceId: droppableEvent.instance.instanceId - }); - } - // signal that an external event landed - receivingCalendar.publiclyTrigger('eventReceive', [ - { - draggedEl: pev.subjectEl, - event: new EventApi(receivingCalendar, droppableEvent.def, droppableEvent.instance), - view: finalView - } - ]); - } - } - _this.receivingCalendar = null; - _this.droppableEvent = null; - }; - var hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore); - hitDragging.requireInitial = false; // will start outside of a component - hitDragging.emitter.on('dragstart', this.handleDragStart); - hitDragging.emitter.on('hitupdate', this.handleHitUpdate); - hitDragging.emitter.on('dragend', this.handleDragEnd); - this.suppliedDragMeta = suppliedDragMeta; - } - ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) { - if (typeof this.suppliedDragMeta === 'object') { - return parseDragMeta(this.suppliedDragMeta); - } - else if (typeof this.suppliedDragMeta === 'function') { - return parseDragMeta(this.suppliedDragMeta(subjectEl)); - } - else { - return getDragMetaFromEl(subjectEl); - } - }; - ExternalElementDragging.prototype.displayDrag = function (nextCalendar, state) { - var prevCalendar = this.receivingCalendar; - if (prevCalendar && prevCalendar !== nextCalendar) { - prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - if (nextCalendar) { - nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state }); - } - }; - ExternalElementDragging.prototype.clearDrag = function () { - if (this.receivingCalendar) { - this.receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - }; - ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingCalendar) { - var dropAccept = receivingCalendar.opt('dropAccept'); - if (typeof dropAccept === 'function') { - return dropAccept(el); - } - else if (typeof dropAccept === 'string' && dropAccept) { - return Boolean(elementMatches(el, dropAccept)); - } - return true; - }; - return ExternalElementDragging; -}()); -// Utils for computing event store from the DragMeta -// ---------------------------------------------------------------------------------------------------- -function computeEventForDateSpan(dateSpan, dragMeta, calendar) { - var defProps = __assign({}, dragMeta.leftoverProps); - for (var _i = 0, _a = calendar.pluginSystem.hooks.externalDefTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(defProps, transform(dateSpan, dragMeta)); - } - var def = parseEventDef(defProps, dragMeta.sourceId, dateSpan.allDay, calendar.opt('forceEventDuration') || Boolean(dragMeta.duration), // hasEnd - calendar); - var start = dateSpan.range.start; - // only rely on time info if drop zone is all-day, - // otherwise, we already know the time - if (dateSpan.allDay && dragMeta.startTime) { - start = calendar.dateEnv.add(start, dragMeta.startTime); - } - var end = dragMeta.duration ? - calendar.dateEnv.add(start, dragMeta.duration) : - calendar.getDefaultEventEnd(dateSpan.allDay, start); - var instance = createEventInstance(def.defId, { start: start, end: end }); - return { def: def, instance: instance }; -} -// Utils for extracting data from element -// ---------------------------------------------------------------------------------------------------- -function getDragMetaFromEl(el) { - var str = getEmbeddedElData(el, 'event'); - var obj = str ? - JSON.parse(str) : - { create: false }; // if no embedded data, assume no event creation - return parseDragMeta(obj); -} -config.dataAttrPrefix = ''; -function getEmbeddedElData(el, name) { - var prefix = config.dataAttrPrefix; - var prefixedName = (prefix ? prefix + '-' : '') + name; - return el.getAttribute('data-' + prefixedName) || ''; -} - -/* -Makes an element (that is *external* to any calendar) draggable. -Can pass in data that determines how an event will be created when dropped onto a calendar. -Leverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system. -*/ -var ExternalDraggable = /** @class */ (function () { - function ExternalDraggable(el, settings) { - var _this = this; - if (settings === void 0) { settings = {}; } - this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay; - dragging.minDistance = - minDistance != null ? - minDistance : - (ev.isTouch ? 0 : globalDefaults.eventDragMinDistance); - dragging.delay = - ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv - (longPressDelay != null ? longPressDelay : globalDefaults.longPressDelay) : - 0; - }; - this.handleDragStart = function (ev) { - if (ev.isTouch && - _this.dragging.delay && - ev.subjectEl.classList.contains('fc-event')) { - _this.dragging.mirror.getMirrorEl().classList.add('fc-selected'); - } - }; - this.settings = settings; - var dragging = this.dragging = new FeaturefulElementDragging(el); - dragging.touchScrollAllowed = false; - if (settings.itemSelector != null) { - dragging.pointer.selector = settings.itemSelector; - } - if (settings.appendTo != null) { - dragging.mirror.parentNode = settings.appendTo; // TODO: write tests - } - dragging.emitter.on('pointerdown', this.handlePointerDown); - dragging.emitter.on('dragstart', this.handleDragStart); - new ExternalElementDragging(dragging, settings.eventData); - } - ExternalDraggable.prototype.destroy = function () { - this.dragging.destroy(); - }; - return ExternalDraggable; -}()); - -/* -Detects when a *THIRD-PARTY* drag-n-drop system interacts with elements. -The third-party system is responsible for drawing the visuals effects of the drag. -This class simply monitors for pointer movements and fires events. -It also has the ability to hide the moving element (the "mirror") during the drag. -*/ -var InferredElementDragging = /** @class */ (function (_super) { - __extends(InferredElementDragging, _super); - function InferredElementDragging(containerEl) { - var _this = _super.call(this, containerEl) || this; - _this.shouldIgnoreMove = false; - _this.mirrorSelector = ''; - _this.currentMirrorEl = null; - _this.handlePointerDown = function (ev) { - _this.emitter.trigger('pointerdown', ev); - if (!_this.shouldIgnoreMove) { - // fire dragstart right away. does not support delay or min-distance - _this.emitter.trigger('dragstart', ev); - } - }; - _this.handlePointerMove = function (ev) { - if (!_this.shouldIgnoreMove) { - _this.emitter.trigger('dragmove', ev); - } - }; - _this.handlePointerUp = function (ev) { - _this.emitter.trigger('pointerup', ev); - if (!_this.shouldIgnoreMove) { - // fire dragend right away. does not support a revert animation - _this.emitter.trigger('dragend', ev); - } - }; - var pointer = _this.pointer = new PointerDragging(containerEl); - pointer.emitter.on('pointerdown', _this.handlePointerDown); - pointer.emitter.on('pointermove', _this.handlePointerMove); - pointer.emitter.on('pointerup', _this.handlePointerUp); - return _this; - } - InferredElementDragging.prototype.destroy = function () { - this.pointer.destroy(); - }; - InferredElementDragging.prototype.setIgnoreMove = function (bool) { - this.shouldIgnoreMove = bool; - }; - InferredElementDragging.prototype.setMirrorIsVisible = function (bool) { - if (bool) { - // restore a previously hidden element. - // use the reference in case the selector class has already been removed. - if (this.currentMirrorEl) { - this.currentMirrorEl.style.visibility = ''; - this.currentMirrorEl = null; - } - } - else { - var mirrorEl = this.mirrorSelector ? - document.querySelector(this.mirrorSelector) : - null; - if (mirrorEl) { - this.currentMirrorEl = mirrorEl; - mirrorEl.style.visibility = 'hidden'; - } - } - }; - return InferredElementDragging; -}(ElementDragging)); - -/* -Bridges third-party drag-n-drop systems with FullCalendar. -Must be instantiated and destroyed by caller. -*/ -var ThirdPartyDraggable = /** @class */ (function () { - function ThirdPartyDraggable(containerOrSettings, settings) { - var containerEl = document; - if ( - // wish we could just test instanceof EventTarget, but doesn't work in IE11 - containerOrSettings === document || - containerOrSettings instanceof Element) { - containerEl = containerOrSettings; - settings = settings || {}; - } - else { - settings = (containerOrSettings || {}); - } - var dragging = this.dragging = new InferredElementDragging(containerEl); - if (typeof settings.itemSelector === 'string') { - dragging.pointer.selector = settings.itemSelector; - } - else if (containerEl === document) { - dragging.pointer.selector = '[data-event]'; - } - if (typeof settings.mirrorSelector === 'string') { - dragging.mirrorSelector = settings.mirrorSelector; - } - new ExternalElementDragging(dragging, settings.eventData); - } - ThirdPartyDraggable.prototype.destroy = function () { - this.dragging.destroy(); - }; - return ThirdPartyDraggable; -}()); - -var main = createPlugin({ - componentInteractions: [DateClicking, DateSelecting, EventDragging, EventDragging$1], - calendarInteractions: [UnselectAuto], - elementDraggingImpl: FeaturefulElementDragging -}); - -export default main; -export { ExternalDraggable as Draggable, FeaturefulElementDragging, PointerDragging, ThirdPartyDraggable }; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.js deleted file mode 100644 index 10589f2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.js +++ /dev/null @@ -1,2143 +0,0 @@ -/*! -FullCalendar Interaction Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) : - typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) : - (global = global || self, factory(global.FullCalendarInteraction = {}, global.FullCalendar)); -}(this, function (exports, core) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - core.config.touchMouseIgnoreWait = 500; - var ignoreMouseDepth = 0; - var listenerCnt = 0; - var isWindowTouchMoveCancelled = false; - /* - Uses a "pointer" abstraction, which monitors UI events for both mouse and touch. - Tracks when the pointer "drags" on a certain element, meaning down+move+up. - - Also, tracks if there was touch-scrolling. - Also, can prevent touch-scrolling from happening. - Also, can fire pointermove events when scrolling happens underneath, even when no real pointer movement. - - emits: - - pointerdown - - pointermove - - pointerup - */ - var PointerDragging = /** @class */ (function () { - function PointerDragging(containerEl) { - var _this = this; - this.subjectEl = null; - this.downEl = null; - // options that can be directly assigned by caller - this.selector = ''; // will cause subjectEl in all emitted events to be this element - this.handleSelector = ''; - this.shouldIgnoreMove = false; - this.shouldWatchScroll = true; // for simulating pointermove on scroll - // internal states - this.isDragging = false; - this.isTouchDragging = false; - this.wasTouchScroll = false; - // Mouse - // ---------------------------------------------------------------------------------------------------- - this.handleMouseDown = function (ev) { - if (!_this.shouldIgnoreMouse() && - isPrimaryMouseButton(ev) && - _this.tryStart(ev)) { - var pev = _this.createEventFromMouse(ev, true); - _this.emitter.trigger('pointerdown', pev); - _this.initScrollWatch(pev); - if (!_this.shouldIgnoreMove) { - document.addEventListener('mousemove', _this.handleMouseMove); - } - document.addEventListener('mouseup', _this.handleMouseUp); - } - }; - this.handleMouseMove = function (ev) { - var pev = _this.createEventFromMouse(ev); - _this.recordCoords(pev); - _this.emitter.trigger('pointermove', pev); - }; - this.handleMouseUp = function (ev) { - document.removeEventListener('mousemove', _this.handleMouseMove); - document.removeEventListener('mouseup', _this.handleMouseUp); - _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev)); - _this.cleanup(); // call last so that pointerup has access to props - }; - // Touch - // ---------------------------------------------------------------------------------------------------- - this.handleTouchStart = function (ev) { - if (_this.tryStart(ev)) { - _this.isTouchDragging = true; - var pev = _this.createEventFromTouch(ev, true); - _this.emitter.trigger('pointerdown', pev); - _this.initScrollWatch(pev); - // unlike mouse, need to attach to target, not document - // https://stackoverflow.com/a/45760014 - var target = ev.target; - if (!_this.shouldIgnoreMove) { - target.addEventListener('touchmove', _this.handleTouchMove); - } - target.addEventListener('touchend', _this.handleTouchEnd); - target.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end - // attach a handler to get called when ANY scroll action happens on the page. - // this was impossible to do with normal on/off because 'scroll' doesn't bubble. - // http://stackoverflow.com/a/32954565/96342 - window.addEventListener('scroll', _this.handleTouchScroll, true // useCapture - ); - } - }; - this.handleTouchMove = function (ev) { - var pev = _this.createEventFromTouch(ev); - _this.recordCoords(pev); - _this.emitter.trigger('pointermove', pev); - }; - this.handleTouchEnd = function (ev) { - if (_this.isDragging) { // done to guard against touchend followed by touchcancel - var target = ev.target; - target.removeEventListener('touchmove', _this.handleTouchMove); - target.removeEventListener('touchend', _this.handleTouchEnd); - target.removeEventListener('touchcancel', _this.handleTouchEnd); - window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true - _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev)); - _this.cleanup(); // call last so that pointerup has access to props - _this.isTouchDragging = false; - startIgnoringMouse(); - } - }; - this.handleTouchScroll = function () { - _this.wasTouchScroll = true; - }; - this.handleScroll = function (ev) { - if (!_this.shouldIgnoreMove) { - var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX; - var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY; - _this.emitter.trigger('pointermove', { - origEvent: ev, - isTouch: _this.isTouchDragging, - subjectEl: _this.subjectEl, - pageX: pageX, - pageY: pageY, - deltaX: pageX - _this.origPageX, - deltaY: pageY - _this.origPageY - }); - } - }; - this.containerEl = containerEl; - this.emitter = new core.EmitterMixin(); - containerEl.addEventListener('mousedown', this.handleMouseDown); - containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true }); - listenerCreated(); - } - PointerDragging.prototype.destroy = function () { - this.containerEl.removeEventListener('mousedown', this.handleMouseDown); - this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true }); - listenerDestroyed(); - }; - PointerDragging.prototype.tryStart = function (ev) { - var subjectEl = this.querySubjectEl(ev); - var downEl = ev.target; - if (subjectEl && - (!this.handleSelector || core.elementClosest(downEl, this.handleSelector))) { - this.subjectEl = subjectEl; - this.downEl = downEl; - this.isDragging = true; // do this first so cancelTouchScroll will work - this.wasTouchScroll = false; - return true; - } - return false; - }; - PointerDragging.prototype.cleanup = function () { - isWindowTouchMoveCancelled = false; - this.isDragging = false; - this.subjectEl = null; - this.downEl = null; - // keep wasTouchScroll around for later access - this.destroyScrollWatch(); - }; - PointerDragging.prototype.querySubjectEl = function (ev) { - if (this.selector) { - return core.elementClosest(ev.target, this.selector); - } - else { - return this.containerEl; - } - }; - PointerDragging.prototype.shouldIgnoreMouse = function () { - return ignoreMouseDepth || this.isTouchDragging; - }; - // can be called by user of this class, to cancel touch-based scrolling for the current drag - PointerDragging.prototype.cancelTouchScroll = function () { - if (this.isDragging) { - isWindowTouchMoveCancelled = true; - } - }; - // Scrolling that simulates pointermoves - // ---------------------------------------------------------------------------------------------------- - PointerDragging.prototype.initScrollWatch = function (ev) { - if (this.shouldWatchScroll) { - this.recordCoords(ev); - window.addEventListener('scroll', this.handleScroll, true); // useCapture=true - } - }; - PointerDragging.prototype.recordCoords = function (ev) { - if (this.shouldWatchScroll) { - this.prevPageX = ev.pageX; - this.prevPageY = ev.pageY; - this.prevScrollX = window.pageXOffset; - this.prevScrollY = window.pageYOffset; - } - }; - PointerDragging.prototype.destroyScrollWatch = function () { - if (this.shouldWatchScroll) { - window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true - } - }; - // Event Normalization - // ---------------------------------------------------------------------------------------------------- - PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) { - var deltaX = 0; - var deltaY = 0; - // TODO: repeat code - if (isFirst) { - this.origPageX = ev.pageX; - this.origPageY = ev.pageY; - } - else { - deltaX = ev.pageX - this.origPageX; - deltaY = ev.pageY - this.origPageY; - } - return { - origEvent: ev, - isTouch: false, - subjectEl: this.subjectEl, - pageX: ev.pageX, - pageY: ev.pageY, - deltaX: deltaX, - deltaY: deltaY - }; - }; - PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) { - var touches = ev.touches; - var pageX; - var pageY; - var deltaX = 0; - var deltaY = 0; - // if touch coords available, prefer, - // because FF would give bad ev.pageX ev.pageY - if (touches && touches.length) { - pageX = touches[0].pageX; - pageY = touches[0].pageY; - } - else { - pageX = ev.pageX; - pageY = ev.pageY; - } - // TODO: repeat code - if (isFirst) { - this.origPageX = pageX; - this.origPageY = pageY; - } - else { - deltaX = pageX - this.origPageX; - deltaY = pageY - this.origPageY; - } - return { - origEvent: ev, - isTouch: true, - subjectEl: this.subjectEl, - pageX: pageX, - pageY: pageY, - deltaX: deltaX, - deltaY: deltaY - }; - }; - return PointerDragging; - }()); - // Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) - function isPrimaryMouseButton(ev) { - return ev.button === 0 && !ev.ctrlKey; - } - // Ignoring fake mouse events generated by touch - // ---------------------------------------------------------------------------------------------------- - function startIgnoringMouse() { - ignoreMouseDepth++; - setTimeout(function () { - ignoreMouseDepth--; - }, core.config.touchMouseIgnoreWait); - } - // We want to attach touchmove as early as possible for Safari - // ---------------------------------------------------------------------------------------------------- - function listenerCreated() { - if (!(listenerCnt++)) { - window.addEventListener('touchmove', onWindowTouchMove, { passive: false }); - } - } - function listenerDestroyed() { - if (!(--listenerCnt)) { - window.removeEventListener('touchmove', onWindowTouchMove, { passive: false }); - } - } - function onWindowTouchMove(ev) { - if (isWindowTouchMoveCancelled) { - ev.preventDefault(); - } - } - - /* - An effect in which an element follows the movement of a pointer across the screen. - The moving element is a clone of some other element. - Must call start + handleMove + stop. - */ - var ElementMirror = /** @class */ (function () { - function ElementMirror() { - this.isVisible = false; // must be explicitly enabled - this.sourceEl = null; - this.mirrorEl = null; - this.sourceElRect = null; // screen coords relative to viewport - // options that can be set directly by caller - this.parentNode = document.body; - this.zIndex = 9999; - this.revertDuration = 0; - } - ElementMirror.prototype.start = function (sourceEl, pageX, pageY) { - this.sourceEl = sourceEl; - this.sourceElRect = this.sourceEl.getBoundingClientRect(); - this.origScreenX = pageX - window.pageXOffset; - this.origScreenY = pageY - window.pageYOffset; - this.deltaX = 0; - this.deltaY = 0; - this.updateElPosition(); - }; - ElementMirror.prototype.handleMove = function (pageX, pageY) { - this.deltaX = (pageX - window.pageXOffset) - this.origScreenX; - this.deltaY = (pageY - window.pageYOffset) - this.origScreenY; - this.updateElPosition(); - }; - // can be called before start - ElementMirror.prototype.setIsVisible = function (bool) { - if (bool) { - if (!this.isVisible) { - if (this.mirrorEl) { - this.mirrorEl.style.display = ''; - } - this.isVisible = bool; // needs to happen before updateElPosition - this.updateElPosition(); // because was not updating the position while invisible - } - } - else { - if (this.isVisible) { - if (this.mirrorEl) { - this.mirrorEl.style.display = 'none'; - } - this.isVisible = bool; - } - } - }; - // always async - ElementMirror.prototype.stop = function (needsRevertAnimation, callback) { - var _this = this; - var done = function () { - _this.cleanup(); - callback(); - }; - if (needsRevertAnimation && - this.mirrorEl && - this.isVisible && - this.revertDuration && // if 0, transition won't work - (this.deltaX || this.deltaY) // if same coords, transition won't work - ) { - this.doRevertAnimation(done, this.revertDuration); - } - else { - setTimeout(done, 0); - } - }; - ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) { - var mirrorEl = this.mirrorEl; - var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened - mirrorEl.style.transition = - 'top ' + revertDuration + 'ms,' + - 'left ' + revertDuration + 'ms'; - core.applyStyle(mirrorEl, { - left: finalSourceElRect.left, - top: finalSourceElRect.top - }); - core.whenTransitionDone(mirrorEl, function () { - mirrorEl.style.transition = ''; - callback(); - }); - }; - ElementMirror.prototype.cleanup = function () { - if (this.mirrorEl) { - core.removeElement(this.mirrorEl); - this.mirrorEl = null; - } - this.sourceEl = null; - }; - ElementMirror.prototype.updateElPosition = function () { - if (this.sourceEl && this.isVisible) { - core.applyStyle(this.getMirrorEl(), { - left: this.sourceElRect.left + this.deltaX, - top: this.sourceElRect.top + this.deltaY - }); - } - }; - ElementMirror.prototype.getMirrorEl = function () { - var sourceElRect = this.sourceElRect; - var mirrorEl = this.mirrorEl; - if (!mirrorEl) { - mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true - // we don't want long taps or any mouse interaction causing selection/menus. - // would use preventSelection(), but that prevents selectstart, causing problems. - mirrorEl.classList.add('fc-unselectable'); - mirrorEl.classList.add('fc-dragging'); - core.applyStyle(mirrorEl, { - position: 'fixed', - zIndex: this.zIndex, - visibility: '', - boxSizing: 'border-box', - width: sourceElRect.right - sourceElRect.left, - height: sourceElRect.bottom - sourceElRect.top, - right: 'auto', - bottom: 'auto', - margin: 0 - }); - this.parentNode.appendChild(mirrorEl); - } - return mirrorEl; - }; - return ElementMirror; - }()); - - /* - Is a cache for a given element's scroll information (all the info that ScrollController stores) - in addition the "client rectangle" of the element.. the area within the scrollbars. - - The cache can be in one of two modes: - - doesListening:false - ignores when the container is scrolled by someone else - - doesListening:true - watch for scrolling and update the cache - */ - var ScrollGeomCache = /** @class */ (function (_super) { - __extends(ScrollGeomCache, _super); - function ScrollGeomCache(scrollController, doesListening) { - var _this = _super.call(this) || this; - _this.handleScroll = function () { - _this.scrollTop = _this.scrollController.getScrollTop(); - _this.scrollLeft = _this.scrollController.getScrollLeft(); - _this.handleScrollChange(); - }; - _this.scrollController = scrollController; - _this.doesListening = doesListening; - _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop(); - _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft(); - _this.scrollWidth = scrollController.getScrollWidth(); - _this.scrollHeight = scrollController.getScrollHeight(); - _this.clientWidth = scrollController.getClientWidth(); - _this.clientHeight = scrollController.getClientHeight(); - _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values - if (_this.doesListening) { - _this.getEventTarget().addEventListener('scroll', _this.handleScroll); - } - return _this; - } - ScrollGeomCache.prototype.destroy = function () { - if (this.doesListening) { - this.getEventTarget().removeEventListener('scroll', this.handleScroll); - } - }; - ScrollGeomCache.prototype.getScrollTop = function () { - return this.scrollTop; - }; - ScrollGeomCache.prototype.getScrollLeft = function () { - return this.scrollLeft; - }; - ScrollGeomCache.prototype.setScrollTop = function (top) { - this.scrollController.setScrollTop(top); - if (!this.doesListening) { - // we are not relying on the element to normalize out-of-bounds scroll values - // so we need to sanitize ourselves - this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0); - this.handleScrollChange(); - } - }; - ScrollGeomCache.prototype.setScrollLeft = function (top) { - this.scrollController.setScrollLeft(top); - if (!this.doesListening) { - // we are not relying on the element to normalize out-of-bounds scroll values - // so we need to sanitize ourselves - this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0); - this.handleScrollChange(); - } - }; - ScrollGeomCache.prototype.getClientWidth = function () { - return this.clientWidth; - }; - ScrollGeomCache.prototype.getClientHeight = function () { - return this.clientHeight; - }; - ScrollGeomCache.prototype.getScrollWidth = function () { - return this.scrollWidth; - }; - ScrollGeomCache.prototype.getScrollHeight = function () { - return this.scrollHeight; - }; - ScrollGeomCache.prototype.handleScrollChange = function () { - }; - return ScrollGeomCache; - }(core.ScrollController)); - var ElementScrollGeomCache = /** @class */ (function (_super) { - __extends(ElementScrollGeomCache, _super); - function ElementScrollGeomCache(el, doesListening) { - return _super.call(this, new core.ElementScrollController(el), doesListening) || this; - } - ElementScrollGeomCache.prototype.getEventTarget = function () { - return this.scrollController.el; - }; - ElementScrollGeomCache.prototype.computeClientRect = function () { - return core.computeInnerRect(this.scrollController.el); - }; - return ElementScrollGeomCache; - }(ScrollGeomCache)); - var WindowScrollGeomCache = /** @class */ (function (_super) { - __extends(WindowScrollGeomCache, _super); - function WindowScrollGeomCache(doesListening) { - return _super.call(this, new core.WindowScrollController(), doesListening) || this; - } - WindowScrollGeomCache.prototype.getEventTarget = function () { - return window; - }; - WindowScrollGeomCache.prototype.computeClientRect = function () { - return { - left: this.scrollLeft, - right: this.scrollLeft + this.clientWidth, - top: this.scrollTop, - bottom: this.scrollTop + this.clientHeight - }; - }; - // the window is the only scroll object that changes it's rectangle relative - // to the document's topleft as it scrolls - WindowScrollGeomCache.prototype.handleScrollChange = function () { - this.clientRect = this.computeClientRect(); - }; - return WindowScrollGeomCache; - }(ScrollGeomCache)); - - // If available we are using native "performance" API instead of "Date" - // Read more about it on MDN: - // https://developer.mozilla.org/en-US/docs/Web/API/Performance - var getTime = typeof performance === 'function' ? performance.now : Date.now; - /* - For a pointer interaction, automatically scrolls certain scroll containers when the pointer - approaches the edge. - - The caller must call start + handleMove + stop. - */ - var AutoScroller = /** @class */ (function () { - function AutoScroller() { - var _this = this; - // options that can be set by caller - this.isEnabled = true; - this.scrollQuery = [window, '.fc-scroller']; - this.edgeThreshold = 50; // pixels - this.maxVelocity = 300; // pixels per second - // internal state - this.pointerScreenX = null; - this.pointerScreenY = null; - this.isAnimating = false; - this.scrollCaches = null; - // protect against the initial pointerdown being too close to an edge and starting the scroll - this.everMovedUp = false; - this.everMovedDown = false; - this.everMovedLeft = false; - this.everMovedRight = false; - this.animate = function () { - if (_this.isAnimating) { // wasn't cancelled between animation calls - var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset); - if (edge) { - var now = getTime(); - _this.handleSide(edge, (now - _this.msSinceRequest) / 1000); - _this.requestAnimation(now); - } - else { - _this.isAnimating = false; // will stop animation - } - } - }; - } - AutoScroller.prototype.start = function (pageX, pageY) { - if (this.isEnabled) { - this.scrollCaches = this.buildCaches(); - this.pointerScreenX = null; - this.pointerScreenY = null; - this.everMovedUp = false; - this.everMovedDown = false; - this.everMovedLeft = false; - this.everMovedRight = false; - this.handleMove(pageX, pageY); - } - }; - AutoScroller.prototype.handleMove = function (pageX, pageY) { - if (this.isEnabled) { - var pointerScreenX = pageX - window.pageXOffset; - var pointerScreenY = pageY - window.pageYOffset; - var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY; - var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX; - if (yDelta < 0) { - this.everMovedUp = true; - } - else if (yDelta > 0) { - this.everMovedDown = true; - } - if (xDelta < 0) { - this.everMovedLeft = true; - } - else if (xDelta > 0) { - this.everMovedRight = true; - } - this.pointerScreenX = pointerScreenX; - this.pointerScreenY = pointerScreenY; - if (!this.isAnimating) { - this.isAnimating = true; - this.requestAnimation(getTime()); - } - } - }; - AutoScroller.prototype.stop = function () { - if (this.isEnabled) { - this.isAnimating = false; // will stop animation - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - scrollCache.destroy(); - } - this.scrollCaches = null; - } - }; - AutoScroller.prototype.requestAnimation = function (now) { - this.msSinceRequest = now; - requestAnimationFrame(this.animate); - }; - AutoScroller.prototype.handleSide = function (edge, seconds) { - var scrollCache = edge.scrollCache; - var edgeThreshold = this.edgeThreshold; - var invDistance = edgeThreshold - edge.distance; - var velocity = // the closer to the edge, the faster we scroll - (invDistance * invDistance) / (edgeThreshold * edgeThreshold) * // quadratic - this.maxVelocity * seconds; - var sign = 1; - switch (edge.name) { - case 'left': - sign = -1; - // falls through - case 'right': - scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign); - break; - case 'top': - sign = -1; - // falls through - case 'bottom': - scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign); - break; - } - }; - // left/top are relative to document topleft - AutoScroller.prototype.computeBestEdge = function (left, top) { - var edgeThreshold = this.edgeThreshold; - var bestSide = null; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - var rect = scrollCache.clientRect; - var leftDist = left - rect.left; - var rightDist = rect.right - left; - var topDist = top - rect.top; - var bottomDist = rect.bottom - top; - // completely within the rect? - if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) { - if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() && - (!bestSide || bestSide.distance > topDist)) { - bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist }; - } - if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() && - (!bestSide || bestSide.distance > bottomDist)) { - bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist }; - } - if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() && - (!bestSide || bestSide.distance > leftDist)) { - bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist }; - } - if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() && - (!bestSide || bestSide.distance > rightDist)) { - bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist }; - } - } - } - return bestSide; - }; - AutoScroller.prototype.buildCaches = function () { - return this.queryScrollEls().map(function (el) { - if (el === window) { - return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls - } - else { - return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls - } - }); - }; - AutoScroller.prototype.queryScrollEls = function () { - var els = []; - for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) { - var query = _a[_i]; - if (typeof query === 'object') { - els.push(query); - } - else { - els.push.apply(els, Array.prototype.slice.call(document.querySelectorAll(query))); - } - } - return els; - }; - return AutoScroller; - }()); - - /* - Monitors dragging on an element. Has a number of high-level features: - - minimum distance required before dragging - - minimum wait time ("delay") before dragging - - a mirror element that follows the pointer - */ - var FeaturefulElementDragging = /** @class */ (function (_super) { - __extends(FeaturefulElementDragging, _super); - function FeaturefulElementDragging(containerEl) { - var _this = _super.call(this, containerEl) || this; - // options that can be directly set by caller - // the caller can also set the PointerDragging's options as well - _this.delay = null; - _this.minDistance = 0; - _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag - _this.mirrorNeedsRevert = false; - _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup - _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation - _this.isDelayEnded = false; - _this.isDistanceSurpassed = false; - _this.delayTimeoutId = null; - _this.onPointerDown = function (ev) { - if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going - _this.isInteracting = true; - _this.isDelayEnded = false; - _this.isDistanceSurpassed = false; - core.preventSelection(document.body); - core.preventContextMenu(document.body); - // prevent links from being visited if there's an eventual drag. - // also prevents selection in older browsers (maybe?). - // not necessary for touch, besides, browser would complain about passiveness. - if (!ev.isTouch) { - ev.origEvent.preventDefault(); - } - _this.emitter.trigger('pointerdown', ev); - if (!_this.pointer.shouldIgnoreMove) { - // actions related to initiating dragstart+dragmove+dragend... - _this.mirror.setIsVisible(false); // reset. caller must set-visible - _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down - _this.startDelay(ev); - if (!_this.minDistance) { - _this.handleDistanceSurpassed(ev); - } - } - } - }; - _this.onPointerMove = function (ev) { - if (_this.isInteracting) { // if false, still waiting for previous drag's revert - _this.emitter.trigger('pointermove', ev); - if (!_this.isDistanceSurpassed) { - var minDistance = _this.minDistance; - var distanceSq = void 0; // current distance from the origin, squared - var deltaX = ev.deltaX, deltaY = ev.deltaY; - distanceSq = deltaX * deltaX + deltaY * deltaY; - if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem - _this.handleDistanceSurpassed(ev); - } - } - if (_this.isDragging) { - // a real pointer move? (not one simulated by scrolling) - if (ev.origEvent.type !== 'scroll') { - _this.mirror.handleMove(ev.pageX, ev.pageY); - _this.autoScroller.handleMove(ev.pageX, ev.pageY); - } - _this.emitter.trigger('dragmove', ev); - } - } - }; - _this.onPointerUp = function (ev) { - if (_this.isInteracting) { // if false, still waiting for previous drag's revert - _this.isInteracting = false; - core.allowSelection(document.body); - core.allowContextMenu(document.body); - _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert - if (_this.isDragging) { - _this.autoScroller.stop(); - _this.tryStopDrag(ev); // which will stop the mirror - } - if (_this.delayTimeoutId) { - clearTimeout(_this.delayTimeoutId); - _this.delayTimeoutId = null; - } - } - }; - var pointer = _this.pointer = new PointerDragging(containerEl); - pointer.emitter.on('pointerdown', _this.onPointerDown); - pointer.emitter.on('pointermove', _this.onPointerMove); - pointer.emitter.on('pointerup', _this.onPointerUp); - _this.mirror = new ElementMirror(); - _this.autoScroller = new AutoScroller(); - return _this; - } - FeaturefulElementDragging.prototype.destroy = function () { - this.pointer.destroy(); - }; - FeaturefulElementDragging.prototype.startDelay = function (ev) { - var _this = this; - if (typeof this.delay === 'number') { - this.delayTimeoutId = setTimeout(function () { - _this.delayTimeoutId = null; - _this.handleDelayEnd(ev); - }, this.delay); // not assignable to number! - } - else { - this.handleDelayEnd(ev); - } - }; - FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) { - this.isDelayEnded = true; - this.tryStartDrag(ev); - }; - FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) { - this.isDistanceSurpassed = true; - this.tryStartDrag(ev); - }; - FeaturefulElementDragging.prototype.tryStartDrag = function (ev) { - if (this.isDelayEnded && this.isDistanceSurpassed) { - if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) { - this.isDragging = true; - this.mirrorNeedsRevert = false; - this.autoScroller.start(ev.pageX, ev.pageY); - this.emitter.trigger('dragstart', ev); - if (this.touchScrollAllowed === false) { - this.pointer.cancelTouchScroll(); - } - } - } - }; - FeaturefulElementDragging.prototype.tryStopDrag = function (ev) { - // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events - // that come from the document to fire beforehand. much more convenient this way. - this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev) // bound with args - ); - }; - FeaturefulElementDragging.prototype.stopDrag = function (ev) { - this.isDragging = false; - this.emitter.trigger('dragend', ev); - }; - // fill in the implementations... - FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) { - this.pointer.shouldIgnoreMove = bool; - }; - FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) { - this.mirror.setIsVisible(bool); - }; - FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) { - this.mirrorNeedsRevert = bool; - }; - FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) { - this.autoScroller.isEnabled = bool; - }; - return FeaturefulElementDragging; - }(core.ElementDragging)); - - /* - When this class is instantiated, it records the offset of an element (relative to the document topleft), - and continues to monitor scrolling, updating the cached coordinates if it needs to. - Does not access the DOM after instantiation, so highly performant. - - Also keeps track of all scrolling/overflow:hidden containers that are parents of the given element - and an determine if a given point is inside the combined clipping rectangle. - */ - var OffsetTracker = /** @class */ (function () { - function OffsetTracker(el) { - this.origRect = core.computeRect(el); - // will work fine for divs that have overflow:hidden - this.scrollCaches = core.getClippingParents(el).map(function (el) { - return new ElementScrollGeomCache(el, true); // listen=true - }); - } - OffsetTracker.prototype.destroy = function () { - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - scrollCache.destroy(); - } - }; - OffsetTracker.prototype.computeLeft = function () { - var left = this.origRect.left; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - left += scrollCache.origScrollLeft - scrollCache.getScrollLeft(); - } - return left; - }; - OffsetTracker.prototype.computeTop = function () { - var top = this.origRect.top; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - top += scrollCache.origScrollTop - scrollCache.getScrollTop(); - } - return top; - }; - OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) { - var point = { left: pageX, top: pageY }; - for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) { - var scrollCache = _a[_i]; - if (!isIgnoredClipping(scrollCache.getEventTarget()) && - !core.pointInsideRect(point, scrollCache.clientRect)) { - return false; - } - } - return true; - }; - return OffsetTracker; - }()); - // certain clipping containers should never constrain interactions, like and - // https://github.com/fullcalendar/fullcalendar/issues/3615 - function isIgnoredClipping(node) { - var tagName = node.tagName; - return tagName === 'HTML' || tagName === 'BODY'; - } - - /* - Tracks movement over multiple droppable areas (aka "hits") - that exist in one or more DateComponents. - Relies on an existing draggable. - - emits: - - pointerdown - - dragstart - - hitchange - fires initially, even if not over a hit - - pointerup - - (hitchange - again, to null, if ended over a hit) - - dragend - */ - var HitDragging = /** @class */ (function () { - function HitDragging(dragging, droppableStore) { - var _this = this; - // options that can be set by caller - this.useSubjectCenter = false; - this.requireInitial = true; // if doesn't start out on a hit, won't emit any events - this.initialHit = null; - this.movingHit = null; - this.finalHit = null; // won't ever be populated if shouldIgnoreMove - this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - _this.initialHit = null; - _this.movingHit = null; - _this.finalHit = null; - _this.prepareHits(); - _this.processFirstCoord(ev); - if (_this.initialHit || !_this.requireInitial) { - dragging.setIgnoreMove(false); - _this.emitter.trigger('pointerdown', ev); // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :( - } - else { - dragging.setIgnoreMove(true); - } - }; - this.handleDragStart = function (ev) { - _this.emitter.trigger('dragstart', ev); - _this.handleMove(ev, true); // force = fire even if initially null - }; - this.handleDragMove = function (ev) { - _this.emitter.trigger('dragmove', ev); - _this.handleMove(ev); - }; - this.handlePointerUp = function (ev) { - _this.releaseHits(); - _this.emitter.trigger('pointerup', ev); - }; - this.handleDragEnd = function (ev) { - if (_this.movingHit) { - _this.emitter.trigger('hitupdate', null, true, ev); - } - _this.finalHit = _this.movingHit; - _this.movingHit = null; - _this.emitter.trigger('dragend', ev); - }; - this.droppableStore = droppableStore; - dragging.emitter.on('pointerdown', this.handlePointerDown); - dragging.emitter.on('dragstart', this.handleDragStart); - dragging.emitter.on('dragmove', this.handleDragMove); - dragging.emitter.on('pointerup', this.handlePointerUp); - dragging.emitter.on('dragend', this.handleDragEnd); - this.dragging = dragging; - this.emitter = new core.EmitterMixin(); - } - // sets initialHit - // sets coordAdjust - HitDragging.prototype.processFirstCoord = function (ev) { - var origPoint = { left: ev.pageX, top: ev.pageY }; - var adjustedPoint = origPoint; - var subjectEl = ev.subjectEl; - var subjectRect; - if (subjectEl !== document) { - subjectRect = core.computeRect(subjectEl); - adjustedPoint = core.constrainPoint(adjustedPoint, subjectRect); - } - var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top); - if (initialHit) { - if (this.useSubjectCenter && subjectRect) { - var slicedSubjectRect = core.intersectRects(subjectRect, initialHit.rect); - if (slicedSubjectRect) { - adjustedPoint = core.getRectCenter(slicedSubjectRect); - } - } - this.coordAdjust = core.diffPoints(adjustedPoint, origPoint); - } - else { - this.coordAdjust = { left: 0, top: 0 }; - } - }; - HitDragging.prototype.handleMove = function (ev, forceHandle) { - var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top); - if (forceHandle || !isHitsEqual(this.movingHit, hit)) { - this.movingHit = hit; - this.emitter.trigger('hitupdate', hit, false, ev); - } - }; - HitDragging.prototype.prepareHits = function () { - this.offsetTrackers = core.mapHash(this.droppableStore, function (interactionSettings) { - interactionSettings.component.buildPositionCaches(); - return new OffsetTracker(interactionSettings.el); - }); - }; - HitDragging.prototype.releaseHits = function () { - var offsetTrackers = this.offsetTrackers; - for (var id in offsetTrackers) { - offsetTrackers[id].destroy(); - } - this.offsetTrackers = {}; - }; - HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) { - var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers; - var bestHit = null; - for (var id in droppableStore) { - var component = droppableStore[id].component; - var offsetTracker = offsetTrackers[id]; - if (offsetTracker.isWithinClipping(offsetLeft, offsetTop)) { - var originLeft = offsetTracker.computeLeft(); - var originTop = offsetTracker.computeTop(); - var positionLeft = offsetLeft - originLeft; - var positionTop = offsetTop - originTop; - var origRect = offsetTracker.origRect; - var width = origRect.right - origRect.left; - var height = origRect.bottom - origRect.top; - if ( - // must be within the element's bounds - positionLeft >= 0 && positionLeft < width && - positionTop >= 0 && positionTop < height) { - var hit = component.queryHit(positionLeft, positionTop, width, height); - if (hit && - ( - // make sure the hit is within activeRange, meaning it's not a deal cell - !component.props.dateProfile || // hack for DayTile - core.rangeContainsRange(component.props.dateProfile.activeRange, hit.dateSpan.range)) && - (!bestHit || hit.layer > bestHit.layer)) { - // TODO: better way to re-orient rectangle - hit.rect.left += originLeft; - hit.rect.right += originLeft; - hit.rect.top += originTop; - hit.rect.bottom += originTop; - bestHit = hit; - } - } - } - } - return bestHit; - }; - return HitDragging; - }()); - function isHitsEqual(hit0, hit1) { - if (!hit0 && !hit1) { - return true; - } - if (Boolean(hit0) !== Boolean(hit1)) { - return false; - } - return core.isDateSpansEqual(hit0.dateSpan, hit1.dateSpan); - } - - /* - Monitors when the user clicks on a specific date/time of a component. - A pointerdown+pointerup on the same "hit" constitutes a click. - */ - var DateClicking = /** @class */ (function (_super) { - __extends(DateClicking, _super); - function DateClicking(settings) { - var _this = _super.call(this, settings) || this; - _this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired - dragging.setIgnoreMove(!_this.component.isValidDateDownEl(dragging.pointer.downEl)); - }; - // won't even fire if moving was ignored - _this.handleDragEnd = function (ev) { - var component = _this.component; - var pointer = _this.dragging.pointer; - if (!pointer.wasTouchScroll) { - var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit; - if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) { - component.calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, component.view, ev.origEvent); - } - } - }; - var component = settings.component; - // we DO want to watch pointer moves because otherwise finalHit won't get populated - _this.dragging = new FeaturefulElementDragging(component.el); - _this.dragging.autoScroller.isEnabled = false; - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - DateClicking.prototype.destroy = function () { - this.dragging.destroy(); - }; - return DateClicking; - }(core.Interaction)); - - /* - Tracks when the user selects a portion of time of a component, - constituted by a drag over date cells, with a possible delay at the beginning of the drag. - */ - var DateSelecting = /** @class */ (function (_super) { - __extends(DateSelecting, _super); - function DateSelecting(settings) { - var _this = _super.call(this, settings) || this; - _this.dragSelection = null; - _this.handlePointerDown = function (ev) { - var _a = _this, component = _a.component, dragging = _a.dragging; - var canSelect = component.opt('selectable') && - component.isValidDateDownEl(ev.origEvent.target); - // don't bother to watch expensive moves if component won't do selection - dragging.setIgnoreMove(!canSelect); - // if touch, require user to hold down - dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null; - }; - _this.handleDragStart = function (ev) { - _this.component.calendar.unselect(ev); // unselect previous selections - }; - _this.handleHitUpdate = function (hit, isFinal) { - var calendar = _this.component.calendar; - var dragSelection = null; - var isInvalid = false; - if (hit) { - dragSelection = joinHitsIntoSelection(_this.hitDragging.initialHit, hit, calendar.pluginSystem.hooks.dateSelectionTransformers); - if (!dragSelection || !_this.component.isDateSelectionValid(dragSelection)) { - isInvalid = true; - dragSelection = null; - } - } - if (dragSelection) { - calendar.dispatch({ type: 'SELECT_DATES', selection: dragSelection }); - } - else if (!isFinal) { // only unselect if moved away while dragging - calendar.dispatch({ type: 'UNSELECT_DATES' }); - } - if (!isInvalid) { - core.enableCursor(); - } - else { - core.disableCursor(); - } - if (!isFinal) { - _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging - } - }; - _this.handlePointerUp = function (pev) { - if (_this.dragSelection) { - // selection is already rendered, so just need to report selection - _this.component.calendar.triggerDateSelect(_this.dragSelection, pev); - _this.dragSelection = null; - } - }; - var component = settings.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.touchScrollAllowed = false; - dragging.minDistance = component.opt('selectMinDistance') || 0; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('pointerup', _this.handlePointerUp); - return _this; - } - DateSelecting.prototype.destroy = function () { - this.dragging.destroy(); - }; - return DateSelecting; - }(core.Interaction)); - function getComponentTouchDelay(component) { - var delay = component.opt('selectLongPressDelay'); - if (delay == null) { - delay = component.opt('longPressDelay'); - } - return delay; - } - function joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) { - var dateSpan0 = hit0.dateSpan; - var dateSpan1 = hit1.dateSpan; - var ms = [ - dateSpan0.range.start, - dateSpan0.range.end, - dateSpan1.range.start, - dateSpan1.range.end - ]; - ms.sort(core.compareNumbers); - var props = {}; - for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) { - var transformer = dateSelectionTransformers_1[_i]; - var res = transformer(hit0, hit1); - if (res === false) { - return null; - } - else if (res) { - __assign(props, res); - } - } - props.range = { start: ms[0], end: ms[3] }; - props.allDay = dateSpan0.allDay; - return props; - } - - var EventDragging = /** @class */ (function (_super) { - __extends(EventDragging, _super); - function EventDragging(settings) { - var _this = _super.call(this, settings) || this; - // internal state - _this.subjectSeg = null; // the seg being selected/dragged - _this.isDragging = false; - _this.eventRange = null; - _this.relevantEvents = null; // the events being dragged - _this.receivingCalendar = null; - _this.validMutation = null; - _this.mutatedRelevantEvents = null; - _this.handlePointerDown = function (ev) { - var origTarget = ev.origEvent.target; - var _a = _this, component = _a.component, dragging = _a.dragging; - var mirror = dragging.mirror; - var initialCalendar = component.calendar; - var subjectSeg = _this.subjectSeg = core.getElSeg(ev.subjectEl); - var eventRange = _this.eventRange = subjectSeg.eventRange; - var eventInstanceId = eventRange.instance.instanceId; - _this.relevantEvents = core.getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId); - dragging.minDistance = ev.isTouch ? 0 : component.opt('eventDragMinDistance'); - dragging.delay = - // only do a touch delay if touch and this event hasn't been selected yet - (ev.isTouch && eventInstanceId !== component.props.eventSelection) ? - getComponentTouchDelay$1(component) : - null; - mirror.parentNode = initialCalendar.el; - mirror.revertDuration = component.opt('dragRevertDuration'); - var isValid = component.isValidSegDownEl(origTarget) && - !core.elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer - dragging.setIgnoreMove(!isValid); - // disable dragging for elements that are resizable (ie, selectable) - // but are not draggable - _this.isDragging = isValid && - ev.subjectEl.classList.contains('fc-draggable'); - }; - _this.handleDragStart = function (ev) { - var initialCalendar = _this.component.calendar; - var eventRange = _this.eventRange; - var eventInstanceId = eventRange.instance.instanceId; - if (ev.isTouch) { - // need to select a different event? - if (eventInstanceId !== _this.component.props.eventSelection) { - initialCalendar.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId }); - } - } - else { - // if now using mouse, but was previous touch interaction, clear selected event - initialCalendar.dispatch({ type: 'UNSELECT_EVENT' }); - } - if (_this.isDragging) { - initialCalendar.unselect(ev); // unselect *date* selection - initialCalendar.publiclyTrigger('eventDragStart', [ - { - el: _this.subjectSeg.el, - event: new core.EventApi(initialCalendar, eventRange.def, eventRange.instance), - jsEvent: ev.origEvent, - view: _this.component.view - } - ]); - } - }; - _this.handleHitUpdate = function (hit, isFinal) { - if (!_this.isDragging) { - return; - } - var relevantEvents = _this.relevantEvents; - var initialHit = _this.hitDragging.initialHit; - var initialCalendar = _this.component.calendar; - // states based on new hit - var receivingCalendar = null; - var mutation = null; - var mutatedRelevantEvents = null; - var isInvalid = false; - var interaction = { - affectedEvents: relevantEvents, - mutatedEvents: core.createEmptyEventStore(), - isEvent: true, - origSeg: _this.subjectSeg - }; - if (hit) { - var receivingComponent = hit.component; - receivingCalendar = receivingComponent.calendar; - if (initialCalendar === receivingCalendar || - receivingComponent.opt('editable') && receivingComponent.opt('droppable')) { - mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers); - if (mutation) { - mutatedRelevantEvents = core.applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar); - interaction.mutatedEvents = mutatedRelevantEvents; - if (!receivingComponent.isInteractionValid(interaction)) { - isInvalid = true; - mutation = null; - mutatedRelevantEvents = null; - interaction.mutatedEvents = core.createEmptyEventStore(); - } - } - } - else { - receivingCalendar = null; - } - } - _this.displayDrag(receivingCalendar, interaction); - if (!isInvalid) { - core.enableCursor(); - } - else { - core.disableCursor(); - } - if (!isFinal) { - if (initialCalendar === receivingCalendar && // TODO: write test for this - isHitsEqual(initialHit, hit)) { - mutation = null; - } - _this.dragging.setMirrorNeedsRevert(!mutation); - // render the mirror if no already-rendered mirror - // TODO: wish we could somehow wait for dispatch to guarantee render - _this.dragging.setMirrorIsVisible(!hit || !document.querySelector('.fc-mirror')); - // assign states based on new hit - _this.receivingCalendar = receivingCalendar; - _this.validMutation = mutation; - _this.mutatedRelevantEvents = mutatedRelevantEvents; - } - }; - _this.handlePointerUp = function () { - if (!_this.isDragging) { - _this.cleanup(); // because handleDragEnd won't fire - } - }; - _this.handleDragEnd = function (ev) { - if (_this.isDragging) { - var initialCalendar_1 = _this.component.calendar; - var initialView = _this.component.view; - var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation; - var eventDef = _this.eventRange.def; - var eventInstance = _this.eventRange.instance; - var eventApi = new core.EventApi(initialCalendar_1, eventDef, eventInstance); - var relevantEvents_1 = _this.relevantEvents; - var mutatedRelevantEvents = _this.mutatedRelevantEvents; - var finalHit = _this.hitDragging.finalHit; - _this.clearDrag(); // must happen after revert animation - initialCalendar_1.publiclyTrigger('eventDragStop', [ - { - el: _this.subjectSeg.el, - event: eventApi, - jsEvent: ev.origEvent, - view: initialView - } - ]); - if (validMutation) { - // dropped within same calendar - if (receivingCalendar === initialCalendar_1) { - initialCalendar_1.dispatch({ - type: 'MERGE_EVENTS', - eventStore: mutatedRelevantEvents - }); - var transformed = {}; - for (var _i = 0, _b = initialCalendar_1.pluginSystem.hooks.eventDropTransformers; _i < _b.length; _i++) { - var transformer = _b[_i]; - __assign(transformed, transformer(validMutation, initialCalendar_1)); - } - var eventDropArg = __assign({}, transformed, { el: ev.subjectEl, delta: validMutation.datesDelta, oldEvent: eventApi, event: new core.EventApi(// the data AFTER the mutation - initialCalendar_1, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), revert: function () { - initialCalendar_1.dispatch({ - type: 'MERGE_EVENTS', - eventStore: relevantEvents_1 - }); - }, jsEvent: ev.origEvent, view: initialView }); - initialCalendar_1.publiclyTrigger('eventDrop', [eventDropArg]); - // dropped in different calendar - } - else if (receivingCalendar) { - initialCalendar_1.publiclyTrigger('eventLeave', [ - { - draggedEl: ev.subjectEl, - event: eventApi, - view: initialView - } - ]); - initialCalendar_1.dispatch({ - type: 'REMOVE_EVENT_INSTANCES', - instances: _this.mutatedRelevantEvents.instances - }); - receivingCalendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: _this.mutatedRelevantEvents - }); - if (ev.isTouch) { - receivingCalendar.dispatch({ - type: 'SELECT_EVENT', - eventInstanceId: eventInstance.instanceId - }); - } - var dropArg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component // should this be finalHit.component.view? See #4644 - }); - receivingCalendar.publiclyTrigger('drop', [dropArg]); - receivingCalendar.publiclyTrigger('eventReceive', [ - { - draggedEl: ev.subjectEl, - event: new core.EventApi(// the data AFTER the mutation - receivingCalendar, mutatedRelevantEvents.defs[eventDef.defId], mutatedRelevantEvents.instances[eventInstance.instanceId]), - view: finalHit.component // should this be finalHit.component.view? See #4644 - } - ]); - } - } - else { - initialCalendar_1.publiclyTrigger('_noEventDrop'); - } - } - _this.cleanup(); - }; - var component = _this.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.pointer.selector = EventDragging.SELECTOR; - dragging.touchScrollAllowed = false; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsStore); - hitDragging.useSubjectCenter = settings.useEventCenter; - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('pointerup', _this.handlePointerUp); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - EventDragging.prototype.destroy = function () { - this.dragging.destroy(); - }; - // render a drag state on the next receivingCalendar - EventDragging.prototype.displayDrag = function (nextCalendar, state) { - var initialCalendar = this.component.calendar; - var prevCalendar = this.receivingCalendar; - // does the previous calendar need to be cleared? - if (prevCalendar && prevCalendar !== nextCalendar) { - // does the initial calendar need to be cleared? - // if so, don't clear all the way. we still need to to hide the affectedEvents - if (prevCalendar === initialCalendar) { - prevCalendar.dispatch({ - type: 'SET_EVENT_DRAG', - state: { - affectedEvents: state.affectedEvents, - mutatedEvents: core.createEmptyEventStore(), - isEvent: true, - origSeg: state.origSeg - } - }); - // completely clear the old calendar if it wasn't the initial - } - else { - prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - } - if (nextCalendar) { - nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state }); - } - }; - EventDragging.prototype.clearDrag = function () { - var initialCalendar = this.component.calendar; - var receivingCalendar = this.receivingCalendar; - if (receivingCalendar) { - receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - // the initial calendar might have an dummy drag state from displayDrag - if (initialCalendar !== receivingCalendar) { - initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - }; - EventDragging.prototype.cleanup = function () { - this.subjectSeg = null; - this.isDragging = false; - this.eventRange = null; - this.relevantEvents = null; - this.receivingCalendar = null; - this.validMutation = null; - this.mutatedRelevantEvents = null; - }; - EventDragging.SELECTOR = '.fc-draggable, .fc-resizable'; // TODO: test this in IE11 - return EventDragging; - }(core.Interaction)); - function computeEventMutation(hit0, hit1, massagers) { - var dateSpan0 = hit0.dateSpan; - var dateSpan1 = hit1.dateSpan; - var date0 = dateSpan0.range.start; - var date1 = dateSpan1.range.start; - var standardProps = {}; - if (dateSpan0.allDay !== dateSpan1.allDay) { - standardProps.allDay = dateSpan1.allDay; - standardProps.hasEnd = hit1.component.opt('allDayMaintainDuration'); - if (dateSpan1.allDay) { - // means date1 is already start-of-day, - // but date0 needs to be converted - date0 = core.startOfDay(date0); - } - } - var delta = core.diffDates(date0, date1, hit0.component.dateEnv, hit0.component === hit1.component ? - hit0.component.largeUnit : - null); - if (delta.milliseconds) { // has hours/minutes/seconds - standardProps.allDay = false; - } - var mutation = { - datesDelta: delta, - standardProps: standardProps - }; - for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) { - var massager = massagers_1[_i]; - massager(mutation, hit0, hit1); - } - return mutation; - } - function getComponentTouchDelay$1(component) { - var delay = component.opt('eventLongPressDelay'); - if (delay == null) { - delay = component.opt('longPressDelay'); - } - return delay; - } - - var EventDragging$1 = /** @class */ (function (_super) { - __extends(EventDragging, _super); - function EventDragging(settings) { - var _this = _super.call(this, settings) || this; - // internal state - _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg? - _this.eventRange = null; - _this.relevantEvents = null; - _this.validMutation = null; - _this.mutatedRelevantEvents = null; - _this.handlePointerDown = function (ev) { - var component = _this.component; - var seg = _this.querySeg(ev); - var eventRange = _this.eventRange = seg.eventRange; - _this.dragging.minDistance = component.opt('eventDragMinDistance'); - // if touch, need to be working with a selected event - _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) || - (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId)); - }; - _this.handleDragStart = function (ev) { - var calendar = _this.component.calendar; - var eventRange = _this.eventRange; - _this.relevantEvents = core.getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId); - _this.draggingSeg = _this.querySeg(ev); - calendar.unselect(); - calendar.publiclyTrigger('eventResizeStart', [ - { - el: _this.draggingSeg.el, - event: new core.EventApi(calendar, eventRange.def, eventRange.instance), - jsEvent: ev.origEvent, - view: _this.component.view - } - ]); - }; - _this.handleHitUpdate = function (hit, isFinal, ev) { - var calendar = _this.component.calendar; - var relevantEvents = _this.relevantEvents; - var initialHit = _this.hitDragging.initialHit; - var eventInstance = _this.eventRange.instance; - var mutation = null; - var mutatedRelevantEvents = null; - var isInvalid = false; - var interaction = { - affectedEvents: relevantEvents, - mutatedEvents: core.createEmptyEventStore(), - isEvent: true, - origSeg: _this.draggingSeg - }; - if (hit) { - mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-start-resizer'), eventInstance.range, calendar.pluginSystem.hooks.eventResizeJoinTransforms); - } - if (mutation) { - mutatedRelevantEvents = core.applyMutationToEventStore(relevantEvents, calendar.eventUiBases, mutation, calendar); - interaction.mutatedEvents = mutatedRelevantEvents; - if (!_this.component.isInteractionValid(interaction)) { - isInvalid = true; - mutation = null; - mutatedRelevantEvents = null; - interaction.mutatedEvents = null; - } - } - if (mutatedRelevantEvents) { - calendar.dispatch({ - type: 'SET_EVENT_RESIZE', - state: interaction - }); - } - else { - calendar.dispatch({ type: 'UNSET_EVENT_RESIZE' }); - } - if (!isInvalid) { - core.enableCursor(); - } - else { - core.disableCursor(); - } - if (!isFinal) { - if (mutation && isHitsEqual(initialHit, hit)) { - mutation = null; - } - _this.validMutation = mutation; - _this.mutatedRelevantEvents = mutatedRelevantEvents; - } - }; - _this.handleDragEnd = function (ev) { - var calendar = _this.component.calendar; - var view = _this.component.view; - var eventDef = _this.eventRange.def; - var eventInstance = _this.eventRange.instance; - var eventApi = new core.EventApi(calendar, eventDef, eventInstance); - var relevantEvents = _this.relevantEvents; - var mutatedRelevantEvents = _this.mutatedRelevantEvents; - calendar.publiclyTrigger('eventResizeStop', [ - { - el: _this.draggingSeg.el, - event: eventApi, - jsEvent: ev.origEvent, - view: view - } - ]); - if (_this.validMutation) { - calendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: mutatedRelevantEvents - }); - calendar.publiclyTrigger('eventResize', [ - { - el: _this.draggingSeg.el, - startDelta: _this.validMutation.startDelta || core.createDuration(0), - endDelta: _this.validMutation.endDelta || core.createDuration(0), - prevEvent: eventApi, - event: new core.EventApi(// the data AFTER the mutation - calendar, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), - revert: function () { - calendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: relevantEvents - }); - }, - jsEvent: ev.origEvent, - view: view - } - ]); - } - else { - calendar.publiclyTrigger('_noEventResize'); - } - // reset all internal state - _this.draggingSeg = null; - _this.relevantEvents = null; - _this.validMutation = null; - // okay to keep eventInstance around. useful to set it in handlePointerDown - }; - var component = settings.component; - var dragging = _this.dragging = new FeaturefulElementDragging(component.el); - dragging.pointer.selector = '.fc-resizer'; - dragging.touchScrollAllowed = false; - dragging.autoScroller.isEnabled = component.opt('dragScroll'); - var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsToStore(settings)); - hitDragging.emitter.on('pointerdown', _this.handlePointerDown); - hitDragging.emitter.on('dragstart', _this.handleDragStart); - hitDragging.emitter.on('hitupdate', _this.handleHitUpdate); - hitDragging.emitter.on('dragend', _this.handleDragEnd); - return _this; - } - EventDragging.prototype.destroy = function () { - this.dragging.destroy(); - }; - EventDragging.prototype.querySeg = function (ev) { - return core.getElSeg(core.elementClosest(ev.subjectEl, this.component.fgSegSelector)); - }; - return EventDragging; - }(core.Interaction)); - function computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) { - var dateEnv = hit0.component.dateEnv; - var date0 = hit0.dateSpan.range.start; - var date1 = hit1.dateSpan.range.start; - var delta = core.diffDates(date0, date1, dateEnv, hit0.component.largeUnit); - var props = {}; - for (var _i = 0, transforms_1 = transforms; _i < transforms_1.length; _i++) { - var transform = transforms_1[_i]; - var res = transform(hit0, hit1); - if (res === false) { - return null; - } - else if (res) { - __assign(props, res); - } - } - if (isFromStart) { - if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) { - props.startDelta = delta; - return props; - } - } - else { - if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) { - props.endDelta = delta; - return props; - } - } - return null; - } - - var UnselectAuto = /** @class */ (function () { - function UnselectAuto(calendar) { - var _this = this; - this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system - this.onSelect = function (selectInfo) { - if (selectInfo.jsEvent) { - _this.isRecentPointerDateSelect = true; - } - }; - this.onDocumentPointerUp = function (pev) { - var _a = _this, calendar = _a.calendar, documentPointer = _a.documentPointer; - var state = calendar.state; - // touch-scrolling should never unfocus any type of selection - if (!documentPointer.wasTouchScroll) { - if (state.dateSelection && // an existing date selection? - !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp? - ) { - var unselectAuto = calendar.viewOpt('unselectAuto'); - var unselectCancel = calendar.viewOpt('unselectCancel'); - if (unselectAuto && (!unselectAuto || !core.elementClosest(documentPointer.downEl, unselectCancel))) { - calendar.unselect(pev); - } - } - if (state.eventSelection && // an existing event selected? - !core.elementClosest(documentPointer.downEl, EventDragging.SELECTOR) // interaction DIDN'T start on an event - ) { - calendar.dispatch({ type: 'UNSELECT_EVENT' }); - } - } - _this.isRecentPointerDateSelect = false; - }; - this.calendar = calendar; - var documentPointer = this.documentPointer = new PointerDragging(document); - documentPointer.shouldIgnoreMove = true; - documentPointer.shouldWatchScroll = false; - documentPointer.emitter.on('pointerup', this.onDocumentPointerUp); - /* - TODO: better way to know about whether there was a selection with the pointer - */ - calendar.on('select', this.onSelect); - } - UnselectAuto.prototype.destroy = function () { - this.calendar.off('select', this.onSelect); - this.documentPointer.destroy(); - }; - return UnselectAuto; - }()); - - /* - Given an already instantiated draggable object for one-or-more elements, - Interprets any dragging as an attempt to drag an events that lives outside - of a calendar onto a calendar. - */ - var ExternalElementDragging = /** @class */ (function () { - function ExternalElementDragging(dragging, suppliedDragMeta) { - var _this = this; - this.receivingCalendar = null; - this.droppableEvent = null; // will exist for all drags, even if create:false - this.suppliedDragMeta = null; - this.dragMeta = null; - this.handleDragStart = function (ev) { - _this.dragMeta = _this.buildDragMeta(ev.subjectEl); - }; - this.handleHitUpdate = function (hit, isFinal, ev) { - var dragging = _this.hitDragging.dragging; - var receivingCalendar = null; - var droppableEvent = null; - var isInvalid = false; - var interaction = { - affectedEvents: core.createEmptyEventStore(), - mutatedEvents: core.createEmptyEventStore(), - isEvent: _this.dragMeta.create, - origSeg: null - }; - if (hit) { - receivingCalendar = hit.component.calendar; - if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) { - droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar); - interaction.mutatedEvents = core.eventTupleToStore(droppableEvent); - isInvalid = !core.isInteractionValid(interaction, receivingCalendar); - if (isInvalid) { - interaction.mutatedEvents = core.createEmptyEventStore(); - droppableEvent = null; - } - } - } - _this.displayDrag(receivingCalendar, interaction); - // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?) - // TODO: wish we could somehow wait for dispatch to guarantee render - dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-mirror')); - if (!isInvalid) { - core.enableCursor(); - } - else { - core.disableCursor(); - } - if (!isFinal) { - dragging.setMirrorNeedsRevert(!droppableEvent); - _this.receivingCalendar = receivingCalendar; - _this.droppableEvent = droppableEvent; - } - }; - this.handleDragEnd = function (pev) { - var _a = _this, receivingCalendar = _a.receivingCalendar, droppableEvent = _a.droppableEvent; - _this.clearDrag(); - if (receivingCalendar && droppableEvent) { - var finalHit = _this.hitDragging.finalHit; - var finalView = finalHit.component.view; - var dragMeta = _this.dragMeta; - var arg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }); - receivingCalendar.publiclyTrigger('drop', [arg]); - if (dragMeta.create) { - receivingCalendar.dispatch({ - type: 'MERGE_EVENTS', - eventStore: core.eventTupleToStore(droppableEvent) - }); - if (pev.isTouch) { - receivingCalendar.dispatch({ - type: 'SELECT_EVENT', - eventInstanceId: droppableEvent.instance.instanceId - }); - } - // signal that an external event landed - receivingCalendar.publiclyTrigger('eventReceive', [ - { - draggedEl: pev.subjectEl, - event: new core.EventApi(receivingCalendar, droppableEvent.def, droppableEvent.instance), - view: finalView - } - ]); - } - } - _this.receivingCalendar = null; - _this.droppableEvent = null; - }; - var hitDragging = this.hitDragging = new HitDragging(dragging, core.interactionSettingsStore); - hitDragging.requireInitial = false; // will start outside of a component - hitDragging.emitter.on('dragstart', this.handleDragStart); - hitDragging.emitter.on('hitupdate', this.handleHitUpdate); - hitDragging.emitter.on('dragend', this.handleDragEnd); - this.suppliedDragMeta = suppliedDragMeta; - } - ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) { - if (typeof this.suppliedDragMeta === 'object') { - return core.parseDragMeta(this.suppliedDragMeta); - } - else if (typeof this.suppliedDragMeta === 'function') { - return core.parseDragMeta(this.suppliedDragMeta(subjectEl)); - } - else { - return getDragMetaFromEl(subjectEl); - } - }; - ExternalElementDragging.prototype.displayDrag = function (nextCalendar, state) { - var prevCalendar = this.receivingCalendar; - if (prevCalendar && prevCalendar !== nextCalendar) { - prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - if (nextCalendar) { - nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state }); - } - }; - ExternalElementDragging.prototype.clearDrag = function () { - if (this.receivingCalendar) { - this.receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' }); - } - }; - ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingCalendar) { - var dropAccept = receivingCalendar.opt('dropAccept'); - if (typeof dropAccept === 'function') { - return dropAccept(el); - } - else if (typeof dropAccept === 'string' && dropAccept) { - return Boolean(core.elementMatches(el, dropAccept)); - } - return true; - }; - return ExternalElementDragging; - }()); - // Utils for computing event store from the DragMeta - // ---------------------------------------------------------------------------------------------------- - function computeEventForDateSpan(dateSpan, dragMeta, calendar) { - var defProps = __assign({}, dragMeta.leftoverProps); - for (var _i = 0, _a = calendar.pluginSystem.hooks.externalDefTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(defProps, transform(dateSpan, dragMeta)); - } - var def = core.parseEventDef(defProps, dragMeta.sourceId, dateSpan.allDay, calendar.opt('forceEventDuration') || Boolean(dragMeta.duration), // hasEnd - calendar); - var start = dateSpan.range.start; - // only rely on time info if drop zone is all-day, - // otherwise, we already know the time - if (dateSpan.allDay && dragMeta.startTime) { - start = calendar.dateEnv.add(start, dragMeta.startTime); - } - var end = dragMeta.duration ? - calendar.dateEnv.add(start, dragMeta.duration) : - calendar.getDefaultEventEnd(dateSpan.allDay, start); - var instance = core.createEventInstance(def.defId, { start: start, end: end }); - return { def: def, instance: instance }; - } - // Utils for extracting data from element - // ---------------------------------------------------------------------------------------------------- - function getDragMetaFromEl(el) { - var str = getEmbeddedElData(el, 'event'); - var obj = str ? - JSON.parse(str) : - { create: false }; // if no embedded data, assume no event creation - return core.parseDragMeta(obj); - } - core.config.dataAttrPrefix = ''; - function getEmbeddedElData(el, name) { - var prefix = core.config.dataAttrPrefix; - var prefixedName = (prefix ? prefix + '-' : '') + name; - return el.getAttribute('data-' + prefixedName) || ''; - } - - /* - Makes an element (that is *external* to any calendar) draggable. - Can pass in data that determines how an event will be created when dropped onto a calendar. - Leverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system. - */ - var ExternalDraggable = /** @class */ (function () { - function ExternalDraggable(el, settings) { - var _this = this; - if (settings === void 0) { settings = {}; } - this.handlePointerDown = function (ev) { - var dragging = _this.dragging; - var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay; - dragging.minDistance = - minDistance != null ? - minDistance : - (ev.isTouch ? 0 : core.globalDefaults.eventDragMinDistance); - dragging.delay = - ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv - (longPressDelay != null ? longPressDelay : core.globalDefaults.longPressDelay) : - 0; - }; - this.handleDragStart = function (ev) { - if (ev.isTouch && - _this.dragging.delay && - ev.subjectEl.classList.contains('fc-event')) { - _this.dragging.mirror.getMirrorEl().classList.add('fc-selected'); - } - }; - this.settings = settings; - var dragging = this.dragging = new FeaturefulElementDragging(el); - dragging.touchScrollAllowed = false; - if (settings.itemSelector != null) { - dragging.pointer.selector = settings.itemSelector; - } - if (settings.appendTo != null) { - dragging.mirror.parentNode = settings.appendTo; // TODO: write tests - } - dragging.emitter.on('pointerdown', this.handlePointerDown); - dragging.emitter.on('dragstart', this.handleDragStart); - new ExternalElementDragging(dragging, settings.eventData); - } - ExternalDraggable.prototype.destroy = function () { - this.dragging.destroy(); - }; - return ExternalDraggable; - }()); - - /* - Detects when a *THIRD-PARTY* drag-n-drop system interacts with elements. - The third-party system is responsible for drawing the visuals effects of the drag. - This class simply monitors for pointer movements and fires events. - It also has the ability to hide the moving element (the "mirror") during the drag. - */ - var InferredElementDragging = /** @class */ (function (_super) { - __extends(InferredElementDragging, _super); - function InferredElementDragging(containerEl) { - var _this = _super.call(this, containerEl) || this; - _this.shouldIgnoreMove = false; - _this.mirrorSelector = ''; - _this.currentMirrorEl = null; - _this.handlePointerDown = function (ev) { - _this.emitter.trigger('pointerdown', ev); - if (!_this.shouldIgnoreMove) { - // fire dragstart right away. does not support delay or min-distance - _this.emitter.trigger('dragstart', ev); - } - }; - _this.handlePointerMove = function (ev) { - if (!_this.shouldIgnoreMove) { - _this.emitter.trigger('dragmove', ev); - } - }; - _this.handlePointerUp = function (ev) { - _this.emitter.trigger('pointerup', ev); - if (!_this.shouldIgnoreMove) { - // fire dragend right away. does not support a revert animation - _this.emitter.trigger('dragend', ev); - } - }; - var pointer = _this.pointer = new PointerDragging(containerEl); - pointer.emitter.on('pointerdown', _this.handlePointerDown); - pointer.emitter.on('pointermove', _this.handlePointerMove); - pointer.emitter.on('pointerup', _this.handlePointerUp); - return _this; - } - InferredElementDragging.prototype.destroy = function () { - this.pointer.destroy(); - }; - InferredElementDragging.prototype.setIgnoreMove = function (bool) { - this.shouldIgnoreMove = bool; - }; - InferredElementDragging.prototype.setMirrorIsVisible = function (bool) { - if (bool) { - // restore a previously hidden element. - // use the reference in case the selector class has already been removed. - if (this.currentMirrorEl) { - this.currentMirrorEl.style.visibility = ''; - this.currentMirrorEl = null; - } - } - else { - var mirrorEl = this.mirrorSelector ? - document.querySelector(this.mirrorSelector) : - null; - if (mirrorEl) { - this.currentMirrorEl = mirrorEl; - mirrorEl.style.visibility = 'hidden'; - } - } - }; - return InferredElementDragging; - }(core.ElementDragging)); - - /* - Bridges third-party drag-n-drop systems with FullCalendar. - Must be instantiated and destroyed by caller. - */ - var ThirdPartyDraggable = /** @class */ (function () { - function ThirdPartyDraggable(containerOrSettings, settings) { - var containerEl = document; - if ( - // wish we could just test instanceof EventTarget, but doesn't work in IE11 - containerOrSettings === document || - containerOrSettings instanceof Element) { - containerEl = containerOrSettings; - settings = settings || {}; - } - else { - settings = (containerOrSettings || {}); - } - var dragging = this.dragging = new InferredElementDragging(containerEl); - if (typeof settings.itemSelector === 'string') { - dragging.pointer.selector = settings.itemSelector; - } - else if (containerEl === document) { - dragging.pointer.selector = '[data-event]'; - } - if (typeof settings.mirrorSelector === 'string') { - dragging.mirrorSelector = settings.mirrorSelector; - } - new ExternalElementDragging(dragging, settings.eventData); - } - ThirdPartyDraggable.prototype.destroy = function () { - this.dragging.destroy(); - }; - return ThirdPartyDraggable; - }()); - - var main = core.createPlugin({ - componentInteractions: [DateClicking, DateSelecting, EventDragging, EventDragging$1], - calendarInteractions: [UnselectAuto], - elementDraggingImpl: FeaturefulElementDragging - }); - - exports.Draggable = ExternalDraggable; - exports.FeaturefulElementDragging = FeaturefulElementDragging; - exports.PointerDragging = PointerDragging; - exports.ThirdPartyDraggable = ThirdPartyDraggable; - exports.default = main; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.min.js deleted file mode 100644 index 7a36731..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar-interaction/main.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -FullCalendar Interaction Plugin v4.3.0 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarInteraction={},e.FullCalendar)}(this,function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function r(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(this.everMovedDown=!0),o<0?this.everMovedLeft=!0:o>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(p()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e=0&&c>=0&&d>=0&&g>=0&&(d<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>d)&&(r={scrollCache:a,name:"top",distance:d}),g<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>g)&&(r={scrollCache:a,name:"bottom",distance:g}),s<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>s)&&(r={scrollCache:a,name:"left",distance:s}),c<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>c)&&(r={scrollCache:a,name:"right",distance:c}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map(function(e){return e===window?new h(!1):new u(e,!1)})},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&("scroll"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger("dragmove",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,t.allowSelection(document.body),t.allowContextMenu(document.body),r.emitter.trigger("pointerup",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var i=r.pointer=new s(n);return i.emitter.on("pointerdown",r.onPointerDown),i.emitter.on("pointermove",r.onPointerMove),i.emitter.on("pointerup",r.onPointerUp),r.mirror=new d,r.autoScroller=new v,r}return r(n,e),n.prototype.destroy=function(){this.pointer.destroy()},n.prototype.startDelay=function(e){var t=this;"number"==typeof this.delay?this.delayTimeoutId=setTimeout(function(){t.delayTimeoutId=null,t.handleDelayEnd(e)},this.delay):this.handleDelayEnd(e)},n.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},n.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},n.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger("dragstart",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},n.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},n.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger("dragend",e)},n.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},n.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},n.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},n.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},n}(t.ElementDragging),E=function(){function e(e){this.origRect=t.computeRect(e),this.scrollCaches=t.getClippingParents(e).map(function(e){return new u(e,!0)})}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e=0&&g=0&&uo.layer)||(f.rect.left+=c,f.rect.right+=c,f.rect.top+=d,f.rect.bottom+=d,o=f)}}}return o},e}();function S(e,n){return!e&&!n||Boolean(e)===Boolean(n)&&t.isDateSpansEqual(e.dateSpan,n.dateSpan)}var y=function(e){function n(n){var r=e.call(this,n)||this;r.handlePointerDown=function(e){var t=r.dragging;t.setIgnoreMove(!r.component.isValidDateDownEl(t.pointer.downEl))},r.handleDragEnd=function(e){var t=r.component;if(!r.dragging.pointer.wasTouchScroll){var n=r.hitDragging,i=n.initialHit,o=n.finalHit;i&&o&&S(i,o)&&t.calendar.triggerDateClick(i.dateSpan,i.dayEl,t.view,e.origEvent)}};var i=n.component;r.dragging=new f(i.el),r.dragging.autoScroller.isEnabled=!1;var o=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return o.emitter.on("pointerdown",r.handlePointerDown),o.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n}(t.Interaction),D=function(e){function n(n){var r=e.call(this,n)||this;r.dragSelection=null,r.handlePointerDown=function(e){var t=r,n=t.component,i=t.dragging,o=n.opt("selectable")&&n.isValidDateDownEl(e.origEvent.target);i.setIgnoreMove(!o),i.delay=e.isTouch?function(e){var t=e.opt("selectLongPressDelay");null==t&&(t=e.opt("longPressDelay"));return t}(n):null},r.handleDragStart=function(e){r.component.calendar.unselect(e)},r.handleHitUpdate=function(e,n){var o=r.component.calendar,a=null,l=!1;e&&((a=function(e,n,r){var o=e.dateSpan,a=n.dateSpan,l=[o.range.start,o.range.end,a.range.start,a.range.end];l.sort(t.compareNumbers);for(var s={},c=0,d=r;co.start)return g.endDelta=d,g;return null}(s,e,o.subjectEl.classList.contains("fc-start-resizer"),c.range,a.pluginSystem.hooks.eventResizeJoinTransforms)),d&&(g=t.applyMutationToEventStore(l,a.eventUiBases,d,a),h.mutatedEvents=g,r.component.isInteractionValid(h)||(u=!0,d=null,g=null,h.mutatedEvents=null)),g?a.dispatch({type:"SET_EVENT_RESIZE",state:h}):a.dispatch({type:"UNSET_EVENT_RESIZE"}),u?t.disableCursor():t.enableCursor(),n||(d&&S(s,e)&&(d=null),r.validMutation=d,r.mutatedRelevantEvents=g)},r.handleDragEnd=function(e){var n=r.component.calendar,i=r.component.view,o=r.eventRange.def,a=r.eventRange.instance,l=new t.EventApi(n,o,a),s=r.relevantEvents,c=r.mutatedRelevantEvents;n.publiclyTrigger("eventResizeStop",[{el:r.draggingSeg.el,event:l,jsEvent:e.origEvent,view:i}]),r.validMutation?(n.dispatch({type:"MERGE_EVENTS",eventStore:c}),n.publiclyTrigger("eventResize",[{el:r.draggingSeg.el,startDelta:r.validMutation.startDelta||t.createDuration(0),endDelta:r.validMutation.endDelta||t.createDuration(0),prevEvent:l,event:new t.EventApi(n,c.defs[o.defId],a?c.instances[a.instanceId]:null),revert:function(){n.dispatch({type:"MERGE_EVENTS",eventStore:s})},jsEvent:e.origEvent,view:i}])):n.publiclyTrigger("_noEventResize"),r.draggingSeg=null,r.relevantEvents=null,r.validMutation=null};var o=n.component,a=r.dragging=new f(o.el);a.pointer.selector=".fc-resizer",a.touchScrollAllowed=!1,a.autoScroller.isEnabled=o.opt("dragScroll");var l=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return l.emitter.on("pointerdown",r.handlePointerDown),l.emitter.on("dragstart",r.handleDragStart),l.emitter.on("hitupdate",r.handleHitUpdate),l.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n.prototype.querySeg=function(e){return t.getElSeg(t.elementClosest(e.subjectEl,this.component.fgSegSelector))},n}(t.Interaction);var M=function(){function e(e){var n=this;this.isRecentPointerDateSelect=!1,this.onSelect=function(e){e.jsEvent&&(n.isRecentPointerDateSelect=!0)},this.onDocumentPointerUp=function(e){var r=n,i=r.calendar,o=r.documentPointer,a=i.state;if(!o.wasTouchScroll){if(a.dateSelection&&!n.isRecentPointerDateSelect){var l=i.viewOpt("unselectAuto"),s=i.viewOpt("unselectCancel");!l||l&&t.elementClosest(o.downEl,s)||i.unselect(e)}a.eventSelection&&!t.elementClosest(o.downEl,w.SELECTOR)&&i.dispatch({type:"UNSELECT_EVENT"})}n.isRecentPointerDateSelect=!1},this.calendar=e;var r=this.documentPointer=new s(document);r.shouldIgnoreMove=!0,r.shouldWatchScroll=!1,r.emitter.on("pointerup",this.onDocumentPointerUp),e.on("select",this.onSelect)}return e.prototype.destroy=function(){this.calendar.off("select",this.onSelect),this.documentPointer.destroy()},e}(),b=function(){function e(e,n){var r=this;this.receivingCalendar=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){r.dragMeta=r.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,n,o){var a=r.hitDragging.dragging,l=null,s=null,c=!1,d={affectedEvents:t.createEmptyEventStore(),mutatedEvents:t.createEmptyEventStore(),isEvent:r.dragMeta.create,origSeg:null};e&&(l=e.component.calendar,r.canDropElOnCalendar(o.subjectEl,l)&&(s=function(e,n,r){for(var o=i({},n.leftoverProps),a=0,l=r.pluginSystem.hooks.externalDefTransforms;a
    • ',o.rootBgContainerEl=i.querySelector(".fc-bg"),o.slatContainerEl=i.querySelector(".fc-slats"),o.bottomRuleEl=i.querySelector(".fc-divider"),o.renderProps=n,o}return n(i,e),i.prototype.processOptions=function(){var e,r,i=this.opt("slotDuration"),n=this.opt("snapDuration");i=t.createDuration(i),n=n?t.createDuration(n):i,null===(e=t.wholeDivideDurations(i,n))&&(n=i,e=1),this.slotDuration=i,this.snapDuration=n,this.snapsPerSlot=e,r=this.opt("slotLabelFormat"),Array.isArray(r)&&(r=r[r.length-1]),this.labelFormat=t.createFormatter(r||{hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"}),r=this.opt("slotLabelInterval"),this.labelInterval=r?t.createDuration(r):this.computeLabelInterval(i)},i.prototype.computeLabelInterval=function(e){var r,i,n;for(r=u.length-1;r>=0;r--)if(i=t.createDuration(u[r]),null!==(n=t.wholeDivideDurations(i,e))&&n>1)return i;return e},i.prototype.render=function(e){var t=e.cells;this.colCnt=t.length,this.renderSlats(e.dateProfile),this.renderColumns(e.cells,e.dateProfile),this.renderBusinessHours(e.businessHourSegs),this.renderDateSelection(e.dateSelectionSegs),this.renderFgEvents(e.fgEventSegs),this.renderBgEvents(e.bgEventSegs),this.renderEventSelection(e.eventSelection),this.renderEventDrag(e.eventDrag),this.renderEventResize(e.eventResize)},i.prototype.destroy=function(){e.prototype.destroy.call(this),this.renderSlats.unrender(),this.renderColumns.unrender()},i.prototype.updateSize=function(e){var t=this.fillRenderer,r=this.eventRenderer,i=this.mirrorRenderer;(e||this.isSlatSizesDirty)&&(this.buildSlatPositions(),this.isSlatSizesDirty=!1),(e||this.isColSizesDirty)&&(this.buildColPositions(),this.isColSizesDirty=!1),t.computeSizes(e),r.computeSizes(e),i.computeSizes(e),t.assignSizes(e),r.assignSizes(e),i.assignSizes(e)},i.prototype._renderSlats=function(e){var r=this.theme;this.slatContainerEl.innerHTML=''+this.renderSlatRowHtml(e)+"
      ",this.slatEls=t.findElements(this.slatContainerEl,"tr"),this.slatPositions=new t.PositionCache(this.el,this.slatEls,!1,!0),this.isSlatSizesDirty=!0},i.prototype.renderSlatRowHtml=function(e){for(var r,i,n,o=this.dateEnv,s=this.theme,a=this.isRtl,l="",d=t.startOfDay(e.renderRange.start),c=e.minTime,h=t.createDuration(0);t.asRoughMs(c)'+(i?""+t.htmlEscape(o.format(r,this.labelFormat))+"":"")+"",l+='"+(a?"":n)+''+(a?n:"")+"",c=t.addDurations(c,this.slotDuration),h=t.addDurations(h,this.slotDuration);return l},i.prototype._renderColumns=function(e,i){var n=this.theme,o=this.dateEnv,s=this.view,a=new r.DayBgRow(this.context);this.rootBgContainerEl.innerHTML=''+a.renderHtml({cells:e,dateProfile:i,renderIntroHtml:this.renderProps.renderBgIntroHtml})+"
      ",this.colEls=t.findElements(this.el,".fc-day, .fc-disabled-day");for(var l=0;l
      ');this.isRtl&&r.reverse(),e=this.contentSkeletonEl=t.htmlToElement('
      '+r.join("")+"
      "),this.colContainerEls=t.findElements(e,".fc-content-col"),this.mirrorContainerEls=t.findElements(e,".fc-mirror-container"),this.fgContainerEls=t.findElements(e,".fc-event-container:not(.fc-mirror-container)"),this.bgContainerEls=t.findElements(e,".fc-bgevent-container"),this.highlightContainerEls=t.findElements(e,".fc-highlight-container"),this.businessContainerEls=t.findElements(e,".fc-business-container"),this.isRtl&&(this.colContainerEls.reverse(),this.mirrorContainerEls.reverse(),this.fgContainerEls.reverse(),this.bgContainerEls.reverse(),this.highlightContainerEls.reverse(),this.businessContainerEls.reverse()),this.el.appendChild(e)},i.prototype.unrenderContentSkeleton=function(){t.removeElement(this.contentSkeletonEl)},i.prototype.groupSegsByCol=function(e){var t,r=[];for(t=0;t0){var a=t.createElement("div",{className:"fc-now-indicator fc-now-indicator-arrow"});a.style.top=n+"px",this.contentSkeletonEl.appendChild(a),o.push(a)}this.nowIndicatorEls=o}},i.prototype.unrenderNowIndicator=function(){this.nowIndicatorEls&&(this.nowIndicatorEls.forEach(t.removeElement),this.nowIndicatorEls=null)},i.prototype.getTotalSlatHeight=function(){return this.slatContainerEl.getBoundingClientRect().height},i.prototype.computeDateTop=function(e,r){return r||(r=t.startOfDay(e)),this.computeTimeTop(t.createDuration(e.valueOf()-r.valueOf()))},i.prototype.computeTimeTop=function(e){var r,i,n=this.slatEls.length,o=this.props.dateProfile,s=(e.milliseconds-t.asRoughMs(o.minTime))/t.asRoughMs(this.slotDuration);return s=Math.max(0,s),s=Math.min(n,s),r=Math.floor(s),i=s-(r=Math.min(r,n-1)),this.slatPositions.tops[r]+this.slatPositions.getHeight(r)*i},i.prototype.computeSegVerticals=function(e){var t,r,i,n=this.opt("timeGridEventMinHeight");for(t=0;t"+t.buildGotoAnchorHtml(a,{date:o.start,type:"week",forceOff:s>1},t.htmlEscape(e))+""):'"},a.renderTimeGridBgIntroHtml=function(){return'"},a.renderTimeGridIntroHtml=function(){return'"},a.renderDayGridBgIntroHtml=function(){return'"+t.getAllDayHtml(a)+""},a.renderDayGridIntroHtml=function(){return'"},a.el.classList.add("fc-timeGrid-view"),a.el.innerHTML=a.renderSkeletonHtml(),a.scroller=new t.ScrollComponent("hidden","auto");var l=a.scroller.el;a.el.querySelector(".fc-body > tr > td").appendChild(l),l.classList.add("fc-time-grid-container");var d=t.createElement("div",{className:"fc-time-grid"});if(l.appendChild(d),a.timeGrid=new p(a.context,d,{renderBgIntroHtml:a.renderTimeGridBgIntroHtml,renderIntroHtml:a.renderTimeGridIntroHtml}),a.opt("allDaySlot")){a.dayGrid=new r.DayGrid(a.context,a.el.querySelector(".fc-day-grid"),{renderNumberIntroHtml:a.renderDayGridIntroHtml,renderBgIntroHtml:a.renderDayGridBgIntroHtml,renderIntroHtml:a.renderDayGridIntroHtml,colWeekNumbersVisible:!1,cellWeekNumbersVisible:!1});var c=a.el.querySelector(".fc-divider");a.dayGrid.bottomCoordPadding=c.getBoundingClientRect().height}return a}return n(i,e),i.prototype.destroy=function(){e.prototype.destroy.call(this),this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),this.scroller.destroy()},i.prototype.renderSkeletonHtml=function(){var e=this.theme;return''+(this.opt("columnHeader")?'':"")+'
       
      '+(this.opt("allDaySlot")?'

      ':"")+"
      "},i.prototype.getNowIndicatorUnit=function(){return this.timeGrid.getNowIndicatorUnit()},i.prototype.unrenderNowIndicator=function(){this.timeGrid.unrenderNowIndicator()},i.prototype.updateSize=function(t,r,i){e.prototype.updateSize.call(this,t,r,i),this.timeGrid.updateSize(t),this.dayGrid&&this.dayGrid.updateSize(t)},i.prototype.updateBaseSize=function(e,r,i){var n,o,s,a=this;if(this.axisWidth=t.matchCellWidths(t.findElements(this.el,".fc-axis")),this.timeGrid.colEls){var l=t.findElements(this.el,".fc-row").filter(function(e){return!a.scroller.el.contains(e)});this.timeGrid.bottomRuleEl.style.display="none",this.scroller.clear(),l.forEach(t.uncompensateScroll),this.dayGrid&&(this.dayGrid.removeSegPopover(),(n=this.opt("eventLimit"))&&"number"!=typeof n&&(n=5),n&&this.dayGrid.limitRows(n)),i||(o=this.computeScrollerHeight(r),this.scroller.setHeight(o),((s=this.scroller.getScrollbarWidths()).left||s.right)&&(l.forEach(function(e){t.compensateScroll(e,s)}),o=this.computeScrollerHeight(r),this.scroller.setHeight(o)),this.scroller.lockOverflow(s),this.timeGrid.getTotalSlatHeight()el día", - eventLimitText: "más", - noEventsMessage: "No hay eventos para mostrar" - }; - - var _m19 = { - code: "es", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Ant", - next: "Sig", - today: "Hoy", - month: "Mes", - week: "Semana", - day: "Día", - list: "Agenda" - }, - weekLabel: "Sm", - allDayHtml: "Todo
      el día", - eventLimitText: "más", - noEventsMessage: "No hay eventos para mostrar" - }; - - var _m20 = { - code: "et", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Eelnev", - next: "JÀrgnev", - today: "TÀna", - month: "Kuu", - week: "NÀdal", - day: "PÀev", - list: "PÀevakord" - }, - weekLabel: "nÀd", - allDayText: "Kogu pÀev", - eventLimitText: function (n) { - return "+ veel " + n; - }, - noEventsMessage: "Kuvamiseks puuduvad sÌndmused" - }; - - var _m21 = { - code: "eu", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Aur", - next: "Hur", - today: "Gaur", - month: "Hilabetea", - week: "Astea", - day: "Eguna", - list: "Agenda" - }, - weekLabel: "As", - allDayHtml: "Egun
      osoa", - eventLimitText: "gehiago", - noEventsMessage: "Ez dago ekitaldirik erakusteko" - }; - - var _m22 = { - code: "fa", - week: { - dow: 6, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "Ù‚ØšÙ„ÛŒ", - next: "ؚعدی", - today: "امروز", - month: "ماه", - week: "هفته", - day: "روز", - list: "ؚرنامه" - }, - weekLabel: "هف", - allDayText: "تمام روز", - eventLimitText: function (n) { - return "ؚی؎ از " + n; - }, - noEventsMessage: "هیچ رویدادی ØšÙ‡ نمای؎" - }; - - var _m23 = { - code: "fi", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Edellinen", - next: "Seuraava", - today: "TÀnÀÀn", - month: "Kuukausi", - week: "Viikko", - day: "PÀivÀ", - list: "Tapahtumat" - }, - weekLabel: "Vk", - allDayText: "Koko pÀivÀ", - eventLimitText: "lisÀÀ", - noEventsMessage: "Ei nÀytettÀviÀ tapahtumia" - }; - - var _m24 = { - code: "fr", - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Aujourd'hui", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sem.", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - var _m25 = { - code: "fr-ch", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Courant", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sm", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - var _m26 = { - code: "fr", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Aujourd'hui", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sem.", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - var _m27 = { - code: "gl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Ant", - next: "Seg", - today: "Hoxe", - month: "Mes", - week: "Semana", - day: "Día", - list: "Axenda" - }, - weekLabel: "Sm", - allDayHtml: "Todo
      o día", - eventLimitText: "máis", - noEventsMessage: "Non hai eventos para amosar" - }; - - var _m28 = { - code: "he", - dir: 'rtl', - buttonText: { - prev: "הקודם", - next: "הבא", - today: "היום", - month: "חודש", - week: "שבוע", - day: "יום", - list: "סדך יום" - }, - allDayText: "כל היום", - eventLimitText: "אח׹", - noEventsMessage: "אין איךועים להשגה", - weekLabel: "שבוע" - }; - - var _m29 = { - code: "hi", - week: { - dow: 0, - doy: 6 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "à€ªà€¿à€›à€²à€Ÿ", - next: "à€…à€—à€²à€Ÿ", - today: "à€†à€œ", - month: "à€®à€¹à¥€à€šà€Ÿ", - week: "à€žà€ªà¥à€€à€Ÿà€¹", - day: "à€Šà€¿à€š", - list: "à€•à€Ÿà€°à¥à€¯à€žà¥‚à€šà¥€" - }, - weekLabel: "à€¹à€«à¥à€€à€Ÿ", - allDayText: "à€žà€­à¥€ à€Šà€¿à€š", - eventLimitText: function (n) { - return "+à€…à€§à€¿à€• " + n; - }, - noEventsMessage: "à€•à¥‹à€ˆ à€˜à€Ÿà€šà€Ÿà€“à€‚ à€•à¥‹ à€ªà¥à€°à€Šà€°à¥à€¶à€¿à€€ à€•à€°à€šà¥‡ à€•à¥‡ à€²à€¿à€" - }; - - var _m30 = { - code: "hr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "PrijaÅ¡nji", - next: "Sljedeći", - today: "Danas", - month: "Mjesec", - week: "Tjedan", - day: "Dan", - list: "Raspored" - }, - weekLabel: "Tje", - allDayText: "Cijeli dan", - eventLimitText: function (n) { - return "+ joÅ¡ " + n; - }, - noEventsMessage: "Nema događaja za prikaz" - }; - - var _m31 = { - code: "hu", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "vissza", - next: "előre", - today: "ma", - month: "Hónap", - week: "Hét", - day: "Nap", - list: "Napló" - }, - weekLabel: "Hét", - allDayText: "Egész nap", - eventLimitText: "további", - noEventsMessage: "Nincs megjeleníthető esemény" - }; - - var _m32 = { - code: "id", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "mundur", - next: "maju", - today: "hari ini", - month: "Bulan", - week: "Minggu", - day: "Hari", - list: "Agenda" - }, - weekLabel: "Mg", - allDayHtml: "Sehari
      penuh", - eventLimitText: "lebih", - noEventsMessage: "Tidak ada acara untuk ditampilkan" - }; - - var _m33 = { - code: "is", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Fyrri", - next: "NÊsti", - today: "Í dag", - month: "Mánuður", - week: "Vika", - day: "Dagur", - list: "Dagskrá" - }, - weekLabel: "Vika", - allDayHtml: "Allan
      daginn", - eventLimitText: "meira", - noEventsMessage: "Engir viðburðir til að sÜna" - }; - - var _m34 = { - code: "it", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Prec", - next: "Succ", - today: "Oggi", - month: "Mese", - week: "Settimana", - day: "Giorno", - list: "Agenda" - }, - weekLabel: "Sm", - allDayHtml: "Tutto il
      giorno", - eventLimitText: function (n) { - return "+altri " + n; - }, - noEventsMessage: "Non ci sono eventi da visualizzare" - }; - - var _m35 = { - code: "ja", - buttonText: { - prev: "前", - next: "次", - today: "今日", - month: "月", - week: "週", - day: "日", - list: "予定リスト" - }, - weekLabel: "週", - allDayText: "終日", - eventLimitText: function (n) { - return "他 " + n + " 件"; - }, - noEventsMessage: "衚瀺する予定はありたせん" - }; - - var _m36 = { - code: "ka", - week: { - dow: 1, - doy: 7 - }, - buttonText: { - prev: "წინა", - next: "ჹემდეგი", - today: "დ჊ეს", - month: "თვე", - week: "კვირა", - day: "დჩე", - list: "დ჊ის წესრიგი" - }, - weekLabel: "კვ", - allDayText: "მთელი დჩე", - eventLimitText: function (n) { - return "+ კიდევ " + n; - }, - noEventsMessage: "჊ონისძიებები არ არის" - }; - - var _m37 = { - code: "kk", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "АлЎыңғы", - next: "Келесі", - today: "БүгіМ", - month: "Ай", - week: "Апта", - day: "КүМ", - list: "КүМ тәртібі" - }, - weekLabel: "Не", - allDayText: "КүМі бПйы", - eventLimitText: function (n) { - return "+ тағы " + n; - }, - noEventsMessage: "Көрсету үшіМ ПқОғалар жПқ" - }; - - var _m38 = { - code: "ko", - buttonText: { - prev: "읎전달", - next: "닀음달", - today: "였늘", - month: "월", - week: "죌", - day: "음", - list: "음정목록" - }, - weekLabel: "죌", - allDayText: "종음", - eventLimitText: "개", - noEventsMessage: "음정읎 없습니닀" - }; - - var _m39 = { - code: "lb", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Zréck", - next: "Weider", - today: "Haut", - month: "Mount", - week: "Woch", - day: "Dag", - list: "Terminiwwersiicht" - }, - weekLabel: "W", - allDayText: "Ganzen Dag", - eventLimitText: "méi", - noEventsMessage: "Nee Evenementer ze affichéieren" - }; - - var _m40 = { - code: "lt", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Atgal", - next: "Pirmyn", - today: "Å iandien", - month: "Mėnuo", - week: "Savaitė", - day: "Diena", - list: "Darbotvarkė" - }, - weekLabel: "SAV", - allDayText: "Visą dieną", - eventLimitText: "daugiau", - noEventsMessage: "Nėra įvykių rodyti" - }; - - var _m41 = { - code: "lv", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Iepr.", - next: "Nāk.", - today: "Å odien", - month: "Mēnesis", - week: "NedÄ“ÄŒa", - day: "Diena", - list: "Dienas kārtÄ«ba" - }, - weekLabel: "Ned.", - allDayText: "Visu dienu", - eventLimitText: function (n) { - return "+vēl " + n; - }, - noEventsMessage: "Nav notikumu" - }; - - var _m42 = { - code: "mk", - buttonText: { - prev: "претхПЎМП", - next: "слеЎМП", - today: "ДеМес", - month: "Месец", - week: "НеЎела", - day: "ДеМ", - list: "ГрафОк" - }, - weekLabel: "СеЎ", - allDayText: "Њел ЎеМ", - eventLimitText: function (n) { - return "+пПвеќе " + n; - }, - noEventsMessage: "НеЌа МастаМО за прОкажување" - }; - - var _m43 = { - code: "ms", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Sebelum", - next: "Selepas", - today: "hari ini", - month: "Bulan", - week: "Minggu", - day: "Hari", - list: "Agenda" - }, - weekLabel: "Mg", - allDayText: "Sepanjang hari", - eventLimitText: function (n) { - return "masih ada " + n + " acara"; - }, - noEventsMessage: "Tiada peristiwa untuk dipaparkan" - }; - - var _m44 = { - code: "nb", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Forrige", - next: "Neste", - today: "I dag", - month: "MÃ¥ned", - week: "Uke", - day: "Dag", - list: "Agenda" - }, - weekLabel: "Uke", - allDayText: "Hele dagen", - eventLimitText: "til", - noEventsMessage: "Ingen hendelser Ã¥ vise" - }; - - var _m45 = { - code: "nl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Voorgaand", - next: "Volgende", - today: "Vandaag", - year: "Jaar", - month: "Maand", - week: "Week", - day: "Dag", - list: "Agenda" - }, - allDayText: "Hele dag", - eventLimitText: "extra", - noEventsMessage: "Geen evenementen om te laten zien" - }; - - var _m46 = { - code: "nn", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "FÞrre", - next: "Neste", - today: "I dag", - month: "MÃ¥nad", - week: "Veke", - day: "Dag", - list: "Agenda" - }, - weekLabel: "Veke", - allDayText: "Heile dagen", - eventLimitText: "til", - noEventsMessage: "Ingen hendelser Ã¥ vise" - }; - - var _m47 = { - code: "pl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Poprzedni", - next: "Następny", - today: "Dziś", - month: "Miesiąc", - week: "Tydzień", - day: "Dzień", - list: "Plan dnia" - }, - weekLabel: "Tydz", - allDayText: "Cały dzień", - eventLimitText: "więcej", - noEventsMessage: "Brak wydarzeń do wyświetlenia" - }; - - var _m48 = { - code: "pt-br", - buttonText: { - prev: "Anterior", - next: "Próximo", - today: "Hoje", - month: "Mês", - week: "Semana", - day: "Dia", - list: "Compromissos" - }, - weekLabel: "Sm", - allDayText: "dia inteiro", - eventLimitText: function (n) { - return "mais +" + n; - }, - noEventsMessage: "Não há eventos para mostrar" - }; - - var _m49 = { - code: "pt", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Anterior", - next: "Seguinte", - today: "Hoje", - month: "Mês", - week: "Semana", - day: "Dia", - list: "Agenda" - }, - weekLabel: "Sem", - allDayText: "Todo o dia", - eventLimitText: "mais", - noEventsMessage: "Não há eventos para mostrar" - }; - - var _m50 = { - code: "ro", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "precedentă", - next: "următoare", - today: "Azi", - month: "Lună", - week: "Săptămână", - day: "Zi", - list: "Agendă" - }, - weekLabel: "Săpt", - allDayText: "Toată ziua", - eventLimitText: function (n) { - return "+alte " + n; - }, - noEventsMessage: "Nu există evenimente de afișat" - }; - - var _m51 = { - code: "ru", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "ПреЎ", - next: "СлеЎ", - today: "СегПЎМя", - month: "Месяц", - week: "НеЎеля", - day: "ДеМь", - list: "ППвестка ЎМя" - }, - weekLabel: "НеЎ", - allDayText: "Весь ЎеМь", - eventLimitText: function (n) { - return "+ ещё " + n; - }, - noEventsMessage: "Нет сПбытОй Ўля ПтПбражеМОя" - }; - - var _m52 = { - code: "sk", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Predchádzajúci", - next: "Nasledujúci", - today: "Dnes", - month: "Mesiac", - week: "TÜşdeň", - day: "Deň", - list: "Rozvrh" - }, - weekLabel: "Ty", - allDayText: "CelÃœ deň", - eventLimitText: function (n) { - return "+ďalÅ¡ie: " + n; - }, - noEventsMessage: "Åœiadne akcie na zobrazenie" - }; - - var _m53 = { - code: "sl", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "PrejÅ¡nji", - next: "Naslednji", - today: "Trenutni", - month: "Mesec", - week: "Teden", - day: "Dan", - list: "Dnevni red" - }, - weekLabel: "Teden", - allDayText: "Ves dan", - eventLimitText: "več", - noEventsMessage: "Ni dogodkov za prikaz" - }; - - var _m54 = { - code: "sq", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "mbrapa", - next: "Përpara", - today: "sot", - month: "Muaj", - week: "Javë", - day: "Ditë", - list: "Listë" - }, - weekLabel: "Ja", - allDayHtml: "Gjithë
      ditën", - eventLimitText: function (n) { - return "+më tepër " + n; - }, - noEventsMessage: "Nuk ka evente për të shfaqur" - }; - - var _m55 = { - code: "sr-cyrl", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "ПретхПЎМа", - next: "слеЎећО", - today: "ДаМас", - month: "Месец", - week: "НеЎеља", - day: "ДаМ", - list: "ПлаМер" - }, - weekLabel: "СеЎ", - allDayText: "ЊеП ЎаМ", - eventLimitText: function (n) { - return "+ јПш " + n; - }, - noEventsMessage: "НеЌа ЎПгађаја за прОказ" - }; - - var _m56 = { - code: "sr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Prethodna", - next: "Sledeći", - today: "Danas", - month: "Mеsеc", - week: "Nеdеlja", - day: "Dan", - list: "Planеr" - }, - weekLabel: "Sed", - allDayText: "Cеo dan", - eventLimitText: function (n) { - return "+ joÅ¡ " + n; - }, - noEventsMessage: "Nеma događaja za prikaz" - }; - - var _m57 = { - code: "sv", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Förra", - next: "NÀsta", - today: "Idag", - month: "MÃ¥nad", - week: "Vecka", - day: "Dag", - list: "Program" - }, - weekLabel: "v.", - allDayText: "Heldag", - eventLimitText: "till", - noEventsMessage: "Inga hÀndelser att visa" - }; - - var _m58 = { - code: "th", - buttonText: { - prev: "àž¢à¹‰àž­àž™", - next: "àž–àž±àž”à¹„àž›", - today: "àž§àž±àž™àž™àžµà¹‰", - month: "à¹€àž”àž·àž­àž™", - week: "àžªàž±àž›àž”àž²àž«à¹Œ", - day: "àž§àž±àž™", - list: "à¹àžœàž™àž‡àž²àž™" - }, - allDayText: "àž•àž¥àž­àž”àž§àž±àž™", - eventLimitText: "à¹€àžžàžŽà¹ˆàž¡à¹€àž•àžŽàž¡", - noEventsMessage: "à¹„àž¡à¹ˆàž¡àžµàžàžŽàžˆàžàž£àž£àž¡àž—àžµà¹ˆàžˆàž°à¹àžªàž”àž‡" - }; - - var _m59 = { - code: "tr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "geri", - next: "ileri", - today: "bugÃŒn", - month: "Ay", - week: "Hafta", - day: "GÃŒn", - list: "Ajanda" - }, - weekLabel: "Hf", - allDayText: "TÃŒm gÃŒn", - eventLimitText: "daha fazla", - noEventsMessage: "Gösterilecek etkinlik yok" - }; - - var _m60 = { - code: "uk", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "ППпереЎМій", - next: "Ўалі", - today: "СьПгПЎМі", - month: "Місяць", - week: "ТОжЎеМь", - day: "ДеМь", - list: "ППряЎПк ЎеММОй" - }, - weekLabel: "ТОж", - allDayText: "Увесь ЎеМь", - eventLimitText: function (n) { - return "+ще " + n + "..."; - }, - noEventsMessage: "НеЌає пПЎій Ўля віЎПбражеММя" - }; - - var _m61 = { - code: "vi", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Trước", - next: "Tiếp", - today: "HÃŽm nay", - month: "Tháng", - week: "Tuần", - day: "Ngày", - list: "Lịch biểu" - }, - weekLabel: "Tu", - allDayText: "Cả ngày", - eventLimitText: function (n) { - return "+ thêm " + n; - }, - noEventsMessage: "KhÃŽng có sá»± kiện để hiển thị" - }; - - var _m62 = { - code: "zh-cn", - week: { - // GB/T 7408-1994《数据元和亀换栌匏·信息亀换·日期和时闎衚瀺法》䞎ISO 8601:1988等效 - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "䞊月", - next: "䞋月", - today: "今倩", - month: "月", - week: "å‘š", - day: "日", - list: "日皋" - }, - weekLabel: "å‘š", - allDayText: "党倩", - eventLimitText: function (n) { - return "及倖 " + n + " 䞪"; - }, - noEventsMessage: "没有事件星瀺" - }; - - var _m63 = { - code: "zh-tw", - buttonText: { - prev: "䞊月", - next: "䞋月", - today: "今倩", - month: "月", - week: "週", - day: "倩", - list: "掻動列衚" - }, - weekLabel: "å‘š", - allDayText: "敎倩", - eventLimitText: '顯瀺曎倚', - noEventsMessage: "没有任䜕掻動" - }; - - var _rollupPluginMultiEntry_entryPoint = [ - _m0, _m1, _m2, _m3, _m4, _m5, _m6, _m7, _m8, _m9, _m10, _m11, _m12, _m13, _m14, _m15, _m16, _m17, _m18, _m19, _m20, _m21, _m22, _m23, _m24, _m25, _m26, _m27, _m28, _m29, _m30, _m31, _m32, _m33, _m34, _m35, _m36, _m37, _m38, _m39, _m40, _m41, _m42, _m43, _m44, _m45, _m46, _m47, _m48, _m49, _m50, _m51, _m52, _m53, _m54, _m55, _m56, _m57, _m58, _m59, _m60, _m61, _m62, _m63 - ]; - - return _rollupPluginMultiEntry_entryPoint; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales-all.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales-all.min.js deleted file mode 100644 index 810d6de..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales-all.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).FullCalendarLocalesAll=t()}(this,function(){"use strict";return[{code:"af",week:{dow:1,doy:4},buttonText:{prev:"Vorige",next:"Volgende",today:"Vandag",year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"},{code:"ar-dz",week:{dow:0,doy:4},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar-kw",week:{dow:0,doy:12},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar-ly",week:{dow:6,doy:12},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar-ma",week:{dow:6,doy:12},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar-sa",week:{dow:0,doy:6},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar-tn",week:{dow:1,doy:4},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"ar",week:{dow:6,doy:12},dir:"rtl",buttonText:{prev:"الساؚق",next:"التالي",today:"اليوم",month:"؎هر",week:"أسؚوع",day:"يوم",list:"أجندة"},weekLabel:"أسؚوع",allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"},{code:"bg",week:{dow:1,doy:7},buttonText:{prev:"МазаЎ",next:"МапреЎ",today:"ЎМес",month:"Месец",week:"СеЎЌОца",day:"ДеМ",list:"ГрафОк"},allDayText:"Њял ЎеМ",eventLimitText:function(e){return"+Пще "+e},noEventsMessage:"НяЌа събОтОя за пПказваМе"},{code:"bs",week:{dow:1,doy:7},buttonText:{prev:"ProÅ¡li",next:"Sljedeći",today:"Danas",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},weekLabel:"Sed",allDayText:"Cijeli dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nema događaja za prikazivanje"},{code:"ca",week:{dow:1,doy:4},buttonText:{prev:"Anterior",next:"SegÃŒent",today:"Avui",month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},weekLabel:"Set",allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"},{code:"cs",week:{dow:1,doy:4},buttonText:{prev:"Dříve",next:"Později",today:"Nyní",month:"Měsíc",week:"TÃœden",day:"Den",list:"Agenda"},weekLabel:"TÃœd",allDayText:"CelÃœ den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Ŝádné akce k zobrazení"},{code:"da",week:{dow:1,doy:4},buttonText:{prev:"Forrige",next:"NÊste",today:"I dag",month:"MÃ¥ned",week:"Uge",day:"Dag",list:"Agenda"},weekLabel:"Uge",allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"},{code:"de",week:{dow:1,doy:4},buttonText:{prev:"ZurÃŒck",next:"Vor",today:"Heute",year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"TerminÃŒbersicht"},weekLabel:"KW",allDayText:"GanztÀgig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"},{code:"el",week:{dow:1,doy:4},buttonText:{prev:"ΠροηγούΌεΜος",next:"ΕπόΌεΜος",today:"ΣήΌερα",month:"ΜήΜας",week:"ΕβΎοΌάΎα",day:"ΗΌέρα",list:"ΑτζέΜτα"},weekLabel:"ΕβΎ",allDayText:"ΟλοήΌερο",eventLimitText:"περισσότερα",noEventsMessage:"ΔεΜ υπάρχουΜ γεγοΜότα για Μα εΌφαΜιστεί"},{code:"en-au",week:{dow:1,doy:4}},{code:"en-gb",week:{dow:1,doy:4}},{code:"en-nz",week:{dow:1,doy:4}},{code:"es",week:{dow:0,doy:6},buttonText:{prev:"Ant",next:"Sig",today:"Hoy",month:"Mes",week:"Semana",day:"Día",list:"Agenda"},weekLabel:"Sm",allDayHtml:"Todo
      el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"},{code:"es",week:{dow:1,doy:4},buttonText:{prev:"Ant",next:"Sig",today:"Hoy",month:"Mes",week:"Semana",day:"Día",list:"Agenda"},weekLabel:"Sm",allDayHtml:"Todo
      el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"},{code:"et",week:{dow:1,doy:4},buttonText:{prev:"Eelnev",next:"JÀrgnev",today:"TÀna",month:"Kuu",week:"NÀdal",day:"PÀev",list:"PÀevakord"},weekLabel:"nÀd",allDayText:"Kogu pÀev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sÌndmused"},{code:"eu",week:{dow:1,doy:7},buttonText:{prev:"Aur",next:"Hur",today:"Gaur",month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},weekLabel:"As",allDayHtml:"Egun
      osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"},{code:"fa",week:{dow:6,doy:12},dir:"rtl",buttonText:{prev:"Ù‚ØšÙ„ÛŒ",next:"ؚعدی",today:"امروز",month:"ماه",week:"هفته",day:"روز",list:"ؚرنامه"},weekLabel:"هف",allDayText:"تمام روز",eventLimitText:function(e){return"ؚی؎ از "+e},noEventsMessage:"هیچ رویدادی ØšÙ‡ نمای؎"},{code:"fi",week:{dow:1,doy:4},buttonText:{prev:"Edellinen",next:"Seuraava",today:"TÀnÀÀn",month:"Kuukausi",week:"Viikko",day:"PÀivÀ",list:"Tapahtumat"},weekLabel:"Vk",allDayText:"Koko pÀivÀ",eventLimitText:"lisÀÀ",noEventsMessage:"Ei nÀytettÀviÀ tapahtumia"},{code:"fr",buttonText:{prev:"Précédent",next:"Suivant",today:"Aujourd'hui",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},weekLabel:"Sem.",allDayHtml:"Toute la
      journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"},{code:"fr-ch",week:{dow:1,doy:4},buttonText:{prev:"Précédent",next:"Suivant",today:"Courant",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},weekLabel:"Sm",allDayHtml:"Toute la
      journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"},{code:"fr",week:{dow:1,doy:4},buttonText:{prev:"Précédent",next:"Suivant",today:"Aujourd'hui",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},weekLabel:"Sem.",allDayHtml:"Toute la
      journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"},{code:"gl",week:{dow:1,doy:4},buttonText:{prev:"Ant",next:"Seg",today:"Hoxe",month:"Mes",week:"Semana",day:"Día",list:"Axenda"},weekLabel:"Sm",allDayHtml:"Todo
      o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"},{code:"he",dir:"rtl",buttonText:{prev:"הקודם",next:"הבא",today:"היום",month:"חודש",week:"שבוע",day:"יום",list:"סדך יום"},allDayText:"כל היום",eventLimitText:"אח׹",noEventsMessage:"אין איךועים להשגה",weekLabel:"שבוע"},{code:"hi",week:{dow:0,doy:6},buttonText:{prev:"à€ªà€¿à€›à€²à€Ÿ",next:"à€…à€—à€²à€Ÿ",today:"à€†à€œ",month:"à€®à€¹à¥€à€šà€Ÿ",week:"à€žà€ªà¥à€€à€Ÿà€¹",day:"à€Šà€¿à€š",list:"à€•à€Ÿà€°à¥à€¯à€žà¥‚à€šà¥€"},weekLabel:"à€¹à€«à¥à€€à€Ÿ",allDayText:"à€žà€­à¥€ à€Šà€¿à€š",eventLimitText:function(e){return"+à€…à€§à€¿à€• "+e},noEventsMessage:"à€•à¥‹à€ˆ à€˜à€Ÿà€šà€Ÿà€“à€‚ à€•à¥‹ à€ªà¥à€°à€Šà€°à¥à€¶à€¿à€€ à€•à€°à€šà¥‡ à€•à¥‡ à€²à€¿à€"},{code:"hr",week:{dow:1,doy:7},buttonText:{prev:"PrijaÅ¡nji",next:"Sljedeći",today:"Danas",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},weekLabel:"Tje",allDayText:"Cijeli dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nema događaja za prikaz"},{code:"hu",week:{dow:1,doy:4},buttonText:{prev:"vissza",next:"előre",today:"ma",month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},weekLabel:"Hét",allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"},{code:"id",week:{dow:1,doy:7},buttonText:{prev:"mundur",next:"maju",today:"hari ini",month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},weekLabel:"Mg",allDayHtml:"Sehari
      penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"},{code:"is",week:{dow:1,doy:4},buttonText:{prev:"Fyrri",next:"NÊsti",today:"Í dag",month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},weekLabel:"Vika",allDayHtml:"Allan
      daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sÜna"},{code:"it",week:{dow:1,doy:4},buttonText:{prev:"Prec",next:"Succ",today:"Oggi",month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},weekLabel:"Sm",allDayHtml:"Tutto il
      giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"},{code:"ja",buttonText:{prev:"前",next:"次",today:"今日",month:"月",week:"週",day:"日",list:"予定リスト"},weekLabel:"週",allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"衚瀺する予定はありたせん"},{code:"ka",week:{dow:1,doy:7},buttonText:{prev:"წინა",next:"ჹემდეგი",today:"დ჊ეს",month:"თვე",week:"კვირა",day:"დჩე",list:"დ჊ის წესრიგი"},weekLabel:"კვ",allDayText:"მთელი დჩე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"჊ონისძიებები არ არის"},{code:"kk",week:{dow:1,doy:7},buttonText:{prev:"АлЎыңғы",next:"Келесі",today:"БүгіМ",month:"Ай",week:"Апта",day:"КүМ",list:"КүМ тәртібі"},weekLabel:"Не",allDayText:"КүМі бПйы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшіМ ПқОғалар жПқ"},{code:"ko",buttonText:{prev:"읎전달",next:"닀음달",today:"였늘",month:"월",week:"죌",day:"음",list:"음정목록"},weekLabel:"죌",allDayText:"종음",eventLimitText:"개",noEventsMessage:"음정읎 없습니닀"},{code:"lb",week:{dow:1,doy:4},buttonText:{prev:"Zréck",next:"Weider",today:"Haut",month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},weekLabel:"W",allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"},{code:"lt",week:{dow:1,doy:4},buttonText:{prev:"Atgal",next:"Pirmyn",today:"Å iandien",month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},weekLabel:"SAV",allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"},{code:"lv",week:{dow:1,doy:4},buttonText:{prev:"Iepr.",next:"Nāk.",today:"Å odien",month:"Mēnesis",week:"NedÄ“ÄŒa",day:"Diena",list:"Dienas kārtÄ«ba"},weekLabel:"Ned.",allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"},{code:"mk",buttonText:{prev:"претхПЎМП",next:"слеЎМП",today:"ДеМес",month:"Месец",week:"НеЎела",day:"ДеМ",list:"ГрафОк"},weekLabel:"СеЎ",allDayText:"Њел ЎеМ",eventLimitText:function(e){return"+пПвеќе "+e},noEventsMessage:"НеЌа МастаМО за прОкажување"},{code:"ms",week:{dow:1,doy:7},buttonText:{prev:"Sebelum",next:"Selepas",today:"hari ini",month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},weekLabel:"Mg",allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"},{code:"nb",week:{dow:1,doy:4},buttonText:{prev:"Forrige",next:"Neste",today:"I dag",month:"MÃ¥ned",week:"Uke",day:"Dag",list:"Agenda"},weekLabel:"Uke",allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser Ã¥ vise"},{code:"nl",week:{dow:1,doy:4},buttonText:{prev:"Voorgaand",next:"Volgende",today:"Vandaag",year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"},{code:"nn",week:{dow:1,doy:4},buttonText:{prev:"FÞrre",next:"Neste",today:"I dag",month:"MÃ¥nad",week:"Veke",day:"Dag",list:"Agenda"},weekLabel:"Veke",allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser Ã¥ vise"},{code:"pl",week:{dow:1,doy:4},buttonText:{prev:"Poprzedni",next:"Następny",today:"Dziś",month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},weekLabel:"Tydz",allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"},{code:"pt-br",buttonText:{prev:"Anterior",next:"Próximo",today:"Hoje",month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},weekLabel:"Sm",allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"},{code:"pt",week:{dow:1,doy:4},buttonText:{prev:"Anterior",next:"Seguinte",today:"Hoje",month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},weekLabel:"Sem",allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"},{code:"ro",week:{dow:1,doy:7},buttonText:{prev:"precedentă",next:"următoare",today:"Azi",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},weekLabel:"Săpt",allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"},{code:"ru",week:{dow:1,doy:4},buttonText:{prev:"ПреЎ",next:"СлеЎ",today:"СегПЎМя",month:"Месяц",week:"НеЎеля",day:"ДеМь",list:"ППвестка ЎМя"},weekLabel:"НеЎ",allDayText:"Весь ЎеМь",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет сПбытОй Ўля ПтПбражеМОя"},{code:"sk",week:{dow:1,doy:4},buttonText:{prev:"Predchádzajúci",next:"Nasledujúci",today:"Dnes",month:"Mesiac",week:"TÜşdeň",day:"Deň",list:"Rozvrh"},weekLabel:"Ty",allDayText:"CelÃœ deň",eventLimitText:function(e){return"+ďalÅ¡ie: "+e},noEventsMessage:"Åœiadne akcie na zobrazenie"},{code:"sl",week:{dow:1,doy:7},buttonText:{prev:"PrejÅ¡nji",next:"Naslednji",today:"Trenutni",month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},weekLabel:"Teden",allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"},{code:"sq",week:{dow:1,doy:4},buttonText:{prev:"mbrapa",next:"Përpara",today:"sot",month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},weekLabel:"Ja",allDayHtml:"Gjithë
      ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"},{code:"sr-cyrl",week:{dow:1,doy:7},buttonText:{prev:"ПретхПЎМа",next:"слеЎећО",today:"ДаМас",month:"Месец",week:"НеЎеља",day:"ДаМ",list:"ПлаМер"},weekLabel:"СеЎ",allDayText:"ЊеП ЎаМ",eventLimitText:function(e){return"+ јПш "+e},noEventsMessage:"НеЌа ЎПгађаја за прОказ"},{code:"sr",week:{dow:1,doy:7},buttonText:{prev:"Prethodna",next:"Sledeći",today:"Danas",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},weekLabel:"Sed",allDayText:"Cеo dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nеma događaja za prikaz"},{code:"sv",week:{dow:1,doy:4},buttonText:{prev:"Förra",next:"NÀsta",today:"Idag",month:"MÃ¥nad",week:"Vecka",day:"Dag",list:"Program"},weekLabel:"v.",allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga hÀndelser att visa"},{code:"th",buttonText:{prev:"àž¢à¹‰àž­àž™",next:"àž–àž±àž”à¹„àž›",today:"àž§àž±àž™àž™àžµà¹‰",month:"à¹€àž”àž·àž­àž™",week:"àžªàž±àž›àž”àž²àž«à¹Œ",day:"àž§àž±àž™",list:"à¹àžœàž™àž‡àž²àž™"},allDayText:"àž•àž¥àž­àž”àž§àž±àž™",eventLimitText:"à¹€àžžàžŽà¹ˆàž¡à¹€àž•àžŽàž¡",noEventsMessage:"à¹„àž¡à¹ˆàž¡àžµàžàžŽàžˆàžàž£àž£àž¡àž—àžµà¹ˆàžˆàž°à¹àžªàž”àž‡"},{code:"tr",week:{dow:1,doy:7},buttonText:{prev:"geri",next:"ileri",today:"bugÃŒn",month:"Ay",week:"Hafta",day:"GÃŒn",list:"Ajanda"},weekLabel:"Hf",allDayText:"TÃŒm gÃŒn",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"},{code:"uk",week:{dow:1,doy:7},buttonText:{prev:"ППпереЎМій",next:"Ўалі",today:"СьПгПЎМі",month:"Місяць",week:"ТОжЎеМь",day:"ДеМь",list:"ППряЎПк ЎеММОй"},weekLabel:"ТОж",allDayText:"Увесь ЎеМь",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"НеЌає пПЎій Ўля віЎПбражеММя"},{code:"vi",week:{dow:1,doy:4},buttonText:{prev:"Trước",next:"Tiếp",today:"HÃŽm nay",month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},weekLabel:"Tu",allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"KhÃŽng có sá»± kiện để hiển thị"},{code:"zh-cn",week:{dow:1,doy:4},buttonText:{prev:"䞊月",next:"䞋月",today:"今倩",month:"月",week:"å‘š",day:"日",list:"日皋"},weekLabel:"å‘š",allDayText:"党倩",eventLimitText:function(e){return"及倖 "+e+" 䞪"},noEventsMessage:"没有事件星瀺"},{code:"zh-tw",buttonText:{prev:"䞊月",next:"䞋月",today:"今倩",month:"月",week:"週",day:"倩",list:"掻動列衚"},weekLabel:"å‘š",allDayText:"敎倩",eventLimitText:"顯瀺曎倚",noEventsMessage:"没有任䜕掻動"}]}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/af.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/af.js deleted file mode 100644 index ee9f9f7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/af.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.af = factory())); -}(this, function () { 'use strict'; - - var af = { - code: "af", - week: { - dow: 1, - doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - }, - buttonText: { - prev: "Vorige", - next: "Volgende", - today: "Vandag", - year: "Jaar", - month: "Maand", - week: "Week", - day: "Dag", - list: "Agenda" - }, - allDayHtml: "Heeldag", - eventLimitText: "Addisionele", - noEventsMessage: "Daar is geen gebeurtenisse nie" - }; - - return af; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-dz.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-dz.js deleted file mode 100644 index 201eb17..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-dz.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-dz'] = factory())); -}(this, function () { 'use strict'; - - var arDz = { - code: "ar-dz", - week: { - dow: 0, - doy: 4 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arDz; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-kw.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-kw.js deleted file mode 100644 index 94c6900..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-kw.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-kw'] = factory())); -}(this, function () { 'use strict'; - - var arKw = { - code: "ar-kw", - week: { - dow: 0, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arKw; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ly.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ly.js deleted file mode 100644 index e1c8aeb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ly.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-ly'] = factory())); -}(this, function () { 'use strict'; - - var arLy = { - code: "ar-ly", - week: { - dow: 6, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arLy; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ma.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ma.js deleted file mode 100644 index 00cc7c6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-ma.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-ma'] = factory())); -}(this, function () { 'use strict'; - - var arMa = { - code: "ar-ma", - week: { - dow: 6, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arMa; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-sa.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-sa.js deleted file mode 100644 index 0361f6d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-sa.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-sa'] = factory())); -}(this, function () { 'use strict'; - - var arSa = { - code: "ar-sa", - week: { - dow: 0, - doy: 6 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arSa; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-tn.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-tn.js deleted file mode 100644 index 57a07f8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar-tn.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-tn'] = factory())); -}(this, function () { 'use strict'; - - var arTn = { - code: "ar-tn", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return arTn; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar.js deleted file mode 100644 index f789afd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ar.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ar = factory())); -}(this, function () { 'use strict'; - - var ar = { - code: "ar", - week: { - dow: 6, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "الساؚق", - next: "التالي", - today: "اليوم", - month: "؎هر", - week: "أسؚوع", - day: "يوم", - list: "أجندة" - }, - weekLabel: "أسؚوع", - allDayText: "اليوم كله", - eventLimitText: "أخرى", - noEventsMessage: "أي أحداث لعرض" - }; - - return ar; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bg.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bg.js deleted file mode 100644 index e7343a6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bg.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.bg = factory())); -}(this, function () { 'use strict'; - - var bg = { - code: "bg", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "МазаЎ", - next: "МапреЎ", - today: "ЎМес", - month: "Месец", - week: "СеЎЌОца", - day: "ДеМ", - list: "ГрафОк" - }, - allDayText: "Њял ЎеМ", - eventLimitText: function (n) { - return "+Пще " + n; - }, - noEventsMessage: "НяЌа събОтОя за пПказваМе" - }; - - return bg; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bs.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bs.js deleted file mode 100644 index d96b8ad..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/bs.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.bs = factory())); -}(this, function () { 'use strict'; - - var bs = { - code: "bs", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "ProÅ¡li", - next: "Sljedeći", - today: "Danas", - month: "Mjesec", - week: "Sedmica", - day: "Dan", - list: "Raspored" - }, - weekLabel: "Sed", - allDayText: "Cijeli dan", - eventLimitText: function (n) { - return "+ joÅ¡ " + n; - }, - noEventsMessage: "Nema događaja za prikazivanje" - }; - - return bs; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ca.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ca.js deleted file mode 100644 index d2d3e2a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ca.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ca = factory())); -}(this, function () { 'use strict'; - - var ca = { - code: "ca", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Anterior", - next: "SegÃŒent", - today: "Avui", - month: "Mes", - week: "Setmana", - day: "Dia", - list: "Agenda" - }, - weekLabel: "Set", - allDayText: "Tot el dia", - eventLimitText: "més", - noEventsMessage: "No hi ha esdeveniments per mostrar" - }; - - return ca; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/cs.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/cs.js deleted file mode 100644 index 2624e36..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/cs.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.cs = factory())); -}(this, function () { 'use strict'; - - var cs = { - code: "cs", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Dříve", - next: "Později", - today: "Nyní", - month: "Měsíc", - week: "TÃœden", - day: "Den", - list: "Agenda" - }, - weekLabel: "TÃœd", - allDayText: "CelÃœ den", - eventLimitText: function (n) { - return "+další: " + n; - }, - noEventsMessage: "Ŝádné akce k zobrazení" - }; - - return cs; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/da.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/da.js deleted file mode 100644 index 73d1559..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/da.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.da = factory())); -}(this, function () { 'use strict'; - - var da = { - code: "da", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Forrige", - next: "NÊste", - today: "I dag", - month: "MÃ¥ned", - week: "Uge", - day: "Dag", - list: "Agenda" - }, - weekLabel: "Uge", - allDayText: "Hele dagen", - eventLimitText: "flere", - noEventsMessage: "Ingen arrangementer at vise" - }; - - return da; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/de.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/de.js deleted file mode 100644 index ab5a815..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/de.js +++ /dev/null @@ -1,33 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.de = factory())); -}(this, function () { 'use strict'; - - var de = { - code: "de", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "ZurÃŒck", - next: "Vor", - today: "Heute", - year: "Jahr", - month: "Monat", - week: "Woche", - day: "Tag", - list: "TerminÃŒbersicht" - }, - weekLabel: "KW", - allDayText: "GanztÀgig", - eventLimitText: function (n) { - return "+ weitere " + n; - }, - noEventsMessage: "Keine Ereignisse anzuzeigen" - }; - - return de; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/el.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/el.js deleted file mode 100644 index 9f59e36..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/el.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.el = factory())); -}(this, function () { 'use strict'; - - var el = { - code: "el", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4st is the first week of the year. - }, - buttonText: { - prev: "ΠροηγούΌεΜος", - next: "ΕπόΌεΜος", - today: "ΣήΌερα", - month: "ΜήΜας", - week: "ΕβΎοΌάΎα", - day: "ΗΌέρα", - list: "ΑτζέΜτα" - }, - weekLabel: "ΕβΎ", - allDayText: "ΟλοήΌερο", - eventLimitText: "περισσότερα", - noEventsMessage: "ΔεΜ υπάρχουΜ γεγοΜότα για Μα εΌφαΜιστεί" - }; - - return el; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-au.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-au.js deleted file mode 100644 index be10bfb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-au.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-au'] = factory())); -}(this, function () { 'use strict'; - - var enAu = { - code: "en-au", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }; - - return enAu; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-gb.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-gb.js deleted file mode 100644 index 8a4a84e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-gb.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-gb'] = factory())); -}(this, function () { 'use strict'; - - var enGb = { - code: "en-gb", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }; - - return enGb; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-nz.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-nz.js deleted file mode 100644 index df56c14..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/en-nz.js +++ /dev/null @@ -1,17 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-nz'] = factory())); -}(this, function () { 'use strict'; - - var enNz = { - code: "en-nz", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }; - - return enNz; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es-us.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es-us.js deleted file mode 100644 index 1efa89a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es-us.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['es-us'] = factory())); -}(this, function () { 'use strict'; - - var esUs = { - code: "es", - week: { - dow: 0, - doy: 6 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Ant", - next: "Sig", - today: "Hoy", - month: "Mes", - week: "Semana", - day: "Día", - list: "Agenda" - }, - weekLabel: "Sm", - allDayHtml: "Todo
      el día", - eventLimitText: "más", - noEventsMessage: "No hay eventos para mostrar" - }; - - return esUs; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es.js deleted file mode 100644 index bfd9af4..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/es.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.es = factory())); -}(this, function () { 'use strict'; - - var es = { - code: "es", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Ant", - next: "Sig", - today: "Hoy", - month: "Mes", - week: "Semana", - day: "Día", - list: "Agenda" - }, - weekLabel: "Sm", - allDayHtml: "Todo
      el día", - eventLimitText: "más", - noEventsMessage: "No hay eventos para mostrar" - }; - - return es; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/et.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/et.js deleted file mode 100644 index c44fcae..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/et.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.et = factory())); -}(this, function () { 'use strict'; - - var et = { - code: "et", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Eelnev", - next: "JÀrgnev", - today: "TÀna", - month: "Kuu", - week: "NÀdal", - day: "PÀev", - list: "PÀevakord" - }, - weekLabel: "nÀd", - allDayText: "Kogu pÀev", - eventLimitText: function (n) { - return "+ veel " + n; - }, - noEventsMessage: "Kuvamiseks puuduvad sÌndmused" - }; - - return et; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/eu.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/eu.js deleted file mode 100644 index 91903aa..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/eu.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.eu = factory())); -}(this, function () { 'use strict'; - - var eu = { - code: "eu", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Aur", - next: "Hur", - today: "Gaur", - month: "Hilabetea", - week: "Astea", - day: "Eguna", - list: "Agenda" - }, - weekLabel: "As", - allDayHtml: "Egun
      osoa", - eventLimitText: "gehiago", - noEventsMessage: "Ez dago ekitaldirik erakusteko" - }; - - return eu; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fa.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fa.js deleted file mode 100644 index 031fc7b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fa.js +++ /dev/null @@ -1,33 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fa = factory())); -}(this, function () { 'use strict'; - - var fa = { - code: "fa", - week: { - dow: 6, - doy: 12 // The week that contains Jan 1st is the first week of the year. - }, - dir: 'rtl', - buttonText: { - prev: "Ù‚ØšÙ„ÛŒ", - next: "ؚعدی", - today: "امروز", - month: "ماه", - week: "هفته", - day: "روز", - list: "ؚرنامه" - }, - weekLabel: "هف", - allDayText: "تمام روز", - eventLimitText: function (n) { - return "ؚی؎ از " + n; - }, - noEventsMessage: "هیچ رویدادی ØšÙ‡ نمای؎" - }; - - return fa; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fi.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fi.js deleted file mode 100644 index 3912845..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fi.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fi = factory())); -}(this, function () { 'use strict'; - - var fi = { - code: "fi", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Edellinen", - next: "Seuraava", - today: "TÀnÀÀn", - month: "Kuukausi", - week: "Viikko", - day: "PÀivÀ", - list: "Tapahtumat" - }, - weekLabel: "Vk", - allDayText: "Koko pÀivÀ", - eventLimitText: "lisÀÀ", - noEventsMessage: "Ei nÀytettÀviÀ tapahtumia" - }; - - return fi; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ca.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ca.js deleted file mode 100644 index d554c14..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ca.js +++ /dev/null @@ -1,27 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['fr-ca'] = factory())); -}(this, function () { 'use strict'; - - var frCa = { - code: "fr", - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Aujourd'hui", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sem.", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - return frCa; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ch.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ch.js deleted file mode 100644 index 358b8bf..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr-ch.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['fr-ch'] = factory())); -}(this, function () { 'use strict'; - - var frCh = { - code: "fr-ch", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Courant", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sm", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - return frCh; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr.js deleted file mode 100644 index b679cef..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/fr.js +++ /dev/null @@ -1,31 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fr = factory())); -}(this, function () { 'use strict'; - - var fr = { - code: "fr", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Précédent", - next: "Suivant", - today: "Aujourd'hui", - year: "Année", - month: "Mois", - week: "Semaine", - day: "Jour", - list: "Mon planning" - }, - weekLabel: "Sem.", - allDayHtml: "Toute la
      journée", - eventLimitText: "en plus", - noEventsMessage: "Aucun événement à afficher" - }; - - return fr; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/gl.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/gl.js deleted file mode 100644 index 721a6a8..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/gl.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.gl = factory())); -}(this, function () { 'use strict'; - - var gl = { - code: "gl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Ant", - next: "Seg", - today: "Hoxe", - month: "Mes", - week: "Semana", - day: "Día", - list: "Axenda" - }, - weekLabel: "Sm", - allDayHtml: "Todo
      o día", - eventLimitText: "máis", - noEventsMessage: "Non hai eventos para amosar" - }; - - return gl; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/he.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/he.js deleted file mode 100644 index 3521d9e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/he.js +++ /dev/null @@ -1,27 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.he = factory())); -}(this, function () { 'use strict'; - - var he = { - code: "he", - dir: 'rtl', - buttonText: { - prev: "הקודם", - next: "הבא", - today: "היום", - month: "חודש", - week: "שבוע", - day: "יום", - list: "סדך יום" - }, - allDayText: "כל היום", - eventLimitText: "אח׹", - noEventsMessage: "אין איךועים להשגה", - weekLabel: "שבוע" - }; - - return he; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hi.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hi.js deleted file mode 100644 index 15348e6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hi.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hi = factory())); -}(this, function () { 'use strict'; - - var hi = { - code: "hi", - week: { - dow: 0, - doy: 6 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "à€ªà€¿à€›à€²à€Ÿ", - next: "à€…à€—à€²à€Ÿ", - today: "à€†à€œ", - month: "à€®à€¹à¥€à€šà€Ÿ", - week: "à€žà€ªà¥à€€à€Ÿà€¹", - day: "à€Šà€¿à€š", - list: "à€•à€Ÿà€°à¥à€¯à€žà¥‚à€šà¥€" - }, - weekLabel: "à€¹à€«à¥à€€à€Ÿ", - allDayText: "à€žà€­à¥€ à€Šà€¿à€š", - eventLimitText: function (n) { - return "+à€…à€§à€¿à€• " + n; - }, - noEventsMessage: "à€•à¥‹à€ˆ à€˜à€Ÿà€šà€Ÿà€“à€‚ à€•à¥‹ à€ªà¥à€°à€Šà€°à¥à€¶à€¿à€€ à€•à€°à€šà¥‡ à€•à¥‡ à€²à€¿à€" - }; - - return hi; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hr.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hr.js deleted file mode 100644 index 295b485..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hr.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hr = factory())); -}(this, function () { 'use strict'; - - var hr = { - code: "hr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "PrijaÅ¡nji", - next: "Sljedeći", - today: "Danas", - month: "Mjesec", - week: "Tjedan", - day: "Dan", - list: "Raspored" - }, - weekLabel: "Tje", - allDayText: "Cijeli dan", - eventLimitText: function (n) { - return "+ joÅ¡ " + n; - }, - noEventsMessage: "Nema događaja za prikaz" - }; - - return hr; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hu.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hu.js deleted file mode 100644 index 2f0fe8a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/hu.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hu = factory())); -}(this, function () { 'use strict'; - - var hu = { - code: "hu", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "vissza", - next: "előre", - today: "ma", - month: "Hónap", - week: "Hét", - day: "Nap", - list: "Napló" - }, - weekLabel: "Hét", - allDayText: "Egész nap", - eventLimitText: "további", - noEventsMessage: "Nincs megjeleníthető esemény" - }; - - return hu; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/id.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/id.js deleted file mode 100644 index b742e80..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/id.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.id = factory())); -}(this, function () { 'use strict'; - - var id = { - code: "id", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "mundur", - next: "maju", - today: "hari ini", - month: "Bulan", - week: "Minggu", - day: "Hari", - list: "Agenda" - }, - weekLabel: "Mg", - allDayHtml: "Sehari
      penuh", - eventLimitText: "lebih", - noEventsMessage: "Tidak ada acara untuk ditampilkan" - }; - - return id; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/is.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/is.js deleted file mode 100644 index dd569bc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/is.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.is = factory())); -}(this, function () { 'use strict'; - - var is = { - code: "is", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Fyrri", - next: "NÊsti", - today: "Í dag", - month: "Mánuður", - week: "Vika", - day: "Dagur", - list: "Dagskrá" - }, - weekLabel: "Vika", - allDayHtml: "Allan
      daginn", - eventLimitText: "meira", - noEventsMessage: "Engir viðburðir til að sÜna" - }; - - return is; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/it.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/it.js deleted file mode 100644 index 39a2829..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/it.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.it = factory())); -}(this, function () { 'use strict'; - - var it = { - code: "it", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Prec", - next: "Succ", - today: "Oggi", - month: "Mese", - week: "Settimana", - day: "Giorno", - list: "Agenda" - }, - weekLabel: "Sm", - allDayHtml: "Tutto il
      giorno", - eventLimitText: function (n) { - return "+altri " + n; - }, - noEventsMessage: "Non ci sono eventi da visualizzare" - }; - - return it; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ja.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ja.js deleted file mode 100644 index eb4245b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ja.js +++ /dev/null @@ -1,28 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ja = factory())); -}(this, function () { 'use strict'; - - var ja = { - code: "ja", - buttonText: { - prev: "前", - next: "次", - today: "今日", - month: "月", - week: "週", - day: "日", - list: "予定リスト" - }, - weekLabel: "週", - allDayText: "終日", - eventLimitText: function (n) { - return "他 " + n + " 件"; - }, - noEventsMessage: "衚瀺する予定はありたせん" - }; - - return ja; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ka.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ka.js deleted file mode 100644 index b971c03..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ka.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ka = factory())); -}(this, function () { 'use strict'; - - var ka = { - code: "ka", - week: { - dow: 1, - doy: 7 - }, - buttonText: { - prev: "წინა", - next: "ჹემდეგი", - today: "დ჊ეს", - month: "თვე", - week: "კვირა", - day: "დჩე", - list: "დ჊ის წესრიგი" - }, - weekLabel: "კვ", - allDayText: "მთელი დჩე", - eventLimitText: function (n) { - return "+ კიდევ " + n; - }, - noEventsMessage: "჊ონისძიებები არ არის" - }; - - return ka; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/kk.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/kk.js deleted file mode 100644 index 5b19b99..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/kk.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.kk = factory())); -}(this, function () { 'use strict'; - - var kk = { - code: "kk", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "АлЎыңғы", - next: "Келесі", - today: "БүгіМ", - month: "Ай", - week: "Апта", - day: "КүМ", - list: "КүМ тәртібі" - }, - weekLabel: "Не", - allDayText: "КүМі бПйы", - eventLimitText: function (n) { - return "+ тағы " + n; - }, - noEventsMessage: "Көрсету үшіМ ПқОғалар жПқ" - }; - - return kk; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ko.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ko.js deleted file mode 100644 index ffe985d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ko.js +++ /dev/null @@ -1,26 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ko = factory())); -}(this, function () { 'use strict'; - - var ko = { - code: "ko", - buttonText: { - prev: "읎전달", - next: "닀음달", - today: "였늘", - month: "월", - week: "죌", - day: "음", - list: "음정목록" - }, - weekLabel: "죌", - allDayText: "종음", - eventLimitText: "개", - noEventsMessage: "음정읎 없습니닀" - }; - - return ko; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lb.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lb.js deleted file mode 100644 index b9b17e3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lb.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lb = factory())); -}(this, function () { 'use strict'; - - var lb = { - code: "lb", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Zréck", - next: "Weider", - today: "Haut", - month: "Mount", - week: "Woch", - day: "Dag", - list: "Terminiwwersiicht" - }, - weekLabel: "W", - allDayText: "Ganzen Dag", - eventLimitText: "méi", - noEventsMessage: "Nee Evenementer ze affichéieren" - }; - - return lb; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lt.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lt.js deleted file mode 100644 index ec641b7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lt.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lt = factory())); -}(this, function () { 'use strict'; - - var lt = { - code: "lt", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Atgal", - next: "Pirmyn", - today: "Å iandien", - month: "Mėnuo", - week: "Savaitė", - day: "Diena", - list: "Darbotvarkė" - }, - weekLabel: "SAV", - allDayText: "Visą dieną", - eventLimitText: "daugiau", - noEventsMessage: "Nėra įvykių rodyti" - }; - - return lt; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lv.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lv.js deleted file mode 100644 index 5453630..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/lv.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lv = factory())); -}(this, function () { 'use strict'; - - var lv = { - code: "lv", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Iepr.", - next: "Nāk.", - today: "Å odien", - month: "Mēnesis", - week: "NedÄ“ÄŒa", - day: "Diena", - list: "Dienas kārtÄ«ba" - }, - weekLabel: "Ned.", - allDayText: "Visu dienu", - eventLimitText: function (n) { - return "+vēl " + n; - }, - noEventsMessage: "Nav notikumu" - }; - - return lv; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/mk.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/mk.js deleted file mode 100644 index 6729fa6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/mk.js +++ /dev/null @@ -1,28 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.mk = factory())); -}(this, function () { 'use strict'; - - var mk = { - code: "mk", - buttonText: { - prev: "претхПЎМП", - next: "слеЎМП", - today: "ДеМес", - month: "Месец", - week: "НеЎела", - day: "ДеМ", - list: "ГрафОк" - }, - weekLabel: "СеЎ", - allDayText: "Њел ЎеМ", - eventLimitText: function (n) { - return "+пПвеќе " + n; - }, - noEventsMessage: "НеЌа МастаМО за прОкажување" - }; - - return mk; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ms.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ms.js deleted file mode 100644 index 7205ecc..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ms.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ms = factory())); -}(this, function () { 'use strict'; - - var ms = { - code: "ms", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Sebelum", - next: "Selepas", - today: "hari ini", - month: "Bulan", - week: "Minggu", - day: "Hari", - list: "Agenda" - }, - weekLabel: "Mg", - allDayText: "Sepanjang hari", - eventLimitText: function (n) { - return "masih ada " + n + " acara"; - }, - noEventsMessage: "Tiada peristiwa untuk dipaparkan" - }; - - return ms; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nb.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nb.js deleted file mode 100644 index 6464461..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nb.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nb = factory())); -}(this, function () { 'use strict'; - - var nb = { - code: "nb", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Forrige", - next: "Neste", - today: "I dag", - month: "MÃ¥ned", - week: "Uke", - day: "Dag", - list: "Agenda" - }, - weekLabel: "Uke", - allDayText: "Hele dagen", - eventLimitText: "til", - noEventsMessage: "Ingen hendelser Ã¥ vise" - }; - - return nb; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nl.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nl.js deleted file mode 100644 index c91b5e5..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nl.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nl = factory())); -}(this, function () { 'use strict'; - - var nl = { - code: "nl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Voorgaand", - next: "Volgende", - today: "Vandaag", - year: "Jaar", - month: "Maand", - week: "Week", - day: "Dag", - list: "Agenda" - }, - allDayText: "Hele dag", - eventLimitText: "extra", - noEventsMessage: "Geen evenementen om te laten zien" - }; - - return nl; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nn.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nn.js deleted file mode 100644 index a5cdd16..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/nn.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nn = factory())); -}(this, function () { 'use strict'; - - var nn = { - code: "nn", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "FÞrre", - next: "Neste", - today: "I dag", - month: "MÃ¥nad", - week: "Veke", - day: "Dag", - list: "Agenda" - }, - weekLabel: "Veke", - allDayText: "Heile dagen", - eventLimitText: "til", - noEventsMessage: "Ingen hendelser Ã¥ vise" - }; - - return nn; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pl.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pl.js deleted file mode 100644 index 0a22e69..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pl.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.pl = factory())); -}(this, function () { 'use strict'; - - var pl = { - code: "pl", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Poprzedni", - next: "Następny", - today: "Dziś", - month: "Miesiąc", - week: "Tydzień", - day: "Dzień", - list: "Plan dnia" - }, - weekLabel: "Tydz", - allDayText: "Cały dzień", - eventLimitText: "więcej", - noEventsMessage: "Brak wydarzeń do wyświetlenia" - }; - - return pl; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt-br.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt-br.js deleted file mode 100644 index 0133cd6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt-br.js +++ /dev/null @@ -1,28 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['pt-br'] = factory())); -}(this, function () { 'use strict'; - - var ptBr = { - code: "pt-br", - buttonText: { - prev: "Anterior", - next: "Próximo", - today: "Hoje", - month: "Mês", - week: "Semana", - day: "Dia", - list: "Compromissos" - }, - weekLabel: "Sm", - allDayText: "dia inteiro", - eventLimitText: function (n) { - return "mais +" + n; - }, - noEventsMessage: "Não há eventos para mostrar" - }; - - return ptBr; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt.js deleted file mode 100644 index 5c54d8d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/pt.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.pt = factory())); -}(this, function () { 'use strict'; - - var pt = { - code: "pt", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Anterior", - next: "Seguinte", - today: "Hoje", - month: "Mês", - week: "Semana", - day: "Dia", - list: "Agenda" - }, - weekLabel: "Sem", - allDayText: "Todo o dia", - eventLimitText: "mais", - noEventsMessage: "Não há eventos para mostrar" - }; - - return pt; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ro.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ro.js deleted file mode 100644 index e8992f2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ro.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ro = factory())); -}(this, function () { 'use strict'; - - var ro = { - code: "ro", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "precedentă", - next: "următoare", - today: "Azi", - month: "Lună", - week: "Săptămână", - day: "Zi", - list: "Agendă" - }, - weekLabel: "Săpt", - allDayText: "Toată ziua", - eventLimitText: function (n) { - return "+alte " + n; - }, - noEventsMessage: "Nu există evenimente de afișat" - }; - - return ro; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ru.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ru.js deleted file mode 100644 index 77e0308..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/ru.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ru = factory())); -}(this, function () { 'use strict'; - - var ru = { - code: "ru", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "ПреЎ", - next: "СлеЎ", - today: "СегПЎМя", - month: "Месяц", - week: "НеЎеля", - day: "ДеМь", - list: "ППвестка ЎМя" - }, - weekLabel: "НеЎ", - allDayText: "Весь ЎеМь", - eventLimitText: function (n) { - return "+ ещё " + n; - }, - noEventsMessage: "Нет сПбытОй Ўля ПтПбражеМОя" - }; - - return ru; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sk.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sk.js deleted file mode 100644 index 3513a64..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sk.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sk = factory())); -}(this, function () { 'use strict'; - - var sk = { - code: "sk", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Predchádzajúci", - next: "Nasledujúci", - today: "Dnes", - month: "Mesiac", - week: "TÜşdeň", - day: "Deň", - list: "Rozvrh" - }, - weekLabel: "Ty", - allDayText: "CelÃœ deň", - eventLimitText: function (n) { - return "+ďalÅ¡ie: " + n; - }, - noEventsMessage: "Åœiadne akcie na zobrazenie" - }; - - return sk; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sl.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sl.js deleted file mode 100644 index 3233553..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sl.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sl = factory())); -}(this, function () { 'use strict'; - - var sl = { - code: "sl", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "PrejÅ¡nji", - next: "Naslednji", - today: "Trenutni", - month: "Mesec", - week: "Teden", - day: "Dan", - list: "Dnevni red" - }, - weekLabel: "Teden", - allDayText: "Ves dan", - eventLimitText: "več", - noEventsMessage: "Ni dogodkov za prikaz" - }; - - return sl; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sq.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sq.js deleted file mode 100644 index 0d43a52..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sq.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sq = factory())); -}(this, function () { 'use strict'; - - var sq = { - code: "sq", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "mbrapa", - next: "Përpara", - today: "sot", - month: "Muaj", - week: "Javë", - day: "Ditë", - list: "Listë" - }, - weekLabel: "Ja", - allDayHtml: "Gjithë
      ditën", - eventLimitText: function (n) { - return "+më tepër " + n; - }, - noEventsMessage: "Nuk ka evente për të shfaqur" - }; - - return sq; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr-cyrl.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr-cyrl.js deleted file mode 100644 index ba0d0df..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr-cyrl.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['sr-cyrl'] = factory())); -}(this, function () { 'use strict'; - - var srCyrl = { - code: "sr-cyrl", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "ПретхПЎМа", - next: "слеЎећО", - today: "ДаМас", - month: "Месец", - week: "НеЎеља", - day: "ДаМ", - list: "ПлаМер" - }, - weekLabel: "СеЎ", - allDayText: "ЊеП ЎаМ", - eventLimitText: function (n) { - return "+ јПш " + n; - }, - noEventsMessage: "НеЌа ЎПгађаја за прОказ" - }; - - return srCyrl; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr.js deleted file mode 100644 index 23e5c9b..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sr.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sr = factory())); -}(this, function () { 'use strict'; - - var sr = { - code: "sr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "Prethodna", - next: "Sledeći", - today: "Danas", - month: "Mеsеc", - week: "Nеdеlja", - day: "Dan", - list: "Planеr" - }, - weekLabel: "Sed", - allDayText: "Cеo dan", - eventLimitText: function (n) { - return "+ joÅ¡ " + n; - }, - noEventsMessage: "Nеma događaja za prikaz" - }; - - return sr; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sv.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sv.js deleted file mode 100644 index a887060..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/sv.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sv = factory())); -}(this, function () { 'use strict'; - - var sv = { - code: "sv", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Förra", - next: "NÀsta", - today: "Idag", - month: "MÃ¥nad", - week: "Vecka", - day: "Dag", - list: "Program" - }, - weekLabel: "v.", - allDayText: "Heldag", - eventLimitText: "till", - noEventsMessage: "Inga hÀndelser att visa" - }; - - return sv; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/th.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/th.js deleted file mode 100644 index caa3fe9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/th.js +++ /dev/null @@ -1,25 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.th = factory())); -}(this, function () { 'use strict'; - - var th = { - code: "th", - buttonText: { - prev: "àž¢à¹‰àž­àž™", - next: "àž–àž±àž”à¹„àž›", - today: "àž§àž±àž™àž™àžµà¹‰", - month: "à¹€àž”àž·àž­àž™", - week: "àžªàž±àž›àž”àž²àž«à¹Œ", - day: "àž§àž±àž™", - list: "à¹àžœàž™àž‡àž²àž™" - }, - allDayText: "àž•àž¥àž­àž”àž§àž±àž™", - eventLimitText: "à¹€àžžàžŽà¹ˆàž¡à¹€àž•àžŽàž¡", - noEventsMessage: "à¹„àž¡à¹ˆàž¡àžµàžàžŽàžˆàžàž£àž£àž¡àž—àžµà¹ˆàžˆàž°à¹àžªàž”àž‡" - }; - - return th; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/tr.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/tr.js deleted file mode 100644 index 4845898..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/tr.js +++ /dev/null @@ -1,30 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.tr = factory())); -}(this, function () { 'use strict'; - - var tr = { - code: "tr", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "geri", - next: "ileri", - today: "bugÃŒn", - month: "Ay", - week: "Hafta", - day: "GÃŒn", - list: "Ajanda" - }, - weekLabel: "Hf", - allDayText: "TÃŒm gÃŒn", - eventLimitText: "daha fazla", - noEventsMessage: "Gösterilecek etkinlik yok" - }; - - return tr; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/uk.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/uk.js deleted file mode 100644 index de33f25..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/uk.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.uk = factory())); -}(this, function () { 'use strict'; - - var uk = { - code: "uk", - week: { - dow: 1, - doy: 7 // The week that contains Jan 1st is the first week of the year. - }, - buttonText: { - prev: "ППпереЎМій", - next: "Ўалі", - today: "СьПгПЎМі", - month: "Місяць", - week: "ТОжЎеМь", - day: "ДеМь", - list: "ППряЎПк ЎеММОй" - }, - weekLabel: "ТОж", - allDayText: "Увесь ЎеМь", - eventLimitText: function (n) { - return "+ще " + n + "..."; - }, - noEventsMessage: "НеЌає пПЎій Ўля віЎПбражеММя" - }; - - return uk; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/vi.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/vi.js deleted file mode 100644 index 167ce11..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/vi.js +++ /dev/null @@ -1,32 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.vi = factory())); -}(this, function () { 'use strict'; - - var vi = { - code: "vi", - week: { - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "Trước", - next: "Tiếp", - today: "HÃŽm nay", - month: "Tháng", - week: "Tuần", - day: "Ngày", - list: "Lịch biểu" - }, - weekLabel: "Tu", - allDayText: "Cả ngày", - eventLimitText: function (n) { - return "+ thêm " + n; - }, - noEventsMessage: "KhÃŽng có sá»± kiện để hiển thị" - }; - - return vi; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-cn.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-cn.js deleted file mode 100644 index 4debbb9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-cn.js +++ /dev/null @@ -1,33 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-cn'] = factory())); -}(this, function () { 'use strict'; - - var zhCn = { - code: "zh-cn", - week: { - // GB/T 7408-1994《数据元和亀换栌匏·信息亀换·日期和时闎衚瀺法》䞎ISO 8601:1988等效 - dow: 1, - doy: 4 // The week that contains Jan 4th is the first week of the year. - }, - buttonText: { - prev: "䞊月", - next: "䞋月", - today: "今倩", - month: "月", - week: "å‘š", - day: "日", - list: "日皋" - }, - weekLabel: "å‘š", - allDayText: "党倩", - eventLimitText: function (n) { - return "及倖 " + n + " 䞪"; - }, - noEventsMessage: "没有事件星瀺" - }; - - return zhCn; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-tw.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-tw.js deleted file mode 100644 index bc14dcd..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/locales/zh-tw.js +++ /dev/null @@ -1,26 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-tw'] = factory())); -}(this, function () { 'use strict'; - - var zhTw = { - code: "zh-tw", - buttonText: { - prev: "䞊月", - next: "䞋月", - today: "今倩", - month: "月", - week: "週", - day: "倩", - list: "掻動列衚" - }, - weekLabel: "å‘š", - allDayText: "敎倩", - eventLimitText: '顯瀺曎倚', - noEventsMessage: "没有任䜕掻動" - }; - - return zhTw; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.css deleted file mode 100644 index 4412a18..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.css +++ /dev/null @@ -1,1052 +0,0 @@ -@charset "UTF-8"; -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { - /* extra precedence to overcome jqui */ - font-size: 1em; -} - -/* Colors ---------------------------------------------------------------------------------------------------*/ -.fc-highlight { - /* when user is selecting cells */ - background: #bce8f1; - opacity: 0.3; -} - -.fc-bgevent { - /* default look for background events */ - background: #8fdf82; - opacity: 0.3; -} - -.fc-nonbusiness { - /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #d7d7d7; -} - -/* Popover ---------------------------------------------------------------------------------------------------*/ -.fc-popover { - position: absolute; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); -} - -.fc-popover .fc-header { - /* TODO: be more consistent with fc-head/fc-body */ - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - padding: 2px 4px; -} - -.fc-rtl .fc-popover .fc-header { - flex-direction: row-reverse; -} - -.fc-popover .fc-header .fc-title { - margin: 0 2px; -} - -.fc-popover .fc-header .fc-close { - cursor: pointer; - opacity: 0.65; - font-size: 1.1em; -} - -/* Misc Reusable Components ---------------------------------------------------------------------------------------------------*/ -.fc-divider { - border-style: solid; - border-width: 1px; -} - -hr.fc-divider { - height: 0; - margin: 0; - padding: 0 0 2px; - /* height is unreliable across browsers, so use padding */ - border-width: 1px 0; -} - -.fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-mirror-skeleton { - /* these element should always cling to top-left/right corners */ - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.fc-bg { - bottom: 0; - /* strech bg to bottom edge */ -} - -.fc-bg table { - height: 100%; - /* strech bg to bottom edge */ -} - -/* Tables ---------------------------------------------------------------------------------------------------*/ -.fc table { - width: 100%; - box-sizing: border-box; - /* fix scrollbar issue in firefox */ - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - font-size: 1em; - /* normalize cross-browser */ -} - -.fc th { - text-align: center; -} - -.fc th, -.fc td { - border-style: solid; - border-width: 1px; - padding: 0; - vertical-align: top; -} - -.fc td.fc-today { - border-style: double; - /* overcome neighboring borders */ -} - -/* Internal Nav Links ---------------------------------------------------------------------------------------------------*/ -a[data-goto] { - cursor: pointer; -} - -a[data-goto]:hover { - text-decoration: underline; -} - -/* Fake Table Rows ---------------------------------------------------------------------------------------------------*/ -.fc .fc-row { - /* extra precedence to overcome themes forcing a 1px border */ - /* no visible border by default. but make available if need be (scrollbar width compensation) */ - border-style: solid; - border-width: 0; -} - -.fc-row table { - /* don't put left/right border on anything within a fake row. - the outer tbody will worry about this */ - border-left: 0 hidden transparent; - border-right: 0 hidden transparent; - /* no bottom borders on rows */ - border-bottom: 0 hidden transparent; -} - -.fc-row:first-child table { - border-top: 0 hidden transparent; - /* no top border on first row */ -} - -/* Day Row (used within the header and the DayGrid) ---------------------------------------------------------------------------------------------------*/ -.fc-row { - position: relative; -} - -.fc-row .fc-bg { - z-index: 1; -} - -/* highlighting cells & background event skeleton */ -.fc-row .fc-bgevent-skeleton, -.fc-row .fc-highlight-skeleton { - bottom: 0; - /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-bgevent-skeleton table, -.fc-row .fc-highlight-skeleton table { - height: 100%; - /* stretch skeleton to bottom of row */ -} - -.fc-row .fc-highlight-skeleton td, -.fc-row .fc-bgevent-skeleton td { - border-color: transparent; -} - -.fc-row .fc-bgevent-skeleton { - z-index: 2; -} - -.fc-row .fc-highlight-skeleton { - z-index: 3; -} - -/* -row content (which contains day/week numbers and events) as well as "mirror" (which contains -temporary rendered events). -*/ -.fc-row .fc-content-skeleton { - position: relative; - z-index: 4; - padding-bottom: 2px; - /* matches the space above the events */ -} - -.fc-row .fc-mirror-skeleton { - z-index: 5; -} - -.fc .fc-row .fc-content-skeleton table, -.fc .fc-row .fc-content-skeleton td, -.fc .fc-row .fc-mirror-skeleton td { - /* see-through to the background below */ - /* extra precedence to prevent theme-provided backgrounds */ - background: none; - /* in case s are globally styled */ - border-color: transparent; -} - -.fc-row .fc-content-skeleton td, -.fc-row .fc-mirror-skeleton td { - /* don't put a border between events and/or the day number */ - border-bottom: 0; -} - -.fc-row .fc-content-skeleton tbody td, -.fc-row .fc-mirror-skeleton tbody td { - /* don't put a border between event cells */ - border-top: 0; -} - -/* Scrolling Container ---------------------------------------------------------------------------------------------------*/ -.fc-scroller { - -webkit-overflow-scrolling: touch; -} - -/* TODO: move to timegrid/daygrid */ -.fc-scroller > .fc-day-grid, -.fc-scroller > .fc-time-grid { - position: relative; - /* re-scope all positions */ - width: 100%; - /* hack to force re-sizing this inner element when scrollbars appear/disappear */ -} - -/* Global Event Styles ---------------------------------------------------------------------------------------------------*/ -.fc-event { - position: relative; - /* for resize handle and other inner positioning */ - display: block; - /* make the tag block */ - font-size: 0.85em; - line-height: 1.4; - border-radius: 3px; - border: 1px solid #3788d8; -} - -.fc-event, -.fc-event-dot { - background-color: #3788d8; - /* default BACKGROUND color */ -} - -.fc-event, -.fc-event:hover { - color: #fff; - /* default TEXT color */ - text-decoration: none; - /* if has an href */ -} - -.fc-event[href], -.fc-event.fc-draggable { - cursor: pointer; - /* give events with links and draggable events a hand mouse pointer */ -} - -.fc-not-allowed, -.fc-not-allowed .fc-event { - /* to override an event's custom cursor */ - cursor: not-allowed; -} - -.fc-event .fc-content { - position: relative; - z-index: 2; -} - -/* resizer (cursor AND touch devices) */ -.fc-event .fc-resizer { - position: absolute; - z-index: 4; -} - -/* resizer (touch devices) */ -.fc-event .fc-resizer { - display: none; -} - -.fc-event.fc-allow-mouse-resize .fc-resizer, -.fc-event.fc-selected .fc-resizer { - /* only show when hovering or selected (with touch) */ - display: block; -} - -/* hit area */ -.fc-event.fc-selected .fc-resizer:before { - /* 40x40 touch area */ - content: ""; - position: absolute; - z-index: 9999; - /* user of this util can scope within a lower z-index */ - top: 50%; - left: 50%; - width: 40px; - height: 40px; - margin-left: -20px; - margin-top: -20px; -} - -/* Event Selection (only for touch devices) ---------------------------------------------------------------------------------------------------*/ -.fc-event.fc-selected { - z-index: 9999 !important; - /* overcomes inline z-index */ - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); -} - -.fc-event.fc-selected:after { - content: ""; - position: absolute; - z-index: 1; - /* same z-index as fc-bg, behind text */ - /* overcome the borders */ - top: -1px; - right: -1px; - bottom: -1px; - left: -1px; - /* darkening effect */ - background: #000; - opacity: 0.25; -} - -/* Event Dragging ---------------------------------------------------------------------------------------------------*/ -.fc-event.fc-dragging.fc-selected { - box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); -} - -.fc-event.fc-dragging:not(.fc-selected) { - opacity: 0.75; -} - -/* Horizontal Events ---------------------------------------------------------------------------------------------------*/ -/* bigger touch area when selected */ -.fc-h-event.fc-selected:before { - content: ""; - position: absolute; - z-index: 3; - /* below resizers */ - top: -10px; - bottom: -10px; - left: 0; - right: 0; -} - -/* events that are continuing to/from another week. kill rounded corners and butt up against edge */ -.fc-ltr .fc-h-event.fc-not-start, -.fc-rtl .fc-h-event.fc-not-end { - margin-left: 0; - border-left-width: 0; - padding-left: 1px; - /* replace the border with padding */ - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.fc-ltr .fc-h-event.fc-not-end, -.fc-rtl .fc-h-event.fc-not-start { - margin-right: 0; - border-right-width: 0; - padding-right: 1px; - /* replace the border with padding */ - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -/* resizer (cursor AND touch devices) */ -/* left resizer */ -.fc-ltr .fc-h-event .fc-start-resizer, -.fc-rtl .fc-h-event .fc-end-resizer { - cursor: w-resize; - left: -1px; - /* overcome border */ -} - -/* right resizer */ -.fc-ltr .fc-h-event .fc-end-resizer, -.fc-rtl .fc-h-event .fc-start-resizer { - cursor: e-resize; - right: -1px; - /* overcome border */ -} - -/* resizer (mouse devices) */ -.fc-h-event.fc-allow-mouse-resize .fc-resizer { - width: 7px; - top: -1px; - /* overcome top border */ - bottom: -1px; - /* overcome bottom border */ -} - -/* resizer (touch devices) */ -.fc-h-event.fc-selected .fc-resizer { - /* 8x8 little dot */ - border-radius: 4px; - border-width: 1px; - width: 6px; - height: 6px; - border-style: solid; - border-color: inherit; - background: #fff; - /* vertically center */ - top: 50%; - margin-top: -4px; -} - -/* left resizer */ -.fc-ltr .fc-h-event.fc-selected .fc-start-resizer, -.fc-rtl .fc-h-event.fc-selected .fc-end-resizer { - margin-left: -4px; - /* centers the 8x8 dot on the left edge */ -} - -/* right resizer */ -.fc-ltr .fc-h-event.fc-selected .fc-end-resizer, -.fc-rtl .fc-h-event.fc-selected .fc-start-resizer { - margin-right: -4px; - /* centers the 8x8 dot on the right edge */ -} - -/* DayGrid events ----------------------------------------------------------------------------------------------------- -We use the full "fc-day-grid-event" class instead of using descendants because the event won't -be a descendant of the grid when it is being dragged. -*/ -.fc-day-grid-event { - margin: 1px 2px 0; - /* spacing between events and edges */ - padding: 0 1px; -} - -tr:first-child > td > .fc-day-grid-event { - margin-top: 2px; - /* a little bit more space before the first event */ -} - -.fc-mirror-skeleton tr:first-child > td > .fc-day-grid-event { - margin-top: 0; - /* except for mirror skeleton */ -} - -.fc-day-grid-event .fc-content { - /* force events to be one-line tall */ - white-space: nowrap; - overflow: hidden; -} - -.fc-day-grid-event .fc-time { - font-weight: bold; -} - -/* resizer (cursor devices) */ -/* left resizer */ -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer, -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer { - margin-left: -2px; - /* to the day cell's edge */ -} - -/* right resizer */ -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer, -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer { - margin-right: -2px; - /* to the day cell's edge */ -} - -/* Event Limiting ---------------------------------------------------------------------------------------------------*/ -/* "more" link that represents hidden events */ -a.fc-more { - margin: 1px 3px; - font-size: 0.85em; - cursor: pointer; - text-decoration: none; -} - -a.fc-more:hover { - text-decoration: underline; -} - -.fc-limited { - /* rows and cells that are hidden because of a "more" link */ - display: none; -} - -/* popover that appears when "more" link is clicked */ -.fc-day-grid .fc-row { - z-index: 1; - /* make the "more" popover one higher than this */ -} - -.fc-more-popover { - z-index: 2; - width: 220px; -} - -.fc-more-popover .fc-event-container { - padding: 10px; -} - -/* Now Indicator ---------------------------------------------------------------------------------------------------*/ -.fc-now-indicator { - position: absolute; - border: 0 solid red; -} - -/* Utilities ---------------------------------------------------------------------------------------------------*/ -.fc-unselectable { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-touch-callout: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -/* -TODO: more distinction between this file and common.css -*/ -/* Colors ---------------------------------------------------------------------------------------------------*/ -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-divider, -.fc-unthemed .fc-row, -.fc-unthemed .fc-content, -.fc-unthemed .fc-popover, -.fc-unthemed .fc-list-view, -.fc-unthemed .fc-list-heading td { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #fff; -} - -.fc-unthemed .fc-divider, -.fc-unthemed .fc-popover .fc-header, -.fc-unthemed .fc-list-heading td { - background: #eee; -} - -.fc-unthemed td.fc-today { - background: #fcf8e3; -} - -.fc-unthemed .fc-disabled-day { - background: #d7d7d7; - opacity: 0.3; -} - -/* Icons --------------------------------------------------------------------------------------------------- -from https://feathericons.com/ and built with IcoMoon -*/ -@font-face { - font-family: "fcicons"; - src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype"); - font-weight: normal; - font-style: normal; -} -.fc-icon { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: "fcicons" !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.fc-icon-chevron-left:before { - content: ""; -} - -.fc-icon-chevron-right:before { - content: ""; -} - -.fc-icon-chevrons-left:before { - content: ""; -} - -.fc-icon-chevrons-right:before { - content: ""; -} - -.fc-icon-minus-square:before { - content: ""; -} - -.fc-icon-plus-square:before { - content: ""; -} - -.fc-icon-x:before { - content: ""; -} - -.fc-icon { - display: inline-block; - width: 1em; - height: 1em; - text-align: center; -} - -/* Buttons --------------------------------------------------------------------------------------------------- -Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css -*/ -/* reset */ -.fc-button { - border-radius: 0; - overflow: visible; - text-transform: none; - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -.fc-button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -.fc-button { - -webkit-appearance: button; -} - -.fc-button:not(:disabled) { - cursor: pointer; -} - -.fc-button::-moz-focus-inner { - padding: 0; - border-style: none; -} - -/* theme */ -.fc-button { - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.4em 0.65em; - font-size: 1em; - line-height: 1.5; - border-radius: 0.25em; -} - -.fc-button:hover { - color: #212529; - text-decoration: none; -} - -.fc-button:focus { - outline: 0; - -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); - box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); -} - -.fc-button:disabled { - opacity: 0.65; -} - -/* "primary" coloring */ -.fc-button-primary { - color: #fff; - background-color: #2C3E50; - border-color: #2C3E50; -} - -.fc-button-primary:hover { - color: #fff; - background-color: #1e2b37; - border-color: #1a252f; -} - -.fc-button-primary:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); - box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); -} - -.fc-button-primary:disabled { - color: #fff; - background-color: #2C3E50; - border-color: #2C3E50; -} - -.fc-button-primary:not(:disabled):active, -.fc-button-primary:not(:disabled).fc-button-active { - color: #fff; - background-color: #1a252f; - border-color: #151e27; -} - -.fc-button-primary:not(:disabled):active:focus, -.fc-button-primary:not(:disabled).fc-button-active:focus { - -webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); - box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); -} - -/* icons within buttons */ -.fc-button .fc-icon { - vertical-align: middle; - font-size: 1.5em; -} - -/* Buttons Groups ---------------------------------------------------------------------------------------------------*/ -.fc-button-group { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle; -} - -.fc-button-group > .fc-button { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; -} - -.fc-button-group > .fc-button:hover { - z-index: 1; -} - -.fc-button-group > .fc-button:focus, -.fc-button-group > .fc-button:active, -.fc-button-group > .fc-button.fc-button-active { - z-index: 1; -} - -.fc-button-group > .fc-button:not(:first-child) { - margin-left: -1px; -} - -.fc-button-group > .fc-button:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.fc-button-group > .fc-button:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -/* Popover ---------------------------------------------------------------------------------------------------*/ -.fc-unthemed .fc-popover { - border-width: 1px; - border-style: solid; -} - -/* List View ---------------------------------------------------------------------------------------------------*/ -.fc-unthemed .fc-list-item:hover td { - background-color: #f5f5f5; -} - -/* Toolbar ---------------------------------------------------------------------------------------------------*/ -.fc-toolbar { - display: flex; - justify-content: space-between; - align-items: center; -} - -.fc-toolbar.fc-header-toolbar { - margin-bottom: 1.5em; -} - -.fc-toolbar.fc-footer-toolbar { - margin-top: 1.5em; -} - -/* inner content */ -.fc-toolbar > * > :not(:first-child) { - margin-left: 0.75em; -} - -.fc-toolbar h2 { - font-size: 1.75em; - margin: 0; -} - -/* View Structure ---------------------------------------------------------------------------------------------------*/ -.fc-view-container { - position: relative; -} - -/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ -/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ -.fc-view-container *, -.fc-view-container *:before, -.fc-view-container *:after { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.fc-view, -.fc-view > table { - /* so dragged elements can be above the view's main element */ - position: relative; - z-index: 1; -} - -@media print { - .fc { - max-width: 100% !important; - } - - /* Global Event Restyling - --------------------------------------------------------------------------------------------------*/ - .fc-event { - background: #fff !important; - color: #000 !important; - page-break-inside: avoid; - } - - .fc-event .fc-resizer { - display: none; - } - - /* Table & Day-Row Restyling - --------------------------------------------------------------------------------------------------*/ - .fc th, -.fc td, -.fc hr, -.fc thead, -.fc tbody, -.fc-row { - border-color: #ccc !important; - background: #fff !important; - } - - /* kill the overlaid, absolutely-positioned components */ - /* common... */ - .fc-bg, -.fc-bgevent-skeleton, -.fc-highlight-skeleton, -.fc-mirror-skeleton, -.fc-bgevent-container, -.fc-business-container, -.fc-highlight-container, -.fc-mirror-container { - display: none; - } - - /* don't force a min-height on rows (for DayGrid) */ - .fc tbody .fc-row { - height: auto !important; - /* undo height that JS set in distributeHeight */ - min-height: 0 !important; - /* undo the min-height from each view's specific stylesheet */ - } - - .fc tbody .fc-row .fc-content-skeleton { - position: static; - /* undo .fc-rigid */ - padding-bottom: 0 !important; - /* use a more border-friendly method for this... */ - } - - .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { - /* only works in newer browsers */ - padding-bottom: 1em; - /* ...gives space within the skeleton. also ensures min height in a way */ - } - - .fc tbody .fc-row .fc-content-skeleton table { - /* provides a min-height for the row, but only effective for IE, which exaggerates this value, - making it look more like 3em. for other browers, it will already be this tall */ - height: 1em; - } - - /* Undo month-view event limiting. Display all events and hide the "more" links - --------------------------------------------------------------------------------------------------*/ - .fc-more-cell, -.fc-more { - display: none !important; - } - - .fc tr.fc-limited { - display: table-row !important; - } - - .fc td.fc-limited { - display: table-cell !important; - } - - .fc-popover { - display: none; - /* never display the "more.." popover in print mode */ - } - - /* TimeGrid Restyling - --------------------------------------------------------------------------------------------------*/ - /* undo the min-height 100% trick used to fill the container's height */ - .fc-time-grid { - min-height: 0 !important; - } - - /* don't display the side axis at all ("all-day" and time cells) */ - .fc-timeGrid-view .fc-axis { - display: none; - } - - /* don't display the horizontal lines */ - .fc-slats, -.fc-time-grid hr { - /* this hr is used when height is underused and needs to be filled */ - display: none !important; - /* important overrides inline declaration */ - } - - /* let the container that holds the events be naturally positioned and create real height */ - .fc-time-grid .fc-content-skeleton { - position: static; - } - - /* in case there are no events, we still want some height */ - .fc-time-grid .fc-content-skeleton table { - height: 4em; - } - - /* kill the horizontal spacing made by the event container. event margins will be done below */ - .fc-time-grid .fc-event-container { - margin: 0 !important; - } - - /* TimeGrid *Event* Restyling - --------------------------------------------------------------------------------------------------*/ - /* naturally position events, vertically stacking them */ - .fc-time-grid .fc-event { - position: static !important; - margin: 3px 2px !important; - } - - /* for events that continue to a future day, give the bottom border back */ - .fc-time-grid .fc-event.fc-not-end { - border-bottom-width: 1px !important; - } - - /* indicate the event continues via "..." text */ - .fc-time-grid .fc-event.fc-not-end:after { - content: "..."; - } - - /* for events that are continuations from previous days, give the top border back */ - .fc-time-grid .fc-event.fc-not-start { - border-top-width: 1px !important; - } - - /* indicate the event is a continuation via "..." text */ - .fc-time-grid .fc-event.fc-not-start:before { - content: "..."; - } - - /* time */ - /* undo a previous declaration and let the time text span to a second line */ - .fc-time-grid .fc-event .fc-time { - white-space: normal !important; - } - - /* hide the the time that is normally displayed... */ - .fc-time-grid .fc-event .fc-time span { - display: none; - } - - /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ - .fc-time-grid .fc-event .fc-time:after { - content: attr(data-full); - } - - /* Vertical Scroller & Containers - --------------------------------------------------------------------------------------------------*/ - /* kill the scrollbars and allow natural height */ - .fc-scroller, -.fc-day-grid-container, -.fc-time-grid-container { - /* */ - overflow: visible !important; - height: auto !important; - } - - /* kill the horizontal border/padding used to compensate for scrollbars */ - .fc-row { - border: 0 !important; - margin: 0 !important; - } - - /* Button Controls - --------------------------------------------------------------------------------------------------*/ - .fc-button-group, -.fc button { - display: none; - /* don't display any button-related controls */ - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.d.ts b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.d.ts deleted file mode 100644 index cfd2343..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.d.ts +++ /dev/null @@ -1,2730 +0,0 @@ -// Generated by dts-bundle v0.7.3-fork.1 -// Dependencies for this module: -// ../../../../../@fullcalendar/core - -declare module '@fullcalendar/core' { - export const version = "<%= version %>"; - export { OptionsInput } from '@fullcalendar/core/types/input-types'; - export { EventInput, EventDef, EventDefHash, EventInstance, EventInstanceHash, parseEventDef, createEventInstance, EventTuple } from '@fullcalendar/core/structs/event'; - export { BusinessHoursInput, parseBusinessHours } from '@fullcalendar/core/structs/business-hours'; - export { applyAll, debounce, padStart, isInt, capitaliseFirstLetter, parseFieldSpecs, compareByFieldSpecs, compareByFieldSpec, flexibleCompare, computeVisibleDayRange, refineProps, matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight, isMultiDayRange, distributeHeight, undistributeHeight, preventSelection, allowSelection, preventContextMenu, allowContextMenu, compareNumbers, enableCursor, disableCursor, diffDates } from '@fullcalendar/core/util/misc'; - export { htmlEscape, cssToStr } from '@fullcalendar/core/util/html'; - export { removeExact, isArraysEqual } from '@fullcalendar/core/util/array'; - export { memoize, memoizeOutput } from '@fullcalendar/core/util/memoize'; - export { memoizeRendering, MemoizedRendering } from '@fullcalendar/core/component/memoized-rendering'; - export { intersectRects, Rect, pointInsideRect, constrainPoint, getRectCenter, diffPoints, Point, translateRect } from '@fullcalendar/core/util/geom'; - export { mapHash, filterHash, isPropsEqual } from '@fullcalendar/core/util/object'; - export { findElements, findChildren, htmlToElement, createElement, insertAfterElement, prependToElement, removeElement, appendToElement, applyStyle, applyStyleProp, elementMatches, elementClosest, forceClassName } from '@fullcalendar/core/util/dom-manip'; - export { EventStore, filterEventStoreDefs, createEmptyEventStore, mergeEventStores, getRelevantEvents, eventTupleToStore } from '@fullcalendar/core/structs/event-store'; - export { EventUiHash, EventUi, processScopedUiProps, combineEventUis } from '@fullcalendar/core/component/event-ui'; - export { default as Splitter, SplittableProps } from '@fullcalendar/core/component/event-splitting'; - export { buildGotoAnchorHtml, getAllDayHtml, getDayClasses } from '@fullcalendar/core/component/date-rendering'; - export { preventDefault, listenBySelector, whenTransitionDone } from '@fullcalendar/core/util/dom-event'; - export { computeInnerRect, computeEdges, computeHeightAndMargins, getClippingParents, computeClippingRect, computeRect } from '@fullcalendar/core/util/dom-geom'; - export { unpromisify } from '@fullcalendar/core/util/promise'; - export { default as EmitterMixin, EmitterInterface } from '@fullcalendar/core/common/EmitterMixin'; - export { DateRange, rangeContainsMarker, intersectRanges, rangesEqual, rangesIntersect, rangeContainsRange } from '@fullcalendar/core/datelib/date-range'; - export { default as Mixin } from '@fullcalendar/core/common/Mixin'; - export { default as PositionCache } from '@fullcalendar/core/common/PositionCache'; - export { default as ScrollComponent, ScrollbarWidths } from '@fullcalendar/core/common/ScrollComponent'; - export { ScrollController, ElementScrollController, WindowScrollController } from '@fullcalendar/core/common/scroll-controller'; - export { default as Theme } from '@fullcalendar/core/theme/Theme'; - export { default as Component, ComponentContext } from '@fullcalendar/core/component/Component'; - export { default as DateComponent, Seg, EventSegUiInteractionState } from '@fullcalendar/core/component/DateComponent'; - export { default as Calendar, DatePointTransform, DateSpanTransform, DateSelectionApi } from '@fullcalendar/core/Calendar'; - export { default as View, ViewProps } from '@fullcalendar/core/View'; - export { default as FgEventRenderer, buildSegCompareObj } from '@fullcalendar/core/component/renderers/FgEventRenderer'; - export { default as FillRenderer } from '@fullcalendar/core/component/renderers/FillRenderer'; - export { default as DateProfileGenerator, DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - export { ViewDef } from '@fullcalendar/core/structs/view-def'; - export { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - export { DateSpan, DateSpanApi, DatePointApi, isDateSpansEqual } from '@fullcalendar/core/structs/date-span'; - export { DateMarker, addDays, startOfDay, addMs, addWeeks, diffWeeks, diffWholeWeeks, diffWholeDays, diffDayAndTime, diffDays, isValidDate } from '@fullcalendar/core/datelib/marker'; - export { Duration, createDuration, isSingleDay, multiplyDuration, addDurations, asRoughMinutes, asRoughSeconds, asRoughMs, wholeDivideDurations, greatestDurationDenominator } from '@fullcalendar/core/datelib/duration'; - export { DateEnv, DateMarkerMeta } from '@fullcalendar/core/datelib/env'; - export { DateFormatter, createFormatter, VerboseFormattingArg, formatIsoTimeString } from '@fullcalendar/core/datelib/formatting'; - export { NamedTimeZoneImpl } from '@fullcalendar/core/datelib/timezone'; - export { parse as parseMarker } from '@fullcalendar/core/datelib/parsing'; - export { EventSourceDef, EventSource, EventSourceHash } from '@fullcalendar/core/structs/event-source'; - export { Interaction, InteractionSettings, interactionSettingsToStore, interactionSettingsStore, InteractionSettingsStore } from '@fullcalendar/core/interactions/interaction'; - export { PointerDragEvent } from '@fullcalendar/core/interactions/pointer'; - export { Hit } from '@fullcalendar/core/interactions/hit'; - export { dateSelectionJoinTransformer } from '@fullcalendar/core/interactions/date-selecting'; - export { eventDragMutationMassager, EventDropTransformers } from '@fullcalendar/core/interactions/event-dragging'; - export { EventResizeJoinTransforms } from '@fullcalendar/core/interactions/event-resizing'; - export { default as ElementDragging } from '@fullcalendar/core/interactions/ElementDragging'; - export { formatDate, formatRange } from '@fullcalendar/core/formatting-api'; - export { globalDefaults, config } from '@fullcalendar/core/options'; - export { RecurringType, ParsedRecurring } from '@fullcalendar/core/structs/recurring-event'; - export { DragMetaInput, DragMeta, parseDragMeta } from '@fullcalendar/core/structs/drag-meta'; - export { createPlugin, PluginDef, PluginDefInput, ViewPropsTransformer, ViewContainerModifier } from '@fullcalendar/core/plugin-system'; - export { reducerFunc, Action, CalendarState } from '@fullcalendar/core/reducers/types'; - export { CalendarComponentProps } from '@fullcalendar/core/CalendarComponent'; - export { default as DayHeader } from '@fullcalendar/core/common/DayHeader'; - export { computeFallbackHeaderFormat, renderDateCell } from '@fullcalendar/core/common/table-utils'; - export { default as DaySeries } from '@fullcalendar/core/common/DaySeries'; - export { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - export { EventRenderRange, sliceEventStore, hasBgRendering, getElSeg } from '@fullcalendar/core/component/event-rendering'; - export { default as DayTable, DayTableSeg, DayTableCell } from '@fullcalendar/core/common/DayTable'; - export { default as Slicer, SlicedProps } from '@fullcalendar/core/common/slicing-utils'; - export { EventMutation, applyMutationToEventStore } from '@fullcalendar/core/structs/event-mutation'; - export { Constraint, ConstraintInput, AllowFunc, isPropsValid, isInteractionValid } from '@fullcalendar/core/validation'; - export { default as EventApi } from '@fullcalendar/core/api/EventApi'; - export { default as requestJson } from '@fullcalendar/core/util/requestJson'; -} - -declare module '@fullcalendar/core/types/input-types' { - import View from '@fullcalendar/core/View'; - import { EventSourceInput, EventInputTransformer } from '@fullcalendar/core/structs/event-source'; - import { Duration, DurationInput } from '@fullcalendar/core/datelib/duration'; - import { DateInput } from '@fullcalendar/core/datelib/env'; - import { FormatterInput } from '@fullcalendar/core/datelib/formatting'; - import { DateRangeInput } from '@fullcalendar/core/datelib/date-range'; - import { BusinessHoursInput } from '@fullcalendar/core/structs/business-hours'; - import EventApi from '@fullcalendar/core/api/EventApi'; - import { AllowFunc, ConstraintInput, OverlapFunc } from '@fullcalendar/core/validation'; - import { PluginDef } from '@fullcalendar/core/plugin-system'; - import { LocaleSingularArg, RawLocale } from '@fullcalendar/core/datelib/locale'; - export interface ToolbarInput { - left?: string; - center?: string; - right?: string; - } - export interface CustomButtonInput { - text: string; - icon?: string; - themeIcon?: string; - bootstrapFontAwesome?: string; - click(element: HTMLElement): void; - } - export interface ButtonIconsInput { - prev?: string; - next?: string; - prevYear?: string; - nextYear?: string; - } - export interface ButtonTextCompoundInput { - prev?: string; - next?: string; - prevYear?: string; - nextYear?: string; - today?: string; - month?: string; - week?: string; - day?: string; - [viewId: string]: string | undefined; - } - export interface EventSegment { - event: EventApi; - start: Date; - end: Date; - isStart: boolean; - isEnd: boolean; - } - export interface CellInfo { - date: Date; - dayEl: HTMLElement; - moreEl: HTMLElement; - segs: EventSegment[]; - hiddenSegs: EventSegment[]; - } - export interface DropInfo { - start: Date; - end: Date; - } - export type EventHandlerName = '_init' | 'selectAllow' | 'eventAllow' | 'eventDataTransform' | 'datesRender' | 'datesDestroy' | 'dayRender' | 'windowResize' | 'dateClick' | 'eventClick' | 'eventMouseEnter' | 'eventMouseLeave' | 'select' | 'unselect' | 'loading' | 'eventRender' | 'eventPositioned' | '_eventsPositioned' | 'eventDestroy' | 'eventDragStart' | 'eventDragStop' | 'eventDrop' | '_destroyed' | 'drop' | 'eventResizeStart' | 'eventResizeStop' | 'eventResize' | 'eventReceive' | 'eventLeave' | 'viewSkeletonRender' | 'viewSkeletonDestroy' | '_noEventDrop' | '_noEventResize' | 'eventLimitClick' | 'resourceRender'; - export type EventHandlerArgs = Parameters any>>; - export type EventHandlerArg = EventHandlerArgs[0]; - export interface OptionsInputBase { - header?: boolean | ToolbarInput; - footer?: boolean | ToolbarInput; - customButtons?: { - [name: string]: CustomButtonInput; - }; - buttonIcons?: boolean | ButtonIconsInput; - themeSystem?: 'standard' | string; - bootstrapFontAwesome?: boolean | ButtonIconsInput; - firstDay?: number; - dir?: 'ltr' | 'rtl' | 'auto'; - weekends?: boolean; - hiddenDays?: number[]; - fixedWeekCount?: boolean; - weekNumbers?: boolean; - weekNumbersWithinDays?: boolean; - weekNumberCalculation?: 'local' | 'ISO' | ((m: Date) => number); - businessHours?: BusinessHoursInput; - showNonCurrentDates?: boolean; - height?: number | 'auto' | 'parent' | (() => number); - contentHeight?: number | 'auto' | (() => number); - aspectRatio?: number; - handleWindowResize?: boolean; - windowResizeDelay?: number; - eventLimit?: boolean | number; - eventLimitClick?: 'popover' | 'week' | 'day' | 'timeGridWeek' | 'timeGridDay' | string | ((arg: { - date: Date; - allDay: boolean; - dayEl: HTMLElement; - moreEl: HTMLElement; - segs: any[]; - hiddenSegs: any[]; - jsEvent: MouseEvent; - view: View; - }) => void); - timeZone?: string | boolean; - now?: DateInput | (() => DateInput); - defaultView?: string; - allDaySlot?: boolean; - allDayText?: string; - slotDuration?: DurationInput; - slotLabelFormat?: FormatterInput; - slotLabelInterval?: DurationInput; - snapDuration?: DurationInput; - scrollTime?: DurationInput; - minTime?: DurationInput; - maxTime?: DurationInput; - slotEventOverlap?: boolean; - listDayFormat?: FormatterInput | boolean; - listDayAltFormat?: FormatterInput | boolean; - noEventsMessage?: string; - defaultDate?: DateInput; - nowIndicator?: boolean; - visibleRange?: ((currentDate: Date) => DateRangeInput) | DateRangeInput; - validRange?: DateRangeInput; - dateIncrement?: DurationInput; - dateAlignment?: string; - duration?: DurationInput; - dayCount?: number; - locales?: RawLocale[]; - locale?: LocaleSingularArg; - eventTimeFormat?: FormatterInput; - columnHeader?: boolean; - columnHeaderFormat?: FormatterInput; - columnHeaderText?: string | ((date: DateInput) => string); - columnHeaderHtml?: string | ((date: DateInput) => string); - titleFormat?: FormatterInput; - weekLabel?: string; - displayEventTime?: boolean; - displayEventEnd?: boolean; - eventLimitText?: string | ((eventCnt: number) => string); - dayPopoverFormat?: FormatterInput; - navLinks?: boolean; - navLinkDayClick?: string | ((date: Date, jsEvent: Event) => void); - navLinkWeekClick?: string | ((weekStart: any, jsEvent: Event) => void); - selectable?: boolean; - selectMirror?: boolean; - unselectAuto?: boolean; - unselectCancel?: string; - defaultAllDayEventDuration?: DurationInput; - defaultTimedEventDuration?: DurationInput; - cmdFormatter?: string; - defaultRangeSeparator?: string; - selectConstraint?: ConstraintInput; - selectOverlap?: boolean | OverlapFunc; - selectAllow?: AllowFunc; - editable?: boolean; - eventStartEditable?: boolean; - eventDurationEditable?: boolean; - eventConstraint?: ConstraintInput; - eventOverlap?: boolean | OverlapFunc; - eventAllow?: AllowFunc; - eventClassName?: string[] | string; - eventClassNames?: string[] | string; - eventBackgroundColor?: string; - eventBorderColor?: string; - eventTextColor?: string; - eventColor?: string; - events?: EventSourceInput; - eventSources?: EventSourceInput[]; - allDayDefault?: boolean; - startParam?: string; - endParam?: string; - lazyFetching?: boolean; - nextDayThreshold?: DurationInput; - eventOrder?: string | Array<((a: EventApi, b: EventApi) => number) | (string | ((a: EventApi, b: EventApi) => number))>; - rerenderDelay?: number | null; - dragRevertDuration?: number; - dragScroll?: boolean; - longPressDelay?: number; - eventLongPressDelay?: number; - droppable?: boolean; - dropAccept?: string | ((draggable: any) => boolean); - eventDataTransform?: EventInputTransformer; - allDayMaintainDuration?: boolean; - eventResizableFromStart?: boolean; - timeGridEventMinHeight?: number; - allDayHtml?: string; - eventDragMinDistance?: number; - eventSourceFailure?: any; - eventSourceSuccess?: any; - forceEventDuration?: boolean; - progressiveEventRendering?: boolean; - selectLongPressDelay?: number; - selectMinDistance?: number; - timeZoneParam?: string; - titleRangeSeparator?: string; - datesRender?(arg: { - view: View; - el: HTMLElement; - }): void; - datesDestroy?(arg: { - view: View; - el: HTMLElement; - }): void; - dayRender?(arg: { - view: View; - date: Date; - allDay?: boolean; - el: HTMLElement; - }): void; - windowResize?(view: View): void; - dateClick?(arg: { - date: Date; - dateStr: string; - allDay: boolean; - resource?: any; - dayEl: HTMLElement; - jsEvent: MouseEvent; - view: View; - }): void; - eventClick?(arg: { - el: HTMLElement; - event: EventApi; - jsEvent: MouseEvent; - view: View; - }): boolean | void; - eventMouseEnter?(arg: { - el: HTMLElement; - event: EventApi; - jsEvent: MouseEvent; - view: View; - }): void; - eventMouseLeave?(arg: { - el: HTMLElement; - event: EventApi; - jsEvent: MouseEvent; - view: View; - }): void; - select?(arg: { - start: Date; - end: Date; - startStr: string; - endStr: string; - allDay: boolean; - resource?: any; - jsEvent: MouseEvent; - view: View; - }): void; - unselect?(arg: { - view: View; - jsEvent: Event; - }): void; - loading?(isLoading: boolean): void; - eventRender?(arg: { - isMirror: boolean; - isStart: boolean; - isEnd: boolean; - event: EventApi; - el: HTMLElement; - view: View; - }): void; - eventPositioned?(arg: { - isMirror: boolean; - isStart: boolean; - isEnd: boolean; - event: EventApi; - el: HTMLElement; - view: View; - }): void; - _eventsPositioned?(arg: { - view: View; - }): void; - eventDestroy?(arg: { - isMirror: boolean; - event: EventApi; - el: HTMLElement; - view: View; - }): void; - eventDragStart?(arg: { - event: EventApi; - el: HTMLElement; - jsEvent: MouseEvent; - view: View; - }): void; - eventDragStop?(arg: { - event: EventApi; - el: HTMLElement; - jsEvent: MouseEvent; - view: View; - }): void; - eventDrop?(arg: { - el: HTMLElement; - event: EventApi; - oldEvent: EventApi; - delta: Duration; - revert: () => void; - jsEvent: Event; - view: View; - }): void; - eventResizeStart?(arg: { - el: HTMLElement; - event: EventApi; - jsEvent: MouseEvent; - view: View; - }): void; - eventResizeStop?(arg: { - el: HTMLElement; - event: EventApi; - jsEvent: MouseEvent; - view: View; - }): void; - eventResize?(arg: { - el: HTMLElement; - startDelta: Duration; - endDelta: Duration; - prevEvent: EventApi; - event: EventApi; - revert: () => void; - jsEvent: Event; - view: View; - }): void; - drop?(arg: { - date: Date; - dateStr: string; - allDay: boolean; - draggedEl: HTMLElement; - jsEvent: MouseEvent; - view: View; - }): void; - eventReceive?(arg: { - event: EventApi; - draggedEl: HTMLElement; - view: View; - }): void; - eventLeave?(arg: { - draggedEl: HTMLElement; - event: EventApi; - view: View; - }): void; - viewSkeletonRender?(arg: { - el: HTMLElement; - view: View; - }): void; - viewSkeletonDestroy?(arg: { - el: HTMLElement; - view: View; - }): void; - _destroyed?(): void; - _init?(): void; - _noEventDrop?(): void; - _noEventResize?(): void; - resourceRender?(arg: { - resource: any; - el: HTMLElement; - view: View; - }): void; - } - export interface ViewOptionsInput extends OptionsInputBase { - type?: string; - buttonText?: string; - } - export interface OptionsInput extends OptionsInputBase { - buttonText?: ButtonTextCompoundInput; - views?: { - [viewId: string]: ViewOptionsInput; - }; - plugins?: (PluginDef | string)[]; - } -} - -declare module '@fullcalendar/core/structs/event' { - import { DateInput } from '@fullcalendar/core/datelib/env'; - import Calendar from '@fullcalendar/core/Calendar'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { UnscopedEventUiInput, EventUi } from '@fullcalendar/core/component/event-ui'; - export type EventRenderingChoice = '' | 'background' | 'inverse-background' | 'none'; - export interface EventNonDateInput extends UnscopedEventUiInput { - id?: string | number; - groupId?: string | number; - title?: string; - url?: string; - rendering?: EventRenderingChoice; - extendedProps?: object; - [extendedProp: string]: any; - } - export interface EventDateInput { - start?: DateInput; - end?: DateInput; - date?: DateInput; - allDay?: boolean; - } - export type EventInput = EventNonDateInput & EventDateInput; - export interface EventDef { - defId: string; - sourceId: string; - publicId: string; - groupId: string; - allDay: boolean; - hasEnd: boolean; - recurringDef: { - typeId: number; - typeData: any; - duration: Duration | null; - } | null; - title: string; - url: string; - rendering: EventRenderingChoice; - ui: EventUi; - extendedProps: any; - } - export interface EventInstance { - instanceId: string; - defId: string; - range: DateRange; - forcedStartTzo: number | null; - forcedEndTzo: number | null; - } - export interface EventTuple { - def: EventDef; - instance: EventInstance | null; - } - export type EventInstanceHash = { - [instanceId: string]: EventInstance; - }; - export type EventDefHash = { - [defId: string]: EventDef; - }; - export const NON_DATE_PROPS: { - id: StringConstructor; - groupId: StringConstructor; - title: StringConstructor; - url: StringConstructor; - rendering: StringConstructor; - extendedProps: any; - }; - export const DATE_PROPS: { - start: any; - date: any; - end: any; - allDay: any; - }; - export function parseEvent(raw: EventInput, sourceId: string, calendar: Calendar, allowOpenRange?: boolean): EventTuple | null; - export function parseEventDef(raw: EventNonDateInput, sourceId: string, allDay: boolean, hasEnd: boolean, calendar: Calendar): EventDef; - export type eventDefParserFunc = (def: EventDef, props: any, leftovers: any) => void; - export function createEventInstance(defId: string, range: DateRange, forcedStartTzo?: number, forcedEndTzo?: number): EventInstance; -} - -declare module '@fullcalendar/core/structs/business-hours' { - import Calendar from '@fullcalendar/core/Calendar'; - import { EventInput } from '@fullcalendar/core/structs/event'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - export type BusinessHoursInput = boolean | EventInput | EventInput[]; - export function parseBusinessHours(input: BusinessHoursInput, calendar: Calendar): EventStore; -} - -declare module '@fullcalendar/core/util/misc' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { DateEnv } from '@fullcalendar/core/datelib/env'; - import { DateRange, OpenDateRange } from '@fullcalendar/core/datelib/date-range'; - export function compensateScroll(rowEl: HTMLElement, scrollbarWidths: any): void; - export function uncompensateScroll(rowEl: HTMLElement): void; - export function disableCursor(): void; - export function enableCursor(): void; - export function distributeHeight(els: HTMLElement[], availableHeight: any, shouldRedistribute: any): void; - export function undistributeHeight(els: HTMLElement[]): void; - export function matchCellWidths(els: HTMLElement[]): number; - export function subtractInnerElHeight(outerEl: HTMLElement, innerEl: HTMLElement): number; - export function preventSelection(el: HTMLElement): void; - export function allowSelection(el: HTMLElement): void; - export function preventContextMenu(el: HTMLElement): void; - export function allowContextMenu(el: HTMLElement): void; - export function parseFieldSpecs(input: any): any[]; - export function compareByFieldSpecs(obj0: any, obj1: any, fieldSpecs: any): any; - export function compareByFieldSpec(obj0: any, obj1: any, fieldSpec: any): any; - export function flexibleCompare(a: any, b: any): number; - export function capitaliseFirstLetter(str: any): any; - export function padStart(val: any, len: any): string; - export function compareNumbers(a: any, b: any): number; - export function isInt(n: any): boolean; - export function applyAll(functions: any, thisObj: any, args: any): any; - export function firstDefined(...args: any[]): any; - export function debounce(func: any, wait: any): () => any; - export type GenericHash = { - [key: string]: any; - }; - export function refineProps(rawProps: GenericHash, processors: GenericHash, defaults?: GenericHash, leftoverProps?: GenericHash): GenericHash; - export function computeAlignedDayRange(timedRange: DateRange): DateRange; - export function computeVisibleDayRange(timedRange: OpenDateRange, nextDayThreshold?: Duration): OpenDateRange; - export function isMultiDayRange(range: DateRange): boolean; - export function diffDates(date0: DateMarker, date1: DateMarker, dateEnv: DateEnv, largeUnit?: string): Duration; -} - -declare module '@fullcalendar/core/util/html' { - export function htmlEscape(s: any): string; - export function cssToStr(cssProps: any): string; - export function attrsToStr(attrs: any): string; - export type ClassNameInput = string | string[]; - export function parseClassName(raw: ClassNameInput): string[]; -} - -declare module '@fullcalendar/core/util/array' { - export function removeMatching(array: any, testFunc: any): number; - export function removeExact(array: any, exactVal: any): number; - export function isArraysEqual(a0: any, a1: any): boolean; -} - -declare module '@fullcalendar/core/util/memoize' { - export function memoize(workerFunc: T): T; - export function memoizeOutput(workerFunc: T, equalityFunc: (output0: any, output1: any) => boolean): T; -} - -declare module '@fullcalendar/core/component/memoized-rendering' { - export interface MemoizedRendering { - (...args: ArgsType): void; - unrender: () => void; - dependents: MemoizedRendering[]; - } - export function memoizeRendering(renderFunc: (...args: ArgsType) => void, unrenderFunc?: (...args: ArgsType) => void, dependencies?: MemoizedRendering[]): MemoizedRendering; -} - -declare module '@fullcalendar/core/util/geom' { - export interface Point { - left: number; - top: number; - } - export interface Rect { - left: number; - right: number; - top: number; - bottom: number; - } - export function pointInsideRect(point: Point, rect: Rect): boolean; - export function intersectRects(rect1: Rect, rect2: Rect): Rect | false; - export function translateRect(rect: Rect, deltaX: number, deltaY: number): Rect; - export function constrainPoint(point: Point, rect: Rect): Point; - export function getRectCenter(rect: Rect): Point; - export function diffPoints(point1: Point, point2: Point): Point; -} - -declare module '@fullcalendar/core/util/object' { - export function mergeProps(propObjs: any, complexProps?: any): any; - export function filterHash(hash: any, func: any): {}; - export function mapHash(hash: { - [key: string]: InputItem; - }, func: (input: InputItem, key: string) => OutputItem): { - [key: string]: OutputItem; - }; - export function arrayToHash(a: any): { - [key: string]: true; - }; - export function hashValuesToArray(obj: any): any[]; - export function isPropsEqual(obj0: any, obj1: any): boolean; -} - -declare module '@fullcalendar/core/util/dom-manip' { - export function createElement(tagName: string, attrs: object | null, content?: ElementContent): HTMLElement; - export function htmlToElement(html: string): HTMLElement; - export function htmlToElements(html: string): HTMLElement[]; - export type ElementContent = string | Node | Node[] | NodeList; - export function appendToElement(el: HTMLElement, content: ElementContent): void; - export function prependToElement(parent: HTMLElement, content: ElementContent): void; - export function insertAfterElement(refEl: HTMLElement, content: ElementContent): void; - export function removeElement(el: HTMLElement): void; - export function elementClosest(el: HTMLElement, selector: string): HTMLElement; - export function elementMatches(el: HTMLElement, selector: string): HTMLElement; - export function findElements(container: HTMLElement[] | HTMLElement | NodeListOf, selector: string): HTMLElement[]; - export function findChildren(parent: HTMLElement[] | HTMLElement, selector?: string): HTMLElement[]; - export function forceClassName(el: HTMLElement, className: string, bool: any): void; - export function applyStyle(el: HTMLElement, props: object): void; - export function applyStyleProp(el: HTMLElement, name: string, val: any): void; -} - -declare module '@fullcalendar/core/structs/event-store' { - import { EventInput, EventDef, EventDefHash, EventInstanceHash, EventTuple } from '@fullcalendar/core/structs/event'; - import { EventSource } from '@fullcalendar/core/structs/event-source'; - import Calendar from '@fullcalendar/core/Calendar'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - export interface EventStore { - defs: EventDefHash; - instances: EventInstanceHash; - } - export function parseEvents(rawEvents: EventInput[], sourceId: string, calendar: Calendar, allowOpenRange?: boolean): EventStore; - export function eventTupleToStore(tuple: EventTuple, eventStore?: EventStore): EventStore; - export function expandRecurring(eventStore: EventStore, framingRange: DateRange, calendar: Calendar): EventStore; - export function getRelevantEvents(eventStore: EventStore, instanceId: string): EventStore; - export function transformRawEvents(rawEvents: any, eventSource: EventSource, calendar: Calendar): any; - export function createEmptyEventStore(): EventStore; - export function mergeEventStores(store0: EventStore, store1: EventStore): EventStore; - export function filterEventStoreDefs(eventStore: EventStore, filterFunc: (eventDef: EventDef) => boolean): EventStore; -} - -declare module '@fullcalendar/core/component/event-ui' { - import { Constraint, AllowFunc, ConstraintInput } from '@fullcalendar/core/validation'; - import { parseClassName } from '@fullcalendar/core/util/html'; - import Calendar from '@fullcalendar/core/Calendar'; - export interface UnscopedEventUiInput { - editable?: boolean; - startEditable?: boolean; - durationEditable?: boolean; - constraint?: ConstraintInput; - overlap?: boolean; - allow?: AllowFunc; - className?: string[] | string; - classNames?: string[] | string; - backgroundColor?: string; - borderColor?: string; - textColor?: string; - color?: string; - } - export interface EventUi { - startEditable: boolean | null; - durationEditable: boolean | null; - constraints: Constraint[]; - overlap: boolean | null; - allows: AllowFunc[]; - backgroundColor: string; - borderColor: string; - textColor: string; - classNames: string[]; - } - export type EventUiHash = { - [defId: string]: EventUi; - }; - export const UNSCOPED_EVENT_UI_PROPS: { - editable: BooleanConstructor; - startEditable: BooleanConstructor; - durationEditable: BooleanConstructor; - constraint: any; - overlap: any; - allow: any; - className: typeof parseClassName; - classNames: typeof parseClassName; - color: StringConstructor; - backgroundColor: StringConstructor; - borderColor: StringConstructor; - textColor: StringConstructor; - }; - export function processUnscopedUiProps(rawProps: UnscopedEventUiInput, calendar: Calendar, leftovers?: any): EventUi; - export function processScopedUiProps(prefix: string, rawScoped: any, calendar: Calendar, leftovers?: any): EventUi; - export function combineEventUis(uis: EventUi[]): EventUi; -} - -declare module '@fullcalendar/core/component/event-splitting' { - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventDef } from '@fullcalendar/core/structs/event'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { EventUiHash, EventUi } from '@fullcalendar/core/component/event-ui'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - export interface SplittableProps { - businessHours: EventStore | null; - dateSelection: DateSpan | null; - eventStore: EventStore; - eventUiBases: EventUiHash; - eventSelection: string; - eventDrag: EventInteractionState | null; - eventResize: EventInteractionState | null; - } - export { Splitter as default, Splitter }; - abstract class Splitter { - abstract getKeyInfo(props: PropsType): { - [key: string]: { - ui?: EventUi; - businessHours?: EventStore; - }; - }; - abstract getKeysForDateSpan(dateSpan: DateSpan): string[]; - abstract getKeysForEventDef(eventDef: EventDef): string[]; - splitProps(props: PropsType): { - [key: string]: SplittableProps; - }; - } -} - -declare module '@fullcalendar/core/component/date-rendering' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import Component, { ComponentContext } from '@fullcalendar/core/component/Component'; - import { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - export function buildGotoAnchorHtml(component: Component, gotoOptions: any, attrs: any, innerHtml?: any): string; - export function getAllDayHtml(component: Component): any; - export function getDayClasses(date: DateMarker, dateProfile: DateProfile, context: ComponentContext, noThemeHighlight?: any): any[]; -} - -declare module '@fullcalendar/core/util/dom-event' { - export function preventDefault(ev: any): void; - export function listenBySelector(container: HTMLElement, eventType: string, selector: string, handler: (ev: Event, matchedTarget: HTMLElement) => void): () => void; - export function listenToHoverBySelector(container: HTMLElement, selector: string, onMouseEnter: (ev: Event, matchedTarget: HTMLElement) => void, onMouseLeave: (ev: Event, matchedTarget: HTMLElement) => void): () => void; - export function whenTransitionDone(el: HTMLElement, callback: (ev: Event) => void): void; -} - -declare module '@fullcalendar/core/util/dom-geom' { - import { Rect } from '@fullcalendar/core/util/geom'; - export interface EdgeInfo { - borderLeft: number; - borderRight: number; - borderTop: number; - borderBottom: number; - scrollbarLeft: number; - scrollbarRight: number; - scrollbarBottom: number; - paddingLeft?: number; - paddingRight?: number; - paddingTop?: number; - paddingBottom?: number; - } - export function computeEdges(el: any, getPadding?: boolean): EdgeInfo; - export function computeInnerRect(el: any, goWithinPadding?: boolean): { - left: number; - right: number; - top: number; - bottom: number; - }; - export function computeRect(el: any): Rect; - export function computeHeightAndMargins(el: HTMLElement): number; - export function computeVMargins(el: HTMLElement): number; - export function getClippingParents(el: HTMLElement): HTMLElement[]; - export function computeClippingRect(el: HTMLElement): Rect; -} - -declare module '@fullcalendar/core/util/promise' { - export function unpromisify(func: any, success: any, failure?: any): void; -} - -declare module '@fullcalendar/core/common/EmitterMixin' { - import Mixin from '@fullcalendar/core/common/Mixin'; - export interface EmitterInterface { - on(types: any, handler: any): any; - one(types: any, handler: any): any; - off(types: any, handler: any): any; - trigger(type: any, ...args: any[]): any; - triggerWith(type: any, context: any, args: any): any; - hasHandlers(type: any): any; - } - export { EmitterMixin as default, EmitterMixin }; - class EmitterMixin extends Mixin implements EmitterInterface { - _handlers: any; - _oneHandlers: any; - on(type: any, handler: any): this; - one(type: any, handler: any): this; - off(type: any, handler?: any): this; - trigger(type: any, ...args: any[]): this; - triggerWith(type: any, context: any, args: any): this; - hasHandlers(type: any): any; - } -} - -declare module '@fullcalendar/core/datelib/date-range' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { DateEnv, DateInput } from '@fullcalendar/core/datelib/env'; - export interface DateRangeInput { - start?: DateInput; - end?: DateInput; - } - export interface OpenDateRange { - start: DateMarker | null; - end: DateMarker | null; - } - export interface DateRange { - start: DateMarker; - end: DateMarker; - } - export function parseRange(input: DateRangeInput, dateEnv: DateEnv): OpenDateRange; - export function invertRanges(ranges: DateRange[], constraintRange: DateRange): DateRange[]; - export function intersectRanges(range0: OpenDateRange, range1: OpenDateRange): OpenDateRange; - export function rangesEqual(range0: OpenDateRange, range1: OpenDateRange): boolean; - export function rangesIntersect(range0: OpenDateRange, range1: OpenDateRange): boolean; - export function rangeContainsRange(outerRange: OpenDateRange, innerRange: OpenDateRange): boolean; - export function rangeContainsMarker(range: OpenDateRange, date: DateMarker | number): boolean; - export function constrainMarkerToRange(date: DateMarker, range: DateRange): DateMarker; -} - -declare module '@fullcalendar/core/common/Mixin' { - export { Mixin as default, Mixin }; - class Mixin { - static mixInto(destClass: any): void; - static mixIntoObj(destObj: any): void; - static mixOver(destClass: any): void; - } -} - -declare module '@fullcalendar/core/common/PositionCache' { - export { PositionCache as default, PositionCache }; - class PositionCache { - originClientRect: ClientRect; - els: HTMLElement[]; - originEl: HTMLElement; - isHorizontal: boolean; - isVertical: boolean; - lefts: any; - rights: any; - tops: any; - bottoms: any; - constructor(originEl: HTMLElement, els: HTMLElement[], isHorizontal: boolean, isVertical: boolean); - build(): void; - buildElHorizontals(originClientLeft: number): void; - buildElVerticals(originClientTop: number): void; - leftToIndex(leftPosition: number): any; - topToIndex(topPosition: number): any; - getWidth(leftIndex: number): number; - getHeight(topIndex: number): number; - } -} - -declare module '@fullcalendar/core/common/ScrollComponent' { - import { ElementScrollController } from '@fullcalendar/core/common/scroll-controller'; - export interface ScrollbarWidths { - left: number; - right: number; - bottom: number; - } - export { ScrollComponent as default, ScrollComponent }; - class ScrollComponent extends ElementScrollController { - overflowX: string; - overflowY: string; - constructor(overflowX: string, overflowY: string); - clear(): void; - destroy(): void; - applyOverflow(): void; - lockOverflow(scrollbarWidths: ScrollbarWidths): void; - setHeight(height: number | string): void; - getScrollbarWidths(): ScrollbarWidths; - } -} - -declare module '@fullcalendar/core/common/scroll-controller' { - export abstract class ScrollController { - abstract getScrollTop(): number; - abstract getScrollLeft(): number; - abstract setScrollTop(top: number): void; - abstract setScrollLeft(left: number): void; - abstract getClientWidth(): number; - abstract getClientHeight(): number; - abstract getScrollWidth(): number; - abstract getScrollHeight(): number; - getMaxScrollTop(): number; - getMaxScrollLeft(): number; - canScrollVertically(): boolean; - canScrollHorizontally(): boolean; - canScrollUp(): boolean; - canScrollDown(): boolean; - canScrollLeft(): boolean; - canScrollRight(): boolean; - } - export class ElementScrollController extends ScrollController { - el: HTMLElement; - constructor(el: HTMLElement); - getScrollTop(): number; - getScrollLeft(): number; - setScrollTop(top: number): void; - setScrollLeft(left: number): void; - getScrollWidth(): number; - getScrollHeight(): number; - getClientHeight(): number; - getClientWidth(): number; - } - export class WindowScrollController extends ScrollController { - getScrollTop(): number; - getScrollLeft(): number; - setScrollTop(n: number): void; - setScrollLeft(n: number): void; - getScrollWidth(): number; - getScrollHeight(): number; - getClientHeight(): number; - getClientWidth(): number; - } -} - -declare module '@fullcalendar/core/theme/Theme' { - export { Theme as default, Theme }; - class Theme { - calendarOptions: any; - classes: any; - iconClasses: any; - baseIconClass: string; - iconOverrideOption: any; - iconOverrideCustomButtonOption: any; - iconOverridePrefix: string; - constructor(calendarOptions: any); - processIconOverride(): void; - setIconOverride(iconOverrideHash: any): void; - applyIconOverridePrefix(className: any): any; - getClass(key: any): any; - getIconClass(buttonName: any): string; - getCustomButtonIconClass(customButtonProps: any): string; - } - export type ThemeClass = { - new (calendarOptions: any): Theme; - }; -} - -declare module '@fullcalendar/core/component/Component' { - import Calendar from '@fullcalendar/core/Calendar'; - import View from '@fullcalendar/core/View'; - import Theme from '@fullcalendar/core/theme/Theme'; - import { DateEnv } from '@fullcalendar/core/datelib/env'; - export interface ComponentContext { - options: any; - dateEnv: DateEnv; - theme: Theme; - calendar: Calendar; - view: View; - } - export type EqualityFuncHash = { - [propName: string]: (obj0: any, obj1: any) => boolean; - }; - export { Component as default, Component }; - class Component { - equalityFuncs: EqualityFuncHash; - uid: string; - props: PropsType | null; - context: ComponentContext; - dateEnv: DateEnv; - theme: Theme; - view: View; - calendar: Calendar; - isRtl: boolean; - constructor(context: ComponentContext, isView?: boolean); - static addEqualityFuncs(newFuncs: EqualityFuncHash): void; - opt(name: any): any; - receiveProps(props: PropsType): void; - protected render(props: PropsType): void; - destroy(): void; - } -} - -declare module '@fullcalendar/core/component/DateComponent' { - import Component, { ComponentContext } from '@fullcalendar/core/component/Component'; - import { EventRenderRange } from '@fullcalendar/core/component/event-rendering'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { EventInstanceHash } from '@fullcalendar/core/structs/event'; - import { Hit } from '@fullcalendar/core/interactions/hit'; - import FgEventRenderer from '@fullcalendar/core/component/renderers/FgEventRenderer'; - import FillRenderer from '@fullcalendar/core/component/renderers/FillRenderer'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { EventHandlerName, EventHandlerArgs } from '@fullcalendar/core/types/input-types'; - export type DateComponentHash = { - [uid: string]: DateComponent; - }; - export interface Seg { - component?: DateComponent; - isStart: boolean; - isEnd: boolean; - eventRange?: EventRenderRange; - el?: HTMLElement; - [otherProp: string]: any; - } - export interface EventSegUiInteractionState { - affectedInstances: EventInstanceHash; - segs: Seg[]; - isEvent: boolean; - sourceSeg: any; - } - export { DateComponent as default, DateComponent }; - class DateComponent extends Component { - fgSegSelector: string; - bgSegSelector: string; - largeUnit: any; - eventRenderer: FgEventRenderer; - mirrorRenderer: FgEventRenderer; - fillRenderer: FillRenderer; - el: HTMLElement; - constructor(context: ComponentContext, el: HTMLElement, isView?: boolean); - destroy(): void; - buildPositionCaches(): void; - queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null; - isInteractionValid(interaction: EventInteractionState): boolean; - isDateSelectionValid(selection: DateSpan): boolean; - publiclyTrigger(name: T, args?: EventHandlerArgs): any; - publiclyTriggerAfterSizing(name: T, args: EventHandlerArgs): void; - hasPublicHandlers(name: T): boolean; - triggerRenderedSegs(segs: Seg[], isMirrors: boolean): void; - triggerWillRemoveSegs(segs: Seg[], isMirrors: boolean): void; - isValidSegDownEl(el: HTMLElement): boolean; - isValidDateDownEl(el: HTMLElement): boolean; - isPopover(): boolean; - isInPopover(el: HTMLElement): boolean; - } -} - -declare module '@fullcalendar/core/Calendar' { - import { EmitterInterface } from '@fullcalendar/core/common/EmitterMixin'; - import OptionsManager from '@fullcalendar/core/OptionsManager'; - import View from '@fullcalendar/core/View'; - import Theme from '@fullcalendar/core/theme/Theme'; - import { OptionsInput, EventHandlerName, EventHandlerArgs } from '@fullcalendar/core/types/input-types'; - import { RawLocaleMap } from '@fullcalendar/core/datelib/locale'; - import { DateEnv, DateInput } from '@fullcalendar/core/datelib/env'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { Duration, DurationInput } from '@fullcalendar/core/datelib/duration'; - import { DateSpan, DateSpanApi, DatePointApi } from '@fullcalendar/core/structs/date-span'; - import { DateRangeInput } from '@fullcalendar/core/datelib/date-range'; - import DateProfileGenerator from '@fullcalendar/core/DateProfileGenerator'; - import { EventSourceInput } from '@fullcalendar/core/structs/event-source'; - import { EventInput } from '@fullcalendar/core/structs/event'; - import { CalendarState, Action } from '@fullcalendar/core/reducers/types'; - import EventSourceApi from '@fullcalendar/core/api/EventSourceApi'; - import EventApi from '@fullcalendar/core/api/EventApi'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventUiHash, EventUi } from '@fullcalendar/core/component/event-ui'; - import { ViewSpecHash, ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import { PluginSystem } from '@fullcalendar/core/plugin-system'; - import CalendarComponent from '@fullcalendar/core/CalendarComponent'; - import DateComponent from '@fullcalendar/core/component/DateComponent'; - import { PointerDragEvent } from '@fullcalendar/core/interactions/pointer'; - import { InteractionSettingsInput, Interaction } from '@fullcalendar/core/interactions/interaction'; - export interface DateClickApi extends DatePointApi { - dayEl: HTMLElement; - jsEvent: UIEvent; - view: View; - } - export interface DateSelectionApi extends DateSpanApi { - jsEvent: UIEvent; - view: View; - } - export type DatePointTransform = (dateSpan: DateSpan, calendar: Calendar) => any; - export type DateSpanTransform = (dateSpan: DateSpan, calendar: Calendar) => any; - export type CalendarInteraction = { - destroy(): any; - }; - export type CalendarInteractionClass = { - new (calendar: Calendar): CalendarInteraction; - }; - export type OptionChangeHandler = (propValue: any, calendar: Calendar, deepEqual: any) => void; - export type OptionChangeHandlerMap = { - [propName: string]: OptionChangeHandler; - }; - export { Calendar as default, Calendar }; - class Calendar { - static on: EmitterInterface['on']; - static off: EmitterInterface['off']; - static trigger: EmitterInterface['trigger']; - on: EmitterInterface['on']; - one: EmitterInterface['one']; - off: EmitterInterface['off']; - trigger: EmitterInterface['trigger']; - triggerWith: EmitterInterface['triggerWith']; - hasHandlers: EmitterInterface['hasHandlers']; - eventUiBases: EventUiHash; - selectionConfig: EventUi; - optionsManager: OptionsManager; - viewSpecs: ViewSpecHash; - dateProfileGenerators: { - [viewName: string]: DateProfileGenerator; - }; - theme: Theme; - dateEnv: DateEnv; - availableRawLocales: RawLocaleMap; - pluginSystem: PluginSystem; - defaultAllDayEventDuration: Duration; - defaultTimedEventDuration: Duration; - calendarInteractions: CalendarInteraction[]; - interactionsStore: { - [componentUid: string]: Interaction[]; - }; - removeNavLinkListener: any; - windowResizeProxy: any; - isHandlingWindowResize: boolean; - state: CalendarState; - actionQueue: any[]; - isReducing: boolean; - needsRerender: boolean; - needsFullRerender: boolean; - isRendering: boolean; - renderingPauseDepth: number; - renderableEventStore: EventStore; - buildDelayedRerender: typeof buildDelayedRerender; - delayedRerender: any; - afterSizingTriggers: any; - isViewUpdated: boolean; - isDatesUpdated: boolean; - isEventsUpdated: boolean; - el: HTMLElement; - component: CalendarComponent; - constructor(el: HTMLElement, overrides?: OptionsInput); - addPluginInputs(pluginInputs: any): void; - readonly view: View; - render(): void; - destroy(): void; - bindHandlers(): void; - unbindHandlers(): void; - hydrate(): void; - buildInitialState(): CalendarState; - reduce(state: CalendarState, action: Action, calendar: Calendar): CalendarState; - requestRerender(needsFull?: boolean): void; - tryRerender(): void; - batchRendering(func: any): void; - executeRender(): void; - renderComponent(needsFull: any): void; - setOption(name: string, val: any): void; - getOption(name: string): any; - opt(name: string): any; - viewOpt(name: string): any; - viewOpts(): any; - mutateOptions(updates: any, removals: string[], isDynamic?: boolean, deepEqual?: any): void; - handleOptions(options: any): void; - getAvailableLocaleCodes(): string[]; - _buildSelectionConfig(rawOpts: any): EventUi; - _buildEventUiSingleBase(rawOpts: any): EventUi; - hasPublicHandlers(name: T): boolean; - publiclyTrigger(name: T, args?: EventHandlerArgs): any; - publiclyTriggerAfterSizing(name: T, args: EventHandlerArgs): void; - releaseAfterSizingTriggers(): void; - isValidViewType(viewType: string): boolean; - changeView(viewType: string, dateOrRange?: DateRangeInput | DateInput): void; - zoomTo(dateMarker: DateMarker, viewType?: string): void; - getUnitViewSpec(unit: string): ViewSpec | null; - getInitialDate(): Date; - prev(): void; - next(): void; - prevYear(): void; - nextYear(): void; - today(): void; - gotoDate(zonedDateInput: any): void; - incrementDate(deltaInput: any): void; - getDate(): Date; - formatDate(d: DateInput, formatter: any): string; - formatRange(d0: DateInput, d1: DateInput, settings: any): any; - formatIso(d: DateInput, omitTime?: boolean): string; - windowResize(ev: Event): void; - updateSize(): void; - registerInteractiveComponent(component: DateComponent, settingsInput: InteractionSettingsInput): void; - unregisterInteractiveComponent(component: DateComponent): void; - select(dateOrObj: DateInput | any, endDate?: DateInput): void; - unselect(pev?: PointerDragEvent): void; - triggerDateSelect(selection: DateSpan, pev?: PointerDragEvent): void; - triggerDateUnselect(pev?: PointerDragEvent): void; - triggerDateClick(dateSpan: DateSpan, dayEl: HTMLElement, view: View, ev: UIEvent): void; - buildDatePointApi(dateSpan: DateSpan): import("@fullcalendar/core/structs/date-span").DatePointApi; - buildDateSpanApi(dateSpan: DateSpan): import("@fullcalendar/core/structs/date-span").DateSpanApi; - getNow(): DateMarker; - getDefaultEventEnd(allDay: boolean, marker: DateMarker): DateMarker; - addEvent(eventInput: EventInput, sourceInput?: EventSourceApi | string | number): EventApi | null; - getEventById(id: string): EventApi | null; - getEvents(): EventApi[]; - removeAllEvents(): void; - rerenderEvents(): void; - getEventSources(): EventSourceApi[]; - getEventSourceById(id: string | number): EventSourceApi | null; - addEventSource(sourceInput: EventSourceInput): EventSourceApi; - removeAllEventSources(): void; - refetchEvents(): void; - scrollToTime(timeInput: DurationInput): void; - } - function buildDelayedRerender(this: Calendar, wait: any): any; - export {}; -} - -declare module '@fullcalendar/core/View' { - import DateProfileGenerator, { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { EmitterInterface } from '@fullcalendar/core/common/EmitterMixin'; - import { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import { ComponentContext } from '@fullcalendar/core/component/Component'; - import DateComponent from '@fullcalendar/core/component/DateComponent'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventUiHash, EventUi } from '@fullcalendar/core/component/event-ui'; - import { EventRenderRange } from '@fullcalendar/core/component/event-rendering'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { EventDef } from '@fullcalendar/core/structs/event'; - export interface ViewProps { - dateProfile: DateProfile; - businessHours: EventStore; - eventStore: EventStore; - eventUiBases: EventUiHash; - dateSelection: DateSpan | null; - eventSelection: string; - eventDrag: EventInteractionState | null; - eventResize: EventInteractionState | null; - } - export { View as default, View }; - abstract class View extends DateComponent { - usesMinMaxTime: boolean; - dateProfileGeneratorClass: any; - on: EmitterInterface['on']; - one: EmitterInterface['one']; - off: EmitterInterface['off']; - trigger: EmitterInterface['trigger']; - triggerWith: EmitterInterface['triggerWith']; - hasHandlers: EmitterInterface['hasHandlers']; - viewSpec: ViewSpec; - dateProfileGenerator: DateProfileGenerator; - type: string; - title: string; - queuedScroll: any; - eventOrderSpecs: any; - nextDayThreshold: Duration; - isNowIndicatorRendered: boolean; - initialNowDate: DateMarker; - initialNowQueriedMs: number; - nowIndicatorTimeoutID: any; - nowIndicatorIntervalID: any; - constructor(context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement); - initialize(): void; - readonly activeStart: Date; - readonly activeEnd: Date; - readonly currentStart: Date; - readonly currentEnd: Date; - render(props: ViewProps): void; - destroy(): void; - updateSize(isResize: boolean, viewHeight: number, isAuto: boolean): void; - updateBaseSize(isResize: boolean, viewHeight: number, isAuto: boolean): void; - renderDatesWrap(dateProfile: DateProfile): void; - unrenderDatesWrap(): void; - renderDates(dateProfile: DateProfile): void; - unrenderDates(): void; - renderBusinessHours(businessHours: EventStore): void; - unrenderBusinessHours(): void; - renderDateSelectionWrap(selection: DateSpan): void; - unrenderDateSelectionWrap(selection: DateSpan): void; - renderDateSelection(selection: DateSpan): void; - unrenderDateSelection(selection: DateSpan): void; - renderEvents(eventStore: EventStore): void; - unrenderEvents(): void; - sliceEvents(eventStore: EventStore, allDay: boolean): EventRenderRange[]; - computeEventDraggable(eventDef: EventDef, eventUi: EventUi): boolean; - computeEventStartResizable(eventDef: EventDef, eventUi: EventUi): any; - computeEventEndResizable(eventDef: EventDef, eventUi: EventUi): boolean; - renderEventSelectionWrap(instanceId: string): void; - unrenderEventSelectionWrap(instanceId: string): void; - renderEventSelection(instanceId: string): void; - unrenderEventSelection(instanceId: string): void; - renderEventDragWrap(state: EventInteractionState): void; - unrenderEventDragWrap(state: EventInteractionState): void; - renderEventDrag(state: EventInteractionState): void; - unrenderEventDrag(state: EventInteractionState): void; - renderEventResizeWrap(state: EventInteractionState): void; - unrenderEventResizeWrap(state: EventInteractionState): void; - renderEventResize(state: EventInteractionState): void; - unrenderEventResize(state: EventInteractionState): void; - startNowIndicator(dateProfile: DateProfile): void; - updateNowIndicator(): void; - stopNowIndicator(): void; - getNowIndicatorUnit(dateProfile: DateProfile): void; - renderNowIndicator(date: any): void; - unrenderNowIndicator(): void; - addScroll(scroll: any): void; - popScroll(isResize: boolean): void; - applyQueuedScroll(isResize: boolean): void; - queryScroll(): any; - applyScroll(scroll: any, isResize: boolean): void; - computeDateScroll(duration: Duration): {}; - queryDateScroll(): {}; - applyDateScroll(scroll: any): void; - scrollToDuration(duration: Duration): void; - } -} - -declare module '@fullcalendar/core/component/renderers/FgEventRenderer' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { DateFormatter } from '@fullcalendar/core/datelib/formatting'; - import { EventUi } from '@fullcalendar/core/component/event-ui'; - import { EventRenderRange } from '@fullcalendar/core/component/event-rendering'; - import { Seg } from '@fullcalendar/core/component/DateComponent'; - import { ComponentContext } from '@fullcalendar/core/component/Component'; - export { FgEventRenderer as default, FgEventRenderer }; - abstract class FgEventRenderer { - context: ComponentContext; - eventTimeFormat: DateFormatter; - displayEventTime: boolean; - displayEventEnd: boolean; - segs: Seg[]; - isSizeDirty: boolean; - constructor(context: ComponentContext); - renderSegs(segs: Seg[], mirrorInfo?: any): void; - unrender(_segs: Seg[], mirrorInfo?: any): void; - abstract renderSegHtml(seg: Seg, mirrorInfo: any): string; - abstract attachSegs(segs: Seg[], mirrorInfo: any): any; - abstract detachSegs(segs: Seg[]): any; - rangeUpdated(): void; - renderSegEls(segs: Seg[], mirrorInfo: any): Seg[]; - getSegClasses(seg: Seg, isDraggable: any, isResizable: any, mirrorInfo: any): string[]; - getTimeText(eventRange: EventRenderRange, formatter?: any, displayEnd?: any): any; - _getTimeText(start: DateMarker, end: DateMarker, allDay: any, formatter?: any, displayEnd?: any, forcedStartTzo?: number, forcedEndTzo?: number): any; - computeEventTimeFormat(): any; - computeDisplayEventTime(): boolean; - computeDisplayEventEnd(): boolean; - getSkinCss(ui: EventUi): { - 'background-color': string; - 'border-color': string; - color: string; - }; - sortEventSegs(segs: any): Seg[]; - computeSizes(force: boolean): void; - assignSizes(force: boolean): void; - computeSegSizes(segs: Seg[]): void; - assignSegSizes(segs: Seg[]): void; - hideByHash(hash: any): void; - showByHash(hash: any): void; - selectByInstanceId(instanceId: string): void; - unselectByInstanceId(instanceId: string): void; - } - export function buildSegCompareObj(seg: Seg): any; -} - -declare module '@fullcalendar/core/component/renderers/FillRenderer' { - import { Seg } from '@fullcalendar/core/component/DateComponent'; - import { ComponentContext } from '@fullcalendar/core/component/Component'; - export { FillRenderer as default, FillRenderer }; - abstract class FillRenderer { - context: ComponentContext; - fillSegTag: string; - containerElsByType: any; - segsByType: any; - dirtySizeFlags: any; - constructor(context: ComponentContext); - getSegsByType(type: string): any; - renderSegs(type: any, segs: Seg[]): void; - unrender(type: any): void; - renderSegEls(type: any, segs: Seg[]): Seg[]; - renderSegHtml(type: any, seg: Seg): string; - abstract attachSegs(type: any, segs: Seg[]): HTMLElement[] | void; - detachSegs(type: any, segs: Seg[]): void; - computeSizes(force: boolean): void; - assignSizes(force: boolean): void; - computeSegSizes(segs: Seg[]): void; - assignSegSizes(segs: Seg[]): void; - } -} - -declare module '@fullcalendar/core/DateProfileGenerator' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { DateRange, OpenDateRange } from '@fullcalendar/core/datelib/date-range'; - import { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import { DateEnv } from '@fullcalendar/core/datelib/env'; - import Calendar from '@fullcalendar/core/Calendar'; - export interface DateProfile { - currentRange: DateRange; - currentRangeUnit: string; - isRangeAllDay: boolean; - validRange: OpenDateRange; - activeRange: DateRange; - renderRange: DateRange; - minTime: Duration; - maxTime: Duration; - isValid: boolean; - dateIncrement: Duration; - } - export { DateProfileGenerator as default, DateProfileGenerator }; - class DateProfileGenerator { - viewSpec: ViewSpec; - options: any; - dateEnv: DateEnv; - calendar: Calendar; - isHiddenDayHash: boolean[]; - constructor(viewSpec: ViewSpec, calendar: Calendar); - buildPrev(currentDateProfile: DateProfile, currentDate: DateMarker): DateProfile; - buildNext(currentDateProfile: DateProfile, currentDate: DateMarker): DateProfile; - build(currentDate: DateMarker, direction?: any, forceToValid?: boolean): DateProfile; - buildValidRange(): OpenDateRange; - buildCurrentRangeInfo(date: DateMarker, direction: any): { - duration: any; - unit: any; - range: any; - }; - getFallbackDuration(): Duration; - adjustActiveRange(range: DateRange, minTime: Duration, maxTime: Duration): { - start: Date; - end: Date; - }; - buildRangeFromDuration(date: DateMarker, direction: any, duration: Duration, unit: any): any; - buildRangeFromDayCount(date: DateMarker, direction: any, dayCount: any): { - start: Date; - end: Date; - }; - buildCustomVisibleRange(date: DateMarker): OpenDateRange; - buildRenderRange(currentRange: DateRange, currentRangeUnit: any, isRangeAllDay: any): DateRange; - buildDateIncrement(fallback: any): Duration; - getRangeOption(name: any, ...otherArgs: any[]): OpenDateRange; - initHiddenDays(): void; - trimHiddenDays(range: DateRange): DateRange | null; - isHiddenDay(day: any): boolean; - skipHiddenDays(date: DateMarker, inc?: number, isExclusive?: boolean): Date; - } - export function isDateProfilesEqual(p0: DateProfile, p1: DateProfile): boolean; -} - -declare module '@fullcalendar/core/structs/view-def' { - import { ViewClass, ViewConfigHash } from '@fullcalendar/core/structs/view-config'; - export interface ViewDef { - type: string; - class: ViewClass; - overrides: any; - defaults: any; - } - export type ViewDefHash = { - [viewType: string]: ViewDef; - }; - export function compileViewDefs(defaultConfigs: ViewConfigHash, overrideConfigs: ViewConfigHash): ViewDefHash; -} - -declare module '@fullcalendar/core/structs/view-spec' { - import { Duration } from '@fullcalendar/core/datelib/duration'; - import OptionsManager from '@fullcalendar/core/OptionsManager'; - import { ViewConfigInputHash, ViewClass } from '@fullcalendar/core/structs/view-config'; - export interface ViewSpec { - type: string; - class: ViewClass; - duration: Duration; - durationUnit: string; - singleUnit: string; - options: any; - buttonTextOverride: string; - buttonTextDefault: string; - } - export type ViewSpecHash = { - [viewType: string]: ViewSpec; - }; - export function buildViewSpecs(defaultInputs: ViewConfigInputHash, optionsManager: OptionsManager): ViewSpecHash; -} - -declare module '@fullcalendar/core/structs/date-span' { - import { DateRange, OpenDateRange } from '@fullcalendar/core/datelib/date-range'; - import { DateInput, DateEnv } from '@fullcalendar/core/datelib/env'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { EventRenderRange } from '@fullcalendar/core/component/event-rendering'; - import { EventUiHash } from '@fullcalendar/core/component/event-ui'; - import Calendar from '@fullcalendar/core/Calendar'; - export interface OpenDateSpanInput { - start?: DateInput; - end?: DateInput; - allDay?: boolean; - [otherProp: string]: any; - } - export interface DateSpanInput extends OpenDateSpanInput { - start: DateInput; - end: DateInput; - } - export interface OpenDateSpan { - range: OpenDateRange; - allDay: boolean; - [otherProp: string]: any; - } - export interface DateSpan extends OpenDateSpan { - range: DateRange; - } - export interface DateSpanApi { - start: Date; - end: Date; - startStr: string; - endStr: string; - allDay: boolean; - } - export interface DatePointApi { - date: Date; - dateStr: string; - allDay: boolean; - } - export function parseDateSpan(raw: DateSpanInput, dateEnv: DateEnv, defaultDuration?: Duration): DateSpan | null; - export function parseOpenDateSpan(raw: OpenDateSpanInput, dateEnv: DateEnv): OpenDateSpan | null; - export function isDateSpansEqual(span0: DateSpan, span1: DateSpan): boolean; - export function buildDateSpanApi(span: DateSpan, dateEnv: DateEnv): DateSpanApi; - export function buildDatePointApi(span: DateSpan, dateEnv: DateEnv): DatePointApi; - export function fabricateEventRange(dateSpan: DateSpan, eventUiBases: EventUiHash, calendar: Calendar): EventRenderRange; -} - -declare module '@fullcalendar/core/datelib/marker' { - import { Duration } from '@fullcalendar/core/datelib/duration'; - export type DateMarker = Date; - export const DAY_IDS: string[]; - export function addWeeks(m: DateMarker, n: number): Date; - export function addDays(m: DateMarker, n: number): Date; - export function addMs(m: DateMarker, n: number): Date; - export function diffWeeks(m0: any, m1: any): number; - export function diffDays(m0: any, m1: any): number; - export function diffHours(m0: any, m1: any): number; - export function diffMinutes(m0: any, m1: any): number; - export function diffSeconds(m0: any, m1: any): number; - export function diffDayAndTime(m0: DateMarker, m1: DateMarker): Duration; - export function diffWholeWeeks(m0: DateMarker, m1: DateMarker): number; - export function diffWholeDays(m0: DateMarker, m1: DateMarker): number; - export function startOfDay(m: DateMarker): DateMarker; - export function startOfHour(m: DateMarker): Date; - export function startOfMinute(m: DateMarker): Date; - export function startOfSecond(m: DateMarker): Date; - export function weekOfYear(marker: any, dow: any, doy: any): number; - export function dateToLocalArray(date: any): any[]; - export function arrayToLocalDate(a: any): Date; - export function dateToUtcArray(date: any): any[]; - export function arrayToUtcDate(a: any): Date; - export function isValidDate(m: DateMarker): boolean; - export function timeAsMs(m: DateMarker): number; -} - -declare module '@fullcalendar/core/datelib/duration' { - export type DurationInput = DurationObjectInput | string | number; - export interface DurationObjectInput { - years?: number; - year?: number; - months?: number; - month?: number; - weeks?: number; - week?: number; - days?: number; - day?: number; - hours?: number; - hour?: number; - minutes?: number; - minute?: number; - seconds?: number; - second?: number; - milliseconds?: number; - millisecond?: number; - ms?: number; - } - export interface Duration { - years: number; - months: number; - days: number; - milliseconds: number; - } - export function createDuration(input: DurationInput, unit?: string): Duration | null; - export function getWeeksFromInput(obj: DurationObjectInput): number; - export function durationsEqual(d0: Duration, d1: Duration): boolean; - export function isSingleDay(dur: Duration): boolean; - export function addDurations(d0: Duration, d1: Duration): { - years: number; - months: number; - days: number; - milliseconds: number; - }; - export function subtractDurations(d1: Duration, d0: Duration): Duration; - export function multiplyDuration(d: Duration, n: number): { - years: number; - months: number; - days: number; - milliseconds: number; - }; - export function asRoughYears(dur: Duration): number; - export function asRoughMonths(dur: Duration): number; - export function asRoughDays(dur: Duration): number; - export function asRoughHours(dur: Duration): number; - export function asRoughMinutes(dur: Duration): number; - export function asRoughSeconds(dur: Duration): number; - export function asRoughMs(dur: Duration): number; - export function wholeDivideDurations(numerator: Duration, denominator: Duration): number; - export function greatestDurationDenominator(dur: Duration, dontReturnWeeks?: boolean): { - unit: string; - value: number; - }; -} - -declare module '@fullcalendar/core/datelib/env' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { CalendarSystem } from '@fullcalendar/core/datelib/calendar-system'; - import { Locale } from '@fullcalendar/core/datelib/locale'; - import { NamedTimeZoneImpl, NamedTimeZoneImplClass } from '@fullcalendar/core/datelib/timezone'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { DateFormatter } from '@fullcalendar/core/datelib/formatting'; - import { CmdFormatterFunc } from '@fullcalendar/core/datelib/formatting-cmd'; - export interface DateEnvSettings { - timeZone: string; - namedTimeZoneImpl?: NamedTimeZoneImplClass; - calendarSystem: string; - locale: Locale; - weekNumberCalculation?: any; - firstDay?: any; - weekLabel?: string; - cmdFormatter?: CmdFormatterFunc; - } - export type DateInput = Date | string | number | number[]; - export interface DateMarkerMeta { - marker: DateMarker; - isTimeUnspecified: boolean; - forcedTzo: number | null; - } - export class DateEnv { - timeZone: string; - namedTimeZoneImpl: NamedTimeZoneImpl; - canComputeOffset: boolean; - calendarSystem: CalendarSystem; - locale: Locale; - weekDow: number; - weekDoy: number; - weekNumberFunc: any; - weekLabel: string; - cmdFormatter?: CmdFormatterFunc; - constructor(settings: DateEnvSettings); - createMarker(input: DateInput): DateMarker; - createNowMarker(): DateMarker; - createMarkerMeta(input: DateInput): DateMarkerMeta; - parse(s: string): { - marker: Date; - isTimeUnspecified: boolean; - forcedTzo: any; - }; - getYear(marker: DateMarker): number; - getMonth(marker: DateMarker): number; - add(marker: DateMarker, dur: Duration): DateMarker; - subtract(marker: DateMarker, dur: Duration): DateMarker; - addYears(marker: DateMarker, n: number): Date; - addMonths(marker: DateMarker, n: number): Date; - diffWholeYears(m0: DateMarker, m1: DateMarker): number; - diffWholeMonths(m0: DateMarker, m1: DateMarker): number; - greatestWholeUnit(m0: DateMarker, m1: DateMarker): { - unit: string; - value: number; - }; - countDurationsBetween(m0: DateMarker, m1: DateMarker, d: Duration): number; - startOf(m: DateMarker, unit: string): Date; - startOfYear(m: DateMarker): DateMarker; - startOfMonth(m: DateMarker): DateMarker; - startOfWeek(m: DateMarker): DateMarker; - computeWeekNumber(marker: DateMarker): number; - format(marker: DateMarker, formatter: DateFormatter, dateOptions?: { - forcedTzo?: number; - }): any; - formatRange(start: DateMarker, end: DateMarker, formatter: DateFormatter, dateOptions?: { - forcedStartTzo?: number; - forcedEndTzo?: number; - isEndExclusive?: boolean; - }): any; - formatIso(marker: DateMarker, extraOptions?: any): string; - timestampToMarker(ms: number): Date; - offsetForMarker(m: DateMarker): number; - toDate(m: DateMarker, forcedTzo?: number): Date; - } -} - -declare module '@fullcalendar/core/datelib/formatting' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { CalendarSystem } from '@fullcalendar/core/datelib/calendar-system'; - import { Locale } from '@fullcalendar/core/datelib/locale'; - import { CmdFormatterFunc } from '@fullcalendar/core/datelib/formatting-cmd'; - import { FuncFormatterFunc } from '@fullcalendar/core/datelib/formatting-func'; - export interface ZonedMarker { - marker: DateMarker; - timeZoneOffset: number; - } - export interface ExpandedZonedMarker extends ZonedMarker { - array: number[]; - year: number; - month: number; - day: number; - hour: number; - minute: number; - second: number; - millisecond: number; - } - export interface VerboseFormattingArg { - date: ExpandedZonedMarker; - start: ExpandedZonedMarker; - end?: ExpandedZonedMarker; - timeZone: string; - localeCodes: string[]; - separator: string; - } - export interface DateFormattingContext { - timeZone: string; - locale: Locale; - calendarSystem: CalendarSystem; - computeWeekNumber: (d: DateMarker) => number; - weekLabel: string; - cmdFormatter?: CmdFormatterFunc; - } - export interface DateFormatter { - format(date: ZonedMarker, context: DateFormattingContext): any; - formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext): any; - } - export type FormatterInput = object | string | FuncFormatterFunc; - export function createFormatter(input: FormatterInput, defaultSeparator?: string): DateFormatter; - export function buildIsoString(marker: DateMarker, timeZoneOffset?: number, stripZeroTime?: boolean): string; - export function formatIsoTimeString(marker: DateMarker): string; - export function formatTimeZoneOffset(minutes: number, doIso?: boolean): string; - export function createVerboseFormattingArg(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext, separator?: string): VerboseFormattingArg; -} - -declare module '@fullcalendar/core/datelib/timezone' { - export abstract class NamedTimeZoneImpl { - timeZoneName: string; - constructor(timeZoneName: string); - abstract offsetForArray(a: number[]): number; - abstract timestampToArray(ms: number): number[]; - } - export type NamedTimeZoneImplClass = { - new (timeZoneName: string): NamedTimeZoneImpl; - }; -} - -declare module '@fullcalendar/core/datelib/parsing' { - export function parse(str: any): { - marker: Date; - isTimeUnspecified: boolean; - timeZoneOffset: any; - }; -} - -declare module '@fullcalendar/core/structs/event-source' { - import { EventInput } from '@fullcalendar/core/structs/event'; - import Calendar from '@fullcalendar/core/Calendar'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { EventSourceFunc } from '@fullcalendar/core/event-sources/func-event-source'; - import { EventUi } from '@fullcalendar/core/component/event-ui'; - import { ConstraintInput, AllowFunc } from '@fullcalendar/core/validation'; - export type EventSourceError = { - message: string; - response?: any; - [otherProp: string]: any; - }; - export type EventInputTransformer = (eventInput: EventInput) => EventInput | null; - export type EventSourceSuccessResponseHandler = (rawData: any, response: any) => EventInput[] | void; - export type EventSourceErrorResponseHandler = (error: EventSourceError) => void; - export interface ExtendedEventSourceInput { - id?: string | number; - allDayDefault?: boolean; - eventDataTransform?: EventInputTransformer; - events?: EventInput[] | EventSourceFunc; - url?: string; - method?: string; - extraParams?: object | (() => object); - startParam?: string; - endParam?: string; - timeZoneParam?: string; - success?: EventSourceSuccessResponseHandler; - failure?: EventSourceErrorResponseHandler; - editable?: boolean; - startEditable?: boolean; - durationEditable?: boolean; - constraint?: ConstraintInput; - overlap?: boolean; - allow?: AllowFunc; - className?: string[] | string; - classNames?: string[] | string; - backgroundColor?: string; - borderColor?: string; - textColor?: string; - color?: string; - [otherProp: string]: any; - } - export type EventSourceInput = ExtendedEventSourceInput | // object in extended form - EventSourceFunc | // just a function - string; - export interface EventSource { - _raw: any; - sourceId: string; - sourceDefId: number; - meta: any; - publicId: string; - isFetching: boolean; - latestFetchId: string; - fetchRange: DateRange | null; - allDayDefault: boolean | null; - eventDataTransform: EventInputTransformer; - ui: EventUi; - success: EventSourceSuccessResponseHandler | null; - failure: EventSourceErrorResponseHandler | null; - extendedProps: any; - } - export type EventSourceHash = { - [sourceId: string]: EventSource; - }; - export type EventSourceFetcher = (arg: { - eventSource: EventSource; - calendar: Calendar; - range: DateRange; - }, success: (res: { - rawEvents: EventInput[]; - xhr?: XMLHttpRequest; - }) => void, failure: (error: EventSourceError) => void) => (void | PromiseLike); - export interface EventSourceDef { - ignoreRange?: boolean; - parseMeta: (raw: EventSourceInput) => object | null; - fetch: EventSourceFetcher; - } - export function doesSourceNeedRange(eventSource: EventSource, calendar: Calendar): boolean; - export function parseEventSource(raw: EventSourceInput, calendar: Calendar): EventSource | null; -} - -declare module '@fullcalendar/core/interactions/interaction' { - import DateComponent from '@fullcalendar/core/component/DateComponent'; - export abstract class Interaction { - component: DateComponent; - constructor(settings: InteractionSettings); - destroy(): void; - } - export type InteractionClass = { - new (settings: InteractionSettings): Interaction; - }; - export interface InteractionSettingsInput { - el: HTMLElement; - useEventCenter?: boolean; - } - export interface InteractionSettings { - component: DateComponent; - el: HTMLElement; - useEventCenter: boolean; - } - export type InteractionSettingsStore = { - [componenUid: string]: InteractionSettings; - }; - export function parseInteractionSettings(component: DateComponent, input: InteractionSettingsInput): InteractionSettings; - export function interactionSettingsToStore(settings: InteractionSettings): { - [x: string]: InteractionSettings; - }; - export let interactionSettingsStore: InteractionSettingsStore; -} - -declare module '@fullcalendar/core/interactions/pointer' { - export interface PointerDragEvent { - origEvent: UIEvent; - isTouch: boolean; - subjectEl: EventTarget; - pageX: number; - pageY: number; - deltaX: number; - deltaY: number; - } -} - -declare module '@fullcalendar/core/interactions/hit' { - import DateComponent from '@fullcalendar/core/component/DateComponent'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { Rect } from '@fullcalendar/core/util/geom'; - export interface Hit { - component: DateComponent; - dateSpan: DateSpan; - dayEl: HTMLElement; - rect: Rect; - layer: number; - } -} - -declare module '@fullcalendar/core/interactions/date-selecting' { - import { Hit } from '@fullcalendar/core/interactions/hit'; - export type dateSelectionJoinTransformer = (hit0: Hit, hit1: Hit) => any; -} - -declare module '@fullcalendar/core/interactions/event-dragging' { - import Calendar from '@fullcalendar/core/Calendar'; - import { EventMutation } from '@fullcalendar/core/structs/event-mutation'; - import { Hit } from '@fullcalendar/core/interactions/hit'; - import { EventDef } from '@fullcalendar/core/structs/event'; - import { EventUi } from '@fullcalendar/core/component/event-ui'; - import { View } from '@fullcalendar/core'; - export type eventDragMutationMassager = (mutation: EventMutation, hit0: Hit, hit1: Hit) => void; - export type EventDropTransformers = (mutation: EventMutation, calendar: Calendar) => any; - export type eventIsDraggableTransformer = (val: boolean, eventDef: EventDef, eventUi: EventUi, view: View) => boolean; -} - -declare module '@fullcalendar/core/interactions/event-resizing' { - import { Hit } from '@fullcalendar/core/interactions/hit'; - export type EventResizeJoinTransforms = (hit0: Hit, hit1: Hit) => false | object; -} - -declare module '@fullcalendar/core/interactions/ElementDragging' { - import EmitterMixin from '@fullcalendar/core/common/EmitterMixin'; - export { ElementDragging as default, ElementDragging }; - abstract class ElementDragging { - emitter: EmitterMixin; - constructor(el: HTMLElement); - destroy(): void; - abstract setIgnoreMove(bool: boolean): void; - setMirrorIsVisible(bool: boolean): void; - setMirrorNeedsRevert(bool: boolean): void; - setAutoScrollEnabled(bool: boolean): void; - } - export type ElementDraggingClass = { - new (el: HTMLElement): ElementDragging; - }; -} - -declare module '@fullcalendar/core/formatting-api' { - import { DateInput } from '@fullcalendar/core/datelib/env'; - export function formatDate(dateInput: DateInput, settings?: {}): any; - export function formatRange(startInput: DateInput, endInput: DateInput, settings: any): any; -} - -declare module '@fullcalendar/core/options' { - import { PluginDef } from '@fullcalendar/core/plugin-system'; - export const config: any; - export const globalDefaults: { - defaultRangeSeparator: string; - titleRangeSeparator: string; - defaultTimedEventDuration: string; - defaultAllDayEventDuration: { - day: number; - }; - forceEventDuration: boolean; - nextDayThreshold: string; - columnHeader: boolean; - defaultView: string; - aspectRatio: number; - header: { - left: string; - center: string; - right: string; - }; - weekends: boolean; - weekNumbers: boolean; - weekNumberCalculation: string; - editable: boolean; - scrollTime: string; - minTime: string; - maxTime: string; - showNonCurrentDates: boolean; - lazyFetching: boolean; - startParam: string; - endParam: string; - timeZoneParam: string; - timeZone: string; - locales: any[]; - locale: string; - timeGridEventMinHeight: number; - themeSystem: string; - dragRevertDuration: number; - dragScroll: boolean; - allDayMaintainDuration: boolean; - unselectAuto: boolean; - dropAccept: string; - eventOrder: string; - eventLimit: boolean; - eventLimitClick: string; - dayPopoverFormat: { - month: string; - day: string; - year: string; - }; - handleWindowResize: boolean; - windowResizeDelay: number; - longPressDelay: number; - eventDragMinDistance: number; - }; - export const rtlDefaults: { - header: { - left: string; - center: string; - right: string; - }; - buttonIcons: { - prev: string; - next: string; - prevYear: string; - nextYear: string; - }; - }; - export function mergeOptions(optionObjs: any): any; - export function refinePluginDefs(pluginInputs: any[]): PluginDef[]; -} - -declare module '@fullcalendar/core/structs/recurring-event' { - import { EventInput, EventDef } from '@fullcalendar/core/structs/event'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { DateEnv } from '@fullcalendar/core/datelib/env'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - export interface ParsedRecurring { - typeData: any; - allDayGuess: boolean | null; - duration: Duration | null; - } - export interface RecurringType { - parse: (rawEvent: EventInput, leftoverProps: any, dateEnv: DateEnv) => ParsedRecurring | null; - expand: (typeData: any, framingRange: DateRange, dateEnv: DateEnv) => DateMarker[]; - } - export function parseRecurring(eventInput: EventInput, allDayDefault: boolean | null, dateEnv: DateEnv, recurringTypes: RecurringType[], leftovers: any): { - allDay: any; - duration: Duration; - typeData: any; - typeId: number; - }; - export function expandRecurringRanges(eventDef: EventDef, duration: Duration, framingRange: DateRange, dateEnv: DateEnv, recurringTypes: RecurringType[]): DateMarker[]; -} - -declare module '@fullcalendar/core/structs/drag-meta' { - import { Duration, DurationInput } from '@fullcalendar/core/datelib/duration'; - import { EventNonDateInput } from '@fullcalendar/core/structs/event'; - export interface DragMetaInput extends EventNonDateInput { - startTime?: DurationInput; - duration?: DurationInput; - create?: boolean; - sourceId?: string; - } - export interface DragMeta { - startTime: Duration | null; - duration: Duration | null; - create: boolean; - sourceId: string; - leftoverProps: object; - } - export function parseDragMeta(raw: DragMetaInput): DragMeta; -} - -declare module '@fullcalendar/core/plugin-system' { - import { reducerFunc } from '@fullcalendar/core/reducers/types'; - import { eventDefParserFunc } from '@fullcalendar/core/structs/event'; - import { eventDefMutationApplier } from '@fullcalendar/core/structs/event-mutation'; - import Calendar, { DatePointTransform, DateSpanTransform, CalendarInteractionClass, OptionChangeHandlerMap } from '@fullcalendar/core/Calendar'; - import { ViewConfigInputHash } from '@fullcalendar/core/structs/view-config'; - import { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import View, { ViewProps } from '@fullcalendar/core/View'; - import { CalendarComponentProps } from '@fullcalendar/core/CalendarComponent'; - import { isPropsValidTester } from '@fullcalendar/core/validation'; - import { eventDragMutationMassager, eventIsDraggableTransformer, EventDropTransformers } from '@fullcalendar/core/interactions/event-dragging'; - import { dateSelectionJoinTransformer } from '@fullcalendar/core/interactions/date-selecting'; - import { EventResizeJoinTransforms } from '@fullcalendar/core/interactions/event-resizing'; - import { ExternalDefTransform } from '@fullcalendar/core/interactions/external-element-dragging'; - import { InteractionClass } from '@fullcalendar/core/interactions/interaction'; - import { ThemeClass } from '@fullcalendar/core/theme/Theme'; - import { EventSourceDef } from '@fullcalendar/core/structs/event-source'; - import { CmdFormatterFunc } from '@fullcalendar/core/datelib/formatting-cmd'; - import { RecurringType } from '@fullcalendar/core/structs/recurring-event'; - import { NamedTimeZoneImplClass } from '@fullcalendar/core/datelib/timezone'; - import { ElementDraggingClass } from '@fullcalendar/core/interactions/ElementDragging'; - export interface PluginDefInput { - deps?: PluginDef[]; - reducers?: reducerFunc[]; - eventDefParsers?: eventDefParserFunc[]; - isDraggableTransformers?: eventIsDraggableTransformer[]; - eventDragMutationMassagers?: eventDragMutationMassager[]; - eventDefMutationAppliers?: eventDefMutationApplier[]; - dateSelectionTransformers?: dateSelectionJoinTransformer[]; - datePointTransforms?: DatePointTransform[]; - dateSpanTransforms?: DateSpanTransform[]; - views?: ViewConfigInputHash; - viewPropsTransformers?: ViewPropsTransformerClass[]; - isPropsValid?: isPropsValidTester; - externalDefTransforms?: ExternalDefTransform[]; - eventResizeJoinTransforms?: EventResizeJoinTransforms[]; - viewContainerModifiers?: ViewContainerModifier[]; - eventDropTransformers?: EventDropTransformers[]; - componentInteractions?: InteractionClass[]; - calendarInteractions?: CalendarInteractionClass[]; - themeClasses?: { - [themeSystemName: string]: ThemeClass; - }; - eventSourceDefs?: EventSourceDef[]; - cmdFormatter?: CmdFormatterFunc; - recurringTypes?: RecurringType[]; - namedTimeZonedImpl?: NamedTimeZoneImplClass; - defaultView?: string; - elementDraggingImpl?: ElementDraggingClass; - optionChangeHandlers?: OptionChangeHandlerMap; - } - export interface PluginHooks { - reducers: reducerFunc[]; - eventDefParsers: eventDefParserFunc[]; - isDraggableTransformers: eventIsDraggableTransformer[]; - eventDragMutationMassagers: eventDragMutationMassager[]; - eventDefMutationAppliers: eventDefMutationApplier[]; - dateSelectionTransformers: dateSelectionJoinTransformer[]; - datePointTransforms: DatePointTransform[]; - dateSpanTransforms: DateSpanTransform[]; - views: ViewConfigInputHash; - viewPropsTransformers: ViewPropsTransformerClass[]; - isPropsValid: isPropsValidTester | null; - externalDefTransforms: ExternalDefTransform[]; - eventResizeJoinTransforms: EventResizeJoinTransforms[]; - viewContainerModifiers: ViewContainerModifier[]; - eventDropTransformers: EventDropTransformers[]; - componentInteractions: InteractionClass[]; - calendarInteractions: CalendarInteractionClass[]; - themeClasses: { - [themeSystemName: string]: ThemeClass; - }; - eventSourceDefs: EventSourceDef[]; - cmdFormatter?: CmdFormatterFunc; - recurringTypes: RecurringType[]; - namedTimeZonedImpl?: NamedTimeZoneImplClass; - defaultView: string; - elementDraggingImpl?: ElementDraggingClass; - optionChangeHandlers: OptionChangeHandlerMap; - } - export interface PluginDef extends PluginHooks { - id: string; - deps: PluginDef[]; - } - export type ViewPropsTransformerClass = new () => ViewPropsTransformer; - export interface ViewPropsTransformer { - transform(viewProps: ViewProps, viewSpec: ViewSpec, calendarProps: CalendarComponentProps, view: View): any; - } - export type ViewContainerModifier = (contentEl: HTMLElement, calendar: Calendar) => void; - export function createPlugin(input: PluginDefInput): PluginDef; - export class PluginSystem { - hooks: PluginHooks; - addedHash: { - [pluginId: string]: true; - }; - constructor(); - add(plugin: PluginDef): void; - } -} - -declare module '@fullcalendar/core/reducers/types' { - import { EventInput, EventInstanceHash } from '@fullcalendar/core/structs/event'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventMutation } from '@fullcalendar/core/structs/event-mutation'; - import { EventSource, EventSourceHash, EventSourceError } from '@fullcalendar/core/structs/event-source'; - import { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { DateEnv } from '@fullcalendar/core/datelib/env'; - import Calendar from '@fullcalendar/core/Calendar'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - export interface CalendarState { - eventSources: EventSourceHash; - eventSourceLoadingLevel: number; - loadingLevel: number; - viewType: string; - currentDate: DateMarker; - dateProfile: DateProfile | null; - eventStore: EventStore; - dateSelection: DateSpan | null; - eventSelection: string; - eventDrag: EventInteractionState | null; - eventResize: EventInteractionState | null; - } - export type reducerFunc = (state: CalendarState, action: Action, calendar: Calendar) => CalendarState; - export type Action = { - type: 'INIT'; - } | // wont it create another rerender? - { - type: 'PREV'; - } | { - type: 'NEXT'; - } | { - type: 'SET_DATE'; - dateMarker: DateMarker; - } | { - type: 'SET_VIEW_TYPE'; - viewType: string; - dateMarker?: DateMarker; - } | { - type: 'SELECT_DATES'; - selection: DateSpan; - } | { - type: 'UNSELECT_DATES'; - } | { - type: 'SELECT_EVENT'; - eventInstanceId: string; - } | { - type: 'UNSELECT_EVENT'; - } | { - type: 'SET_EVENT_DRAG'; - state: EventInteractionState; - } | { - type: 'UNSET_EVENT_DRAG'; - } | { - type: 'SET_EVENT_RESIZE'; - state: EventInteractionState; - } | { - type: 'UNSET_EVENT_RESIZE'; - } | { - type: 'ADD_EVENT_SOURCES'; - sources: EventSource[]; - } | { - type: 'REMOVE_EVENT_SOURCE'; - sourceId: string; - } | { - type: 'REMOVE_ALL_EVENT_SOURCES'; - } | { - type: 'FETCH_EVENT_SOURCES'; - sourceIds?: string[]; - } | // if no sourceIds, fetch all - { - type: 'CHANGE_TIMEZONE'; - oldDateEnv: DateEnv; - } | { - type: 'RECEIVE_EVENTS'; - sourceId: string; - fetchId: string; - fetchRange: DateRange | null; - rawEvents: EventInput[]; - } | { - type: 'RECEIVE_EVENT_ERROR'; - sourceId: string; - fetchId: string; - fetchRange: DateRange | null; - error: EventSourceError; - } | // need all these? - { - type: 'ADD_EVENTS'; - eventStore: EventStore; - } | { - type: 'MERGE_EVENTS'; - eventStore: EventStore; - } | { - type: 'MUTATE_EVENTS'; - instanceId: string; - mutation: EventMutation; - fromApi?: boolean; - } | { - type: 'REMOVE_EVENT_DEF'; - defId: string; - } | { - type: 'REMOVE_EVENT_INSTANCES'; - instances: EventInstanceHash; - } | { - type: 'REMOVE_ALL_EVENTS'; - } | { - type: 'RESET_EVENTS'; - }; -} - -declare module '@fullcalendar/core/CalendarComponent' { - import Component, { ComponentContext } from '@fullcalendar/core/component/Component'; - import { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import View from '@fullcalendar/core/View'; - import Toolbar from '@fullcalendar/core/Toolbar'; - import DateProfileGenerator, { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventUiHash } from '@fullcalendar/core/component/event-ui'; - import { BusinessHoursInput } from '@fullcalendar/core/structs/business-hours'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { CalendarState } from '@fullcalendar/core/reducers/types'; - export interface CalendarComponentProps extends CalendarState { - viewSpec: ViewSpec; - dateProfileGenerator: DateProfileGenerator; - eventUiBases: EventUiHash; - } - export { CalendarComponent as default, CalendarComponent }; - class CalendarComponent extends Component { - view: View; - header: Toolbar; - footer: Toolbar; - computeTitle: (dateProfile: any, viewOptions: any) => string; - parseBusinessHours: (input: BusinessHoursInput) => EventStore; - el: HTMLElement; - contentEl: HTMLElement; - isHeightAuto: boolean; - viewHeight: number; - constructor(context: ComponentContext, el: HTMLElement); - destroy(): void; - toggleElClassNames(bool: boolean): void; - render(props: CalendarComponentProps): void; - renderToolbars(viewSpec: ViewSpec, dateProfile: DateProfile, currentDate: DateMarker, dateProfileGenerator: DateProfileGenerator, title: string): void; - renderView(props: CalendarComponentProps, title: string): void; - updateSize(isResize?: boolean): void; - computeHeightVars(): void; - queryToolbarsHeight(): number; - freezeHeight(): void; - thawHeight(): void; - } -} - -declare module '@fullcalendar/core/common/DayHeader' { - import Component, { ComponentContext } from '@fullcalendar/core/component/Component'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - export interface DayTableHeaderProps { - dates: DateMarker[]; - dateProfile: DateProfile; - datesRepDistinctDays: boolean; - renderIntroHtml?: () => string; - } - export { DayHeader as default, DayHeader }; - class DayHeader extends Component { - el: HTMLElement; - thead: HTMLElement; - constructor(context: ComponentContext, parentEl: HTMLElement); - destroy(): void; - render(props: DayTableHeaderProps): void; - } -} - -declare module '@fullcalendar/core/common/table-utils' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - import { ComponentContext } from '@fullcalendar/core/component/Component'; - export function computeFallbackHeaderFormat(datesRepDistinctDays: boolean, dayCnt: number): { - weekday: string; - month?: undefined; - day?: undefined; - omitCommas?: undefined; - } | { - weekday: string; - month: string; - day: string; - omitCommas: boolean; - }; - export function renderDateCell(dateMarker: DateMarker, dateProfile: DateProfile, datesRepDistinctDays: any, colCnt: any, colHeadFormat: any, context: ComponentContext, colspan?: any, otherAttrs?: any): string; -} - -declare module '@fullcalendar/core/common/DaySeries' { - import DateProfileGenerator from '@fullcalendar/core/DateProfileGenerator'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - export interface DaySeriesSeg { - firstIndex: number; - lastIndex: number; - isStart: boolean; - isEnd: boolean; - } - export { DaySeries as default, DaySeries }; - class DaySeries { - cnt: number; - dates: DateMarker[]; - indices: number[]; - constructor(range: DateRange, dateProfileGenerator: DateProfileGenerator); - sliceRange(range: DateRange): DaySeriesSeg | null; - } -} - -declare module '@fullcalendar/core/interactions/event-interaction-state' { - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { Seg } from '@fullcalendar/core/component/DateComponent'; - export interface EventInteractionState { - affectedEvents: EventStore; - mutatedEvents: EventStore; - isEvent: boolean; - origSeg: Seg | null; - } -} - -declare module '@fullcalendar/core/component/event-rendering' { - import { EventDef, EventTuple, EventDefHash } from '@fullcalendar/core/structs/event'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { Seg } from '@fullcalendar/core/component/DateComponent'; - import View from '@fullcalendar/core/View'; - import { EventUi, EventUiHash } from '@fullcalendar/core/component/event-ui'; - export interface EventRenderRange extends EventTuple { - ui: EventUi; - range: DateRange; - isStart: boolean; - isEnd: boolean; - } - export function sliceEventStore(eventStore: EventStore, eventUiBases: EventUiHash, framingRange: DateRange, nextDayThreshold?: Duration): { - bg: EventRenderRange[]; - fg: EventRenderRange[]; - }; - export function hasBgRendering(def: EventDef): boolean; - export function filterSegsViaEls(view: View, segs: Seg[], isMirror: boolean): Seg[]; - export function getElSeg(el: HTMLElement): Seg | null; - export function compileEventUis(eventDefs: EventDefHash, eventUiBases: EventUiHash): { - [key: string]: EventUi; - }; - export function compileEventUi(eventDef: EventDef, eventUiBases: EventUiHash): EventUi; -} - -declare module '@fullcalendar/core/common/DayTable' { - import DaySeries from '@fullcalendar/core/common/DaySeries'; - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - import { Seg } from '@fullcalendar/core/component/DateComponent'; - export interface DayTableSeg extends Seg { - row: number; - firstCol: number; - lastCol: number; - } - export interface DayTableCell { - date: DateMarker; - htmlAttrs?: string; - } - export { DayTable as default, DayTable }; - class DayTable { - rowCnt: number; - colCnt: number; - cells: DayTableCell[][]; - headerDates: DateMarker[]; - constructor(daySeries: DaySeries, breakOnWeeks: boolean); - sliceRange(range: DateRange): DayTableSeg[]; - } -} - -declare module '@fullcalendar/core/common/slicing-utils' { - import { DateRange } from '@fullcalendar/core/datelib/date-range'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventUiHash } from '@fullcalendar/core/component/event-ui'; - import { DateProfile } from '@fullcalendar/core/DateProfileGenerator'; - import DateComponent, { Seg, EventSegUiInteractionState } from '@fullcalendar/core/component/DateComponent'; - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - export interface SliceableProps { - dateSelection: DateSpan; - businessHours: EventStore; - eventStore: EventStore; - eventDrag: EventInteractionState | null; - eventResize: EventInteractionState | null; - eventSelection: string; - eventUiBases: EventUiHash; - } - export interface SlicedProps { - dateSelectionSegs: SegType[]; - businessHourSegs: SegType[]; - fgEventSegs: SegType[]; - bgEventSegs: SegType[]; - eventDrag: EventSegUiInteractionState | null; - eventResize: EventSegUiInteractionState | null; - eventSelection: string; - } - export { Slicer as default, Slicer }; - abstract class Slicer { - abstract sliceRange(dateRange: DateRange, ...extraArgs: ExtraArgs): SegType[]; - sliceProps(props: SliceableProps, dateProfile: DateProfile, nextDayThreshold: Duration | null, component: DateComponent, // TODO: kill - ...extraArgs: ExtraArgs): SlicedProps; - sliceNowDate(// does not memoize - date: DateMarker, component: DateComponent, // TODO: kill - ...extraArgs: ExtraArgs): SegType[]; - } -} - -declare module '@fullcalendar/core/structs/event-mutation' { - import { Duration } from '@fullcalendar/core/datelib/duration'; - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import { EventDef } from '@fullcalendar/core/structs/event'; - import Calendar from '@fullcalendar/core/Calendar'; - import { EventUiHash } from '@fullcalendar/core/component/event-ui'; - export interface EventMutation { - datesDelta?: Duration; - startDelta?: Duration; - endDelta?: Duration; - standardProps?: any; - extendedProps?: any; - } - export function applyMutationToEventStore(eventStore: EventStore, eventConfigBase: EventUiHash, mutation: EventMutation, calendar: Calendar): EventStore; - export type eventDefMutationApplier = (eventDef: EventDef, mutation: EventMutation, calendar: Calendar) => void; -} - -declare module '@fullcalendar/core/validation' { - import { EventStore } from '@fullcalendar/core/structs/event-store'; - import Calendar from '@fullcalendar/core/Calendar'; - import { DateSpan, DateSpanApi } from '@fullcalendar/core/structs/date-span'; - import EventApi from '@fullcalendar/core/api/EventApi'; - import { EventInput } from '@fullcalendar/core/structs/event'; - import { EventInteractionState } from '@fullcalendar/core/interactions/event-interaction-state'; - import { SplittableProps } from '@fullcalendar/core/component/event-splitting'; - export type ConstraintInput = 'businessHours' | string | EventInput | EventInput[]; - export type Constraint = 'businessHours' | string | EventStore | false; - export type OverlapFunc = ((stillEvent: EventApi, movingEvent: EventApi | null) => boolean); - export type AllowFunc = (span: DateSpanApi, movingEvent: EventApi | null) => boolean; - export type isPropsValidTester = (props: SplittableProps, calendar: Calendar) => boolean; - export function isInteractionValid(interaction: EventInteractionState, calendar: Calendar): boolean; - export function isDateSelectionValid(dateSelection: DateSpan, calendar: Calendar): boolean; - export function isPropsValid(state: SplittableProps, calendar: Calendar, dateSpanMeta?: {}, filterConfig?: any): boolean; - export function normalizeConstraint(input: ConstraintInput, calendar: Calendar): Constraint | null; -} - -declare module '@fullcalendar/core/api/EventApi' { - import Calendar from '@fullcalendar/core/Calendar'; - import { EventDef, EventInstance } from '@fullcalendar/core/structs/event'; - import { EventMutation } from '@fullcalendar/core/structs/event-mutation'; - import { DateInput } from '@fullcalendar/core/datelib/env'; - import { DurationInput } from '@fullcalendar/core/datelib/duration'; - import { FormatterInput } from '@fullcalendar/core/datelib/formatting'; - import EventSourceApi from '@fullcalendar/core/api/EventSourceApi'; - export { EventApi as default, EventApi }; - class EventApi { - _calendar: Calendar; - _def: EventDef; - _instance: EventInstance | null; - constructor(calendar: Calendar, def: EventDef, instance?: EventInstance); - setProp(name: string, val: string): void; - setExtendedProp(name: string, val: any): void; - setStart(startInput: DateInput, options?: { - granularity?: string; - maintainDuration?: boolean; - }): void; - setEnd(endInput: DateInput | null, options?: { - granularity?: string; - }): void; - setDates(startInput: DateInput, endInput: DateInput | null, options?: { - allDay?: boolean; - granularity?: string; - }): void; - moveStart(deltaInput: DurationInput): void; - moveEnd(deltaInput: DurationInput): void; - moveDates(deltaInput: DurationInput): void; - setAllDay(allDay: boolean, options?: { - maintainDuration?: boolean; - }): void; - formatRange(formatInput: FormatterInput): any; - mutate(mutation: EventMutation): void; - remove(): void; - readonly source: EventSourceApi | null; - readonly start: Date | null; - readonly end: Date | null; - readonly id: string; - readonly groupId: string; - readonly allDay: boolean; - readonly title: string; - readonly url: string; - readonly rendering: string; - readonly startEditable: boolean; - readonly durationEditable: boolean; - readonly constraint: any; - readonly overlap: any; - readonly allow: any; - readonly backgroundColor: string; - readonly borderColor: string; - readonly textColor: string; - readonly classNames: string[]; - readonly extendedProps: any; - } -} - -declare module '@fullcalendar/core/util/requestJson' { - export default function requestJson(method: string, url: string, params: object, successCallback: any, failureCallback: any): void; -} - -declare module '@fullcalendar/core/datelib/locale' { - export type LocaleCodeArg = string | string[]; - export type LocaleSingularArg = LocaleCodeArg | RawLocale; - export interface Locale { - codeArg: LocaleCodeArg; - codes: string[]; - week: { - dow: number; - doy: number; - }; - simpleNumberFormat: Intl.NumberFormat; - options: any; - } - export interface RawLocale { - code: string; - [otherProp: string]: any; - } - export type RawLocaleMap = { - [code: string]: RawLocale; - }; - export interface RawLocaleInfo { - map: RawLocaleMap; - defaultCode: string; - } - export function parseRawLocales(explicitRawLocales: RawLocale[]): RawLocaleInfo; - export function buildLocale(inputSingular: LocaleSingularArg, available: RawLocaleMap): Locale; -} - -declare module '@fullcalendar/core/OptionsManager' { - export { OptionsManager as default, OptionsManager }; - class OptionsManager { - dirDefaults: any; - localeDefaults: any; - overrides: any; - dynamicOverrides: any; - computed: any; - constructor(overrides: any); - mutate(updates: any, removals: string[], isDynamic?: boolean): void; - compute(): void; - } -} - -declare module '@fullcalendar/core/api/EventSourceApi' { - import Calendar from '@fullcalendar/core/Calendar'; - import { EventSource } from '@fullcalendar/core/structs/event-source'; - export { EventSourceApi as default, EventSourceApi }; - class EventSourceApi { - calendar: Calendar; - internalEventSource: EventSource; - constructor(calendar: Calendar, internalEventSource: EventSource); - remove(): void; - refetch(): void; - readonly id: string; - readonly url: string; - } -} - -declare module '@fullcalendar/core/structs/view-config' { - import View from '@fullcalendar/core/View'; - import { ViewSpec } from '@fullcalendar/core/structs/view-spec'; - import { ComponentContext } from '@fullcalendar/core/component/Component'; - import DateProfileGenerator from '@fullcalendar/core/DateProfileGenerator'; - export type ViewClass = new (context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement) => View; - export interface ViewConfigObjectInput { - type?: string; - class?: ViewClass; - [optionName: string]: any; - } - export type ViewConfigInput = ViewClass | ViewConfigObjectInput; - export type ViewConfigInputHash = { - [viewType: string]: ViewConfigInput; - }; - export interface ViewConfig { - superType: string; - class: ViewClass | null; - options: any; - } - export type ViewConfigHash = { - [viewType: string]: ViewConfig; - }; - export function parseViewConfigs(inputs: ViewConfigInputHash): ViewConfigHash; -} - -declare module '@fullcalendar/core/datelib/calendar-system' { - import { DateMarker } from '@fullcalendar/core/datelib/marker'; - export interface CalendarSystem { - getMarkerYear(d: DateMarker): number; - getMarkerMonth(d: DateMarker): number; - getMarkerDay(d: DateMarker): number; - arrayToMarker(arr: number[]): DateMarker; - markerToArray(d: DateMarker): number[]; - } - export function registerCalendarSystem(name: any, theClass: any): void; - export function createCalendarSystem(name: any): any; -} - -declare module '@fullcalendar/core/datelib/formatting-cmd' { - import { DateFormatter, DateFormattingContext, ZonedMarker, VerboseFormattingArg } from '@fullcalendar/core/datelib/formatting'; - export type CmdFormatterFunc = (cmd: string, arg: VerboseFormattingArg) => string; - export class CmdFormatter implements DateFormatter { - cmdStr: string; - separator: string; - constructor(cmdStr: string, separator?: string); - format(date: ZonedMarker, context: DateFormattingContext): string; - formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext): string; - } -} - -declare module '@fullcalendar/core/datelib/formatting-func' { - import { DateFormatter, DateFormattingContext, ZonedMarker, VerboseFormattingArg } from '@fullcalendar/core/datelib/formatting'; - export type FuncFormatterFunc = (arg: VerboseFormattingArg) => string; - export class FuncFormatter implements DateFormatter { - func: FuncFormatterFunc; - constructor(func: FuncFormatterFunc); - format(date: ZonedMarker, context: DateFormattingContext): string; - formatRange(start: ZonedMarker, end: ZonedMarker, context: DateFormattingContext): string; - } -} - -declare module '@fullcalendar/core/event-sources/func-event-source' { - import { EventSourceError } from '@fullcalendar/core/structs/event-source'; - import { EventInput } from '@fullcalendar/core/structs/event'; - export type EventSourceFunc = (arg: { - start: Date; - end: Date; - timeZone: string; - }, successCallback: (events: EventInput[]) => void, failureCallback: (error: EventSourceError) => void) => (void | PromiseLike); - const _default: import("@fullcalendar/core/plugin-system").PluginDef; - export default _default; -} - -declare module '@fullcalendar/core/interactions/external-element-dragging' { - import { DateSpan } from '@fullcalendar/core/structs/date-span'; - import { DragMeta } from '@fullcalendar/core/structs/drag-meta'; - export type ExternalDefTransform = (dateSpan: DateSpan, dragMeta: DragMeta) => any; -} - -declare module '@fullcalendar/core/Toolbar' { - import Component, { ComponentContext } from '@fullcalendar/core/component/Component'; - export interface ToolbarRenderProps { - layout: any; - title: string; - activeButton: string; - isTodayEnabled: boolean; - isPrevEnabled: boolean; - isNextEnabled: boolean; - } - export { Toolbar as default, Toolbar }; - class Toolbar extends Component { - el: HTMLElement; - viewsWithButtons: any; - constructor(context: ComponentContext, extraClassName: any); - destroy(): void; - render(props: ToolbarRenderProps): void; - renderLayout(layout: any): void; - unrenderLayout(): void; - renderSection(position: any, buttonStr: any): HTMLElement; - updateToday(isTodayEnabled: any): void; - updatePrev(isPrevEnabled: any): void; - updateNext(isNextEnabled: any): void; - updateTitle(text: any): void; - updateActiveButton(buttonName?: any): void; - toggleButtonEnabled(buttonName: any, bool: any): void; - } -} - diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.esm.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.esm.js deleted file mode 100644 index b3d27d7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.esm.js +++ /dev/null @@ -1,8558 +0,0 @@ -/*! -FullCalendar Core Package v4.3.1 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -// Creating -// ---------------------------------------------------------------------------------------------------------------- -var elementPropHash = { - className: true, - colSpan: true, - rowSpan: true -}; -var containerTagHash = { - '= rect.left && - point.left < rect.right && - point.top >= rect.top && - point.top < rect.bottom; -} -// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false -function intersectRects(rect1, rect2) { - var res = { - left: Math.max(rect1.left, rect2.left), - right: Math.min(rect1.right, rect2.right), - top: Math.max(rect1.top, rect2.top), - bottom: Math.min(rect1.bottom, rect2.bottom) - }; - if (res.left < res.right && res.top < res.bottom) { - return res; - } - return false; -} -function translateRect(rect, deltaX, deltaY) { - return { - left: rect.left + deltaX, - right: rect.right + deltaX, - top: rect.top + deltaY, - bottom: rect.bottom + deltaY - }; -} -// Returns a new point that will have been moved to reside within the given rectangle -function constrainPoint(point, rect) { - return { - left: Math.min(Math.max(point.left, rect.left), rect.right), - top: Math.min(Math.max(point.top, rect.top), rect.bottom) - }; -} -// Returns a point that is the center of the given rectangle -function getRectCenter(rect) { - return { - left: (rect.left + rect.right) / 2, - top: (rect.top + rect.bottom) / 2 - }; -} -// Subtracts point2's coordinates from point1's coordinates, returning a delta -function diffPoints(point1, point2) { - return { - left: point1.left - point2.left, - top: point1.top - point2.top - }; -} - -// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side -var isRtlScrollbarOnLeft = null; -function getIsRtlScrollbarOnLeft() { - if (isRtlScrollbarOnLeft === null) { - isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft(); - } - return isRtlScrollbarOnLeft; -} -function computeIsRtlScrollbarOnLeft() { - var outerEl = createElement('div', { - style: { - position: 'absolute', - top: -1000, - left: 0, - border: 0, - padding: 0, - overflow: 'scroll', - direction: 'rtl' - } - }, '
      '); - document.body.appendChild(outerEl); - var innerEl = outerEl.firstChild; - var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left; - removeElement(outerEl); - return res; -} -// The scrollbar width computations in computeEdges are sometimes flawed when it comes to -// retina displays, rounding, and IE11. Massage them into a usable value. -function sanitizeScrollbarWidth(width) { - width = Math.max(0, width); // no negatives - width = Math.round(width); - return width; -} - -function computeEdges(el, getPadding) { - if (getPadding === void 0) { getPadding = false; } - var computedStyle = window.getComputedStyle(el); - var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0; - var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0; - var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0; - var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; - // must use offset(Width|Height) because compatible with client(Width|Height) - var scrollbarLeftRight = sanitizeScrollbarWidth(el.offsetWidth - el.clientWidth - borderLeft - borderRight); - var scrollbarBottom = sanitizeScrollbarWidth(el.offsetHeight - el.clientHeight - borderTop - borderBottom); - var res = { - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom, - scrollbarBottom: scrollbarBottom, - scrollbarLeft: 0, - scrollbarRight: 0 - }; - if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side? - res.scrollbarLeft = scrollbarLeftRight; - } - else { - res.scrollbarRight = scrollbarLeftRight; - } - if (getPadding) { - res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0; - res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0; - res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0; - res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0; - } - return res; -} -function computeInnerRect(el, goWithinPadding) { - if (goWithinPadding === void 0) { goWithinPadding = false; } - var outerRect = computeRect(el); - var edges = computeEdges(el, goWithinPadding); - var res = { - left: outerRect.left + edges.borderLeft + edges.scrollbarLeft, - right: outerRect.right - edges.borderRight - edges.scrollbarRight, - top: outerRect.top + edges.borderTop, - bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom - }; - if (goWithinPadding) { - res.left += edges.paddingLeft; - res.right -= edges.paddingRight; - res.top += edges.paddingTop; - res.bottom -= edges.paddingBottom; - } - return res; -} -function computeRect(el) { - var rect = el.getBoundingClientRect(); - return { - left: rect.left + window.pageXOffset, - top: rect.top + window.pageYOffset, - right: rect.right + window.pageXOffset, - bottom: rect.bottom + window.pageYOffset - }; -} -function computeViewportRect() { - return { - left: window.pageXOffset, - right: window.pageXOffset + document.documentElement.clientWidth, - top: window.pageYOffset, - bottom: window.pageYOffset + document.documentElement.clientHeight - }; -} -function computeHeightAndMargins(el) { - return el.getBoundingClientRect().height + computeVMargins(el); -} -function computeVMargins(el) { - var computed = window.getComputedStyle(el); - return parseInt(computed.marginTop, 10) + - parseInt(computed.marginBottom, 10); -} -// does not return window -function getClippingParents(el) { - var parents = []; - while (el instanceof HTMLElement) { // will stop when gets to document or null - var computedStyle = window.getComputedStyle(el); - if (computedStyle.position === 'fixed') { - break; - } - if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) { - parents.push(el); - } - el = el.parentNode; - } - return parents; -} -function computeClippingRect(el) { - return getClippingParents(el) - .map(function (el) { - return computeInnerRect(el); - }) - .concat(computeViewportRect()) - .reduce(function (rect0, rect1) { - return intersectRects(rect0, rect1) || rect1; // should always intersect - }); -} - -// Stops a mouse/touch event from doing it's native browser action -function preventDefault(ev) { - ev.preventDefault(); -} -// Event Delegation -// ---------------------------------------------------------------------------------------------------------------- -function listenBySelector(container, eventType, selector, handler) { - function realHandler(ev) { - var matchedChild = elementClosest(ev.target, selector); - if (matchedChild) { - handler.call(matchedChild, ev, matchedChild); - } - } - container.addEventListener(eventType, realHandler); - return function () { - container.removeEventListener(eventType, realHandler); - }; -} -function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) { - var currentMatchedChild; - return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) { - if (matchedChild !== currentMatchedChild) { - currentMatchedChild = matchedChild; - onMouseEnter(ev, matchedChild); - var realOnMouseLeave_1 = function (ev) { - currentMatchedChild = null; - onMouseLeave(ev, matchedChild); - matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1); - }; - // listen to the next mouseleave, and then unattach - matchedChild.addEventListener('mouseleave', realOnMouseLeave_1); - } - }); -} -// Animation -// ---------------------------------------------------------------------------------------------------------------- -var transitionEventNames = [ - 'webkitTransitionEnd', - 'otransitionend', - 'oTransitionEnd', - 'msTransitionEnd', - 'transitionend' -]; -// triggered only when the next single subsequent transition finishes -function whenTransitionDone(el, callback) { - var realCallback = function (ev) { - callback(ev); - transitionEventNames.forEach(function (eventName) { - el.removeEventListener(eventName, realCallback); - }); - }; - transitionEventNames.forEach(function (eventName) { - el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes - }); -} - -var DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; -// Adding -function addWeeks(m, n) { - var a = dateToUtcArray(m); - a[2] += n * 7; - return arrayToUtcDate(a); -} -function addDays(m, n) { - var a = dateToUtcArray(m); - a[2] += n; - return arrayToUtcDate(a); -} -function addMs(m, n) { - var a = dateToUtcArray(m); - a[6] += n; - return arrayToUtcDate(a); -} -// Diffing (all return floats) -function diffWeeks(m0, m1) { - return diffDays(m0, m1) / 7; -} -function diffDays(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24); -} -function diffHours(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60); -} -function diffMinutes(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60); -} -function diffSeconds(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / 1000; -} -function diffDayAndTime(m0, m1) { - var m0day = startOfDay(m0); - var m1day = startOfDay(m1); - return { - years: 0, - months: 0, - days: Math.round(diffDays(m0day, m1day)), - milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()) - }; -} -// Diffing Whole Units -function diffWholeWeeks(m0, m1) { - var d = diffWholeDays(m0, m1); - if (d !== null && d % 7 === 0) { - return d / 7; - } - return null; -} -function diffWholeDays(m0, m1) { - if (timeAsMs(m0) === timeAsMs(m1)) { - return Math.round(diffDays(m0, m1)); - } - return null; -} -// Start-Of -function startOfDay(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate() - ]); -} -function startOfHour(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours() - ]); -} -function startOfMinute(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours(), - m.getUTCMinutes() - ]); -} -function startOfSecond(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours(), - m.getUTCMinutes(), - m.getUTCSeconds() - ]); -} -// Week Computation -function weekOfYear(marker, dow, doy) { - var y = marker.getUTCFullYear(); - var w = weekOfGivenYear(marker, y, dow, doy); - if (w < 1) { - return weekOfGivenYear(marker, y - 1, dow, doy); - } - var nextW = weekOfGivenYear(marker, y + 1, dow, doy); - if (nextW >= 1) { - return Math.min(w, nextW); - } - return w; -} -function weekOfGivenYear(marker, year, dow, doy) { - var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]); - var dayStart = startOfDay(marker); - var days = Math.round(diffDays(firstWeekStart, dayStart)); - return Math.floor(days / 7) + 1; // zero-indexed -} -// start-of-first-week - start-of-year -function firstWeekOffset(year, dow, doy) { - // first-week day -- which january is always in the first week (4 for iso, 1 for other) - var fwd = 7 + dow - doy; - // first-week day local weekday -- which local weekday is fwd - var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7; - return -fwdlw + fwd - 1; -} -// Array Conversion -function dateToLocalArray(date) { - return [ - date.getFullYear(), - date.getMonth(), - date.getDate(), - date.getHours(), - date.getMinutes(), - date.getSeconds(), - date.getMilliseconds() - ]; -} -function arrayToLocalDate(a) { - return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month - a[3] || 0, a[4] || 0, a[5] || 0); -} -function dateToUtcArray(date) { - return [ - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() - ]; -} -function arrayToUtcDate(a) { - // according to web standards (and Safari), a month index is required. - // massage if only given a year. - if (a.length === 1) { - a = a.concat([0]); - } - return new Date(Date.UTC.apply(Date, a)); -} -// Other Utils -function isValidDate(m) { - return !isNaN(m.valueOf()); -} -function timeAsMs(m) { - return m.getUTCHours() * 1000 * 60 * 60 + - m.getUTCMinutes() * 1000 * 60 + - m.getUTCSeconds() * 1000 + - m.getUTCMilliseconds(); -} - -var INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds']; -var PARSE_RE = /^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/; -// Parsing and Creation -function createDuration(input, unit) { - var _a; - if (typeof input === 'string') { - return parseString(input); - } - else if (typeof input === 'object' && input) { // non-null object - return normalizeObject(input); - } - else if (typeof input === 'number') { - return normalizeObject((_a = {}, _a[unit || 'milliseconds'] = input, _a)); - } - else { - return null; - } -} -function parseString(s) { - var m = PARSE_RE.exec(s); - if (m) { - var sign = m[1] ? -1 : 1; - return { - years: 0, - months: 0, - days: sign * (m[2] ? parseInt(m[2], 10) : 0), - milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours - (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes - (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds - (m[6] ? parseInt(m[6], 10) : 0) // ms - ) - }; - } - return null; -} -function normalizeObject(obj) { - return { - years: obj.years || obj.year || 0, - months: obj.months || obj.month || 0, - days: (obj.days || obj.day || 0) + - getWeeksFromInput(obj) * 7, - milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours - (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes - (obj.seconds || obj.second || 0) * 1000 + // seconds - (obj.milliseconds || obj.millisecond || obj.ms || 0) // ms - }; -} -function getWeeksFromInput(obj) { - return obj.weeks || obj.week || 0; -} -// Equality -function durationsEqual(d0, d1) { - return d0.years === d1.years && - d0.months === d1.months && - d0.days === d1.days && - d0.milliseconds === d1.milliseconds; -} -function isSingleDay(dur) { - return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0; -} -// Simple Math -function addDurations(d0, d1) { - return { - years: d0.years + d1.years, - months: d0.months + d1.months, - days: d0.days + d1.days, - milliseconds: d0.milliseconds + d1.milliseconds - }; -} -function subtractDurations(d1, d0) { - return { - years: d1.years - d0.years, - months: d1.months - d0.months, - days: d1.days - d0.days, - milliseconds: d1.milliseconds - d0.milliseconds - }; -} -function multiplyDuration(d, n) { - return { - years: d.years * n, - months: d.months * n, - days: d.days * n, - milliseconds: d.milliseconds * n - }; -} -// Conversions -// "Rough" because they are based on average-case Gregorian months/years -function asRoughYears(dur) { - return asRoughDays(dur) / 365; -} -function asRoughMonths(dur) { - return asRoughDays(dur) / 30; -} -function asRoughDays(dur) { - return asRoughMs(dur) / 864e5; -} -function asRoughMinutes(dur) { - return asRoughMs(dur) / (1000 * 60); -} -function asRoughSeconds(dur) { - return asRoughMs(dur) / 1000; -} -function asRoughMs(dur) { - return dur.years * (365 * 864e5) + - dur.months * (30 * 864e5) + - dur.days * 864e5 + - dur.milliseconds; -} -// Advanced Math -function wholeDivideDurations(numerator, denominator) { - var res = null; - for (var i = 0; i < INTERNAL_UNITS.length; i++) { - var unit = INTERNAL_UNITS[i]; - if (denominator[unit]) { - var localRes = numerator[unit] / denominator[unit]; - if (!isInt(localRes) || (res !== null && res !== localRes)) { - return null; - } - res = localRes; - } - else if (numerator[unit]) { - // needs to divide by something but can't! - return null; - } - } - return res; -} -function greatestDurationDenominator(dur, dontReturnWeeks) { - var ms = dur.milliseconds; - if (ms) { - if (ms % 1000 !== 0) { - return { unit: 'millisecond', value: ms }; - } - if (ms % (1000 * 60) !== 0) { - return { unit: 'second', value: ms / 1000 }; - } - if (ms % (1000 * 60 * 60) !== 0) { - return { unit: 'minute', value: ms / (1000 * 60) }; - } - if (ms) { - return { unit: 'hour', value: ms / (1000 * 60 * 60) }; - } - } - if (dur.days) { - if (!dontReturnWeeks && dur.days % 7 === 0) { - return { unit: 'week', value: dur.days / 7 }; - } - return { unit: 'day', value: dur.days }; - } - if (dur.months) { - return { unit: 'month', value: dur.months }; - } - if (dur.years) { - return { unit: 'year', value: dur.years }; - } - return { unit: 'millisecond', value: 0 }; -} - -/* FullCalendar-specific DOM Utilities -----------------------------------------------------------------------------------------------------------------------*/ -// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left -// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. -function compensateScroll(rowEl, scrollbarWidths) { - if (scrollbarWidths.left) { - applyStyle(rowEl, { - borderLeftWidth: 1, - marginLeft: scrollbarWidths.left - 1 - }); - } - if (scrollbarWidths.right) { - applyStyle(rowEl, { - borderRightWidth: 1, - marginRight: scrollbarWidths.right - 1 - }); - } -} -// Undoes compensateScroll and restores all borders/margins -function uncompensateScroll(rowEl) { - applyStyle(rowEl, { - marginLeft: '', - marginRight: '', - borderLeftWidth: '', - borderRightWidth: '' - }); -} -// Make the mouse cursor express that an event is not allowed in the current area -function disableCursor() { - document.body.classList.add('fc-not-allowed'); -} -// Returns the mouse cursor to its original look -function enableCursor() { - document.body.classList.remove('fc-not-allowed'); -} -// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. -// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering -// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and -// reduces the available height. -function distributeHeight(els, availableHeight, shouldRedistribute) { - // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, - // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. - var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element - var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* - var flexEls = []; // elements that are allowed to expand. array of DOM nodes - var flexOffsets = []; // amount of vertical space it takes up - var flexHeights = []; // actual css height - var usedHeight = 0; - undistributeHeight(els); // give all elements their natural height - // find elements that are below the recommended height (expandable). - // important to query for heights in a single first pass (to avoid reflow oscillation). - els.forEach(function (el, i) { - var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; - var naturalHeight = el.getBoundingClientRect().height; - var naturalOffset = naturalHeight + computeVMargins(el); - if (naturalOffset < minOffset) { - flexEls.push(el); - flexOffsets.push(naturalOffset); - flexHeights.push(naturalHeight); - } - else { - // this element stretches past recommended height (non-expandable). mark the space as occupied. - usedHeight += naturalOffset; - } - }); - // readjust the recommended height to only consider the height available to non-maxed-out rows. - if (shouldRedistribute) { - availableHeight -= usedHeight; - minOffset1 = Math.floor(availableHeight / flexEls.length); - minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* - } - // assign heights to all expandable elements - flexEls.forEach(function (el, i) { - var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; - var naturalOffset = flexOffsets[i]; - var naturalHeight = flexHeights[i]; - var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding - if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things - el.style.height = newHeight + 'px'; - } - }); -} -// Undoes distrubuteHeight, restoring all els to their natural height -function undistributeHeight(els) { - els.forEach(function (el) { - el.style.height = ''; - }); -} -// Given `els`, a set of cells, find the cell with the largest natural width and set the widths of all the -// cells to be that width. -// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline -function matchCellWidths(els) { - var maxInnerWidth = 0; - els.forEach(function (el) { - var innerEl = el.firstChild; // hopefully an element - if (innerEl instanceof HTMLElement) { - var innerWidth_1 = innerEl.getBoundingClientRect().width; - if (innerWidth_1 > maxInnerWidth) { - maxInnerWidth = innerWidth_1; - } - } - }); - maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance - els.forEach(function (el) { - el.style.width = maxInnerWidth + 'px'; - }); - return maxInnerWidth; -} -// Given one element that resides inside another, -// Subtracts the height of the inner element from the outer element. -function subtractInnerElHeight(outerEl, innerEl) { - // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked - var reflowStyleProps = { - position: 'relative', - left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll - }; - applyStyle(outerEl, reflowStyleProps); - applyStyle(innerEl, reflowStyleProps); - var diff = // grab the dimensions - outerEl.getBoundingClientRect().height - - innerEl.getBoundingClientRect().height; - // undo hack - var resetStyleProps = { position: '', left: '' }; - applyStyle(outerEl, resetStyleProps); - applyStyle(innerEl, resetStyleProps); - return diff; -} -/* Selection -----------------------------------------------------------------------------------------------------------------------*/ -function preventSelection(el) { - el.classList.add('fc-unselectable'); - el.addEventListener('selectstart', preventDefault); -} -function allowSelection(el) { - el.classList.remove('fc-unselectable'); - el.removeEventListener('selectstart', preventDefault); -} -/* Context Menu -----------------------------------------------------------------------------------------------------------------------*/ -function preventContextMenu(el) { - el.addEventListener('contextmenu', preventDefault); -} -function allowContextMenu(el) { - el.removeEventListener('contextmenu', preventDefault); -} -/* Object Ordering by Field -----------------------------------------------------------------------------------------------------------------------*/ -function parseFieldSpecs(input) { - var specs = []; - var tokens = []; - var i; - var token; - if (typeof input === 'string') { - tokens = input.split(/\s*,\s*/); - } - else if (typeof input === 'function') { - tokens = [input]; - } - else if (Array.isArray(input)) { - tokens = input; - } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - if (typeof token === 'string') { - specs.push(token.charAt(0) === '-' ? - { field: token.substring(1), order: -1 } : - { field: token, order: 1 }); - } - else if (typeof token === 'function') { - specs.push({ func: token }); - } - } - return specs; -} -function compareByFieldSpecs(obj0, obj1, fieldSpecs) { - var i; - var cmp; - for (i = 0; i < fieldSpecs.length; i++) { - cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]); - if (cmp) { - return cmp; - } - } - return 0; -} -function compareByFieldSpec(obj0, obj1, fieldSpec) { - if (fieldSpec.func) { - return fieldSpec.func(obj0, obj1); - } - return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) - * (fieldSpec.order || 1); -} -function flexibleCompare(a, b) { - if (!a && !b) { - return 0; - } - if (b == null) { - return -1; - } - if (a == null) { - return 1; - } - if (typeof a === 'string' || typeof b === 'string') { - return String(a).localeCompare(String(b)); - } - return a - b; -} -/* String Utilities -----------------------------------------------------------------------------------------------------------------------*/ -function capitaliseFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -} -function padStart(val, len) { - var s = String(val); - return '000'.substr(0, len - s.length) + s; -} -/* Number Utilities -----------------------------------------------------------------------------------------------------------------------*/ -function compareNumbers(a, b) { - return a - b; -} -function isInt(n) { - return n % 1 === 0; -} -/* Weird Utilities -----------------------------------------------------------------------------------------------------------------------*/ -function applyAll(functions, thisObj, args) { - if (typeof functions === 'function') { // supplied a single function - functions = [functions]; - } - if (functions) { - var i = void 0; - var ret = void 0; - for (i = 0; i < functions.length; i++) { - ret = functions[i].apply(thisObj, args) || ret; - } - return ret; - } -} -function firstDefined() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - for (var i = 0; i < args.length; i++) { - if (args[i] !== undefined) { - return args[i]; - } - } -} -// Returns a function, that, as long as it continues to be invoked, will not -// be triggered. The function will be called after it stops being called for -// N milliseconds. If `immediate` is passed, trigger the function on the -// leading edge, instead of the trailing. -// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 -function debounce(func, wait) { - var timeout; - var args; - var context; - var timestamp; - var result; - var later = function () { - var last = new Date().valueOf() - timestamp; - if (last < wait) { - timeout = setTimeout(later, wait - last); - } - else { - timeout = null; - result = func.apply(context, args); - context = args = null; - } - }; - return function () { - context = this; - args = arguments; - timestamp = new Date().valueOf(); - if (!timeout) { - timeout = setTimeout(later, wait); - } - return result; - }; -} -// Number and Boolean are only types that defaults or not computed for -// TODO: write more comments -function refineProps(rawProps, processors, defaults, leftoverProps) { - if (defaults === void 0) { defaults = {}; } - var refined = {}; - for (var key in processors) { - var processor = processors[key]; - if (rawProps[key] !== undefined) { - // found - if (processor === Function) { - refined[key] = typeof rawProps[key] === 'function' ? rawProps[key] : null; - } - else if (processor) { // a refining function? - refined[key] = processor(rawProps[key]); - } - else { - refined[key] = rawProps[key]; - } - } - else if (defaults[key] !== undefined) { - // there's an explicit default - refined[key] = defaults[key]; - } - else { - // must compute a default - if (processor === String) { - refined[key] = ''; // empty string is default for String - } - else if (!processor || processor === Number || processor === Boolean || processor === Function) { - refined[key] = null; // assign null for other non-custom processor funcs - } - else { - refined[key] = processor(null); // run the custom processor func - } - } - } - if (leftoverProps) { - for (var key in rawProps) { - if (processors[key] === undefined) { - leftoverProps[key] = rawProps[key]; - } - } - } - return refined; -} -/* Date stuff that doesn't belong in datelib core -----------------------------------------------------------------------------------------------------------------------*/ -// given a timed range, computes an all-day range that has the same exact duration, -// but whose start time is aligned with the start of the day. -function computeAlignedDayRange(timedRange) { - var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1; - var start = startOfDay(timedRange.start); - var end = addDays(start, dayCnt); - return { start: start, end: end }; -} -// given a timed range, computes an all-day range based on how for the end date bleeds into the next day -// TODO: give nextDayThreshold a default arg -function computeVisibleDayRange(timedRange, nextDayThreshold) { - if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); } - var startDay = null; - var endDay = null; - if (timedRange.end) { - endDay = startOfDay(timedRange.end); - var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay` - // If the end time is actually inclusively part of the next day and is equal to or - // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. - // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. - if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) { - endDay = addDays(endDay, 1); - } - } - if (timedRange.start) { - startDay = startOfDay(timedRange.start); // the beginning of the day the range starts - // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. - if (endDay && endDay <= startDay) { - endDay = addDays(startDay, 1); - } - } - return { start: startDay, end: endDay }; -} -// spans from one day into another? -function isMultiDayRange(range) { - var visibleRange = computeVisibleDayRange(range); - return diffDays(visibleRange.start, visibleRange.end) > 1; -} -function diffDates(date0, date1, dateEnv, largeUnit) { - if (largeUnit === 'year') { - return createDuration(dateEnv.diffWholeYears(date0, date1), 'year'); - } - else if (largeUnit === 'month') { - return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month'); - } - else { - return diffDayAndTime(date0, date1); // returns a duration - } -} - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function parseRecurring(eventInput, allDayDefault, dateEnv, recurringTypes, leftovers) { - for (var i = 0; i < recurringTypes.length; i++) { - var localLeftovers = {}; - var parsed = recurringTypes[i].parse(eventInput, localLeftovers, dateEnv); - if (parsed) { - var allDay = localLeftovers.allDay; - delete localLeftovers.allDay; // remove from leftovers - if (allDay == null) { - allDay = allDayDefault; - if (allDay == null) { - allDay = parsed.allDayGuess; - if (allDay == null) { - allDay = false; - } - } - } - __assign(leftovers, localLeftovers); - return { - allDay: allDay, - duration: parsed.duration, - typeData: parsed.typeData, - typeId: i - }; - } - } - return null; -} -/* -Event MUST have a recurringDef -*/ -function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) { - var typeDef = recurringTypes[eventDef.recurringDef.typeId]; - var markers = typeDef.expand(eventDef.recurringDef.typeData, { - start: dateEnv.subtract(framingRange.start, duration), - end: framingRange.end - }, dateEnv); - // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to - if (eventDef.allDay) { - markers = markers.map(startOfDay); - } - return markers; -} - -var hasOwnProperty = Object.prototype.hasOwnProperty; -// Merges an array of objects into a single object. -// The second argument allows for an array of property names who's object values will be merged together. -function mergeProps(propObjs, complexProps) { - var dest = {}; - var i; - var name; - var complexObjs; - var j; - var val; - var props; - if (complexProps) { - for (i = 0; i < complexProps.length; i++) { - name = complexProps[i]; - complexObjs = []; - // collect the trailing object values, stopping when a non-object is discovered - for (j = propObjs.length - 1; j >= 0; j--) { - val = propObjs[j][name]; - if (typeof val === 'object' && val) { // non-null object - complexObjs.unshift(val); - } - else if (val !== undefined) { - dest[name] = val; // if there were no objects, this value will be used - break; - } - } - // if the trailing values were objects, use the merged value - if (complexObjs.length) { - dest[name] = mergeProps(complexObjs); - } - } - } - // copy values into the destination, going from last to first - for (i = propObjs.length - 1; i >= 0; i--) { - props = propObjs[i]; - for (name in props) { - if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign - dest[name] = props[name]; - } - } - } - return dest; -} -function filterHash(hash, func) { - var filtered = {}; - for (var key in hash) { - if (func(hash[key], key)) { - filtered[key] = hash[key]; - } - } - return filtered; -} -function mapHash(hash, func) { - var newHash = {}; - for (var key in hash) { - newHash[key] = func(hash[key], key); - } - return newHash; -} -function arrayToHash(a) { - var hash = {}; - for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { - var item = a_1[_i]; - hash[item] = true; - } - return hash; -} -function hashValuesToArray(obj) { - var a = []; - for (var key in obj) { - a.push(obj[key]); - } - return a; -} -function isPropsEqual(obj0, obj1) { - for (var key in obj0) { - if (hasOwnProperty.call(obj0, key)) { - if (!(key in obj1)) { - return false; - } - } - } - for (var key in obj1) { - if (hasOwnProperty.call(obj1, key)) { - if (obj0[key] !== obj1[key]) { - return false; - } - } - } - return true; -} - -function parseEvents(rawEvents, sourceId, calendar, allowOpenRange) { - var eventStore = createEmptyEventStore(); - for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) { - var rawEvent = rawEvents_1[_i]; - var tuple = parseEvent(rawEvent, sourceId, calendar, allowOpenRange); - if (tuple) { - eventTupleToStore(tuple, eventStore); - } - } - return eventStore; -} -function eventTupleToStore(tuple, eventStore) { - if (eventStore === void 0) { eventStore = createEmptyEventStore(); } - eventStore.defs[tuple.def.defId] = tuple.def; - if (tuple.instance) { - eventStore.instances[tuple.instance.instanceId] = tuple.instance; - } - return eventStore; -} -function expandRecurring(eventStore, framingRange, calendar) { - var dateEnv = calendar.dateEnv; - var defs = eventStore.defs, instances = eventStore.instances; - // remove existing recurring instances - instances = filterHash(instances, function (instance) { - return !defs[instance.defId].recurringDef; - }); - for (var defId in defs) { - var def = defs[defId]; - if (def.recurringDef) { - var duration = def.recurringDef.duration; - if (!duration) { - duration = def.allDay ? - calendar.defaultAllDayEventDuration : - calendar.defaultTimedEventDuration; - } - var starts = expandRecurringRanges(def, duration, framingRange, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes); - for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) { - var start = starts_1[_i]; - var instance = createEventInstance(defId, { - start: start, - end: dateEnv.add(start, duration) - }); - instances[instance.instanceId] = instance; - } - } - } - return { defs: defs, instances: instances }; -} -// retrieves events that have the same groupId as the instance specified by `instanceId` -// or they are the same as the instance. -// why might instanceId not be in the store? an event from another calendar? -function getRelevantEvents(eventStore, instanceId) { - var instance = eventStore.instances[instanceId]; - if (instance) { - var def_1 = eventStore.defs[instance.defId]; - // get events/instances with same group - var newStore = filterEventStoreDefs(eventStore, function (lookDef) { - return isEventDefsGrouped(def_1, lookDef); - }); - // add the original - // TODO: wish we could use eventTupleToStore or something like it - newStore.defs[def_1.defId] = def_1; - newStore.instances[instance.instanceId] = instance; - return newStore; - } - return createEmptyEventStore(); -} -function isEventDefsGrouped(def0, def1) { - return Boolean(def0.groupId && def0.groupId === def1.groupId); -} -function transformRawEvents(rawEvents, eventSource, calendar) { - var calEachTransform = calendar.opt('eventDataTransform'); - var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null; - if (sourceEachTransform) { - rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform); - } - if (calEachTransform) { - rawEvents = transformEachRawEvent(rawEvents, calEachTransform); - } - return rawEvents; -} -function transformEachRawEvent(rawEvents, func) { - var refinedEvents; - if (!func) { - refinedEvents = rawEvents; - } - else { - refinedEvents = []; - for (var _i = 0, rawEvents_2 = rawEvents; _i < rawEvents_2.length; _i++) { - var rawEvent = rawEvents_2[_i]; - var refinedEvent = func(rawEvent); - if (refinedEvent) { - refinedEvents.push(refinedEvent); - } - else if (refinedEvent == null) { - refinedEvents.push(rawEvent); - } // if a different falsy value, do nothing - } - } - return refinedEvents; -} -function createEmptyEventStore() { - return { defs: {}, instances: {} }; -} -function mergeEventStores(store0, store1) { - return { - defs: __assign({}, store0.defs, store1.defs), - instances: __assign({}, store0.instances, store1.instances) - }; -} -function filterEventStoreDefs(eventStore, filterFunc) { - var defs = filterHash(eventStore.defs, filterFunc); - var instances = filterHash(eventStore.instances, function (instance) { - return defs[instance.defId]; // still exists? - }); - return { defs: defs, instances: instances }; -} - -function parseRange(input, dateEnv) { - var start = null; - var end = null; - if (input.start) { - start = dateEnv.createMarker(input.start); - } - if (input.end) { - end = dateEnv.createMarker(input.end); - } - if (!start && !end) { - return null; - } - if (start && end && end < start) { - return null; - } - return { start: start, end: end }; -} -// SIDE-EFFECT: will mutate ranges. -// Will return a new array result. -function invertRanges(ranges, constraintRange) { - var invertedRanges = []; - var start = constraintRange.start; // the end of the previous range. the start of the new range - var i; - var dateRange; - // ranges need to be in order. required for our date-walking algorithm - ranges.sort(compareRanges); - for (i = 0; i < ranges.length; i++) { - dateRange = ranges[i]; - // add the span of time before the event (if there is any) - if (dateRange.start > start) { // compare millisecond time (skip any ambig logic) - invertedRanges.push({ start: start, end: dateRange.start }); - } - if (dateRange.end > start) { - start = dateRange.end; - } - } - // add the span of time after the last event (if there is any) - if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic) - invertedRanges.push({ start: start, end: constraintRange.end }); - } - return invertedRanges; -} -function compareRanges(range0, range1) { - return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first -} -function intersectRanges(range0, range1) { - var start = range0.start; - var end = range0.end; - var newRange = null; - if (range1.start !== null) { - if (start === null) { - start = range1.start; - } - else { - start = new Date(Math.max(start.valueOf(), range1.start.valueOf())); - } - } - if (range1.end != null) { - if (end === null) { - end = range1.end; - } - else { - end = new Date(Math.min(end.valueOf(), range1.end.valueOf())); - } - } - if (start === null || end === null || start < end) { - newRange = { start: start, end: end }; - } - return newRange; -} -function rangesEqual(range0, range1) { - return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && - (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf()); -} -function rangesIntersect(range0, range1) { - return (range0.end === null || range1.start === null || range0.end > range1.start) && - (range0.start === null || range1.end === null || range0.start < range1.end); -} -function rangeContainsRange(outerRange, innerRange) { - return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) && - (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end)); -} -function rangeContainsMarker(range, date) { - return (range.start === null || date >= range.start) && - (range.end === null || date < range.end); -} -// If the given date is not within the given range, move it inside. -// (If it's past the end, make it one millisecond before the end). -function constrainMarkerToRange(date, range) { - if (range.start != null && date < range.start) { - return range.start; - } - if (range.end != null && date >= range.end) { - return new Date(range.end.valueOf() - 1); - } - return date; -} - -function removeExact(array, exactVal) { - var removeCnt = 0; - var i = 0; - while (i < array.length) { - if (array[i] === exactVal) { - array.splice(i, 1); - removeCnt++; - } - else { - i++; - } - } - return removeCnt; -} -function isArraysEqual(a0, a1) { - var len = a0.length; - var i; - if (len !== a1.length) { // not array? or not same length? - return false; - } - for (i = 0; i < len; i++) { - if (a0[i] !== a1[i]) { - return false; - } - } - return true; -} - -function memoize(workerFunc) { - var args; - var res; - return function () { - if (!args || !isArraysEqual(args, arguments)) { - args = arguments; - res = workerFunc.apply(this, arguments); - } - return res; - }; -} -/* -always executes the workerFunc, but if the result is equal to the previous result, -return the previous result instead. -*/ -function memoizeOutput(workerFunc, equalityFunc) { - var cachedRes = null; - return function () { - var newRes = workerFunc.apply(this, arguments); - if (cachedRes === null || !(cachedRes === newRes || equalityFunc(cachedRes, newRes))) { - cachedRes = newRes; - } - return cachedRes; - }; -} - -var EXTENDED_SETTINGS_AND_SEVERITIES = { - week: 3, - separator: 0, - omitZeroMinute: 0, - meridiem: 0, - omitCommas: 0 -}; -var STANDARD_DATE_PROP_SEVERITIES = { - timeZoneName: 7, - era: 6, - year: 5, - month: 4, - day: 2, - weekday: 2, - hour: 1, - minute: 1, - second: 1 -}; -var MERIDIEM_RE = /\s*([ap])\.?m\.?/i; // eats up leading spaces too -var COMMA_RE = /,/g; // we need re for globalness -var MULTI_SPACE_RE = /\s+/g; -var LTR_RE = /\u200e/g; // control character -var UTC_RE = /UTC|GMT/; -var NativeFormatter = /** @class */ (function () { - function NativeFormatter(formatSettings) { - var standardDateProps = {}; - var extendedSettings = {}; - var severity = 0; - for (var name_1 in formatSettings) { - if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) { - extendedSettings[name_1] = formatSettings[name_1]; - severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity); - } - else { - standardDateProps[name_1] = formatSettings[name_1]; - if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { - severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity); - } - } - } - this.standardDateProps = standardDateProps; - this.extendedSettings = extendedSettings; - this.severity = severity; - this.buildFormattingFunc = memoize(buildFormattingFunc); - } - NativeFormatter.prototype.format = function (date, context) { - return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date); - }; - NativeFormatter.prototype.formatRange = function (start, end, context) { - var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings; - var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem); - if (!diffSeverity) { - return this.format(start, context); - } - var biggestUnitForPartial = diffSeverity; - if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time - (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && - (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && - (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) { - biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time - } - var full0 = this.format(start, context); - var full1 = this.format(end, context); - if (full0 === full1) { - return full0; - } - var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial); - var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context); - var partial0 = partialFormattingFunc(start); - var partial1 = partialFormattingFunc(end); - var insertion = findCommonInsertion(full0, partial0, full1, partial1); - var separator = extendedSettings.separator || ''; - if (insertion) { - return insertion.before + partial0 + separator + partial1 + insertion.after; - } - return full0 + separator + full1; - }; - NativeFormatter.prototype.getLargestUnit = function () { - switch (this.severity) { - case 7: - case 6: - case 5: - return 'year'; - case 4: - return 'month'; - case 3: - return 'week'; - default: - return 'day'; - } - }; - return NativeFormatter; -}()); -function buildFormattingFunc(standardDateProps, extendedSettings, context) { - var standardDatePropCnt = Object.keys(standardDateProps).length; - if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') { - return function (date) { - return formatTimeZoneOffset(date.timeZoneOffset); - }; - } - if (standardDatePropCnt === 0 && extendedSettings.week) { - return function (date) { - return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekLabel, context.locale, extendedSettings.week); - }; - } - return buildNativeFormattingFunc(standardDateProps, extendedSettings, context); -} -function buildNativeFormattingFunc(standardDateProps, extendedSettings, context) { - standardDateProps = __assign({}, standardDateProps); // copy - extendedSettings = __assign({}, extendedSettings); // copy - sanitizeSettings(standardDateProps, extendedSettings); - standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers - var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps); - var zeroFormat; // needed? - if (extendedSettings.omitZeroMinute) { - var zeroProps = __assign({}, standardDateProps); - delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings - zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps); - } - return function (date) { - var marker = date.marker; - var format; - if (zeroFormat && !marker.getUTCMinutes()) { - format = zeroFormat; - } - else { - format = normalFormat; - } - var s = format.format(marker); - return postProcess(s, date, standardDateProps, extendedSettings, context); - }; -} -function sanitizeSettings(standardDateProps, extendedSettings) { - // deal with a browser inconsistency where formatting the timezone - // requires that the hour/minute be present. - if (standardDateProps.timeZoneName) { - if (!standardDateProps.hour) { - standardDateProps.hour = '2-digit'; - } - if (!standardDateProps.minute) { - standardDateProps.minute = '2-digit'; - } - } - // only support short timezone names - if (standardDateProps.timeZoneName === 'long') { - standardDateProps.timeZoneName = 'short'; - } - // if requesting to display seconds, MUST display minutes - if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) { - delete extendedSettings.omitZeroMinute; - } -} -function postProcess(s, date, standardDateProps, extendedSettings, context) { - s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes - if (standardDateProps.timeZoneName === 'short') { - s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ? - 'UTC' : // important to normalize for IE, which does "GMT" - formatTimeZoneOffset(date.timeZoneOffset)); - } - if (extendedSettings.omitCommas) { - s = s.replace(COMMA_RE, '').trim(); - } - if (extendedSettings.omitZeroMinute) { - s = s.replace(':00', ''); // zeroFormat doesn't always achieve this - } - // ^ do anything that might create adjacent spaces before this point, - // because MERIDIEM_RE likes to eat up loading spaces - if (extendedSettings.meridiem === false) { - s = s.replace(MERIDIEM_RE, '').trim(); - } - else if (extendedSettings.meridiem === 'narrow') { // a/p - s = s.replace(MERIDIEM_RE, function (m0, m1) { - return m1.toLocaleLowerCase(); - }); - } - else if (extendedSettings.meridiem === 'short') { // am/pm - s = s.replace(MERIDIEM_RE, function (m0, m1) { - return m1.toLocaleLowerCase() + 'm'; - }); - } - else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase - s = s.replace(MERIDIEM_RE, function (m0) { - return m0.toLocaleLowerCase(); - }); - } - s = s.replace(MULTI_SPACE_RE, ' '); - s = s.trim(); - return s; -} -function injectTzoStr(s, tzoStr) { - var replaced = false; - s = s.replace(UTC_RE, function () { - replaced = true; - return tzoStr; - }); - // IE11 doesn't include UTC/GMT in the original string, so append to end - if (!replaced) { - s += ' ' + tzoStr; - } - return s; -} -function formatWeekNumber(num, weekLabel, locale, display) { - var parts = []; - if (display === 'narrow') { - parts.push(weekLabel); - } - else if (display === 'short') { - parts.push(weekLabel, ' '); - } - // otherwise, considered 'numeric' - parts.push(locale.simpleNumberFormat.format(num)); - if (locale.options.isRtl) { // TODO: use control characters instead? - parts.reverse(); - } - return parts.join(''); -} -// Range Formatting Utils -// 0 = exactly the same -// 1 = different by time -// and bigger -function computeMarkerDiffSeverity(d0, d1, ca) { - if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) { - return 5; - } - if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) { - return 4; - } - if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) { - return 2; - } - if (timeAsMs(d0) !== timeAsMs(d1)) { - return 1; - } - return 0; -} -function computePartialFormattingOptions(options, biggestUnit) { - var partialOptions = {}; - for (var name_2 in options) { - if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone) - STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) { - partialOptions[name_2] = options[name_2]; - } - } - return partialOptions; -} -function findCommonInsertion(full0, partial0, full1, partial1) { - var i0 = 0; - while (i0 < full0.length) { - var found0 = full0.indexOf(partial0, i0); - if (found0 === -1) { - break; - } - var before0 = full0.substr(0, found0); - i0 = found0 + partial0.length; - var after0 = full0.substr(i0); - var i1 = 0; - while (i1 < full1.length) { - var found1 = full1.indexOf(partial1, i1); - if (found1 === -1) { - break; - } - var before1 = full1.substr(0, found1); - i1 = found1 + partial1.length; - var after1 = full1.substr(i1); - if (before0 === before1 && after0 === after1) { - return { - before: before0, - after: after0 - }; - } - } - } - return null; -} - -/* -TODO: fix the terminology of "formatter" vs "formatting func" -*/ -/* -At the time of instantiation, this object does not know which cmd-formatting system it will use. -It receives this at the time of formatting, as a setting. -*/ -var CmdFormatter = /** @class */ (function () { - function CmdFormatter(cmdStr, separator) { - this.cmdStr = cmdStr; - this.separator = separator; - } - CmdFormatter.prototype.format = function (date, context) { - return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, this.separator)); - }; - CmdFormatter.prototype.formatRange = function (start, end, context) { - return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, this.separator)); - }; - return CmdFormatter; -}()); - -var FuncFormatter = /** @class */ (function () { - function FuncFormatter(func) { - this.func = func; - } - FuncFormatter.prototype.format = function (date, context) { - return this.func(createVerboseFormattingArg(date, null, context)); - }; - FuncFormatter.prototype.formatRange = function (start, end, context) { - return this.func(createVerboseFormattingArg(start, end, context)); - }; - return FuncFormatter; -}()); - -// Formatter Object Creation -function createFormatter(input, defaultSeparator) { - if (typeof input === 'object' && input) { // non-null object - if (typeof defaultSeparator === 'string') { - input = __assign({ separator: defaultSeparator }, input); - } - return new NativeFormatter(input); - } - else if (typeof input === 'string') { - return new CmdFormatter(input, defaultSeparator); - } - else if (typeof input === 'function') { - return new FuncFormatter(input); - } -} -// String Utils -// timeZoneOffset is in minutes -function buildIsoString(marker, timeZoneOffset, stripZeroTime) { - if (stripZeroTime === void 0) { stripZeroTime = false; } - var s = marker.toISOString(); - s = s.replace('.000', ''); - if (stripZeroTime) { - s = s.replace('T00:00:00Z', ''); - } - if (s.length > 10) { // time part wasn't stripped, can add timezone info - if (timeZoneOffset == null) { - s = s.replace('Z', ''); - } - else if (timeZoneOffset !== 0) { - s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true)); - } - // otherwise, its UTC-0 and we want to keep the Z - } - return s; -} -function formatIsoTimeString(marker) { - return padStart(marker.getUTCHours(), 2) + ':' + - padStart(marker.getUTCMinutes(), 2) + ':' + - padStart(marker.getUTCSeconds(), 2); -} -function formatTimeZoneOffset(minutes, doIso) { - if (doIso === void 0) { doIso = false; } - var sign = minutes < 0 ? '-' : '+'; - var abs = Math.abs(minutes); - var hours = Math.floor(abs / 60); - var mins = Math.round(abs % 60); - if (doIso) { - return sign + padStart(hours, 2) + ':' + padStart(mins, 2); - } - else { - return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2) : ''); - } -} -// Arg Utils -function createVerboseFormattingArg(start, end, context, separator) { - var startInfo = expandZonedMarker(start, context.calendarSystem); - var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null; - return { - date: startInfo, - start: startInfo, - end: endInfo, - timeZone: context.timeZone, - localeCodes: context.locale.codes, - separator: separator - }; -} -function expandZonedMarker(dateInfo, calendarSystem) { - var a = calendarSystem.markerToArray(dateInfo.marker); - return { - marker: dateInfo.marker, - timeZoneOffset: dateInfo.timeZoneOffset, - array: a, - year: a[0], - month: a[1], - day: a[2], - hour: a[3], - minute: a[4], - second: a[5], - millisecond: a[6] - }; -} - -var EventSourceApi = /** @class */ (function () { - function EventSourceApi(calendar, internalEventSource) { - this.calendar = calendar; - this.internalEventSource = internalEventSource; - } - EventSourceApi.prototype.remove = function () { - this.calendar.dispatch({ - type: 'REMOVE_EVENT_SOURCE', - sourceId: this.internalEventSource.sourceId - }); - }; - EventSourceApi.prototype.refetch = function () { - this.calendar.dispatch({ - type: 'FETCH_EVENT_SOURCES', - sourceIds: [this.internalEventSource.sourceId] - }); - }; - Object.defineProperty(EventSourceApi.prototype, "id", { - get: function () { - return this.internalEventSource.publicId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventSourceApi.prototype, "url", { - // only relevant to json-feed event sources - get: function () { - return this.internalEventSource.meta.url; - }, - enumerable: true, - configurable: true - }); - return EventSourceApi; -}()); - -var EventApi = /** @class */ (function () { - function EventApi(calendar, def, instance) { - this._calendar = calendar; - this._def = def; - this._instance = instance || null; - } - /* - TODO: make event struct more responsible for this - */ - EventApi.prototype.setProp = function (name, val) { - var _a, _b; - if (name in DATE_PROPS) ; - else if (name in NON_DATE_PROPS) { - if (typeof NON_DATE_PROPS[name] === 'function') { - val = NON_DATE_PROPS[name](val); - } - this.mutate({ - standardProps: (_a = {}, _a[name] = val, _a) - }); - } - else if (name in UNSCOPED_EVENT_UI_PROPS) { - var ui = void 0; - if (typeof UNSCOPED_EVENT_UI_PROPS[name] === 'function') { - val = UNSCOPED_EVENT_UI_PROPS[name](val); - } - if (name === 'color') { - ui = { backgroundColor: val, borderColor: val }; - } - else if (name === 'editable') { - ui = { startEditable: val, durationEditable: val }; - } - else { - ui = (_b = {}, _b[name] = val, _b); - } - this.mutate({ - standardProps: { ui: ui } - }); - } - }; - EventApi.prototype.setExtendedProp = function (name, val) { - var _a; - this.mutate({ - extendedProps: (_a = {}, _a[name] = val, _a) - }); - }; - EventApi.prototype.setStart = function (startInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var start = dateEnv.createMarker(startInput); - if (start && this._instance) { // TODO: warning if parsed bad - var instanceRange = this._instance.range; - var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!? - if (options.maintainDuration) { - this.mutate({ datesDelta: startDelta }); - } - else { - this.mutate({ startDelta: startDelta }); - } - } - }; - EventApi.prototype.setEnd = function (endInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var end; - if (endInput != null) { - end = dateEnv.createMarker(endInput); - if (!end) { - return; // TODO: warning if parsed bad - } - } - if (this._instance) { - if (end) { - var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity); - this.mutate({ endDelta: endDelta }); - } - else { - this.mutate({ standardProps: { hasEnd: false } }); - } - } - }; - EventApi.prototype.setDates = function (startInput, endInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var standardProps = { allDay: options.allDay }; - var start = dateEnv.createMarker(startInput); - var end; - if (!start) { - return; // TODO: warning if parsed bad - } - if (endInput != null) { - end = dateEnv.createMarker(endInput); - if (!end) { // TODO: warning if parsed bad - return; - } - } - if (this._instance) { - var instanceRange = this._instance.range; - // when computing the diff for an event being converted to all-day, - // compute diff off of the all-day values the way event-mutation does. - if (options.allDay === true) { - instanceRange = computeAlignedDayRange(instanceRange); - } - var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); - if (end) { - var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity); - if (durationsEqual(startDelta, endDelta)) { - this.mutate({ datesDelta: startDelta, standardProps: standardProps }); - } - else { - this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps }); - } - } - else { // means "clear the end" - standardProps.hasEnd = false; - this.mutate({ datesDelta: startDelta, standardProps: standardProps }); - } - } - }; - EventApi.prototype.moveStart = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ startDelta: delta }); - } - }; - EventApi.prototype.moveEnd = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ endDelta: delta }); - } - }; - EventApi.prototype.moveDates = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ datesDelta: delta }); - } - }; - EventApi.prototype.setAllDay = function (allDay, options) { - if (options === void 0) { options = {}; } - var standardProps = { allDay: allDay }; - var maintainDuration = options.maintainDuration; - if (maintainDuration == null) { - maintainDuration = this._calendar.opt('allDayMaintainDuration'); - } - if (this._def.allDay !== allDay) { - standardProps.hasEnd = maintainDuration; - } - this.mutate({ standardProps: standardProps }); - }; - EventApi.prototype.formatRange = function (formatInput) { - var dateEnv = this._calendar.dateEnv; - var instance = this._instance; - var formatter = createFormatter(formatInput, this._calendar.opt('defaultRangeSeparator')); - if (this._def.hasEnd) { - return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, { - forcedStartTzo: instance.forcedStartTzo, - forcedEndTzo: instance.forcedEndTzo - }); - } - else { - return dateEnv.format(instance.range.start, formatter, { - forcedTzo: instance.forcedStartTzo - }); - } - }; - EventApi.prototype.mutate = function (mutation) { - var def = this._def; - var instance = this._instance; - if (instance) { - this._calendar.dispatch({ - type: 'MUTATE_EVENTS', - instanceId: instance.instanceId, - mutation: mutation, - fromApi: true - }); - var eventStore = this._calendar.state.eventStore; - this._def = eventStore.defs[def.defId]; - this._instance = eventStore.instances[instance.instanceId]; - } - }; - EventApi.prototype.remove = function () { - this._calendar.dispatch({ - type: 'REMOVE_EVENT_DEF', - defId: this._def.defId - }); - }; - Object.defineProperty(EventApi.prototype, "source", { - get: function () { - var sourceId = this._def.sourceId; - if (sourceId) { - return new EventSourceApi(this._calendar, this._calendar.state.eventSources[sourceId]); - } - return null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "start", { - get: function () { - return this._instance ? - this._calendar.dateEnv.toDate(this._instance.range.start) : - null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "end", { - get: function () { - return (this._instance && this._def.hasEnd) ? - this._calendar.dateEnv.toDate(this._instance.range.end) : - null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "id", { - // computable props that all access the def - // TODO: find a TypeScript-compatible way to do this at scale - get: function () { return this._def.publicId; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "groupId", { - get: function () { return this._def.groupId; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "allDay", { - get: function () { return this._def.allDay; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "title", { - get: function () { return this._def.title; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "url", { - get: function () { return this._def.url; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "rendering", { - get: function () { return this._def.rendering; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "startEditable", { - get: function () { return this._def.ui.startEditable; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "durationEditable", { - get: function () { return this._def.ui.durationEditable; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "constraint", { - get: function () { return this._def.ui.constraints[0] || null; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "overlap", { - get: function () { return this._def.ui.overlap; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "allow", { - get: function () { return this._def.ui.allows[0] || null; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "backgroundColor", { - get: function () { return this._def.ui.backgroundColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "borderColor", { - get: function () { return this._def.ui.borderColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "textColor", { - get: function () { return this._def.ui.textColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "classNames", { - // NOTE: user can't modify these because Object.freeze was called in event-def parsing - get: function () { return this._def.ui.classNames; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "extendedProps", { - get: function () { return this._def.extendedProps; }, - enumerable: true, - configurable: true - }); - return EventApi; -}()); - -/* -Specifying nextDayThreshold signals that all-day ranges should be sliced. -*/ -function sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) { - var inverseBgByGroupId = {}; - var inverseBgByDefId = {}; - var defByGroupId = {}; - var bgRanges = []; - var fgRanges = []; - var eventUis = compileEventUis(eventStore.defs, eventUiBases); - for (var defId in eventStore.defs) { - var def = eventStore.defs[defId]; - if (def.rendering === 'inverse-background') { - if (def.groupId) { - inverseBgByGroupId[def.groupId] = []; - if (!defByGroupId[def.groupId]) { - defByGroupId[def.groupId] = def; - } - } - else { - inverseBgByDefId[defId] = []; - } - } - } - for (var instanceId in eventStore.instances) { - var instance = eventStore.instances[instanceId]; - var def = eventStore.defs[instance.defId]; - var ui = eventUis[def.defId]; - var origRange = instance.range; - var normalRange = (!def.allDay && nextDayThreshold) ? - computeVisibleDayRange(origRange, nextDayThreshold) : - origRange; - var slicedRange = intersectRanges(normalRange, framingRange); - if (slicedRange) { - if (def.rendering === 'inverse-background') { - if (def.groupId) { - inverseBgByGroupId[def.groupId].push(slicedRange); - } - else { - inverseBgByDefId[instance.defId].push(slicedRange); - } - } - else { - (def.rendering === 'background' ? bgRanges : fgRanges).push({ - def: def, - ui: ui, - instance: instance, - range: slicedRange, - isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(), - isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf() - }); - } - } - } - for (var groupId in inverseBgByGroupId) { // BY GROUP - var ranges = inverseBgByGroupId[groupId]; - var invertedRanges = invertRanges(ranges, framingRange); - for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) { - var invertedRange = invertedRanges_1[_i]; - var def = defByGroupId[groupId]; - var ui = eventUis[def.defId]; - bgRanges.push({ - def: def, - ui: ui, - instance: null, - range: invertedRange, - isStart: false, - isEnd: false - }); - } - } - for (var defId in inverseBgByDefId) { - var ranges = inverseBgByDefId[defId]; - var invertedRanges = invertRanges(ranges, framingRange); - for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) { - var invertedRange = invertedRanges_2[_a]; - bgRanges.push({ - def: eventStore.defs[defId], - ui: eventUis[defId], - instance: null, - range: invertedRange, - isStart: false, - isEnd: false - }); - } - } - return { bg: bgRanges, fg: fgRanges }; -} -function hasBgRendering(def) { - return def.rendering === 'background' || def.rendering === 'inverse-background'; -} -function filterSegsViaEls(view, segs, isMirror) { - if (view.hasPublicHandlers('eventRender')) { - segs = segs.filter(function (seg) { - var custom = view.publiclyTrigger('eventRender', [ - { - event: new EventApi(view.calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirror, - isStart: seg.isStart, - isEnd: seg.isEnd, - // TODO: include seg.range once all components consistently generate it - el: seg.el, - view: view - } - ]); - if (custom === false) { // means don't render at all - return false; - } - else if (custom && custom !== true) { - seg.el = custom; - } - return true; - }); - } - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - setElSeg(seg.el, seg); - } - return segs; -} -function setElSeg(el, seg) { - el.fcSeg = seg; -} -function getElSeg(el) { - return el.fcSeg || null; -} -// event ui computation -function compileEventUis(eventDefs, eventUiBases) { - return mapHash(eventDefs, function (eventDef) { - return compileEventUi(eventDef, eventUiBases); - }); -} -function compileEventUi(eventDef, eventUiBases) { - var uis = []; - if (eventUiBases['']) { - uis.push(eventUiBases['']); - } - if (eventUiBases[eventDef.defId]) { - uis.push(eventUiBases[eventDef.defId]); - } - uis.push(eventDef.ui); - return combineEventUis(uis); -} - -// applies the mutation to ALL defs/instances within the event store -function applyMutationToEventStore(eventStore, eventConfigBase, mutation, calendar) { - var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase); - var dest = createEmptyEventStore(); - for (var defId in eventStore.defs) { - var def = eventStore.defs[defId]; - dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, calendar.pluginSystem.hooks.eventDefMutationAppliers, calendar); - } - for (var instanceId in eventStore.instances) { - var instance = eventStore.instances[instanceId]; - var def = dest.defs[instance.defId]; // important to grab the newly modified def - dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, calendar); - } - return dest; -} -function applyMutationToEventDef(eventDef, eventConfig, mutation, appliers, calendar) { - var standardProps = mutation.standardProps || {}; - // if hasEnd has not been specified, guess a good value based on deltas. - // if duration will change, there's no way the default duration will persist, - // and thus, we need to mark the event as having a real end - if (standardProps.hasEnd == null && - eventConfig.durationEditable && - (mutation.startDelta || mutation.endDelta)) { - standardProps.hasEnd = true; // TODO: is this mutation okay? - } - var copy = __assign({}, eventDef, standardProps, { ui: __assign({}, eventDef.ui, standardProps.ui) }); - if (mutation.extendedProps) { - copy.extendedProps = __assign({}, copy.extendedProps, mutation.extendedProps); - } - for (var _i = 0, appliers_1 = appliers; _i < appliers_1.length; _i++) { - var applier = appliers_1[_i]; - applier(copy, mutation, calendar); - } - if (!copy.hasEnd && calendar.opt('forceEventDuration')) { - copy.hasEnd = true; - } - return copy; -} -function applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef -eventConfig, mutation, calendar) { - var dateEnv = calendar.dateEnv; - var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true; - var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false; - var copy = __assign({}, eventInstance); - if (forceAllDay) { - copy.range = computeAlignedDayRange(copy.range); - } - if (mutation.datesDelta && eventConfig.startEditable) { - copy.range = { - start: dateEnv.add(copy.range.start, mutation.datesDelta), - end: dateEnv.add(copy.range.end, mutation.datesDelta) - }; - } - if (mutation.startDelta && eventConfig.durationEditable) { - copy.range = { - start: dateEnv.add(copy.range.start, mutation.startDelta), - end: copy.range.end - }; - } - if (mutation.endDelta && eventConfig.durationEditable) { - copy.range = { - start: copy.range.start, - end: dateEnv.add(copy.range.end, mutation.endDelta) - }; - } - if (clearEnd) { - copy.range = { - start: copy.range.start, - end: calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start) - }; - } - // in case event was all-day but the supplied deltas were not - // better util for this? - if (eventDef.allDay) { - copy.range = { - start: startOfDay(copy.range.start), - end: startOfDay(copy.range.end) - }; - } - // handle invalid durations - if (copy.range.end < copy.range.start) { - copy.range.end = calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start); - } - return copy; -} - -function reduceEventStore (eventStore, action, eventSources, dateProfile, calendar) { - switch (action.type) { - case 'RECEIVE_EVENTS': // raw - return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, calendar); - case 'ADD_EVENTS': // already parsed, but not expanded - return addEvent(eventStore, action.eventStore, // new ones - dateProfile ? dateProfile.activeRange : null, calendar); - case 'MERGE_EVENTS': // already parsed and expanded - return mergeEventStores(eventStore, action.eventStore); - case 'PREV': // TODO: how do we track all actions that affect dateProfile :( - case 'NEXT': - case 'SET_DATE': - case 'SET_VIEW_TYPE': - if (dateProfile) { - return expandRecurring(eventStore, dateProfile.activeRange, calendar); - } - else { - return eventStore; - } - case 'CHANGE_TIMEZONE': - return rezoneDates(eventStore, action.oldDateEnv, calendar.dateEnv); - case 'MUTATE_EVENTS': - return applyMutationToRelated(eventStore, action.instanceId, action.mutation, action.fromApi, calendar); - case 'REMOVE_EVENT_INSTANCES': - return excludeInstances(eventStore, action.instances); - case 'REMOVE_EVENT_DEF': - return filterEventStoreDefs(eventStore, function (eventDef) { - return eventDef.defId !== action.defId; - }); - case 'REMOVE_EVENT_SOURCE': - return excludeEventsBySourceId(eventStore, action.sourceId); - case 'REMOVE_ALL_EVENT_SOURCES': - return filterEventStoreDefs(eventStore, function (eventDef) { - return !eventDef.sourceId; // only keep events with no source id - }); - case 'REMOVE_ALL_EVENTS': - return createEmptyEventStore(); - case 'RESET_EVENTS': - return { - defs: eventStore.defs, - instances: eventStore.instances - }; - default: - return eventStore; - } -} -function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, calendar) { - if (eventSource && // not already removed - fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources - ) { - var subset = parseEvents(transformRawEvents(rawEvents, eventSource, calendar), eventSource.sourceId, calendar); - if (fetchRange) { - subset = expandRecurring(subset, fetchRange, calendar); - } - return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset); - } - return eventStore; -} -function addEvent(eventStore, subset, expandRange, calendar) { - if (expandRange) { - subset = expandRecurring(subset, expandRange, calendar); - } - return mergeEventStores(eventStore, subset); -} -function rezoneDates(eventStore, oldDateEnv, newDateEnv) { - var defs = eventStore.defs; - var instances = mapHash(eventStore.instances, function (instance) { - var def = defs[instance.defId]; - if (def.allDay || def.recurringDef) { - return instance; // isn't dependent on timezone - } - else { - return __assign({}, instance, { range: { - start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)), - end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)) - }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo }); - } - }); - return { defs: defs, instances: instances }; -} -function applyMutationToRelated(eventStore, instanceId, mutation, fromApi, calendar) { - var relevant = getRelevantEvents(eventStore, instanceId); - var eventConfigBase = fromApi ? - { '': { - startEditable: true, - durationEditable: true, - constraints: [], - overlap: null, - allows: [], - backgroundColor: '', - borderColor: '', - textColor: '', - classNames: [] - } } : - calendar.eventUiBases; - relevant = applyMutationToEventStore(relevant, eventConfigBase, mutation, calendar); - return mergeEventStores(eventStore, relevant); -} -function excludeEventsBySourceId(eventStore, sourceId) { - return filterEventStoreDefs(eventStore, function (eventDef) { - return eventDef.sourceId !== sourceId; - }); -} -// QUESTION: why not just return instances? do a general object-property-exclusion util -function excludeInstances(eventStore, removals) { - return { - defs: eventStore.defs, - instances: filterHash(eventStore.instances, function (instance) { - return !removals[instance.instanceId]; - }) - }; -} - -// high-level segmenting-aware tester functions -// ------------------------------------------------------------------------------------------------------------------------ -function isInteractionValid(interaction, calendar) { - return isNewPropsValid({ eventDrag: interaction }, calendar); // HACK: the eventDrag props is used for ALL interactions -} -function isDateSelectionValid(dateSelection, calendar) { - return isNewPropsValid({ dateSelection: dateSelection }, calendar); -} -function isNewPropsValid(newProps, calendar) { - var view = calendar.view; - var props = __assign({ businessHours: view ? view.props.businessHours : createEmptyEventStore(), dateSelection: '', eventStore: calendar.state.eventStore, eventUiBases: calendar.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps); - return (calendar.pluginSystem.hooks.isPropsValid || isPropsValid)(props, calendar); -} -function isPropsValid(state, calendar, dateSpanMeta, filterConfig) { - if (dateSpanMeta === void 0) { dateSpanMeta = {}; } - if (state.eventDrag && !isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig)) { - return false; - } - if (state.dateSelection && !isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig)) { - return false; - } - return true; -} -// Moving Event Validation -// ------------------------------------------------------------------------------------------------------------------------ -function isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig) { - var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions - var subjectEventStore = interaction.mutatedEvents; - var subjectDefs = subjectEventStore.defs; - var subjectInstances = subjectEventStore.instances; - var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? - state.eventUiBases : - { '': calendar.selectionConfig } // if not a real event, validate as a selection - ); - if (filterConfig) { - subjectConfigs = mapHash(subjectConfigs, filterConfig); - } - var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); // exclude the subject events. TODO: exclude defs too? - var otherDefs = otherEventStore.defs; - var otherInstances = otherEventStore.instances; - var otherConfigs = compileEventUis(otherDefs, state.eventUiBases); - for (var subjectInstanceId in subjectInstances) { - var subjectInstance = subjectInstances[subjectInstanceId]; - var subjectRange = subjectInstance.range; - var subjectConfig = subjectConfigs[subjectInstance.defId]; - var subjectDef = subjectDefs[subjectInstance.defId]; - // constraint - if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, calendar)) { - return false; - } - // overlap - var overlapFunc = calendar.opt('eventOverlap'); - if (typeof overlapFunc !== 'function') { - overlapFunc = null; - } - for (var otherInstanceId in otherInstances) { - var otherInstance = otherInstances[otherInstanceId]; - // intersect! evaluate - if (rangesIntersect(subjectRange, otherInstance.range)) { - var otherOverlap = otherConfigs[otherInstance.defId].overlap; - // consider the other event's overlap. only do this if the subject event is a "real" event - if (otherOverlap === false && interaction.isEvent) { - return false; - } - if (subjectConfig.overlap === false) { - return false; - } - if (overlapFunc && !overlapFunc(new EventApi(calendar, otherDefs[otherInstance.defId], otherInstance), // still event - new EventApi(calendar, subjectDef, subjectInstance) // moving event - )) { - return false; - } - } - } - // allow (a function) - var calendarEventStore = calendar.state.eventStore; // need global-to-calendar, not local to component (splittable)state - for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) { - var subjectAllow = _a[_i]; - var subjectDateSpan = __assign({}, dateSpanMeta, { range: subjectInstance.range, allDay: subjectDef.allDay }); - var origDef = calendarEventStore.defs[subjectDef.defId]; - var origInstance = calendarEventStore.instances[subjectInstanceId]; - var eventApi = void 0; - if (origDef) { // was previously in the calendar - eventApi = new EventApi(calendar, origDef, origInstance); - } - else { // was an external event - eventApi = new EventApi(calendar, subjectDef); // no instance, because had no dates - } - if (!subjectAllow(calendar.buildDateSpanApi(subjectDateSpan), eventApi)) { - return false; - } - } - } - return true; -} -// Date Selection Validation -// ------------------------------------------------------------------------------------------------------------------------ -function isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig) { - var relevantEventStore = state.eventStore; - var relevantDefs = relevantEventStore.defs; - var relevantInstances = relevantEventStore.instances; - var selection = state.dateSelection; - var selectionRange = selection.range; - var selectionConfig = calendar.selectionConfig; - if (filterConfig) { - selectionConfig = filterConfig(selectionConfig); - } - // constraint - if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, calendar)) { - return false; - } - // overlap - var overlapFunc = calendar.opt('selectOverlap'); - if (typeof overlapFunc !== 'function') { - overlapFunc = null; - } - for (var relevantInstanceId in relevantInstances) { - var relevantInstance = relevantInstances[relevantInstanceId]; - // intersect! evaluate - if (rangesIntersect(selectionRange, relevantInstance.range)) { - if (selectionConfig.overlap === false) { - return false; - } - if (overlapFunc && !overlapFunc(new EventApi(calendar, relevantDefs[relevantInstance.defId], relevantInstance))) { - return false; - } - } - } - // allow (a function) - for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) { - var selectionAllow = _a[_i]; - var fullDateSpan = __assign({}, dateSpanMeta, selection); - if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) { - return false; - } - } - return true; -} -// Constraint Utils -// ------------------------------------------------------------------------------------------------------------------------ -function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, calendar) { - for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) { - var constraint = constraints_1[_i]; - if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, calendar), subjectRange)) { - return false; - } - } - return true; -} -function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours -otherEventStore, // for if constraint is an even group ID -businessHoursUnexpanded, // for if constraint is 'businessHours' -calendar // for expanding businesshours -) { - if (constraint === 'businessHours') { - return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, calendar)); - } - else if (typeof constraint === 'string') { // an group ID - return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { - return eventDef.groupId === constraint; - })); - } - else if (typeof constraint === 'object' && constraint) { // non-null object - return eventStoreToRanges(expandRecurring(constraint, subjectRange, calendar)); - } - return []; // if it's false -} -// TODO: move to event-store file? -function eventStoreToRanges(eventStore) { - var instances = eventStore.instances; - var ranges = []; - for (var instanceId in instances) { - ranges.push(instances[instanceId].range); - } - return ranges; -} -// TODO: move to geom file? -function anyRangesContainRange(outerRanges, innerRange) { - for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) { - var outerRange = outerRanges_1[_i]; - if (rangeContainsRange(outerRange, innerRange)) { - return true; - } - } - return false; -} -// Parsing -// ------------------------------------------------------------------------------------------------------------------------ -function normalizeConstraint(input, calendar) { - if (Array.isArray(input)) { - return parseEvents(input, '', calendar, true); // allowOpenRange=true - } - else if (typeof input === 'object' && input) { // non-null object - return parseEvents([input], '', calendar, true); // allowOpenRange=true - } - else if (input != null) { - return String(input); - } - else { - return null; - } -} - -function htmlEscape(s) { - return (s + '').replace(/&/g, '&') - .replace(//g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"') - .replace(/\n/g, '
      '); -} -// Given a hash of CSS properties, returns a string of CSS. -// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values. -function cssToStr(cssProps) { - var statements = []; - for (var name_1 in cssProps) { - var val = cssProps[name_1]; - if (val != null && val !== '') { - statements.push(name_1 + ':' + val); - } - } - return statements.join(';'); -} -// Given an object hash of HTML attribute names to values, -// generates a string that can be injected between < > in HTML -function attrsToStr(attrs) { - var parts = []; - for (var name_2 in attrs) { - var val = attrs[name_2]; - if (val != null) { - parts.push(name_2 + '="' + htmlEscape(val) + '"'); - } - } - return parts.join(' '); -} -function parseClassName(raw) { - if (Array.isArray(raw)) { - return raw; - } - else if (typeof raw === 'string') { - return raw.split(/\s+/); - } - else { - return []; - } -} - -var UNSCOPED_EVENT_UI_PROPS = { - editable: Boolean, - startEditable: Boolean, - durationEditable: Boolean, - constraint: null, - overlap: null, - allow: null, - className: parseClassName, - classNames: parseClassName, - color: String, - backgroundColor: String, - borderColor: String, - textColor: String -}; -function processUnscopedUiProps(rawProps, calendar, leftovers) { - var props = refineProps(rawProps, UNSCOPED_EVENT_UI_PROPS, {}, leftovers); - var constraint = normalizeConstraint(props.constraint, calendar); - return { - startEditable: props.startEditable != null ? props.startEditable : props.editable, - durationEditable: props.durationEditable != null ? props.durationEditable : props.editable, - constraints: constraint != null ? [constraint] : [], - overlap: props.overlap, - allows: props.allow != null ? [props.allow] : [], - backgroundColor: props.backgroundColor || props.color, - borderColor: props.borderColor || props.color, - textColor: props.textColor, - classNames: props.classNames.concat(props.className) - }; -} -function processScopedUiProps(prefix, rawScoped, calendar, leftovers) { - var rawUnscoped = {}; - var wasFound = {}; - for (var key in UNSCOPED_EVENT_UI_PROPS) { - var scopedKey = prefix + capitaliseFirstLetter(key); - rawUnscoped[key] = rawScoped[scopedKey]; - wasFound[scopedKey] = true; - } - if (prefix === 'event') { - rawUnscoped.editable = rawScoped.editable; // special case. there is no 'eventEditable', just 'editable' - } - if (leftovers) { - for (var key in rawScoped) { - if (!wasFound[key]) { - leftovers[key] = rawScoped[key]; - } - } - } - return processUnscopedUiProps(rawUnscoped, calendar); -} -var EMPTY_EVENT_UI = { - startEditable: null, - durationEditable: null, - constraints: [], - overlap: null, - allows: [], - backgroundColor: '', - borderColor: '', - textColor: '', - classNames: [] -}; -// prevent against problems with <2 args! -function combineEventUis(uis) { - return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI); -} -function combineTwoEventUis(item0, item1) { - return { - startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable, - durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable, - constraints: item0.constraints.concat(item1.constraints), - overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap, - allows: item0.allows.concat(item1.allows), - backgroundColor: item1.backgroundColor || item0.backgroundColor, - borderColor: item1.borderColor || item0.borderColor, - textColor: item1.textColor || item0.textColor, - classNames: item0.classNames.concat(item1.classNames) - }; -} - -var NON_DATE_PROPS = { - id: String, - groupId: String, - title: String, - url: String, - rendering: String, - extendedProps: null -}; -var DATE_PROPS = { - start: null, - date: null, - end: null, - allDay: null -}; -var uid = 0; -function parseEvent(raw, sourceId, calendar, allowOpenRange) { - var allDayDefault = computeIsAllDayDefault(sourceId, calendar); - var leftovers0 = {}; - var recurringRes = parseRecurring(raw, // raw, but with single-event stuff stripped out - allDayDefault, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes, leftovers0 // will populate with non-recurring props - ); - if (recurringRes) { - var def = parseEventDef(leftovers0, sourceId, recurringRes.allDay, Boolean(recurringRes.duration), calendar); - def.recurringDef = { - typeId: recurringRes.typeId, - typeData: recurringRes.typeData, - duration: recurringRes.duration - }; - return { def: def, instance: null }; - } - else { - var leftovers1 = {}; - var singleRes = parseSingle(raw, allDayDefault, calendar, leftovers1, allowOpenRange); - if (singleRes) { - var def = parseEventDef(leftovers1, sourceId, singleRes.allDay, singleRes.hasEnd, calendar); - var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo); - return { def: def, instance: instance }; - } - } - return null; -} -/* -Will NOT populate extendedProps with the leftover properties. -Will NOT populate date-related props. -The EventNonDateInput has been normalized (id => publicId, etc). -*/ -function parseEventDef(raw, sourceId, allDay, hasEnd, calendar) { - var leftovers = {}; - var def = pluckNonDateProps(raw, calendar, leftovers); - def.defId = String(uid++); - def.sourceId = sourceId; - def.allDay = allDay; - def.hasEnd = hasEnd; - for (var _i = 0, _a = calendar.pluginSystem.hooks.eventDefParsers; _i < _a.length; _i++) { - var eventDefParser = _a[_i]; - var newLeftovers = {}; - eventDefParser(def, leftovers, newLeftovers); - leftovers = newLeftovers; - } - def.extendedProps = __assign(leftovers, def.extendedProps || {}); - // help out EventApi from having user modify props - Object.freeze(def.ui.classNames); - Object.freeze(def.extendedProps); - return def; -} -function createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) { - return { - instanceId: String(uid++), - defId: defId, - range: range, - forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo, - forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo - }; -} -function parseSingle(raw, allDayDefault, calendar, leftovers, allowOpenRange) { - var props = pluckDateProps(raw, leftovers); - var allDay = props.allDay; - var startMeta; - var startMarker = null; - var hasEnd = false; - var endMeta; - var endMarker = null; - startMeta = calendar.dateEnv.createMarkerMeta(props.start); - if (startMeta) { - startMarker = startMeta.marker; - } - else if (!allowOpenRange) { - return null; - } - if (props.end != null) { - endMeta = calendar.dateEnv.createMarkerMeta(props.end); - } - if (allDay == null) { - if (allDayDefault != null) { - allDay = allDayDefault; - } - else { - // fall back to the date props LAST - allDay = (!startMeta || startMeta.isTimeUnspecified) && - (!endMeta || endMeta.isTimeUnspecified); - } - } - if (allDay && startMarker) { - startMarker = startOfDay(startMarker); - } - if (endMeta) { - endMarker = endMeta.marker; - if (allDay) { - endMarker = startOfDay(endMarker); - } - if (startMarker && endMarker <= startMarker) { - endMarker = null; - } - } - if (endMarker) { - hasEnd = true; - } - else if (!allowOpenRange) { - hasEnd = calendar.opt('forceEventDuration') || false; - endMarker = calendar.dateEnv.add(startMarker, allDay ? - calendar.defaultAllDayEventDuration : - calendar.defaultTimedEventDuration); - } - return { - allDay: allDay, - hasEnd: hasEnd, - range: { start: startMarker, end: endMarker }, - forcedStartTzo: startMeta ? startMeta.forcedTzo : null, - forcedEndTzo: endMeta ? endMeta.forcedTzo : null - }; -} -function pluckDateProps(raw, leftovers) { - var props = refineProps(raw, DATE_PROPS, {}, leftovers); - props.start = (props.start !== null) ? props.start : props.date; - delete props.date; - return props; -} -function pluckNonDateProps(raw, calendar, leftovers) { - var preLeftovers = {}; - var props = refineProps(raw, NON_DATE_PROPS, {}, preLeftovers); - var ui = processUnscopedUiProps(preLeftovers, calendar, leftovers); - props.publicId = props.id; - delete props.id; - props.ui = ui; - return props; -} -function computeIsAllDayDefault(sourceId, calendar) { - var res = null; - if (sourceId) { - var source = calendar.state.eventSources[sourceId]; - res = source.allDayDefault; - } - if (res == null) { - res = calendar.opt('allDayDefault'); - } - return res; -} - -var DEF_DEFAULTS = { - startTime: '09:00', - endTime: '17:00', - daysOfWeek: [1, 2, 3, 4, 5], - rendering: 'inverse-background', - classNames: 'fc-nonbusiness', - groupId: '_businessHours' // so multiple defs get grouped -}; -/* -TODO: pass around as EventDefHash!!! -*/ -function parseBusinessHours(input, calendar) { - return parseEvents(refineInputs(input), '', calendar); -} -function refineInputs(input) { - var rawDefs; - if (input === true) { - rawDefs = [{}]; // will get DEF_DEFAULTS verbatim - } - else if (Array.isArray(input)) { - // if specifying an array, every sub-definition NEEDS a day-of-week - rawDefs = input.filter(function (rawDef) { - return rawDef.daysOfWeek; - }); - } - else if (typeof input === 'object' && input) { // non-null object - rawDefs = [input]; - } - else { // is probably false - rawDefs = []; - } - rawDefs = rawDefs.map(function (rawDef) { - return __assign({}, DEF_DEFAULTS, rawDef); - }); - return rawDefs; -} - -function memoizeRendering(renderFunc, unrenderFunc, dependencies) { - if (dependencies === void 0) { dependencies = []; } - var dependents = []; - var thisContext; - var prevArgs; - function unrender() { - if (prevArgs) { - for (var _i = 0, dependents_1 = dependents; _i < dependents_1.length; _i++) { - var dependent = dependents_1[_i]; - dependent.unrender(); - } - if (unrenderFunc) { - unrenderFunc.apply(thisContext, prevArgs); - } - prevArgs = null; - } - } - function res() { - if (!prevArgs || !isArraysEqual(prevArgs, arguments)) { - unrender(); - thisContext = this; - prevArgs = arguments; - renderFunc.apply(this, arguments); - } - } - res.dependents = dependents; - res.unrender = unrender; - for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) { - var dependency = dependencies_1[_i]; - dependency.dependents.push(res); - } - return res; -} - -var EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere -var Splitter = /** @class */ (function () { - function Splitter() { - this.getKeysForEventDefs = memoize(this._getKeysForEventDefs); - this.splitDateSelection = memoize(this._splitDateSpan); - this.splitEventStore = memoize(this._splitEventStore); - this.splitIndividualUi = memoize(this._splitIndividualUi); - this.splitEventDrag = memoize(this._splitInteraction); - this.splitEventResize = memoize(this._splitInteraction); - this.eventUiBuilders = {}; // TODO: typescript protection - } - Splitter.prototype.splitProps = function (props) { - var _this = this; - var keyInfos = this.getKeyInfo(props); - var defKeys = this.getKeysForEventDefs(props.eventStore); - var dateSelections = this.splitDateSelection(props.dateSelection); - var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases* - var eventStores = this.splitEventStore(props.eventStore, defKeys); - var eventDrags = this.splitEventDrag(props.eventDrag); - var eventResizes = this.splitEventResize(props.eventResize); - var splitProps = {}; - this.eventUiBuilders = mapHash(keyInfos, function (info, key) { - return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); - }); - for (var key in keyInfos) { - var keyInfo = keyInfos[key]; - var eventStore = eventStores[key] || EMPTY_EVENT_STORE; - var buildEventUi = this.eventUiBuilders[key]; - splitProps[key] = { - businessHours: keyInfo.businessHours || props.businessHours, - dateSelection: dateSelections[key] || null, - eventStore: eventStore, - eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]), - eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '', - eventDrag: eventDrags[key] || null, - eventResize: eventResizes[key] || null - }; - } - return splitProps; - }; - Splitter.prototype._splitDateSpan = function (dateSpan) { - var dateSpans = {}; - if (dateSpan) { - var keys = this.getKeysForDateSpan(dateSpan); - for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { - var key = keys_1[_i]; - dateSpans[key] = dateSpan; - } - } - return dateSpans; - }; - Splitter.prototype._getKeysForEventDefs = function (eventStore) { - var _this = this; - return mapHash(eventStore.defs, function (eventDef) { - return _this.getKeysForEventDef(eventDef); - }); - }; - Splitter.prototype._splitEventStore = function (eventStore, defKeys) { - var defs = eventStore.defs, instances = eventStore.instances; - var splitStores = {}; - for (var defId in defs) { - for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { - var key = _a[_i]; - if (!splitStores[key]) { - splitStores[key] = createEmptyEventStore(); - } - splitStores[key].defs[defId] = defs[defId]; - } - } - for (var instanceId in instances) { - var instance = instances[instanceId]; - for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) { - var key = _c[_b]; - if (splitStores[key]) { // must have already been created - splitStores[key].instances[instanceId] = instance; - } - } - } - return splitStores; - }; - Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) { - var splitHashes = {}; - for (var defId in eventUiBases) { - if (defId) { // not the '' key - for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { - var key = _a[_i]; - if (!splitHashes[key]) { - splitHashes[key] = {}; - } - splitHashes[key][defId] = eventUiBases[defId]; - } - } - } - return splitHashes; - }; - Splitter.prototype._splitInteraction = function (interaction) { - var splitStates = {}; - if (interaction) { - var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar - ); - // can't rely on defKeys because event data is mutated - var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents); - var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId); - var populate = function (key) { - if (!splitStates[key]) { - splitStates[key] = { - affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE, - mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE, - isEvent: interaction.isEvent, - origSeg: interaction.origSeg - }; - } - }; - for (var key in affectedStores_1) { - populate(key); - } - for (var key in mutatedStores_1) { - populate(key); - } - } - return splitStates; - }; - return Splitter; -}()); -function buildEventUiForKey(allUi, eventUiForKey, individualUi) { - var baseParts = []; - if (allUi) { - baseParts.push(allUi); - } - if (eventUiForKey) { - baseParts.push(eventUiForKey); - } - var stuff = { - '': combineEventUis(baseParts) - }; - if (individualUi) { - __assign(stuff, individualUi); - } - return stuff; -} - -// Generates HTML for an anchor to another view into the calendar. -// Will either generate an
      tag or a non-clickable tag, depending on enabled settings. -// `gotoOptions` can either be a DateMarker, or an object with the form: -// { date, type, forceOff } -// `type` is a view-type like "day" or "week". default value is "day". -// `attrs` and `innerHtml` are use to generate the rest of the HTML tag. -function buildGotoAnchorHtml(component, gotoOptions, attrs, innerHtml) { - var dateEnv = component.dateEnv; - var date; - var type; - var forceOff; - var finalOptions; - if (gotoOptions instanceof Date) { - date = gotoOptions; // a single date-like input - } - else { - date = gotoOptions.date; - type = gotoOptions.type; - forceOff = gotoOptions.forceOff; - } - finalOptions = { - date: dateEnv.formatIso(date, { omitTime: true }), - type: type || 'day' - }; - if (typeof attrs === 'string') { - innerHtml = attrs; - attrs = null; - } - attrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space - innerHtml = innerHtml || ''; - if (!forceOff && component.opt('navLinks')) { - return '' + - innerHtml + - ''; - } - else { - return '' + - innerHtml + - ''; - } -} -function getAllDayHtml(component) { - return component.opt('allDayHtml') || htmlEscape(component.opt('allDayText')); -} -// Computes HTML classNames for a single-day element -function getDayClasses(date, dateProfile, context, noThemeHighlight) { - var calendar = context.calendar, view = context.view, theme = context.theme, dateEnv = context.dateEnv; - var classes = []; - var todayStart; - var todayEnd; - if (!rangeContainsMarker(dateProfile.activeRange, date)) { - classes.push('fc-disabled-day'); - } - else { - classes.push('fc-' + DAY_IDS[date.getUTCDay()]); - if (view.opt('monthMode') && - dateEnv.getMonth(date) !== dateEnv.getMonth(dateProfile.currentRange.start)) { - classes.push('fc-other-month'); - } - todayStart = startOfDay(calendar.getNow()); - todayEnd = addDays(todayStart, 1); - if (date < todayStart) { - classes.push('fc-past'); - } - else if (date >= todayEnd) { - classes.push('fc-future'); - } - else { - classes.push('fc-today'); - if (noThemeHighlight !== true) { - classes.push(theme.getClass('today')); - } - } - } - return classes; -} - -// given a function that resolves a result asynchronously. -// the function can either call passed-in success and failure callbacks, -// or it can return a promise. -// if you need to pass additional params to func, bind them first. -function unpromisify(func, success, failure) { - // guard against success/failure callbacks being called more than once - // and guard against a promise AND callback being used together. - var isResolved = false; - var wrappedSuccess = function () { - if (!isResolved) { - isResolved = true; - success.apply(this, arguments); - } - }; - var wrappedFailure = function () { - if (!isResolved) { - isResolved = true; - if (failure) { - failure.apply(this, arguments); - } - } - }; - var res = func(wrappedSuccess, wrappedFailure); - if (res && typeof res.then === 'function') { - res.then(wrappedSuccess, wrappedFailure); - } -} - -var Mixin = /** @class */ (function () { - function Mixin() { - } - // mix into a CLASS - Mixin.mixInto = function (destClass) { - this.mixIntoObj(destClass.prototype); - }; - // mix into ANY object - Mixin.mixIntoObj = function (destObj) { - var _this = this; - Object.getOwnPropertyNames(this.prototype).forEach(function (name) { - if (!destObj[name]) { // if destination doesn't already define it - destObj[name] = _this.prototype[name]; - } - }); - }; - /* - will override existing methods - TODO: remove! not used anymore - */ - Mixin.mixOver = function (destClass) { - var _this = this; - Object.getOwnPropertyNames(this.prototype).forEach(function (name) { - destClass.prototype[name] = _this.prototype[name]; - }); - }; - return Mixin; -}()); - -/* -USAGE: - import { default as EmitterMixin, EmitterInterface } from './EmitterMixin' -in class: - on: EmitterInterface['on'] - one: EmitterInterface['one'] - off: EmitterInterface['off'] - trigger: EmitterInterface['trigger'] - triggerWith: EmitterInterface['triggerWith'] - hasHandlers: EmitterInterface['hasHandlers'] -after class: - EmitterMixin.mixInto(TheClass) -*/ -var EmitterMixin = /** @class */ (function (_super) { - __extends(EmitterMixin, _super); - function EmitterMixin() { - return _super !== null && _super.apply(this, arguments) || this; - } - EmitterMixin.prototype.on = function (type, handler) { - addToHash(this._handlers || (this._handlers = {}), type, handler); - return this; // for chaining - }; - // todo: add comments - EmitterMixin.prototype.one = function (type, handler) { - addToHash(this._oneHandlers || (this._oneHandlers = {}), type, handler); - return this; // for chaining - }; - EmitterMixin.prototype.off = function (type, handler) { - if (this._handlers) { - removeFromHash(this._handlers, type, handler); - } - if (this._oneHandlers) { - removeFromHash(this._oneHandlers, type, handler); - } - return this; // for chaining - }; - EmitterMixin.prototype.trigger = function (type) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - this.triggerWith(type, this, args); - return this; // for chaining - }; - EmitterMixin.prototype.triggerWith = function (type, context, args) { - if (this._handlers) { - applyAll(this._handlers[type], context, args); - } - if (this._oneHandlers) { - applyAll(this._oneHandlers[type], context, args); - delete this._oneHandlers[type]; // will never fire again - } - return this; // for chaining - }; - EmitterMixin.prototype.hasHandlers = function (type) { - return (this._handlers && this._handlers[type] && this._handlers[type].length) || - (this._oneHandlers && this._oneHandlers[type] && this._oneHandlers[type].length); - }; - return EmitterMixin; -}(Mixin)); -function addToHash(hash, type, handler) { - (hash[type] || (hash[type] = [])) - .push(handler); -} -function removeFromHash(hash, type, handler) { - if (handler) { - if (hash[type]) { - hash[type] = hash[type].filter(function (func) { - return func !== handler; - }); - } - } - else { - delete hash[type]; // remove all handler funcs for this type - } -} - -/* -Records offset information for a set of elements, relative to an origin element. -Can record the left/right OR the top/bottom OR both. -Provides methods for querying the cache by position. -*/ -var PositionCache = /** @class */ (function () { - function PositionCache(originEl, els, isHorizontal, isVertical) { - this.originEl = originEl; - this.els = els; - this.isHorizontal = isHorizontal; - this.isVertical = isVertical; - } - // Queries the els for coordinates and stores them. - // Call this method before using and of the get* methods below. - PositionCache.prototype.build = function () { - var originEl = this.originEl; - var originClientRect = this.originClientRect = - originEl.getBoundingClientRect(); // relative to viewport top-left - if (this.isHorizontal) { - this.buildElHorizontals(originClientRect.left); - } - if (this.isVertical) { - this.buildElVerticals(originClientRect.top); - } - }; - // Populates the left/right internal coordinate arrays - PositionCache.prototype.buildElHorizontals = function (originClientLeft) { - var lefts = []; - var rights = []; - for (var _i = 0, _a = this.els; _i < _a.length; _i++) { - var el = _a[_i]; - var rect = el.getBoundingClientRect(); - lefts.push(rect.left - originClientLeft); - rights.push(rect.right - originClientLeft); - } - this.lefts = lefts; - this.rights = rights; - }; - // Populates the top/bottom internal coordinate arrays - PositionCache.prototype.buildElVerticals = function (originClientTop) { - var tops = []; - var bottoms = []; - for (var _i = 0, _a = this.els; _i < _a.length; _i++) { - var el = _a[_i]; - var rect = el.getBoundingClientRect(); - tops.push(rect.top - originClientTop); - bottoms.push(rect.bottom - originClientTop); - } - this.tops = tops; - this.bottoms = bottoms; - }; - // Given a left offset (from document left), returns the index of the el that it horizontally intersects. - // If no intersection is made, returns undefined. - PositionCache.prototype.leftToIndex = function (leftPosition) { - var lefts = this.lefts; - var rights = this.rights; - var len = lefts.length; - var i; - for (i = 0; i < len; i++) { - if (leftPosition >= lefts[i] && leftPosition < rights[i]) { - return i; - } - } - }; - // Given a top offset (from document top), returns the index of the el that it vertically intersects. - // If no intersection is made, returns undefined. - PositionCache.prototype.topToIndex = function (topPosition) { - var tops = this.tops; - var bottoms = this.bottoms; - var len = tops.length; - var i; - for (i = 0; i < len; i++) { - if (topPosition >= tops[i] && topPosition < bottoms[i]) { - return i; - } - } - }; - // Gets the width of the element at the given index - PositionCache.prototype.getWidth = function (leftIndex) { - return this.rights[leftIndex] - this.lefts[leftIndex]; - }; - // Gets the height of the element at the given index - PositionCache.prototype.getHeight = function (topIndex) { - return this.bottoms[topIndex] - this.tops[topIndex]; - }; - return PositionCache; -}()); - -/* -An object for getting/setting scroll-related information for an element. -Internally, this is done very differently for window versus DOM element, -so this object serves as a common interface. -*/ -var ScrollController = /** @class */ (function () { - function ScrollController() { - } - ScrollController.prototype.getMaxScrollTop = function () { - return this.getScrollHeight() - this.getClientHeight(); - }; - ScrollController.prototype.getMaxScrollLeft = function () { - return this.getScrollWidth() - this.getClientWidth(); - }; - ScrollController.prototype.canScrollVertically = function () { - return this.getMaxScrollTop() > 0; - }; - ScrollController.prototype.canScrollHorizontally = function () { - return this.getMaxScrollLeft() > 0; - }; - ScrollController.prototype.canScrollUp = function () { - return this.getScrollTop() > 0; - }; - ScrollController.prototype.canScrollDown = function () { - return this.getScrollTop() < this.getMaxScrollTop(); - }; - ScrollController.prototype.canScrollLeft = function () { - return this.getScrollLeft() > 0; - }; - ScrollController.prototype.canScrollRight = function () { - return this.getScrollLeft() < this.getMaxScrollLeft(); - }; - return ScrollController; -}()); -var ElementScrollController = /** @class */ (function (_super) { - __extends(ElementScrollController, _super); - function ElementScrollController(el) { - var _this = _super.call(this) || this; - _this.el = el; - return _this; - } - ElementScrollController.prototype.getScrollTop = function () { - return this.el.scrollTop; - }; - ElementScrollController.prototype.getScrollLeft = function () { - return this.el.scrollLeft; - }; - ElementScrollController.prototype.setScrollTop = function (top) { - this.el.scrollTop = top; - }; - ElementScrollController.prototype.setScrollLeft = function (left) { - this.el.scrollLeft = left; - }; - ElementScrollController.prototype.getScrollWidth = function () { - return this.el.scrollWidth; - }; - ElementScrollController.prototype.getScrollHeight = function () { - return this.el.scrollHeight; - }; - ElementScrollController.prototype.getClientHeight = function () { - return this.el.clientHeight; - }; - ElementScrollController.prototype.getClientWidth = function () { - return this.el.clientWidth; - }; - return ElementScrollController; -}(ScrollController)); -var WindowScrollController = /** @class */ (function (_super) { - __extends(WindowScrollController, _super); - function WindowScrollController() { - return _super !== null && _super.apply(this, arguments) || this; - } - WindowScrollController.prototype.getScrollTop = function () { - return window.pageYOffset; - }; - WindowScrollController.prototype.getScrollLeft = function () { - return window.pageXOffset; - }; - WindowScrollController.prototype.setScrollTop = function (n) { - window.scroll(window.pageXOffset, n); - }; - WindowScrollController.prototype.setScrollLeft = function (n) { - window.scroll(n, window.pageYOffset); - }; - WindowScrollController.prototype.getScrollWidth = function () { - return document.documentElement.scrollWidth; - }; - WindowScrollController.prototype.getScrollHeight = function () { - return document.documentElement.scrollHeight; - }; - WindowScrollController.prototype.getClientHeight = function () { - return document.documentElement.clientHeight; - }; - WindowScrollController.prototype.getClientWidth = function () { - return document.documentElement.clientWidth; - }; - return WindowScrollController; -}(ScrollController)); - -/* -Embodies a div that has potential scrollbars -*/ -var ScrollComponent = /** @class */ (function (_super) { - __extends(ScrollComponent, _super); - function ScrollComponent(overflowX, overflowY) { - var _this = _super.call(this, createElement('div', { - className: 'fc-scroller' - })) || this; - _this.overflowX = overflowX; - _this.overflowY = overflowY; - _this.applyOverflow(); - return _this; - } - // sets to natural height, unlocks overflow - ScrollComponent.prototype.clear = function () { - this.setHeight('auto'); - this.applyOverflow(); - }; - ScrollComponent.prototype.destroy = function () { - removeElement(this.el); - }; - // Overflow - // ----------------------------------------------------------------------------------------------------------------- - ScrollComponent.prototype.applyOverflow = function () { - applyStyle(this.el, { - overflowX: this.overflowX, - overflowY: this.overflowY - }); - }; - // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'. - // Useful for preserving scrollbar widths regardless of future resizes. - // Can pass in scrollbarWidths for optimization. - ScrollComponent.prototype.lockOverflow = function (scrollbarWidths) { - var overflowX = this.overflowX; - var overflowY = this.overflowY; - scrollbarWidths = scrollbarWidths || this.getScrollbarWidths(); - if (overflowX === 'auto') { - overflowX = (scrollbarWidths.bottom || // horizontal scrollbars? - this.canScrollHorizontally() // OR scrolling pane with massless scrollbars? - ) ? 'scroll' : 'hidden'; - } - if (overflowY === 'auto') { - overflowY = (scrollbarWidths.left || scrollbarWidths.right || // horizontal scrollbars? - this.canScrollVertically() // OR scrolling pane with massless scrollbars? - ) ? 'scroll' : 'hidden'; - } - applyStyle(this.el, { overflowX: overflowX, overflowY: overflowY }); - }; - ScrollComponent.prototype.setHeight = function (height) { - applyStyleProp(this.el, 'height', height); - }; - ScrollComponent.prototype.getScrollbarWidths = function () { - var edges = computeEdges(this.el); - return { - left: edges.scrollbarLeft, - right: edges.scrollbarRight, - bottom: edges.scrollbarBottom - }; - }; - return ScrollComponent; -}(ElementScrollController)); - -var Theme = /** @class */ (function () { - function Theme(calendarOptions) { - this.calendarOptions = calendarOptions; - this.processIconOverride(); - } - Theme.prototype.processIconOverride = function () { - if (this.iconOverrideOption) { - this.setIconOverride(this.calendarOptions[this.iconOverrideOption]); - } - }; - Theme.prototype.setIconOverride = function (iconOverrideHash) { - var iconClassesCopy; - var buttonName; - if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object - iconClassesCopy = __assign({}, this.iconClasses); - for (buttonName in iconOverrideHash) { - iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]); - } - this.iconClasses = iconClassesCopy; - } - else if (iconOverrideHash === false) { - this.iconClasses = {}; - } - }; - Theme.prototype.applyIconOverridePrefix = function (className) { - var prefix = this.iconOverridePrefix; - if (prefix && className.indexOf(prefix) !== 0) { // if not already present - className = prefix + className; - } - return className; - }; - Theme.prototype.getClass = function (key) { - return this.classes[key] || ''; - }; - Theme.prototype.getIconClass = function (buttonName) { - var className = this.iconClasses[buttonName]; - if (className) { - return this.baseIconClass + ' ' + className; - } - return ''; - }; - Theme.prototype.getCustomButtonIconClass = function (customButtonProps) { - var className; - if (this.iconOverrideCustomButtonOption) { - className = customButtonProps[this.iconOverrideCustomButtonOption]; - if (className) { - return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className); - } - } - return ''; - }; - return Theme; -}()); -Theme.prototype.classes = {}; -Theme.prototype.iconClasses = {}; -Theme.prototype.baseIconClass = ''; -Theme.prototype.iconOverridePrefix = ''; - -var guid = 0; -var Component = /** @class */ (function () { - function Component(context, isView) { - // HACK to populate view at top of component instantiation call chain - if (isView) { - context.view = this; - } - this.uid = String(guid++); - this.context = context; - this.dateEnv = context.dateEnv; - this.theme = context.theme; - this.view = context.view; - this.calendar = context.calendar; - this.isRtl = this.opt('dir') === 'rtl'; - } - Component.addEqualityFuncs = function (newFuncs) { - this.prototype.equalityFuncs = __assign({}, this.prototype.equalityFuncs, newFuncs); - }; - Component.prototype.opt = function (name) { - return this.context.options[name]; - }; - Component.prototype.receiveProps = function (props) { - var _a = recycleProps(this.props || {}, props, this.equalityFuncs), anyChanges = _a.anyChanges, comboProps = _a.comboProps; - this.props = comboProps; - if (anyChanges) { - this.render(comboProps); - } - }; - Component.prototype.render = function (props) { - }; - // after destroy is called, this component won't ever be used again - Component.prototype.destroy = function () { - }; - return Component; -}()); -Component.prototype.equalityFuncs = {}; -/* -Reuses old values when equal. If anything is unequal, returns newProps as-is. -Great for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing. -*/ -function recycleProps(oldProps, newProps, equalityFuncs) { - var comboProps = {}; // some old, some new - var anyChanges = false; - for (var key in newProps) { - if (key in oldProps && (oldProps[key] === newProps[key] || - (equalityFuncs[key] && equalityFuncs[key](oldProps[key], newProps[key])))) { - // equal to old? use old prop - comboProps[key] = oldProps[key]; - } - else { - comboProps[key] = newProps[key]; - anyChanges = true; - } - } - for (var key in oldProps) { - if (!(key in newProps)) { - anyChanges = true; - break; - } - } - return { anyChanges: anyChanges, comboProps: comboProps }; -} - -/* -PURPOSES: -- hook up to fg, fill, and mirror renderers -- interface for dragging and hits -*/ -var DateComponent = /** @class */ (function (_super) { - __extends(DateComponent, _super); - function DateComponent(context, el, isView) { - var _this = _super.call(this, context, isView) || this; - _this.el = el; - return _this; - } - DateComponent.prototype.destroy = function () { - _super.prototype.destroy.call(this); - removeElement(this.el); - }; - // TODO: WHAT ABOUT (sourceSeg && sourceSeg.component.doesDragMirror) - // - // Event Drag-n-Drop Rendering (for both events and external elements) - // --------------------------------------------------------------------------------------------------------------- - /* - renderEventDragSegs(state: EventSegUiInteractionState) { - if (state) { - let { isEvent, segs, sourceSeg } = state - - if (this.eventRenderer) { - this.eventRenderer.hideByHash(state.affectedInstances) - } - - // if the user is dragging something that is considered an event with real event data, - // and this component likes to do drag mirrors OR the component where the seg came from - // likes to do drag mirrors, then render a drag mirror. - if (isEvent && (this.doesDragMirror || sourceSeg && sourceSeg.component.doesDragMirror)) { - if (this.mirrorRenderer) { - this.mirrorRenderer.renderSegs(segs, { isDragging: true, sourceSeg }) - } - } - - // if it would be impossible to render a drag mirror OR this component likes to render - // highlights, then render a highlight. - if (!isEvent || this.doesDragHighlight) { - if (this.fillRenderer) { - this.fillRenderer.renderSegs('highlight', segs) - } - } - } - } - */ - // Hit System - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.buildPositionCaches = function () { - }; - DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { - return null; // this should be abstract - }; - // Validation - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.isInteractionValid = function (interaction) { - var calendar = this.calendar; - var dateProfile = this.props.dateProfile; // HACK - var instances = interaction.mutatedEvents.instances; - if (dateProfile) { // HACK for DayTile - for (var instanceId in instances) { - if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) { - return false; - } - } - } - return isInteractionValid(interaction, calendar); - }; - DateComponent.prototype.isDateSelectionValid = function (selection) { - var dateProfile = this.props.dateProfile; // HACK - if (dateProfile && // HACK for DayTile - !rangeContainsRange(dateProfile.validRange, selection.range)) { - return false; - } - return isDateSelectionValid(selection, this.calendar); - }; - // Triggering - // ----------------------------------------------------------------------------------------------------------------- - // TODO: move to Calendar - DateComponent.prototype.publiclyTrigger = function (name, args) { - var calendar = this.calendar; - return calendar.publiclyTrigger(name, args); - }; - DateComponent.prototype.publiclyTriggerAfterSizing = function (name, args) { - var calendar = this.calendar; - return calendar.publiclyTriggerAfterSizing(name, args); - }; - DateComponent.prototype.hasPublicHandlers = function (name) { - var calendar = this.calendar; - return calendar.hasPublicHandlers(name); - }; - DateComponent.prototype.triggerRenderedSegs = function (segs, isMirrors) { - var calendar = this.calendar; - if (this.hasPublicHandlers('eventPositioned')) { - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - this.publiclyTriggerAfterSizing('eventPositioned', [ - { - event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirrors, - isStart: seg.isStart, - isEnd: seg.isEnd, - el: seg.el, - view: this // safe to cast because this method is only called on context.view - } - ]); - } - } - if (!calendar.state.loadingLevel) { // avoid initial empty state while pending - calendar.afterSizingTriggers._eventsPositioned = [null]; // fire once - } - }; - DateComponent.prototype.triggerWillRemoveSegs = function (segs, isMirrors) { - var calendar = this.calendar; - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - calendar.trigger('eventElRemove', seg.el); - } - if (this.hasPublicHandlers('eventDestroy')) { - for (var _a = 0, segs_3 = segs; _a < segs_3.length; _a++) { - var seg = segs_3[_a]; - this.publiclyTrigger('eventDestroy', [ - { - event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirrors, - el: seg.el, - view: this // safe to cast because this method is only called on context.view - } - ]); - } - } - }; - // Pointer Interaction Utils - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.isValidSegDownEl = function (el) { - return !this.props.eventDrag && // HACK - !this.props.eventResize && // HACK - !elementClosest(el, '.fc-mirror') && - (this.isPopover() || !this.isInPopover(el)); - // ^above line ensures we don't detect a seg interaction within a nested component. - // it's a HACK because it only supports a popover as the nested component. - }; - DateComponent.prototype.isValidDateDownEl = function (el) { - var segEl = elementClosest(el, this.fgSegSelector); - return (!segEl || segEl.classList.contains('fc-mirror')) && - !elementClosest(el, '.fc-more') && // a "more.." link - !elementClosest(el, 'a[data-goto]') && // a clickable nav link - !this.isInPopover(el); - }; - DateComponent.prototype.isPopover = function () { - return this.el.classList.contains('fc-popover'); - }; - DateComponent.prototype.isInPopover = function (el) { - return Boolean(elementClosest(el, '.fc-popover')); - }; - return DateComponent; -}(Component)); -DateComponent.prototype.fgSegSelector = '.fc-event-container > *'; -DateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)'; - -var uid$1 = 0; -function createPlugin(input) { - return { - id: String(uid$1++), - deps: input.deps || [], - reducers: input.reducers || [], - eventDefParsers: input.eventDefParsers || [], - isDraggableTransformers: input.isDraggableTransformers || [], - eventDragMutationMassagers: input.eventDragMutationMassagers || [], - eventDefMutationAppliers: input.eventDefMutationAppliers || [], - dateSelectionTransformers: input.dateSelectionTransformers || [], - datePointTransforms: input.datePointTransforms || [], - dateSpanTransforms: input.dateSpanTransforms || [], - views: input.views || {}, - viewPropsTransformers: input.viewPropsTransformers || [], - isPropsValid: input.isPropsValid || null, - externalDefTransforms: input.externalDefTransforms || [], - eventResizeJoinTransforms: input.eventResizeJoinTransforms || [], - viewContainerModifiers: input.viewContainerModifiers || [], - eventDropTransformers: input.eventDropTransformers || [], - componentInteractions: input.componentInteractions || [], - calendarInteractions: input.calendarInteractions || [], - themeClasses: input.themeClasses || {}, - eventSourceDefs: input.eventSourceDefs || [], - cmdFormatter: input.cmdFormatter, - recurringTypes: input.recurringTypes || [], - namedTimeZonedImpl: input.namedTimeZonedImpl, - defaultView: input.defaultView || '', - elementDraggingImpl: input.elementDraggingImpl, - optionChangeHandlers: input.optionChangeHandlers || {} - }; -} -var PluginSystem = /** @class */ (function () { - function PluginSystem() { - this.hooks = { - reducers: [], - eventDefParsers: [], - isDraggableTransformers: [], - eventDragMutationMassagers: [], - eventDefMutationAppliers: [], - dateSelectionTransformers: [], - datePointTransforms: [], - dateSpanTransforms: [], - views: {}, - viewPropsTransformers: [], - isPropsValid: null, - externalDefTransforms: [], - eventResizeJoinTransforms: [], - viewContainerModifiers: [], - eventDropTransformers: [], - componentInteractions: [], - calendarInteractions: [], - themeClasses: {}, - eventSourceDefs: [], - cmdFormatter: null, - recurringTypes: [], - namedTimeZonedImpl: null, - defaultView: '', - elementDraggingImpl: null, - optionChangeHandlers: {} - }; - this.addedHash = {}; - } - PluginSystem.prototype.add = function (plugin) { - if (!this.addedHash[plugin.id]) { - this.addedHash[plugin.id] = true; - for (var _i = 0, _a = plugin.deps; _i < _a.length; _i++) { - var dep = _a[_i]; - this.add(dep); - } - this.hooks = combineHooks(this.hooks, plugin); - } - }; - return PluginSystem; -}()); -function combineHooks(hooks0, hooks1) { - return { - reducers: hooks0.reducers.concat(hooks1.reducers), - eventDefParsers: hooks0.eventDefParsers.concat(hooks1.eventDefParsers), - isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers), - eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers), - eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers), - dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers), - datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms), - dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms), - views: __assign({}, hooks0.views, hooks1.views), - viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers), - isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid, - externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms), - eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms), - viewContainerModifiers: hooks0.viewContainerModifiers.concat(hooks1.viewContainerModifiers), - eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers), - calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions), - componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions), - themeClasses: __assign({}, hooks0.themeClasses, hooks1.themeClasses), - eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs), - cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter, - recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes), - namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl, - defaultView: hooks0.defaultView || hooks1.defaultView, - elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, - optionChangeHandlers: __assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers) - }; -} - -var eventSourceDef = { - ignoreRange: true, - parseMeta: function (raw) { - if (Array.isArray(raw)) { // short form - return raw; - } - else if (Array.isArray(raw.events)) { - return raw.events; - } - return null; - }, - fetch: function (arg, success) { - success({ - rawEvents: arg.eventSource.meta - }); - } -}; -var ArrayEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef] -}); - -var eventSourceDef$1 = { - parseMeta: function (raw) { - if (typeof raw === 'function') { // short form - return raw; - } - else if (typeof raw.events === 'function') { - return raw.events; - } - return null; - }, - fetch: function (arg, success, failure) { - var dateEnv = arg.calendar.dateEnv; - var func = arg.eventSource.meta; - unpromisify(func.bind(null, { - start: dateEnv.toDate(arg.range.start), - end: dateEnv.toDate(arg.range.end), - startStr: dateEnv.formatIso(arg.range.start), - endStr: dateEnv.formatIso(arg.range.end), - timeZone: dateEnv.timeZone - }), function (rawEvents) { - success({ rawEvents: rawEvents }); // needs an object response - }, failure // send errorObj directly to failure callback - ); - } -}; -var FuncEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef$1] -}); - -function requestJson(method, url, params, successCallback, failureCallback) { - method = method.toUpperCase(); - var body = null; - if (method === 'GET') { - url = injectQueryStringParams(url, params); - } - else { - body = encodeParams(params); - } - var xhr = new XMLHttpRequest(); - xhr.open(method, url, true); - if (method !== 'GET') { - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 400) { - try { - var res = JSON.parse(xhr.responseText); - successCallback(res, xhr); - } - catch (err) { - failureCallback('Failure parsing JSON', xhr); - } - } - else { - failureCallback('Request failed', xhr); - } - }; - xhr.onerror = function () { - failureCallback('Request failed', xhr); - }; - xhr.send(body); -} -function injectQueryStringParams(url, params) { - return url + - (url.indexOf('?') === -1 ? '?' : '&') + - encodeParams(params); -} -function encodeParams(params) { - var parts = []; - for (var key in params) { - parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key])); - } - return parts.join('&'); -} - -var eventSourceDef$2 = { - parseMeta: function (raw) { - if (typeof raw === 'string') { // short form - raw = { url: raw }; - } - else if (!raw || typeof raw !== 'object' || !raw.url) { - return null; - } - return { - url: raw.url, - method: (raw.method || 'GET').toUpperCase(), - extraParams: raw.extraParams, - startParam: raw.startParam, - endParam: raw.endParam, - timeZoneParam: raw.timeZoneParam - }; - }, - fetch: function (arg, success, failure) { - var meta = arg.eventSource.meta; - var requestParams = buildRequestParams(meta, arg.range, arg.calendar); - requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) { - success({ rawEvents: rawEvents, xhr: xhr }); - }, function (errorMessage, xhr) { - failure({ message: errorMessage, xhr: xhr }); - }); - } -}; -var JsonFeedEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef$2] -}); -function buildRequestParams(meta, range, calendar) { - var dateEnv = calendar.dateEnv; - var startParam; - var endParam; - var timeZoneParam; - var customRequestParams; - var params = {}; - startParam = meta.startParam; - if (startParam == null) { - startParam = calendar.opt('startParam'); - } - endParam = meta.endParam; - if (endParam == null) { - endParam = calendar.opt('endParam'); - } - timeZoneParam = meta.timeZoneParam; - if (timeZoneParam == null) { - timeZoneParam = calendar.opt('timeZoneParam'); - } - // retrieve any outbound GET/POST data from the options - if (typeof meta.extraParams === 'function') { - // supplied as a function that returns a key/value object - customRequestParams = meta.extraParams(); - } - else { - // probably supplied as a straight key/value object - customRequestParams = meta.extraParams || {}; - } - __assign(params, customRequestParams); - params[startParam] = dateEnv.formatIso(range.start); - params[endParam] = dateEnv.formatIso(range.end); - if (dateEnv.timeZone !== 'local') { - params[timeZoneParam] = dateEnv.timeZone; - } - return params; -} - -var recurring = { - parse: function (rawEvent, leftoverProps, dateEnv) { - var createMarker = dateEnv.createMarker.bind(dateEnv); - var processors = { - daysOfWeek: null, - startTime: createDuration, - endTime: createDuration, - startRecur: createMarker, - endRecur: createMarker - }; - var props = refineProps(rawEvent, processors, {}, leftoverProps); - var anyValid = false; - for (var propName in props) { - if (props[propName] != null) { - anyValid = true; - break; - } - } - if (anyValid) { - var duration = null; - if ('duration' in leftoverProps) { - duration = createDuration(leftoverProps.duration); - delete leftoverProps.duration; - } - if (!duration && props.startTime && props.endTime) { - duration = subtractDurations(props.endTime, props.startTime); - } - return { - allDayGuess: Boolean(!props.startTime && !props.endTime), - duration: duration, - typeData: props // doesn't need endTime anymore but oh well - }; - } - return null; - }, - expand: function (typeData, framingRange, dateEnv) { - var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur }); - if (clippedFramingRange) { - return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv); - } - else { - return []; - } - } -}; -var SimpleRecurrencePlugin = createPlugin({ - recurringTypes: [recurring] -}); -function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) { - var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null; - var dayMarker = startOfDay(framingRange.start); - var endMarker = framingRange.end; - var instanceStarts = []; - while (dayMarker < endMarker) { - var instanceStart - // if everyday, or this particular day-of-week - = void 0; - // if everyday, or this particular day-of-week - if (!dowHash || dowHash[dayMarker.getUTCDay()]) { - if (startTime) { - instanceStart = dateEnv.add(dayMarker, startTime); - } - else { - instanceStart = dayMarker; - } - instanceStarts.push(instanceStart); - } - dayMarker = addDays(dayMarker, 1); - } - return instanceStarts; -} - -var DefaultOptionChangeHandlers = createPlugin({ - optionChangeHandlers: { - events: function (events, calendar, deepEqual) { - handleEventSources([events], calendar, deepEqual); - }, - eventSources: handleEventSources, - plugins: handlePlugins - } -}); -function handleEventSources(inputs, calendar, deepEqual) { - var unfoundSources = hashValuesToArray(calendar.state.eventSources); - var newInputs = []; - for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { - var input = inputs_1[_i]; - var inputFound = false; - for (var i = 0; i < unfoundSources.length; i++) { - if (deepEqual(unfoundSources[i]._raw, input)) { - unfoundSources.splice(i, 1); // delete - inputFound = true; - break; - } - } - if (!inputFound) { - newInputs.push(input); - } - } - for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) { - var unfoundSource = unfoundSources_1[_a]; - calendar.dispatch({ - type: 'REMOVE_EVENT_SOURCE', - sourceId: unfoundSource.sourceId - }); - } - for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) { - var newInput = newInputs_1[_b]; - calendar.addEventSource(newInput); - } -} -// shortcoming: won't remove plugins -function handlePlugins(inputs, calendar) { - calendar.addPluginInputs(inputs); // will gracefully handle duplicates -} - -var config = {}; // TODO: make these options -var globalDefaults = { - defaultRangeSeparator: ' - ', - titleRangeSeparator: ' \u2013 ', - defaultTimedEventDuration: '01:00:00', - defaultAllDayEventDuration: { day: 1 }, - forceEventDuration: false, - nextDayThreshold: '00:00:00', - // display - columnHeader: true, - defaultView: '', - aspectRatio: 1.35, - header: { - left: 'title', - center: '', - right: 'today prev,next' - }, - weekends: true, - weekNumbers: false, - weekNumberCalculation: 'local', - editable: false, - // nowIndicator: false, - scrollTime: '06:00:00', - minTime: '00:00:00', - maxTime: '24:00:00', - showNonCurrentDates: true, - // event ajax - lazyFetching: true, - startParam: 'start', - endParam: 'end', - timeZoneParam: 'timeZone', - timeZone: 'local', - // allDayDefault: undefined, - // locale - locales: [], - locale: '', - // dir: will get this from the default locale - // buttonIcons: null, - // allows setting a min-height to the event segment to prevent short events overlapping each other - timeGridEventMinHeight: 0, - themeSystem: 'standard', - // eventResizableFromStart: false, - dragRevertDuration: 500, - dragScroll: true, - allDayMaintainDuration: false, - // selectable: false, - unselectAuto: true, - // selectMinDistance: 0, - dropAccept: '*', - eventOrder: 'start,-duration,allDay,title', - // ^ if start tie, longer events go before shorter. final tie-breaker is title text - // rerenderDelay: null, - eventLimit: false, - eventLimitClick: 'popover', - dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' }, - handleWindowResize: true, - windowResizeDelay: 100, - longPressDelay: 1000, - eventDragMinDistance: 5 // only applies to mouse -}; -var rtlDefaults = { - header: { - left: 'next,prev today', - center: '', - right: 'title' - }, - buttonIcons: { - // TODO: make RTL support the responibility of the theme - prev: 'fc-icon-chevron-right', - next: 'fc-icon-chevron-left', - prevYear: 'fc-icon-chevrons-right', - nextYear: 'fc-icon-chevrons-left' - } -}; -var complexOptions = [ - 'header', - 'footer', - 'buttonText', - 'buttonIcons' -]; -// Merges an array of option objects into a single object -function mergeOptions(optionObjs) { - return mergeProps(optionObjs, complexOptions); -} -// TODO: move this stuff to a "plugin"-related file... -var INTERNAL_PLUGINS = [ - ArrayEventSourcePlugin, - FuncEventSourcePlugin, - JsonFeedEventSourcePlugin, - SimpleRecurrencePlugin, - DefaultOptionChangeHandlers -]; -function refinePluginDefs(pluginInputs) { - var plugins = []; - for (var _i = 0, pluginInputs_1 = pluginInputs; _i < pluginInputs_1.length; _i++) { - var pluginInput = pluginInputs_1[_i]; - if (typeof pluginInput === 'string') { - var globalName = 'FullCalendar' + capitaliseFirstLetter(pluginInput); - if (!window[globalName]) { - console.warn('Plugin file not loaded for ' + pluginInput); - } - else { - plugins.push(window[globalName].default); // is an ES6 module - } - } - else { - plugins.push(pluginInput); - } - } - return INTERNAL_PLUGINS.concat(plugins); -} - -var RAW_EN_LOCALE = { - code: 'en', - week: { - dow: 0, - doy: 4 // 4 days need to be within the year to be considered the first week - }, - dir: 'ltr', - buttonText: { - prev: 'prev', - next: 'next', - prevYear: 'prev year', - nextYear: 'next year', - year: 'year', - today: 'today', - month: 'month', - week: 'week', - day: 'day', - list: 'list' - }, - weekLabel: 'W', - allDayText: 'all-day', - eventLimitText: 'more', - noEventsMessage: 'No events to display' -}; -function parseRawLocales(explicitRawLocales) { - var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'; - var globalArray = window['FullCalendarLocalesAll'] || []; // from locales-all.js - var globalObject = window['FullCalendarLocales'] || {}; // from locales/*.js. keys are meaningless - var allRawLocales = globalArray.concat(// globalArray is low prio - hashValuesToArray(globalObject), // medium prio - explicitRawLocales // highest prio - ); - var rawLocaleMap = { - en: RAW_EN_LOCALE // necessary? - }; - for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) { - var rawLocale = allRawLocales_1[_i]; - rawLocaleMap[rawLocale.code] = rawLocale; - } - return { - map: rawLocaleMap, - defaultCode: defaultCode - }; -} -function buildLocale(inputSingular, available) { - if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) { - return parseLocale(inputSingular.code, [inputSingular.code], inputSingular); - } - else { - return queryLocale(inputSingular, available); - } -} -function queryLocale(codeArg, available) { - var codes = [].concat(codeArg || []); // will convert to array - var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE; - return parseLocale(codeArg, codes, raw); -} -function queryRawLocale(codes, available) { - for (var i = 0; i < codes.length; i++) { - var parts = codes[i].toLocaleLowerCase().split('-'); - for (var j = parts.length; j > 0; j--) { - var simpleId = parts.slice(0, j).join('-'); - if (available[simpleId]) { - return available[simpleId]; - } - } - } - return null; -} -function parseLocale(codeArg, codes, raw) { - var merged = mergeProps([RAW_EN_LOCALE, raw], ['buttonText']); - delete merged.code; // don't want this part of the options - var week = merged.week; - delete merged.week; - return { - codeArg: codeArg, - codes: codes, - week: week, - simpleNumberFormat: new Intl.NumberFormat(codeArg), - options: merged - }; -} - -var OptionsManager = /** @class */ (function () { - function OptionsManager(overrides) { - this.overrides = __assign({}, overrides); // make a copy - this.dynamicOverrides = {}; - this.compute(); - } - OptionsManager.prototype.mutate = function (updates, removals, isDynamic) { - var overrideHash = isDynamic ? this.dynamicOverrides : this.overrides; - __assign(overrideHash, updates); - for (var _i = 0, removals_1 = removals; _i < removals_1.length; _i++) { - var propName = removals_1[_i]; - delete overrideHash[propName]; - } - this.compute(); - }; - // Computes the flattened options hash for the calendar and assigns to `this.options`. - // Assumes this.overrides and this.dynamicOverrides have already been initialized. - OptionsManager.prototype.compute = function () { - // TODO: not a very efficient system - var locales = firstDefined(// explicit locale option given? - this.dynamicOverrides.locales, this.overrides.locales, globalDefaults.locales); - var locale = firstDefined(// explicit locales option given? - this.dynamicOverrides.locale, this.overrides.locale, globalDefaults.locale); - var available = parseRawLocales(locales); - var localeDefaults = buildLocale(locale || available.defaultCode, available.map).options; - var dir = firstDefined(// based on options computed so far, is direction RTL? - this.dynamicOverrides.dir, this.overrides.dir, localeDefaults.dir); - var dirDefaults = dir === 'rtl' ? rtlDefaults : {}; - this.dirDefaults = dirDefaults; - this.localeDefaults = localeDefaults; - this.computed = mergeOptions([ - globalDefaults, - dirDefaults, - localeDefaults, - this.overrides, - this.dynamicOverrides - ]); - }; - return OptionsManager; -}()); - -var calendarSystemClassMap = {}; -function registerCalendarSystem(name, theClass) { - calendarSystemClassMap[name] = theClass; -} -function createCalendarSystem(name) { - return new calendarSystemClassMap[name](); -} -var GregorianCalendarSystem = /** @class */ (function () { - function GregorianCalendarSystem() { - } - GregorianCalendarSystem.prototype.getMarkerYear = function (d) { - return d.getUTCFullYear(); - }; - GregorianCalendarSystem.prototype.getMarkerMonth = function (d) { - return d.getUTCMonth(); - }; - GregorianCalendarSystem.prototype.getMarkerDay = function (d) { - return d.getUTCDate(); - }; - GregorianCalendarSystem.prototype.arrayToMarker = function (arr) { - return arrayToUtcDate(arr); - }; - GregorianCalendarSystem.prototype.markerToArray = function (marker) { - return dateToUtcArray(marker); - }; - return GregorianCalendarSystem; -}()); -registerCalendarSystem('gregory', GregorianCalendarSystem); - -var ISO_RE = /^\s*(\d{4})(-(\d{2})(-(\d{2})([T ](\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/; -function parse(str) { - var m = ISO_RE.exec(str); - if (m) { - var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number('0.' + m[12]) * 1000 : 0)); - if (isValidDate(marker)) { - var timeZoneOffset = null; - if (m[13]) { - timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + - Number(m[18] || 0)); - } - return { - marker: marker, - isTimeUnspecified: !m[6], - timeZoneOffset: timeZoneOffset - }; - } - } - return null; -} - -var DateEnv = /** @class */ (function () { - function DateEnv(settings) { - var timeZone = this.timeZone = settings.timeZone; - var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC'; - if (settings.namedTimeZoneImpl && isNamedTimeZone) { - this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone); - } - this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl); - this.calendarSystem = createCalendarSystem(settings.calendarSystem); - this.locale = settings.locale; - this.weekDow = settings.locale.week.dow; - this.weekDoy = settings.locale.week.doy; - if (settings.weekNumberCalculation === 'ISO') { - this.weekDow = 1; - this.weekDoy = 4; - } - if (typeof settings.firstDay === 'number') { - this.weekDow = settings.firstDay; - } - if (typeof settings.weekNumberCalculation === 'function') { - this.weekNumberFunc = settings.weekNumberCalculation; - } - this.weekLabel = settings.weekLabel != null ? settings.weekLabel : settings.locale.options.weekLabel; - this.cmdFormatter = settings.cmdFormatter; - } - // Creating / Parsing - DateEnv.prototype.createMarker = function (input) { - var meta = this.createMarkerMeta(input); - if (meta === null) { - return null; - } - return meta.marker; - }; - DateEnv.prototype.createNowMarker = function () { - if (this.canComputeOffset) { - return this.timestampToMarker(new Date().valueOf()); - } - else { - // if we can't compute the current date val for a timezone, - // better to give the current local date vals than UTC - return arrayToUtcDate(dateToLocalArray(new Date())); - } - }; - DateEnv.prototype.createMarkerMeta = function (input) { - if (typeof input === 'string') { - return this.parse(input); - } - var marker = null; - if (typeof input === 'number') { - marker = this.timestampToMarker(input); - } - else if (input instanceof Date) { - input = input.valueOf(); - if (!isNaN(input)) { - marker = this.timestampToMarker(input); - } - } - else if (Array.isArray(input)) { - marker = arrayToUtcDate(input); - } - if (marker === null || !isValidDate(marker)) { - return null; - } - return { marker: marker, isTimeUnspecified: false, forcedTzo: null }; - }; - DateEnv.prototype.parse = function (s) { - var parts = parse(s); - if (parts === null) { - return null; - } - var marker = parts.marker; - var forcedTzo = null; - if (parts.timeZoneOffset !== null) { - if (this.canComputeOffset) { - marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000); - } - else { - forcedTzo = parts.timeZoneOffset; - } - } - return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo }; - }; - // Accessors - DateEnv.prototype.getYear = function (marker) { - return this.calendarSystem.getMarkerYear(marker); - }; - DateEnv.prototype.getMonth = function (marker) { - return this.calendarSystem.getMarkerMonth(marker); - }; - // Adding / Subtracting - DateEnv.prototype.add = function (marker, dur) { - var a = this.calendarSystem.markerToArray(marker); - a[0] += dur.years; - a[1] += dur.months; - a[2] += dur.days; - a[6] += dur.milliseconds; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.subtract = function (marker, dur) { - var a = this.calendarSystem.markerToArray(marker); - a[0] -= dur.years; - a[1] -= dur.months; - a[2] -= dur.days; - a[6] -= dur.milliseconds; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.addYears = function (marker, n) { - var a = this.calendarSystem.markerToArray(marker); - a[0] += n; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.addMonths = function (marker, n) { - var a = this.calendarSystem.markerToArray(marker); - a[1] += n; - return this.calendarSystem.arrayToMarker(a); - }; - // Diffing Whole Units - DateEnv.prototype.diffWholeYears = function (m0, m1) { - var calendarSystem = this.calendarSystem; - if (timeAsMs(m0) === timeAsMs(m1) && - calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && - calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) { - return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0); - } - return null; - }; - DateEnv.prototype.diffWholeMonths = function (m0, m1) { - var calendarSystem = this.calendarSystem; - if (timeAsMs(m0) === timeAsMs(m1) && - calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) { - return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) + - (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12; - } - return null; - }; - // Range / Duration - DateEnv.prototype.greatestWholeUnit = function (m0, m1) { - var n = this.diffWholeYears(m0, m1); - if (n !== null) { - return { unit: 'year', value: n }; - } - n = this.diffWholeMonths(m0, m1); - if (n !== null) { - return { unit: 'month', value: n }; - } - n = diffWholeWeeks(m0, m1); - if (n !== null) { - return { unit: 'week', value: n }; - } - n = diffWholeDays(m0, m1); - if (n !== null) { - return { unit: 'day', value: n }; - } - n = diffHours(m0, m1); - if (isInt(n)) { - return { unit: 'hour', value: n }; - } - n = diffMinutes(m0, m1); - if (isInt(n)) { - return { unit: 'minute', value: n }; - } - n = diffSeconds(m0, m1); - if (isInt(n)) { - return { unit: 'second', value: n }; - } - return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() }; - }; - DateEnv.prototype.countDurationsBetween = function (m0, m1, d) { - // TODO: can use greatestWholeUnit - var diff; - if (d.years) { - diff = this.diffWholeYears(m0, m1); - if (diff !== null) { - return diff / asRoughYears(d); - } - } - if (d.months) { - diff = this.diffWholeMonths(m0, m1); - if (diff !== null) { - return diff / asRoughMonths(d); - } - } - if (d.days) { - diff = diffWholeDays(m0, m1); - if (diff !== null) { - return diff / asRoughDays(d); - } - } - return (m1.valueOf() - m0.valueOf()) / asRoughMs(d); - }; - // Start-Of - DateEnv.prototype.startOf = function (m, unit) { - if (unit === 'year') { - return this.startOfYear(m); - } - else if (unit === 'month') { - return this.startOfMonth(m); - } - else if (unit === 'week') { - return this.startOfWeek(m); - } - else if (unit === 'day') { - return startOfDay(m); - } - else if (unit === 'hour') { - return startOfHour(m); - } - else if (unit === 'minute') { - return startOfMinute(m); - } - else if (unit === 'second') { - return startOfSecond(m); - } - }; - DateEnv.prototype.startOfYear = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m) - ]); - }; - DateEnv.prototype.startOfMonth = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m), - this.calendarSystem.getMarkerMonth(m) - ]); - }; - DateEnv.prototype.startOfWeek = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m), - this.calendarSystem.getMarkerMonth(m), - m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7) - ]); - }; - // Week Number - DateEnv.prototype.computeWeekNumber = function (marker) { - if (this.weekNumberFunc) { - return this.weekNumberFunc(this.toDate(marker)); - } - else { - return weekOfYear(marker, this.weekDow, this.weekDoy); - } - }; - // TODO: choke on timeZoneName: long - DateEnv.prototype.format = function (marker, formatter, dateOptions) { - if (dateOptions === void 0) { dateOptions = {}; } - return formatter.format({ - marker: marker, - timeZoneOffset: dateOptions.forcedTzo != null ? - dateOptions.forcedTzo : - this.offsetForMarker(marker) - }, this); - }; - DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) { - if (dateOptions === void 0) { dateOptions = {}; } - if (dateOptions.isEndExclusive) { - end = addMs(end, -1); - } - return formatter.formatRange({ - marker: start, - timeZoneOffset: dateOptions.forcedStartTzo != null ? - dateOptions.forcedStartTzo : - this.offsetForMarker(start) - }, { - marker: end, - timeZoneOffset: dateOptions.forcedEndTzo != null ? - dateOptions.forcedEndTzo : - this.offsetForMarker(end) - }, this); - }; - DateEnv.prototype.formatIso = function (marker, extraOptions) { - if (extraOptions === void 0) { extraOptions = {}; } - var timeZoneOffset = null; - if (!extraOptions.omitTimeZoneOffset) { - if (extraOptions.forcedTzo != null) { - timeZoneOffset = extraOptions.forcedTzo; - } - else { - timeZoneOffset = this.offsetForMarker(marker); - } - } - return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime); - }; - // TimeZone - DateEnv.prototype.timestampToMarker = function (ms) { - if (this.timeZone === 'local') { - return arrayToUtcDate(dateToLocalArray(new Date(ms))); - } - else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) { - return new Date(ms); - } - else { - return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms)); - } - }; - DateEnv.prototype.offsetForMarker = function (m) { - if (this.timeZone === 'local') { - return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert "inverse" offset to "normal" offset - } - else if (this.timeZone === 'UTC') { - return 0; - } - else if (this.namedTimeZoneImpl) { - return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)); - } - return null; - }; - // Conversion - DateEnv.prototype.toDate = function (m, forcedTzo) { - if (this.timeZone === 'local') { - return arrayToLocalDate(dateToUtcArray(m)); - } - else if (this.timeZone === 'UTC') { - return new Date(m.valueOf()); // make sure it's a copy - } - else if (!this.namedTimeZoneImpl) { - return new Date(m.valueOf() - (forcedTzo || 0)); - } - else { - return new Date(m.valueOf() - - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms - ); - } - }; - return DateEnv; -}()); - -var SIMPLE_SOURCE_PROPS = { - id: String, - allDayDefault: Boolean, - eventDataTransform: Function, - success: Function, - failure: Function -}; -var uid$2 = 0; -function doesSourceNeedRange(eventSource, calendar) { - var defs = calendar.pluginSystem.hooks.eventSourceDefs; - return !defs[eventSource.sourceDefId].ignoreRange; -} -function parseEventSource(raw, calendar) { - var defs = calendar.pluginSystem.hooks.eventSourceDefs; - for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence - var def = defs[i]; - var meta = def.parseMeta(raw); - if (meta) { - var res = parseEventSourceProps(typeof raw === 'object' ? raw : {}, meta, i, calendar); - res._raw = raw; - return res; - } - } - return null; -} -function parseEventSourceProps(raw, meta, sourceDefId, calendar) { - var leftovers0 = {}; - var props = refineProps(raw, SIMPLE_SOURCE_PROPS, {}, leftovers0); - var leftovers1 = {}; - var ui = processUnscopedUiProps(leftovers0, calendar, leftovers1); - props.isFetching = false; - props.latestFetchId = ''; - props.fetchRange = null; - props.publicId = String(raw.id || ''); - props.sourceId = String(uid$2++); - props.sourceDefId = sourceDefId; - props.meta = meta; - props.ui = ui; - props.extendedProps = leftovers1; - return props; -} - -function reduceEventSources (eventSources, action, dateProfile, calendar) { - switch (action.type) { - case 'ADD_EVENT_SOURCES': // already parsed - return addSources(eventSources, action.sources, dateProfile ? dateProfile.activeRange : null, calendar); - case 'REMOVE_EVENT_SOURCE': - return removeSource(eventSources, action.sourceId); - case 'PREV': // TODO: how do we track all actions that affect dateProfile :( - case 'NEXT': - case 'SET_DATE': - case 'SET_VIEW_TYPE': - if (dateProfile) { - return fetchDirtySources(eventSources, dateProfile.activeRange, calendar); - } - else { - return eventSources; - } - case 'FETCH_EVENT_SOURCES': - case 'CHANGE_TIMEZONE': - return fetchSourcesByIds(eventSources, action.sourceIds ? - arrayToHash(action.sourceIds) : - excludeStaticSources(eventSources, calendar), dateProfile ? dateProfile.activeRange : null, calendar); - case 'RECEIVE_EVENTS': - case 'RECEIVE_EVENT_ERROR': - return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange); - case 'REMOVE_ALL_EVENT_SOURCES': - return {}; - default: - return eventSources; - } -} -var uid$3 = 0; -function addSources(eventSourceHash, sources, fetchRange, calendar) { - var hash = {}; - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - hash[source.sourceId] = source; - } - if (fetchRange) { - hash = fetchDirtySources(hash, fetchRange, calendar); - } - return __assign({}, eventSourceHash, hash); -} -function removeSource(eventSourceHash, sourceId) { - return filterHash(eventSourceHash, function (eventSource) { - return eventSource.sourceId !== sourceId; - }); -} -function fetchDirtySources(sourceHash, fetchRange, calendar) { - return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { - return isSourceDirty(eventSource, fetchRange, calendar); - }), fetchRange, calendar); -} -function isSourceDirty(eventSource, fetchRange, calendar) { - if (!doesSourceNeedRange(eventSource, calendar)) { - return !eventSource.latestFetchId; - } - else { - return !calendar.opt('lazyFetching') || - !eventSource.fetchRange || - fetchRange.start < eventSource.fetchRange.start || - fetchRange.end > eventSource.fetchRange.end; - } -} -function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, calendar) { - var nextSources = {}; - for (var sourceId in prevSources) { - var source = prevSources[sourceId]; - if (sourceIdHash[sourceId]) { - nextSources[sourceId] = fetchSource(source, fetchRange, calendar); - } - else { - nextSources[sourceId] = source; - } - } - return nextSources; -} -function fetchSource(eventSource, fetchRange, calendar) { - var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId]; - var fetchId = String(uid$3++); - sourceDef.fetch({ - eventSource: eventSource, - calendar: calendar, - range: fetchRange - }, function (res) { - var rawEvents = res.rawEvents; - var calSuccess = calendar.opt('eventSourceSuccess'); - var calSuccessRes; - var sourceSuccessRes; - if (eventSource.success) { - sourceSuccessRes = eventSource.success(rawEvents, res.xhr); - } - if (calSuccess) { - calSuccessRes = calSuccess(rawEvents, res.xhr); - } - rawEvents = sourceSuccessRes || calSuccessRes || rawEvents; - calendar.dispatch({ - type: 'RECEIVE_EVENTS', - sourceId: eventSource.sourceId, - fetchId: fetchId, - fetchRange: fetchRange, - rawEvents: rawEvents - }); - }, function (error) { - var callFailure = calendar.opt('eventSourceFailure'); - console.warn(error.message, error); - if (eventSource.failure) { - eventSource.failure(error); - } - if (callFailure) { - callFailure(error); - } - calendar.dispatch({ - type: 'RECEIVE_EVENT_ERROR', - sourceId: eventSource.sourceId, - fetchId: fetchId, - fetchRange: fetchRange, - error: error - }); - }); - return __assign({}, eventSource, { isFetching: true, latestFetchId: fetchId }); -} -function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) { - var _a; - var eventSource = sourceHash[sourceId]; - if (eventSource && // not already removed - fetchId === eventSource.latestFetchId) { - return __assign({}, sourceHash, (_a = {}, _a[sourceId] = __assign({}, eventSource, { isFetching: false, fetchRange: fetchRange }), _a)); - } - return sourceHash; -} -function excludeStaticSources(eventSources, calendar) { - return filterHash(eventSources, function (eventSource) { - return doesSourceNeedRange(eventSource, calendar); - }); -} - -var DateProfileGenerator = /** @class */ (function () { - function DateProfileGenerator(viewSpec, calendar) { - this.viewSpec = viewSpec; - this.options = viewSpec.options; - this.dateEnv = calendar.dateEnv; - this.calendar = calendar; - this.initHiddenDays(); - } - /* Date Range Computation - ------------------------------------------------------------------------------------------------------------------*/ - // Builds a structure with info about what the dates/ranges will be for the "prev" view. - DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate) { - var dateEnv = this.dateEnv; - var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month - currentDateProfile.dateIncrement); - return this.build(prevDate, -1); - }; - // Builds a structure with info about what the dates/ranges will be for the "next" view. - DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate) { - var dateEnv = this.dateEnv; - var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month - currentDateProfile.dateIncrement); - return this.build(nextDate, 1); - }; - // Builds a structure holding dates/ranges for rendering around the given date. - // Optional direction param indicates whether the date is being incremented/decremented - // from its previous value. decremented = -1, incremented = 1 (default). - DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) { - if (forceToValid === void 0) { forceToValid = false; } - var validRange; - var minTime = null; - var maxTime = null; - var currentInfo; - var isRangeAllDay; - var renderRange; - var activeRange; - var isValid; - validRange = this.buildValidRange(); - validRange = this.trimHiddenDays(validRange); - if (forceToValid) { - currentDate = constrainMarkerToRange(currentDate, validRange); - } - currentInfo = this.buildCurrentRangeInfo(currentDate, direction); - isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit); - renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay); - renderRange = this.trimHiddenDays(renderRange); - activeRange = renderRange; - if (!this.options.showNonCurrentDates) { - activeRange = intersectRanges(activeRange, currentInfo.range); - } - minTime = createDuration(this.options.minTime); - maxTime = createDuration(this.options.maxTime); - activeRange = this.adjustActiveRange(activeRange, minTime, maxTime); - activeRange = intersectRanges(activeRange, validRange); // might return null - // it's invalid if the originally requested date is not contained, - // or if the range is completely outside of the valid range. - isValid = rangesIntersect(currentInfo.range, validRange); - return { - // constraint for where prev/next operations can go and where events can be dragged/resized to. - // an object with optional start and end properties. - validRange: validRange, - // range the view is formally responsible for. - // for example, a month view might have 1st-31st, excluding padded dates - currentRange: currentInfo.range, - // name of largest unit being displayed, like "month" or "week" - currentRangeUnit: currentInfo.unit, - isRangeAllDay: isRangeAllDay, - // dates that display events and accept drag-n-drop - // will be `null` if no dates accept events - activeRange: activeRange, - // date range with a rendered skeleton - // includes not-active days that need some sort of DOM - renderRange: renderRange, - // Duration object that denotes the first visible time of any given day - minTime: minTime, - // Duration object that denotes the exclusive visible end time of any given day - maxTime: maxTime, - isValid: isValid, - // how far the current date will move for a prev/next operation - dateIncrement: this.buildDateIncrement(currentInfo.duration) - // pass a fallback (might be null) ^ - }; - }; - // Builds an object with optional start/end properties. - // Indicates the minimum/maximum dates to display. - // not responsible for trimming hidden days. - DateProfileGenerator.prototype.buildValidRange = function () { - return this.getRangeOption('validRange', this.calendar.getNow()) || - { start: null, end: null }; // completely open-ended - }; - // Builds a structure with info about the "current" range, the range that is - // highlighted as being the current month for example. - // See build() for a description of `direction`. - // Guaranteed to have `range` and `unit` properties. `duration` is optional. - DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) { - var _a = this, viewSpec = _a.viewSpec, dateEnv = _a.dateEnv; - var duration = null; - var unit = null; - var range = null; - var dayCount; - if (viewSpec.duration) { - duration = viewSpec.duration; - unit = viewSpec.durationUnit; - range = this.buildRangeFromDuration(date, direction, duration, unit); - } - else if ((dayCount = this.options.dayCount)) { - unit = 'day'; - range = this.buildRangeFromDayCount(date, direction, dayCount); - } - else if ((range = this.buildCustomVisibleRange(date))) { - unit = dateEnv.greatestWholeUnit(range.start, range.end).unit; - } - else { - duration = this.getFallbackDuration(); - unit = greatestDurationDenominator(duration).unit; - range = this.buildRangeFromDuration(date, direction, duration, unit); - } - return { duration: duration, unit: unit, range: range }; - }; - DateProfileGenerator.prototype.getFallbackDuration = function () { - return createDuration({ day: 1 }); - }; - // Returns a new activeRange to have time values (un-ambiguate) - // minTime or maxTime causes the range to expand. - DateProfileGenerator.prototype.adjustActiveRange = function (range, minTime, maxTime) { - var dateEnv = this.dateEnv; - var start = range.start; - var end = range.end; - if (this.viewSpec.class.prototype.usesMinMaxTime) { - // expand active range if minTime is negative (why not when positive?) - if (asRoughDays(minTime) < 0) { - start = startOfDay(start); // necessary? - start = dateEnv.add(start, minTime); - } - // expand active range if maxTime is beyond one day (why not when positive?) - if (asRoughDays(maxTime) > 1) { - end = startOfDay(end); // necessary? - end = addDays(end, -1); - end = dateEnv.add(end, maxTime); - } - } - return { start: start, end: end }; - }; - // Builds the "current" range when it is specified as an explicit duration. - // `unit` is the already-computed greatestDurationDenominator unit of duration. - DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) { - var dateEnv = this.dateEnv; - var alignment = this.options.dateAlignment; - var dateIncrementInput; - var dateIncrementDuration; - var start; - var end; - var res; - // compute what the alignment should be - if (!alignment) { - dateIncrementInput = this.options.dateIncrement; - if (dateIncrementInput) { - dateIncrementDuration = createDuration(dateIncrementInput); - // use the smaller of the two units - if (asRoughMs(dateIncrementDuration) < asRoughMs(duration)) { - alignment = greatestDurationDenominator(dateIncrementDuration, !getWeeksFromInput(dateIncrementInput)).unit; - } - else { - alignment = unit; - } - } - else { - alignment = unit; - } - } - // if the view displays a single day or smaller - if (asRoughDays(duration) <= 1) { - if (this.isHiddenDay(start)) { - start = this.skipHiddenDays(start, direction); - start = startOfDay(start); - } - } - function computeRes() { - start = dateEnv.startOf(date, alignment); - end = dateEnv.add(start, duration); - res = { start: start, end: end }; - } - computeRes(); - // if range is completely enveloped by hidden days, go past the hidden days - if (!this.trimHiddenDays(res)) { - date = this.skipHiddenDays(date, direction); - computeRes(); - } - return res; - }; - // Builds the "current" range when a dayCount is specified. - DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) { - var dateEnv = this.dateEnv; - var customAlignment = this.options.dateAlignment; - var runningCount = 0; - var start = date; - var end; - if (customAlignment) { - start = dateEnv.startOf(start, customAlignment); - } - start = startOfDay(start); - start = this.skipHiddenDays(start, direction); - end = start; - do { - end = addDays(end, 1); - if (!this.isHiddenDay(end)) { - runningCount++; - } - } while (runningCount < dayCount); - return { start: start, end: end }; - }; - // Builds a normalized range object for the "visible" range, - // which is a way to define the currentRange and activeRange at the same time. - DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) { - var dateEnv = this.dateEnv; - var visibleRange = this.getRangeOption('visibleRange', dateEnv.toDate(date)); - if (visibleRange && (visibleRange.start == null || visibleRange.end == null)) { - return null; - } - return visibleRange; - }; - // Computes the range that will represent the element/cells for *rendering*, - // but which may have voided days/times. - // not responsible for trimming hidden days. - DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { - return currentRange; - }; - // Compute the duration value that should be added/substracted to the current date - // when a prev/next operation happens. - DateProfileGenerator.prototype.buildDateIncrement = function (fallback) { - var dateIncrementInput = this.options.dateIncrement; - var customAlignment; - if (dateIncrementInput) { - return createDuration(dateIncrementInput); - } - else if ((customAlignment = this.options.dateAlignment)) { - return createDuration(1, customAlignment); - } - else if (fallback) { - return fallback; - } - else { - return createDuration({ days: 1 }); - } - }; - // Arguments after name will be forwarded to a hypothetical function value - // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects. - // Always clone your objects if you fear mutation. - DateProfileGenerator.prototype.getRangeOption = function (name) { - var otherArgs = []; - for (var _i = 1; _i < arguments.length; _i++) { - otherArgs[_i - 1] = arguments[_i]; - } - var val = this.options[name]; - if (typeof val === 'function') { - val = val.apply(null, otherArgs); - } - if (val) { - val = parseRange(val, this.dateEnv); - } - if (val) { - val = computeVisibleDayRange(val); - } - return val; - }; - /* Hidden Days - ------------------------------------------------------------------------------------------------------------------*/ - // Initializes internal variables related to calculating hidden days-of-week - DateProfileGenerator.prototype.initHiddenDays = function () { - var hiddenDays = this.options.hiddenDays || []; // array of day-of-week indices that are hidden - var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) - var dayCnt = 0; - var i; - if (this.options.weekends === false) { - hiddenDays.push(0, 6); // 0=sunday, 6=saturday - } - for (i = 0; i < 7; i++) { - if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) { - dayCnt++; - } - } - if (!dayCnt) { - throw new Error('invalid hiddenDays'); // all days were hidden? bad. - } - this.isHiddenDayHash = isHiddenDayHash; - }; - // Remove days from the beginning and end of the range that are computed as hidden. - // If the whole range is trimmed off, returns null - DateProfileGenerator.prototype.trimHiddenDays = function (range) { - var start = range.start; - var end = range.end; - if (start) { - start = this.skipHiddenDays(start); - } - if (end) { - end = this.skipHiddenDays(end, -1, true); - } - if (start == null || end == null || start < end) { - return { start: start, end: end }; - } - return null; - }; - // Is the current day hidden? - // `day` is a day-of-week index (0-6), or a Date (used for UTC) - DateProfileGenerator.prototype.isHiddenDay = function (day) { - if (day instanceof Date) { - day = day.getUTCDay(); - } - return this.isHiddenDayHash[day]; - }; - // Incrementing the current day until it is no longer a hidden day, returning a copy. - // DOES NOT CONSIDER validRange! - // If the initial value of `date` is not a hidden day, don't do anything. - // Pass `isExclusive` as `true` if you are dealing with an end date. - // `inc` defaults to `1` (increment one day forward each time) - DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) { - if (inc === void 0) { inc = 1; } - if (isExclusive === void 0) { isExclusive = false; } - while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) { - date = addDays(date, inc); - } - return date; - }; - return DateProfileGenerator; -}()); -// TODO: find a way to avoid comparing DateProfiles. it's tedious -function isDateProfilesEqual(p0, p1) { - return rangesEqual(p0.validRange, p1.validRange) && - rangesEqual(p0.activeRange, p1.activeRange) && - rangesEqual(p0.renderRange, p1.renderRange) && - durationsEqual(p0.minTime, p1.minTime) && - durationsEqual(p0.maxTime, p1.maxTime); - /* - TODO: compare more? - currentRange: DateRange - currentRangeUnit: string - isRangeAllDay: boolean - isValid: boolean - dateIncrement: Duration - */ -} - -function reduce (state, action, calendar) { - var viewType = reduceViewType(state.viewType, action); - var dateProfile = reduceDateProfile(state.dateProfile, action, state.currentDate, viewType, calendar); - var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendar); - var nextState = __assign({}, state, { viewType: viewType, - dateProfile: dateProfile, currentDate: reduceCurrentDate(state.currentDate, action, dateProfile), eventSources: eventSources, eventStore: reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendar), dateSelection: reduceDateSelection(state.dateSelection, action, calendar), eventSelection: reduceSelectedEvent(state.eventSelection, action), eventDrag: reduceEventDrag(state.eventDrag, action, eventSources, calendar), eventResize: reduceEventResize(state.eventResize, action, eventSources, calendar), eventSourceLoadingLevel: computeLoadingLevel(eventSources), loadingLevel: computeLoadingLevel(eventSources) }); - for (var _i = 0, _a = calendar.pluginSystem.hooks.reducers; _i < _a.length; _i++) { - var reducerFunc = _a[_i]; - nextState = reducerFunc(nextState, action, calendar); - } - // console.log(action.type, nextState) - return nextState; -} -function reduceViewType(currentViewType, action) { - switch (action.type) { - case 'SET_VIEW_TYPE': - return action.viewType; - default: - return currentViewType; - } -} -function reduceDateProfile(currentDateProfile, action, currentDate, viewType, calendar) { - var newDateProfile; - switch (action.type) { - case 'PREV': - newDateProfile = calendar.dateProfileGenerators[viewType].buildPrev(currentDateProfile, currentDate); - break; - case 'NEXT': - newDateProfile = calendar.dateProfileGenerators[viewType].buildNext(currentDateProfile, currentDate); - break; - case 'SET_DATE': - if (!currentDateProfile.activeRange || - !rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)) { - newDateProfile = calendar.dateProfileGenerators[viewType].build(action.dateMarker, undefined, true // forceToValid - ); - } - break; - case 'SET_VIEW_TYPE': - var generator = calendar.dateProfileGenerators[viewType]; - if (!generator) { - throw new Error(viewType ? - 'The FullCalendar view "' + viewType + '" does not exist. Make sure your plugins are loaded correctly.' : - 'No available FullCalendar view plugins.'); - } - newDateProfile = generator.build(action.dateMarker || currentDate, undefined, true // forceToValid - ); - break; - } - if (newDateProfile && - newDateProfile.isValid && - !(currentDateProfile && isDateProfilesEqual(currentDateProfile, newDateProfile))) { - return newDateProfile; - } - else { - return currentDateProfile; - } -} -function reduceCurrentDate(currentDate, action, dateProfile) { - switch (action.type) { - case 'PREV': - case 'NEXT': - if (!rangeContainsMarker(dateProfile.currentRange, currentDate)) { - return dateProfile.currentRange.start; - } - else { - return currentDate; - } - case 'SET_DATE': - case 'SET_VIEW_TYPE': - var newDate = action.dateMarker || currentDate; - if (dateProfile.activeRange && !rangeContainsMarker(dateProfile.activeRange, newDate)) { - return dateProfile.currentRange.start; - } - else { - return newDate; - } - default: - return currentDate; - } -} -function reduceDateSelection(currentSelection, action, calendar) { - switch (action.type) { - case 'SELECT_DATES': - return action.selection; - case 'UNSELECT_DATES': - return null; - default: - return currentSelection; - } -} -function reduceSelectedEvent(currentInstanceId, action) { - switch (action.type) { - case 'SELECT_EVENT': - return action.eventInstanceId; - case 'UNSELECT_EVENT': - return ''; - default: - return currentInstanceId; - } -} -function reduceEventDrag(currentDrag, action, sources, calendar) { - switch (action.type) { - case 'SET_EVENT_DRAG': - var newDrag = action.state; - return { - affectedEvents: newDrag.affectedEvents, - mutatedEvents: newDrag.mutatedEvents, - isEvent: newDrag.isEvent, - origSeg: newDrag.origSeg - }; - case 'UNSET_EVENT_DRAG': - return null; - default: - return currentDrag; - } -} -function reduceEventResize(currentResize, action, sources, calendar) { - switch (action.type) { - case 'SET_EVENT_RESIZE': - var newResize = action.state; - return { - affectedEvents: newResize.affectedEvents, - mutatedEvents: newResize.mutatedEvents, - isEvent: newResize.isEvent, - origSeg: newResize.origSeg - }; - case 'UNSET_EVENT_RESIZE': - return null; - default: - return currentResize; - } -} -function computeLoadingLevel(eventSources) { - var cnt = 0; - for (var sourceId in eventSources) { - if (eventSources[sourceId].isFetching) { - cnt++; - } - } - return cnt; -} - -var STANDARD_PROPS = { - start: null, - end: null, - allDay: Boolean -}; -function parseDateSpan(raw, dateEnv, defaultDuration) { - var span = parseOpenDateSpan(raw, dateEnv); - var range = span.range; - if (!range.start) { - return null; - } - if (!range.end) { - if (defaultDuration == null) { - return null; - } - else { - range.end = dateEnv.add(range.start, defaultDuration); - } - } - return span; -} -/* -TODO: somehow combine with parseRange? -Will return null if the start/end props were present but parsed invalidly. -*/ -function parseOpenDateSpan(raw, dateEnv) { - var leftovers = {}; - var standardProps = refineProps(raw, STANDARD_PROPS, {}, leftovers); - var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null; - var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null; - var allDay = standardProps.allDay; - if (allDay == null) { - allDay = (startMeta && startMeta.isTimeUnspecified) && - (!endMeta || endMeta.isTimeUnspecified); - } - // use this leftover object as the selection object - leftovers.range = { - start: startMeta ? startMeta.marker : null, - end: endMeta ? endMeta.marker : null - }; - leftovers.allDay = allDay; - return leftovers; -} -function isDateSpansEqual(span0, span1) { - return rangesEqual(span0.range, span1.range) && - span0.allDay === span1.allDay && - isSpanPropsEqual(span0, span1); -} -// the NON-DATE-RELATED props -function isSpanPropsEqual(span0, span1) { - for (var propName in span1) { - if (propName !== 'range' && propName !== 'allDay') { - if (span0[propName] !== span1[propName]) { - return false; - } - } - } - // are there any props that span0 has that span1 DOESN'T have? - // both have range/allDay, so no need to special-case. - for (var propName in span0) { - if (!(propName in span1)) { - return false; - } - } - return true; -} -function buildDateSpanApi(span, dateEnv) { - return { - start: dateEnv.toDate(span.range.start), - end: dateEnv.toDate(span.range.end), - startStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }), - endStr: dateEnv.formatIso(span.range.end, { omitTime: span.allDay }), - allDay: span.allDay - }; -} -function buildDatePointApi(span, dateEnv) { - return { - date: dateEnv.toDate(span.range.start), - dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }), - allDay: span.allDay - }; -} -function fabricateEventRange(dateSpan, eventUiBases, calendar) { - var def = parseEventDef({ editable: false }, '', // sourceId - dateSpan.allDay, true, // hasEnd - calendar); - return { - def: def, - ui: compileEventUi(def, eventUiBases), - instance: createEventInstance(def.defId, dateSpan.range), - range: dateSpan.range, - isStart: true, - isEnd: true - }; -} - -function compileViewDefs(defaultConfigs, overrideConfigs) { - var hash = {}; - var viewType; - for (viewType in defaultConfigs) { - ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); - } - for (viewType in overrideConfigs) { - ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); - } - return hash; -} -function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) { - if (hash[viewType]) { - return hash[viewType]; - } - var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs); - if (viewDef) { - hash[viewType] = viewDef; - } - return viewDef; -} -function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) { - var defaultConfig = defaultConfigs[viewType]; - var overrideConfig = overrideConfigs[viewType]; - var queryProp = function (name) { - return (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] : - ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null); - }; - var theClass = queryProp('class'); - var superType = queryProp('superType'); - if (!superType && theClass) { - superType = - findViewNameBySubclass(theClass, overrideConfigs) || - findViewNameBySubclass(theClass, defaultConfigs); - } - var superDef = null; - if (superType) { - if (superType === viewType) { - throw new Error('Can\'t have a custom view type that references itself'); - } - superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs); - } - if (!theClass && superDef) { - theClass = superDef.class; - } - if (!theClass) { - return null; // don't throw a warning, might be settings for a single-unit view - } - return { - type: viewType, - class: theClass, - defaults: __assign({}, (superDef ? superDef.defaults : {}), (defaultConfig ? defaultConfig.options : {})), - overrides: __assign({}, (superDef ? superDef.overrides : {}), (overrideConfig ? overrideConfig.options : {})) - }; -} -function findViewNameBySubclass(viewSubclass, configs) { - var superProto = Object.getPrototypeOf(viewSubclass.prototype); - for (var viewType in configs) { - var parsed = configs[viewType]; - // need DIRECT subclass, so instanceof won't do it - if (parsed.class && parsed.class.prototype === superProto) { - return viewType; - } - } - return ''; -} - -function parseViewConfigs(inputs) { - return mapHash(inputs, parseViewConfig); -} -var VIEW_DEF_PROPS = { - type: String, - class: null -}; -function parseViewConfig(input) { - if (typeof input === 'function') { - input = { class: input }; - } - var options = {}; - var props = refineProps(input, VIEW_DEF_PROPS, {}, options); - return { - superType: props.type, - class: props.class, - options: options - }; -} - -function buildViewSpecs(defaultInputs, optionsManager) { - var defaultConfigs = parseViewConfigs(defaultInputs); - var overrideConfigs = parseViewConfigs(optionsManager.overrides.views); - var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs); - return mapHash(viewDefs, function (viewDef) { - return buildViewSpec(viewDef, overrideConfigs, optionsManager); - }); -} -function buildViewSpec(viewDef, overrideConfigs, optionsManager) { - var durationInput = viewDef.overrides.duration || - viewDef.defaults.duration || - optionsManager.dynamicOverrides.duration || - optionsManager.overrides.duration; - var duration = null; - var durationUnit = ''; - var singleUnit = ''; - var singleUnitOverrides = {}; - if (durationInput) { - duration = createDuration(durationInput); - if (duration) { // valid? - var denom = greatestDurationDenominator(duration, !getWeeksFromInput(durationInput)); - durationUnit = denom.unit; - if (denom.value === 1) { - singleUnit = durationUnit; - singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].options : {}; - } - } - } - var queryButtonText = function (options) { - var buttonTextMap = options.buttonText || {}; - var buttonTextKey = viewDef.defaults.buttonTextKey; - if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) { - return buttonTextMap[buttonTextKey]; - } - if (buttonTextMap[viewDef.type] != null) { - return buttonTextMap[viewDef.type]; - } - if (buttonTextMap[singleUnit] != null) { - return buttonTextMap[singleUnit]; - } - }; - return { - type: viewDef.type, - class: viewDef.class, - duration: duration, - durationUnit: durationUnit, - singleUnit: singleUnit, - options: __assign({}, globalDefaults, viewDef.defaults, optionsManager.dirDefaults, optionsManager.localeDefaults, optionsManager.overrides, singleUnitOverrides, viewDef.overrides, optionsManager.dynamicOverrides), - buttonTextOverride: queryButtonText(optionsManager.dynamicOverrides) || - queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence - viewDef.overrides.buttonText, - buttonTextDefault: queryButtonText(optionsManager.localeDefaults) || - queryButtonText(optionsManager.dirDefaults) || - viewDef.defaults.buttonText || - queryButtonText(globalDefaults) || - viewDef.type // fall back to given view name - }; -} - -var Toolbar = /** @class */ (function (_super) { - __extends(Toolbar, _super); - function Toolbar(context, extraClassName) { - var _this = _super.call(this, context) || this; - _this._renderLayout = memoizeRendering(_this.renderLayout, _this.unrenderLayout); - _this._updateTitle = memoizeRendering(_this.updateTitle, null, [_this._renderLayout]); - _this._updateActiveButton = memoizeRendering(_this.updateActiveButton, null, [_this._renderLayout]); - _this._updateToday = memoizeRendering(_this.updateToday, null, [_this._renderLayout]); - _this._updatePrev = memoizeRendering(_this.updatePrev, null, [_this._renderLayout]); - _this._updateNext = memoizeRendering(_this.updateNext, null, [_this._renderLayout]); - _this.el = createElement('div', { className: 'fc-toolbar ' + extraClassName }); - return _this; - } - Toolbar.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this._renderLayout.unrender(); // should unrender everything else - removeElement(this.el); - }; - Toolbar.prototype.render = function (props) { - this._renderLayout(props.layout); - this._updateTitle(props.title); - this._updateActiveButton(props.activeButton); - this._updateToday(props.isTodayEnabled); - this._updatePrev(props.isPrevEnabled); - this._updateNext(props.isNextEnabled); - }; - Toolbar.prototype.renderLayout = function (layout) { - var el = this.el; - this.viewsWithButtons = []; - appendToElement(el, this.renderSection('left', layout.left)); - appendToElement(el, this.renderSection('center', layout.center)); - appendToElement(el, this.renderSection('right', layout.right)); - }; - Toolbar.prototype.unrenderLayout = function () { - this.el.innerHTML = ''; - }; - Toolbar.prototype.renderSection = function (position, buttonStr) { - var _this = this; - var _a = this, theme = _a.theme, calendar = _a.calendar; - var optionsManager = calendar.optionsManager; - var viewSpecs = calendar.viewSpecs; - var sectionEl = createElement('div', { className: 'fc-' + position }); - var calendarCustomButtons = optionsManager.computed.customButtons || {}; - var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {}; - var calendarButtonText = optionsManager.computed.buttonText || {}; - if (buttonStr) { - buttonStr.split(' ').forEach(function (buttonGroupStr, i) { - var groupChildren = []; - var isOnlyButtons = true; - var groupEl; - buttonGroupStr.split(',').forEach(function (buttonName, j) { - var customButtonProps; - var viewSpec; - var buttonClick; - var buttonIcon; // only one of these will be set - var buttonText; // " - var buttonInnerHtml; - var buttonClasses; - var buttonEl; - var buttonAriaAttr; - if (buttonName === 'title') { - groupChildren.push(htmlToElement('

       

      ')); // we always want it to take up height - isOnlyButtons = false; - } - else { - if ((customButtonProps = calendarCustomButtons[buttonName])) { - buttonClick = function (ev) { - if (customButtonProps.click) { - customButtonProps.click.call(buttonEl, ev); - } - }; - (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = customButtonProps.text); - } - else if ((viewSpec = viewSpecs[buttonName])) { - _this.viewsWithButtons.push(buttonName); - buttonClick = function () { - calendar.changeView(buttonName); - }; - (buttonText = viewSpec.buttonTextOverride) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = viewSpec.buttonTextDefault); - } - else if (calendar[buttonName]) { // a calendar method - buttonClick = function () { - calendar[buttonName](); - }; - (buttonText = calendarButtonTextOverrides[buttonName]) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = calendarButtonText[buttonName]); - // ^ everything else is considered default - } - if (buttonClick) { - buttonClasses = [ - 'fc-' + buttonName + '-button', - theme.getClass('button') - ]; - if (buttonText) { - buttonInnerHtml = htmlEscape(buttonText); - buttonAriaAttr = ''; - } - else if (buttonIcon) { - buttonInnerHtml = ""; - buttonAriaAttr = ' aria-label="' + buttonName + '"'; - } - buttonEl = htmlToElement(// type="button" so that it doesn't submit a form - ''); - buttonEl.addEventListener('click', buttonClick); - groupChildren.push(buttonEl); - } - } - }); - if (groupChildren.length > 1) { - groupEl = document.createElement('div'); - var buttonGroupClassName = theme.getClass('buttonGroup'); - if (isOnlyButtons && buttonGroupClassName) { - groupEl.classList.add(buttonGroupClassName); - } - appendToElement(groupEl, groupChildren); - sectionEl.appendChild(groupEl); - } - else { - appendToElement(sectionEl, groupChildren); // 1 or 0 children - } - }); - } - return sectionEl; - }; - Toolbar.prototype.updateToday = function (isTodayEnabled) { - this.toggleButtonEnabled('today', isTodayEnabled); - }; - Toolbar.prototype.updatePrev = function (isPrevEnabled) { - this.toggleButtonEnabled('prev', isPrevEnabled); - }; - Toolbar.prototype.updateNext = function (isNextEnabled) { - this.toggleButtonEnabled('next', isNextEnabled); - }; - Toolbar.prototype.updateTitle = function (text) { - findElements(this.el, 'h2').forEach(function (titleEl) { - titleEl.innerText = text; - }); - }; - Toolbar.prototype.updateActiveButton = function (buttonName) { - var className = this.theme.getClass('buttonActive'); - findElements(this.el, 'button').forEach(function (buttonEl) { - if (buttonName && buttonEl.classList.contains('fc-' + buttonName + '-button')) { - buttonEl.classList.add(className); - } - else { - buttonEl.classList.remove(className); - } - }); - }; - Toolbar.prototype.toggleButtonEnabled = function (buttonName, bool) { - findElements(this.el, '.fc-' + buttonName + '-button').forEach(function (buttonEl) { - buttonEl.disabled = !bool; - }); - }; - return Toolbar; -}(Component)); - -var CalendarComponent = /** @class */ (function (_super) { - __extends(CalendarComponent, _super); - function CalendarComponent(context, el) { - var _this = _super.call(this, context) || this; - _this._renderToolbars = memoizeRendering(_this.renderToolbars); - _this.buildViewPropTransformers = memoize(buildViewPropTransformers); - _this.el = el; - prependToElement(el, _this.contentEl = createElement('div', { className: 'fc-view-container' })); - var calendar = _this.calendar; - for (var _i = 0, _a = calendar.pluginSystem.hooks.viewContainerModifiers; _i < _a.length; _i++) { - var modifyViewContainer = _a[_i]; - modifyViewContainer(_this.contentEl, calendar); - } - _this.toggleElClassNames(true); - _this.computeTitle = memoize(computeTitle); - _this.parseBusinessHours = memoize(function (input) { - return parseBusinessHours(input, _this.calendar); - }); - return _this; - } - CalendarComponent.prototype.destroy = function () { - if (this.header) { - this.header.destroy(); - } - if (this.footer) { - this.footer.destroy(); - } - if (this.view) { - this.view.destroy(); - } - removeElement(this.contentEl); - this.toggleElClassNames(false); - _super.prototype.destroy.call(this); - }; - CalendarComponent.prototype.toggleElClassNames = function (bool) { - var classList = this.el.classList; - var dirClassName = 'fc-' + this.opt('dir'); - var themeClassName = this.theme.getClass('widget'); - if (bool) { - classList.add('fc'); - classList.add(dirClassName); - classList.add(themeClassName); - } - else { - classList.remove('fc'); - classList.remove(dirClassName); - classList.remove(themeClassName); - } - }; - CalendarComponent.prototype.render = function (props) { - this.freezeHeight(); - var title = this.computeTitle(props.dateProfile, props.viewSpec.options); - this._renderToolbars(props.viewSpec, props.dateProfile, props.currentDate, props.dateProfileGenerator, title); - this.renderView(props, title); - this.updateSize(); - this.thawHeight(); - }; - CalendarComponent.prototype.renderToolbars = function (viewSpec, dateProfile, currentDate, dateProfileGenerator, title) { - var headerLayout = this.opt('header'); - var footerLayout = this.opt('footer'); - var now = this.calendar.getNow(); - var todayInfo = dateProfileGenerator.build(now); - var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate); - var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate); - var toolbarProps = { - title: title, - activeButton: viewSpec.type, - isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now), - isPrevEnabled: prevInfo.isValid, - isNextEnabled: nextInfo.isValid - }; - if (headerLayout) { - if (!this.header) { - this.header = new Toolbar(this.context, 'fc-header-toolbar'); - prependToElement(this.el, this.header.el); - } - this.header.receiveProps(__assign({ layout: headerLayout }, toolbarProps)); - } - else if (this.header) { - this.header.destroy(); - this.header = null; - } - if (footerLayout) { - if (!this.footer) { - this.footer = new Toolbar(this.context, 'fc-footer-toolbar'); - appendToElement(this.el, this.footer.el); - } - this.footer.receiveProps(__assign({ layout: footerLayout }, toolbarProps)); - } - else if (this.footer) { - this.footer.destroy(); - this.footer = null; - } - }; - CalendarComponent.prototype.renderView = function (props, title) { - var view = this.view; - var viewSpec = props.viewSpec, dateProfileGenerator = props.dateProfileGenerator; - if (!view || view.viewSpec !== viewSpec) { - if (view) { - view.destroy(); - } - view = this.view = new viewSpec['class']({ - calendar: this.calendar, - view: null, - dateEnv: this.dateEnv, - theme: this.theme, - options: viewSpec.options - }, viewSpec, dateProfileGenerator, this.contentEl); - } - else { - view.addScroll(view.queryScroll()); - } - view.title = title; // for the API - var viewProps = { - dateProfile: props.dateProfile, - businessHours: this.parseBusinessHours(viewSpec.options.businessHours), - eventStore: props.eventStore, - eventUiBases: props.eventUiBases, - dateSelection: props.dateSelection, - eventSelection: props.eventSelection, - eventDrag: props.eventDrag, - eventResize: props.eventResize - }; - var transformers = this.buildViewPropTransformers(this.calendar.pluginSystem.hooks.viewPropsTransformers); - for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { - var transformer = transformers_1[_i]; - __assign(viewProps, transformer.transform(viewProps, viewSpec, props, view)); - } - view.receiveProps(viewProps); - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - CalendarComponent.prototype.updateSize = function (isResize) { - if (isResize === void 0) { isResize = false; } - var view = this.view; - if (isResize) { - view.addScroll(view.queryScroll()); - } - if (isResize || this.isHeightAuto == null) { - this.computeHeightVars(); - } - view.updateSize(isResize, this.viewHeight, this.isHeightAuto); - view.updateNowIndicator(); // we need to guarantee this will run after updateSize - view.popScroll(isResize); - }; - CalendarComponent.prototype.computeHeightVars = function () { - var calendar = this.calendar; // yuck. need to handle dynamic options - var heightInput = calendar.opt('height'); - var contentHeightInput = calendar.opt('contentHeight'); - this.isHeightAuto = heightInput === 'auto' || contentHeightInput === 'auto'; - if (typeof contentHeightInput === 'number') { // exists and not 'auto' - this.viewHeight = contentHeightInput; - } - else if (typeof contentHeightInput === 'function') { // exists and is a function - this.viewHeight = contentHeightInput(); - } - else if (typeof heightInput === 'number') { // exists and not 'auto' - this.viewHeight = heightInput - this.queryToolbarsHeight(); - } - else if (typeof heightInput === 'function') { // exists and is a function - this.viewHeight = heightInput() - this.queryToolbarsHeight(); - } - else if (heightInput === 'parent') { // set to height of parent element - var parentEl = this.el.parentNode; - this.viewHeight = parentEl.getBoundingClientRect().height - this.queryToolbarsHeight(); - } - else { - this.viewHeight = Math.round(this.contentEl.getBoundingClientRect().width / - Math.max(calendar.opt('aspectRatio'), .5)); - } - }; - CalendarComponent.prototype.queryToolbarsHeight = function () { - var height = 0; - if (this.header) { - height += computeHeightAndMargins(this.header.el); - } - if (this.footer) { - height += computeHeightAndMargins(this.footer.el); - } - return height; - }; - // Height "Freezing" - // ----------------------------------------------------------------------------------------------------------------- - CalendarComponent.prototype.freezeHeight = function () { - applyStyle(this.el, { - height: this.el.getBoundingClientRect().height, - overflow: 'hidden' - }); - }; - CalendarComponent.prototype.thawHeight = function () { - applyStyle(this.el, { - height: '', - overflow: '' - }); - }; - return CalendarComponent; -}(Component)); -// Title and Date Formatting -// ----------------------------------------------------------------------------------------------------------------- -// Computes what the title at the top of the calendar should be for this view -function computeTitle(dateProfile, viewOptions) { - var range; - // for views that span a large unit of time, show the proper interval, ignoring stray days before and after - if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) { - range = dateProfile.currentRange; - } - else { // for day units or smaller, use the actual day range - range = dateProfile.activeRange; - } - return this.dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || computeTitleFormat(dateProfile), viewOptions.titleRangeSeparator), { isEndExclusive: dateProfile.isRangeAllDay }); -} -// Generates the format string that should be used to generate the title for the current date range. -// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. -function computeTitleFormat(dateProfile) { - var currentRangeUnit = dateProfile.currentRangeUnit; - if (currentRangeUnit === 'year') { - return { year: 'numeric' }; - } - else if (currentRangeUnit === 'month') { - return { year: 'numeric', month: 'long' }; // like "September 2014" - } - else { - var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end); - if (days !== null && days > 1) { - // multi-day range. shorter, like "Sep 9 - 10 2014" - return { year: 'numeric', month: 'short', day: 'numeric' }; - } - else { - // one day. longer, like "September 9 2014" - return { year: 'numeric', month: 'long', day: 'numeric' }; - } - } -} -// Plugin -// ----------------------------------------------------------------------------------------------------------------- -function buildViewPropTransformers(theClasses) { - return theClasses.map(function (theClass) { - return new theClass(); - }); -} - -var Interaction = /** @class */ (function () { - function Interaction(settings) { - this.component = settings.component; - } - Interaction.prototype.destroy = function () { - }; - return Interaction; -}()); -function parseInteractionSettings(component, input) { - return { - component: component, - el: input.el, - useEventCenter: input.useEventCenter != null ? input.useEventCenter : true - }; -} -function interactionSettingsToStore(settings) { - var _a; - return _a = {}, - _a[settings.component.uid] = settings, - _a; -} -// global state -var interactionSettingsStore = {}; - -/* -Detects when the user clicks on an event within a DateComponent -*/ -var EventClicking = /** @class */ (function (_super) { - __extends(EventClicking, _super); - function EventClicking(settings) { - var _this = _super.call(this, settings) || this; - _this.handleSegClick = function (ev, segEl) { - var component = _this.component; - var seg = getElSeg(segEl); - if (seg && // might be the
      surrounding the more link - component.isValidSegDownEl(ev.target)) { - // our way to simulate a link click for elements that can't be tags - // grab before trigger fired in case trigger trashes DOM thru rerendering - var hasUrlContainer = elementClosest(ev.target, '.fc-has-url'); - var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : ''; - component.publiclyTrigger('eventClick', [ - { - el: segEl, - event: new EventApi(component.calendar, seg.eventRange.def, seg.eventRange.instance), - jsEvent: ev, - view: component.view - } - ]); - if (url && !ev.defaultPrevented) { - window.location.href = url; - } - } - }; - var component = settings.component; - _this.destroy = listenBySelector(component.el, 'click', component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegClick); - return _this; - } - return EventClicking; -}(Interaction)); - -/* -Triggers events and adds/removes core classNames when the user's pointer -enters/leaves event-elements of a component. -*/ -var EventHovering = /** @class */ (function (_super) { - __extends(EventHovering, _super); - function EventHovering(settings) { - var _this = _super.call(this, settings) || this; - // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it - _this.handleEventElRemove = function (el) { - if (el === _this.currentSegEl) { - _this.handleSegLeave(null, _this.currentSegEl); - } - }; - _this.handleSegEnter = function (ev, segEl) { - if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper - segEl.classList.add('fc-allow-mouse-resize'); - _this.currentSegEl = segEl; - _this.triggerEvent('eventMouseEnter', ev, segEl); - } - }; - _this.handleSegLeave = function (ev, segEl) { - if (_this.currentSegEl) { - segEl.classList.remove('fc-allow-mouse-resize'); - _this.currentSegEl = null; - _this.triggerEvent('eventMouseLeave', ev, segEl); - } - }; - var component = settings.component; - _this.removeHoverListeners = listenToHoverBySelector(component.el, component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegEnter, _this.handleSegLeave); - component.calendar.on('eventElRemove', _this.handleEventElRemove); - return _this; - } - EventHovering.prototype.destroy = function () { - this.removeHoverListeners(); - this.component.calendar.off('eventElRemove', this.handleEventElRemove); - }; - EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) { - var component = this.component; - var seg = getElSeg(segEl); - if (!ev || component.isValidSegDownEl(ev.target)) { - component.publiclyTrigger(publicEvName, [ - { - el: segEl, - event: new EventApi(this.component.calendar, seg.eventRange.def, seg.eventRange.instance), - jsEvent: ev, - view: component.view - } - ]); - } - }; - return EventHovering; -}(Interaction)); - -var StandardTheme = /** @class */ (function (_super) { - __extends(StandardTheme, _super); - function StandardTheme() { - return _super !== null && _super.apply(this, arguments) || this; - } - return StandardTheme; -}(Theme)); -StandardTheme.prototype.classes = { - widget: 'fc-unthemed', - widgetHeader: 'fc-widget-header', - widgetContent: 'fc-widget-content', - buttonGroup: 'fc-button-group', - button: 'fc-button fc-button-primary', - buttonActive: 'fc-button-active', - popoverHeader: 'fc-widget-header', - popoverContent: 'fc-widget-content', - // day grid - headerRow: 'fc-widget-header', - dayRow: 'fc-widget-content', - // list view - listView: 'fc-widget-content' -}; -StandardTheme.prototype.baseIconClass = 'fc-icon'; -StandardTheme.prototype.iconClasses = { - close: 'fc-icon-x', - prev: 'fc-icon-chevron-left', - next: 'fc-icon-chevron-right', - prevYear: 'fc-icon-chevrons-left', - nextYear: 'fc-icon-chevrons-right' -}; -StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; -StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'; -StandardTheme.prototype.iconOverridePrefix = 'fc-icon-'; - -var Calendar = /** @class */ (function () { - function Calendar(el, overrides) { - var _this = this; - this.parseRawLocales = memoize(parseRawLocales); - this.buildLocale = memoize(buildLocale); - this.buildDateEnv = memoize(buildDateEnv); - this.buildTheme = memoize(buildTheme); - this.buildEventUiSingleBase = memoize(this._buildEventUiSingleBase); - this.buildSelectionConfig = memoize(this._buildSelectionConfig); - this.buildEventUiBySource = memoizeOutput(buildEventUiBySource, isPropsEqual); - this.buildEventUiBases = memoize(buildEventUiBases); - this.interactionsStore = {}; - this.actionQueue = []; - this.isReducing = false; - // isDisplaying: boolean = false // installed in DOM? accepting renders? - this.needsRerender = false; // needs a render? - this.needsFullRerender = false; - this.isRendering = false; // currently in the executeRender function? - this.renderingPauseDepth = 0; - this.buildDelayedRerender = memoize(buildDelayedRerender); - this.afterSizingTriggers = {}; - this.isViewUpdated = false; - this.isDatesUpdated = false; - this.isEventsUpdated = false; - this.el = el; - this.optionsManager = new OptionsManager(overrides || {}); - this.pluginSystem = new PluginSystem(); - // only do once. don't do in handleOptions. because can't remove plugins - this.addPluginInputs(this.optionsManager.computed.plugins || []); - this.handleOptions(this.optionsManager.computed); - this.publiclyTrigger('_init'); // for tests - this.hydrate(); - this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions - .map(function (calendarInteractionClass) { - return new calendarInteractionClass(_this); - }); - } - Calendar.prototype.addPluginInputs = function (pluginInputs) { - var pluginDefs = refinePluginDefs(pluginInputs); - for (var _i = 0, pluginDefs_1 = pluginDefs; _i < pluginDefs_1.length; _i++) { - var pluginDef = pluginDefs_1[_i]; - this.pluginSystem.add(pluginDef); - } - }; - Object.defineProperty(Calendar.prototype, "view", { - // public API - get: function () { - return this.component ? this.component.view : null; - }, - enumerable: true, - configurable: true - }); - // Public API for rendering - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.render = function () { - if (!this.component) { - this.renderableEventStore = createEmptyEventStore(); - this.bindHandlers(); - this.executeRender(); - } - else { - this.requestRerender(true); - } - }; - Calendar.prototype.destroy = function () { - if (this.component) { - this.unbindHandlers(); - this.component.destroy(); // don't null-out. in case API needs access - this.component = null; // umm ??? - for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) { - var interaction = _a[_i]; - interaction.destroy(); - } - this.publiclyTrigger('_destroyed'); - } - }; - // Handlers - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.bindHandlers = function () { - var _this = this; - // event delegation for nav links - this.removeNavLinkListener = listenBySelector(this.el, 'click', 'a[data-goto]', function (ev, anchorEl) { - var gotoOptions = anchorEl.getAttribute('data-goto'); - gotoOptions = gotoOptions ? JSON.parse(gotoOptions) : {}; - var dateEnv = _this.dateEnv; - var dateMarker = dateEnv.createMarker(gotoOptions.date); - var viewType = gotoOptions.type; - // property like "navLinkDayClick". might be a string or a function - var customAction = _this.viewOpt('navLink' + capitaliseFirstLetter(viewType) + 'Click'); - if (typeof customAction === 'function') { - customAction(dateEnv.toDate(dateMarker), ev); - } - else { - if (typeof customAction === 'string') { - viewType = customAction; - } - _this.zoomTo(dateMarker, viewType); - } - }); - if (this.opt('handleWindowResize')) { - window.addEventListener('resize', this.windowResizeProxy = debounce(// prevents rapid calls - this.windowResize.bind(this), this.opt('windowResizeDelay'))); - } - }; - Calendar.prototype.unbindHandlers = function () { - this.removeNavLinkListener(); - if (this.windowResizeProxy) { - window.removeEventListener('resize', this.windowResizeProxy); - this.windowResizeProxy = null; - } - }; - // Dispatcher - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.hydrate = function () { - var _this = this; - this.state = this.buildInitialState(); - var rawSources = this.opt('eventSources') || []; - var singleRawSource = this.opt('events'); - var sources = []; // parsed - if (singleRawSource) { - rawSources.unshift(singleRawSource); - } - for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) { - var rawSource = rawSources_1[_i]; - var source = parseEventSource(rawSource, this); - if (source) { - sources.push(source); - } - } - this.batchRendering(function () { - _this.dispatch({ type: 'INIT' }); // pass in sources here? - _this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: sources }); - _this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: _this.opt('defaultView') || _this.pluginSystem.hooks.defaultView - }); - }); - }; - Calendar.prototype.buildInitialState = function () { - return { - viewType: null, - loadingLevel: 0, - eventSourceLoadingLevel: 0, - currentDate: this.getInitialDate(), - dateProfile: null, - eventSources: {}, - eventStore: createEmptyEventStore(), - dateSelection: null, - eventSelection: '', - eventDrag: null, - eventResize: null - }; - }; - Calendar.prototype.dispatch = function (action) { - this.actionQueue.push(action); - if (!this.isReducing) { - this.isReducing = true; - var oldState = this.state; - while (this.actionQueue.length) { - this.state = this.reduce(this.state, this.actionQueue.shift(), this); - } - var newState = this.state; - this.isReducing = false; - if (!oldState.loadingLevel && newState.loadingLevel) { - this.publiclyTrigger('loading', [true]); - } - else if (oldState.loadingLevel && !newState.loadingLevel) { - this.publiclyTrigger('loading', [false]); - } - var view = this.component && this.component.view; - if (oldState.eventStore !== newState.eventStore || this.needsFullRerender) { - if (oldState.eventStore) { - this.isEventsUpdated = true; - } - } - if (oldState.dateProfile !== newState.dateProfile || this.needsFullRerender) { - if (oldState.dateProfile && view) { // why would view be null!? - this.publiclyTrigger('datesDestroy', [ - { - view: view, - el: view.el - } - ]); - } - this.isDatesUpdated = true; - } - if (oldState.viewType !== newState.viewType || this.needsFullRerender) { - if (oldState.viewType && view) { // why would view be null!? - this.publiclyTrigger('viewSkeletonDestroy', [ - { - view: view, - el: view.el - } - ]); - } - this.isViewUpdated = true; - } - this.requestRerender(); - } - }; - Calendar.prototype.reduce = function (state, action, calendar) { - return reduce(state, action, calendar); - }; - // Render Queue - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.requestRerender = function (needsFull) { - if (needsFull === void 0) { needsFull = false; } - this.needsRerender = true; - this.needsFullRerender = this.needsFullRerender || needsFull; - this.delayedRerender(); // will call a debounced-version of tryRerender - }; - Calendar.prototype.tryRerender = function () { - if (this.component && // must be accepting renders - this.needsRerender && // indicates that a rerender was requested - !this.renderingPauseDepth && // not paused - !this.isRendering // not currently in the render loop - ) { - this.executeRender(); - } - }; - Calendar.prototype.batchRendering = function (func) { - this.renderingPauseDepth++; - func(); - this.renderingPauseDepth--; - if (this.needsRerender) { - this.requestRerender(); - } - }; - // Rendering - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.executeRender = function () { - var needsFullRerender = this.needsFullRerender; // save before clearing - // clear these BEFORE the render so that new values will accumulate during render - this.needsRerender = false; - this.needsFullRerender = false; - this.isRendering = true; - this.renderComponent(needsFullRerender); - this.isRendering = false; - // received a rerender request while rendering - if (this.needsRerender) { - this.delayedRerender(); - } - }; - /* - don't call this directly. use executeRender instead - */ - Calendar.prototype.renderComponent = function (needsFull) { - var _a = this, state = _a.state, component = _a.component; - var viewType = state.viewType; - var viewSpec = this.viewSpecs[viewType]; - var savedScroll = (needsFull && component) ? component.view.queryScroll() : null; - if (!viewSpec) { - throw new Error("View type \"" + viewType + "\" is not valid"); - } - // if event sources are still loading and progressive rendering hasn't been enabled, - // keep rendering the last fully loaded set of events - var renderableEventStore = this.renderableEventStore = - (state.eventSourceLoadingLevel && !this.opt('progressiveEventRendering')) ? - this.renderableEventStore : - state.eventStore; - var eventUiSingleBase = this.buildEventUiSingleBase(viewSpec.options); - var eventUiBySource = this.buildEventUiBySource(state.eventSources); - var eventUiBases = this.eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource); - if (needsFull || !component) { - if (component) { - component.freezeHeight(); // next component will unfreeze it - component.destroy(); - } - component = this.component = new CalendarComponent({ - calendar: this, - view: null, - dateEnv: this.dateEnv, - theme: this.theme, - options: this.optionsManager.computed - }, this.el); - this.isViewUpdated = true; - this.isDatesUpdated = true; - this.isEventsUpdated = true; - } - component.receiveProps(__assign({}, state, { viewSpec: viewSpec, dateProfile: state.dateProfile, dateProfileGenerator: this.dateProfileGenerators[viewType], eventStore: renderableEventStore, eventUiBases: eventUiBases, dateSelection: state.dateSelection, eventSelection: state.eventSelection, eventDrag: state.eventDrag, eventResize: state.eventResize })); - if (savedScroll) { - component.view.applyScroll(savedScroll, false); - } - if (this.isViewUpdated) { - this.isViewUpdated = false; - this.publiclyTrigger('viewSkeletonRender', [ - { - view: component.view, - el: component.view.el - } - ]); - } - if (this.isDatesUpdated) { - this.isDatesUpdated = false; - this.publiclyTrigger('datesRender', [ - { - view: component.view, - el: component.view.el - } - ]); - } - if (this.isEventsUpdated) { - this.isEventsUpdated = false; - } - this.releaseAfterSizingTriggers(); - }; - // Options - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.setOption = function (name, val) { - var _a; - this.mutateOptions((_a = {}, _a[name] = val, _a), [], true); - }; - Calendar.prototype.getOption = function (name) { - return this.optionsManager.computed[name]; - }; - Calendar.prototype.opt = function (name) { - return this.optionsManager.computed[name]; - }; - Calendar.prototype.viewOpt = function (name) { - return this.viewOpts()[name]; - }; - Calendar.prototype.viewOpts = function () { - return this.viewSpecs[this.state.viewType].options; - }; - /* - handles option changes (like a diff) - */ - Calendar.prototype.mutateOptions = function (updates, removals, isDynamic, deepEqual) { - var _this = this; - var changeHandlers = this.pluginSystem.hooks.optionChangeHandlers; - var normalUpdates = {}; - var specialUpdates = {}; - var oldDateEnv = this.dateEnv; // do this before handleOptions - var isTimeZoneDirty = false; - var isSizeDirty = false; - var anyDifficultOptions = Boolean(removals.length); - for (var name_1 in updates) { - if (changeHandlers[name_1]) { - specialUpdates[name_1] = updates[name_1]; - } - else { - normalUpdates[name_1] = updates[name_1]; - } - } - for (var name_2 in normalUpdates) { - if (/^(height|contentHeight|aspectRatio)$/.test(name_2)) { - isSizeDirty = true; - } - else if (/^(defaultDate|defaultView)$/.test(name_2)) ; - else { - anyDifficultOptions = true; - if (name_2 === 'timeZone') { - isTimeZoneDirty = true; - } - } - } - this.optionsManager.mutate(normalUpdates, removals, isDynamic); - if (anyDifficultOptions) { - this.handleOptions(this.optionsManager.computed); - this.needsFullRerender = true; - } - this.batchRendering(function () { - if (anyDifficultOptions) { - if (isTimeZoneDirty) { - _this.dispatch({ - type: 'CHANGE_TIMEZONE', - oldDateEnv: oldDateEnv - }); - } - /* HACK - has the same effect as calling this.requestRerender(true) - but recomputes the state's dateProfile - */ - _this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: _this.state.viewType - }); - } - else if (isSizeDirty) { - _this.updateSize(); - } - // special updates - if (deepEqual) { - for (var name_3 in specialUpdates) { - changeHandlers[name_3](specialUpdates[name_3], _this, deepEqual); - } - } - }); - }; - /* - rebuilds things based off of a complete set of refined options - */ - Calendar.prototype.handleOptions = function (options) { - var _this = this; - var pluginHooks = this.pluginSystem.hooks; - this.defaultAllDayEventDuration = createDuration(options.defaultAllDayEventDuration); - this.defaultTimedEventDuration = createDuration(options.defaultTimedEventDuration); - this.delayedRerender = this.buildDelayedRerender(options.rerenderDelay); - this.theme = this.buildTheme(options); - var available = this.parseRawLocales(options.locales); - this.availableRawLocales = available.map; - var locale = this.buildLocale(options.locale || available.defaultCode, available.map); - this.dateEnv = this.buildDateEnv(locale, options.timeZone, pluginHooks.namedTimeZonedImpl, options.firstDay, options.weekNumberCalculation, options.weekLabel, pluginHooks.cmdFormatter); - this.selectionConfig = this.buildSelectionConfig(options); // needs dateEnv. do after :( - // ineffecient to do every time? - this.viewSpecs = buildViewSpecs(pluginHooks.views, this.optionsManager); - // ineffecient to do every time? - this.dateProfileGenerators = mapHash(this.viewSpecs, function (viewSpec) { - return new viewSpec.class.prototype.dateProfileGeneratorClass(viewSpec, _this); - }); - }; - Calendar.prototype.getAvailableLocaleCodes = function () { - return Object.keys(this.availableRawLocales); - }; - Calendar.prototype._buildSelectionConfig = function (rawOpts) { - return processScopedUiProps('select', rawOpts, this); - }; - Calendar.prototype._buildEventUiSingleBase = function (rawOpts) { - if (rawOpts.editable) { // so 'editable' affected events - rawOpts = __assign({}, rawOpts, { eventEditable: true }); - } - return processScopedUiProps('event', rawOpts, this); - }; - // Trigger - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.hasPublicHandlers = function (name) { - return this.hasHandlers(name) || - this.opt(name); // handler specified in options - }; - Calendar.prototype.publiclyTrigger = function (name, args) { - var optHandler = this.opt(name); - this.triggerWith(name, this, args); - if (optHandler) { - return optHandler.apply(this, args); - } - }; - Calendar.prototype.publiclyTriggerAfterSizing = function (name, args) { - var afterSizingTriggers = this.afterSizingTriggers; - (afterSizingTriggers[name] || (afterSizingTriggers[name] = [])).push(args); - }; - Calendar.prototype.releaseAfterSizingTriggers = function () { - var afterSizingTriggers = this.afterSizingTriggers; - for (var name_4 in afterSizingTriggers) { - for (var _i = 0, _a = afterSizingTriggers[name_4]; _i < _a.length; _i++) { - var args = _a[_i]; - this.publiclyTrigger(name_4, args); - } - } - this.afterSizingTriggers = {}; - }; - // View - // ----------------------------------------------------------------------------------------------------------------- - // Returns a boolean about whether the view is okay to instantiate at some point - Calendar.prototype.isValidViewType = function (viewType) { - return Boolean(this.viewSpecs[viewType]); - }; - Calendar.prototype.changeView = function (viewType, dateOrRange) { - var dateMarker = null; - if (dateOrRange) { - if (dateOrRange.start && dateOrRange.end) { // a range - this.optionsManager.mutate({ visibleRange: dateOrRange }, []); // will not rerender - this.handleOptions(this.optionsManager.computed); // ...but yuck - } - else { // a date - dateMarker = this.dateEnv.createMarker(dateOrRange); // just like gotoDate - } - } - this.unselect(); - this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: viewType, - dateMarker: dateMarker - }); - }; - // Forces navigation to a view for the given date. - // `viewType` can be a specific view name or a generic one like "week" or "day". - // needs to change - Calendar.prototype.zoomTo = function (dateMarker, viewType) { - var spec; - viewType = viewType || 'day'; // day is default zoom - spec = this.viewSpecs[viewType] || - this.getUnitViewSpec(viewType); - this.unselect(); - if (spec) { - this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: spec.type, - dateMarker: dateMarker - }); - } - else { - this.dispatch({ - type: 'SET_DATE', - dateMarker: dateMarker - }); - } - }; - // Given a duration singular unit, like "week" or "day", finds a matching view spec. - // Preference is given to views that have corresponding buttons. - Calendar.prototype.getUnitViewSpec = function (unit) { - var component = this.component; - var viewTypes = []; - var i; - var spec; - // put views that have buttons first. there will be duplicates, but oh - if (component.header) { - viewTypes.push.apply(viewTypes, component.header.viewsWithButtons); - } - if (component.footer) { - viewTypes.push.apply(viewTypes, component.footer.viewsWithButtons); - } - for (var viewType in this.viewSpecs) { - viewTypes.push(viewType); - } - for (i = 0; i < viewTypes.length; i++) { - spec = this.viewSpecs[viewTypes[i]]; - if (spec) { - if (spec.singleUnit === unit) { - return spec; - } - } - } - }; - // Current Date - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.getInitialDate = function () { - var defaultDateInput = this.opt('defaultDate'); - // compute the initial ambig-timezone date - if (defaultDateInput != null) { - return this.dateEnv.createMarker(defaultDateInput); - } - else { - return this.getNow(); // getNow already returns unzoned - } - }; - Calendar.prototype.prev = function () { - this.unselect(); - this.dispatch({ type: 'PREV' }); - }; - Calendar.prototype.next = function () { - this.unselect(); - this.dispatch({ type: 'NEXT' }); - }; - Calendar.prototype.prevYear = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.addYears(this.state.currentDate, -1) - }); - }; - Calendar.prototype.nextYear = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.addYears(this.state.currentDate, 1) - }); - }; - Calendar.prototype.today = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.getNow() - }); - }; - Calendar.prototype.gotoDate = function (zonedDateInput) { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.createMarker(zonedDateInput) - }); - }; - Calendar.prototype.incrementDate = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // else, warn about invalid input? - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.add(this.state.currentDate, delta) - }); - } - }; - // for external API - Calendar.prototype.getDate = function () { - return this.dateEnv.toDate(this.state.currentDate); - }; - // Date Formatting Utils - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.formatDate = function (d, formatter) { - var dateEnv = this.dateEnv; - return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter)); - }; - // `settings` is for formatter AND isEndExclusive - Calendar.prototype.formatRange = function (d0, d1, settings) { - var dateEnv = this.dateEnv; - return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings, this.opt('defaultRangeSeparator')), settings); - }; - Calendar.prototype.formatIso = function (d, omitTime) { - var dateEnv = this.dateEnv; - return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime }); - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.windowResize = function (ev) { - if (!this.isHandlingWindowResize && - this.component && // why? - ev.target === window // not a jqui resize event - ) { - this.isHandlingWindowResize = true; - this.updateSize(); - this.publiclyTrigger('windowResize', [this.view]); - this.isHandlingWindowResize = false; - } - }; - Calendar.prototype.updateSize = function () { - if (this.component) { // when? - this.component.updateSize(true); - } - }; - // Component Registration - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.registerInteractiveComponent = function (component, settingsInput) { - var settings = parseInteractionSettings(component, settingsInput); - var DEFAULT_INTERACTIONS = [ - EventClicking, - EventHovering - ]; - var interactionClasses = DEFAULT_INTERACTIONS.concat(this.pluginSystem.hooks.componentInteractions); - var interactions = interactionClasses.map(function (interactionClass) { - return new interactionClass(settings); - }); - this.interactionsStore[component.uid] = interactions; - interactionSettingsStore[component.uid] = settings; - }; - Calendar.prototype.unregisterInteractiveComponent = function (component) { - for (var _i = 0, _a = this.interactionsStore[component.uid]; _i < _a.length; _i++) { - var listener = _a[_i]; - listener.destroy(); - } - delete this.interactionsStore[component.uid]; - delete interactionSettingsStore[component.uid]; - }; - // Date Selection / Event Selection / DayClick - // ----------------------------------------------------------------------------------------------------------------- - // this public method receives start/end dates in any format, with any timezone - // NOTE: args were changed from v3 - Calendar.prototype.select = function (dateOrObj, endDate) { - var selectionInput; - if (endDate == null) { - if (dateOrObj.start != null) { - selectionInput = dateOrObj; - } - else { - selectionInput = { - start: dateOrObj, - end: null - }; - } - } - else { - selectionInput = { - start: dateOrObj, - end: endDate - }; - } - var selection = parseDateSpan(selectionInput, this.dateEnv, createDuration({ days: 1 }) // TODO: cache this? - ); - if (selection) { // throw parse error otherwise? - this.dispatch({ type: 'SELECT_DATES', selection: selection }); - this.triggerDateSelect(selection); - } - }; - // public method - Calendar.prototype.unselect = function (pev) { - if (this.state.dateSelection) { - this.dispatch({ type: 'UNSELECT_DATES' }); - this.triggerDateUnselect(pev); - } - }; - Calendar.prototype.triggerDateSelect = function (selection, pev) { - var arg = __assign({}, this.buildDateSpanApi(selection), { jsEvent: pev ? pev.origEvent : null, view: this.view }); - this.publiclyTrigger('select', [arg]); - }; - Calendar.prototype.triggerDateUnselect = function (pev) { - this.publiclyTrigger('unselect', [ - { - jsEvent: pev ? pev.origEvent : null, - view: this.view - } - ]); - }; - // TODO: receive pev? - Calendar.prototype.triggerDateClick = function (dateSpan, dayEl, view, ev) { - var arg = __assign({}, this.buildDatePointApi(dateSpan), { dayEl: dayEl, jsEvent: ev, // Is this always a mouse event? See #4655 - view: view }); - this.publiclyTrigger('dateClick', [arg]); - }; - Calendar.prototype.buildDatePointApi = function (dateSpan) { - var props = {}; - for (var _i = 0, _a = this.pluginSystem.hooks.datePointTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(props, transform(dateSpan, this)); - } - __assign(props, buildDatePointApi(dateSpan, this.dateEnv)); - return props; - }; - Calendar.prototype.buildDateSpanApi = function (dateSpan) { - var props = {}; - for (var _i = 0, _a = this.pluginSystem.hooks.dateSpanTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(props, transform(dateSpan, this)); - } - __assign(props, buildDateSpanApi(dateSpan, this.dateEnv)); - return props; - }; - // Date Utils - // ----------------------------------------------------------------------------------------------------------------- - // Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option - Calendar.prototype.getNow = function () { - var now = this.opt('now'); - if (typeof now === 'function') { - now = now(); - } - if (now == null) { - return this.dateEnv.createNowMarker(); - } - return this.dateEnv.createMarker(now); - }; - // Event-Date Utilities - // ----------------------------------------------------------------------------------------------------------------- - // Given an event's allDay status and start date, return what its fallback end date should be. - // TODO: rename to computeDefaultEventEnd - Calendar.prototype.getDefaultEventEnd = function (allDay, marker) { - var end = marker; - if (allDay) { - end = startOfDay(end); - end = this.dateEnv.add(end, this.defaultAllDayEventDuration); - } - else { - end = this.dateEnv.add(end, this.defaultTimedEventDuration); - } - return end; - }; - // Public Events API - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.addEvent = function (eventInput, sourceInput) { - if (eventInput instanceof EventApi) { - var def = eventInput._def; - var instance = eventInput._instance; - // not already present? don't want to add an old snapshot - if (!this.state.eventStore.defs[def.defId]) { - this.dispatch({ - type: 'ADD_EVENTS', - eventStore: eventTupleToStore({ def: def, instance: instance }) // TODO: better util for two args? - }); - } - return eventInput; - } - var sourceId; - if (sourceInput instanceof EventSourceApi) { - sourceId = sourceInput.internalEventSource.sourceId; - } - else if (sourceInput != null) { - var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function - if (!sourceApi) { - console.warn('Could not find an event source with ID "' + sourceInput + '"'); // TODO: test - return null; - } - else { - sourceId = sourceApi.internalEventSource.sourceId; - } - } - var tuple = parseEvent(eventInput, sourceId, this); - if (tuple) { - this.dispatch({ - type: 'ADD_EVENTS', - eventStore: eventTupleToStore(tuple) - }); - return new EventApi(this, tuple.def, tuple.def.recurringDef ? null : tuple.instance); - } - return null; - }; - // TODO: optimize - Calendar.prototype.getEventById = function (id) { - var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances; - id = String(id); - for (var defId in defs) { - var def = defs[defId]; - if (def.publicId === id) { - if (def.recurringDef) { - return new EventApi(this, def, null); - } - else { - for (var instanceId in instances) { - var instance = instances[instanceId]; - if (instance.defId === def.defId) { - return new EventApi(this, def, instance); - } - } - } - } - } - return null; - }; - Calendar.prototype.getEvents = function () { - var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances; - var eventApis = []; - for (var id in instances) { - var instance = instances[id]; - var def = defs[instance.defId]; - eventApis.push(new EventApi(this, def, instance)); - } - return eventApis; - }; - Calendar.prototype.removeAllEvents = function () { - this.dispatch({ type: 'REMOVE_ALL_EVENTS' }); - }; - Calendar.prototype.rerenderEvents = function () { - this.dispatch({ type: 'RESET_EVENTS' }); - }; - // Public Event Sources API - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.getEventSources = function () { - var sourceHash = this.state.eventSources; - var sourceApis = []; - for (var internalId in sourceHash) { - sourceApis.push(new EventSourceApi(this, sourceHash[internalId])); - } - return sourceApis; - }; - Calendar.prototype.getEventSourceById = function (id) { - var sourceHash = this.state.eventSources; - id = String(id); - for (var sourceId in sourceHash) { - if (sourceHash[sourceId].publicId === id) { - return new EventSourceApi(this, sourceHash[sourceId]); - } - } - return null; - }; - Calendar.prototype.addEventSource = function (sourceInput) { - if (sourceInput instanceof EventSourceApi) { - // not already present? don't want to add an old snapshot - if (!this.state.eventSources[sourceInput.internalEventSource.sourceId]) { - this.dispatch({ - type: 'ADD_EVENT_SOURCES', - sources: [sourceInput.internalEventSource] - }); - } - return sourceInput; - } - var eventSource = parseEventSource(sourceInput, this); - if (eventSource) { // TODO: error otherwise? - this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] }); - return new EventSourceApi(this, eventSource); - } - return null; - }; - Calendar.prototype.removeAllEventSources = function () { - this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' }); - }; - Calendar.prototype.refetchEvents = function () { - this.dispatch({ type: 'FETCH_EVENT_SOURCES' }); - }; - // Scroll - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.scrollToTime = function (timeInput) { - var duration = createDuration(timeInput); - if (duration) { - this.component.view.scrollToDuration(duration); - } - }; - return Calendar; -}()); -EmitterMixin.mixInto(Calendar); -// for memoizers -// ----------------------------------------------------------------------------------------------------------------- -function buildDateEnv(locale, timeZone, namedTimeZoneImpl, firstDay, weekNumberCalculation, weekLabel, cmdFormatter) { - return new DateEnv({ - calendarSystem: 'gregory', - timeZone: timeZone, - namedTimeZoneImpl: namedTimeZoneImpl, - locale: locale, - weekNumberCalculation: weekNumberCalculation, - firstDay: firstDay, - weekLabel: weekLabel, - cmdFormatter: cmdFormatter - }); -} -function buildTheme(calendarOptions) { - var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme; - return new themeClass(calendarOptions); -} -function buildDelayedRerender(wait) { - var func = this.tryRerender.bind(this); - if (wait != null) { - func = debounce(func, wait); - } - return func; -} -function buildEventUiBySource(eventSources) { - return mapHash(eventSources, function (eventSource) { - return eventSource.ui; - }); -} -function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) { - var eventUiBases = { '': eventUiSingleBase }; - for (var defId in eventDefs) { - var def = eventDefs[defId]; - if (def.sourceId && eventUiBySource[def.sourceId]) { - eventUiBases[defId] = eventUiBySource[def.sourceId]; - } - } - return eventUiBases; -} - -var View = /** @class */ (function (_super) { - __extends(View, _super); - function View(context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, context, createElement('div', { className: 'fc-view fc-' + viewSpec.type + '-view' }), true // isView (HACK) - ) || this; - _this.renderDatesMem = memoizeRendering(_this.renderDatesWrap, _this.unrenderDatesWrap); - _this.renderBusinessHoursMem = memoizeRendering(_this.renderBusinessHours, _this.unrenderBusinessHours, [_this.renderDatesMem]); - _this.renderDateSelectionMem = memoizeRendering(_this.renderDateSelectionWrap, _this.unrenderDateSelectionWrap, [_this.renderDatesMem]); - _this.renderEventsMem = memoizeRendering(_this.renderEvents, _this.unrenderEvents, [_this.renderDatesMem]); - _this.renderEventSelectionMem = memoizeRendering(_this.renderEventSelectionWrap, _this.unrenderEventSelectionWrap, [_this.renderEventsMem]); - _this.renderEventDragMem = memoizeRendering(_this.renderEventDragWrap, _this.unrenderEventDragWrap, [_this.renderDatesMem]); - _this.renderEventResizeMem = memoizeRendering(_this.renderEventResizeWrap, _this.unrenderEventResizeWrap, [_this.renderDatesMem]); - _this.viewSpec = viewSpec; - _this.dateProfileGenerator = dateProfileGenerator; - _this.type = viewSpec.type; - _this.eventOrderSpecs = parseFieldSpecs(_this.opt('eventOrder')); - _this.nextDayThreshold = createDuration(_this.opt('nextDayThreshold')); - parentEl.appendChild(_this.el); - _this.initialize(); - return _this; - } - View.prototype.initialize = function () { - }; - Object.defineProperty(View.prototype, "activeStart", { - // Date Setting/Unsetting - // ----------------------------------------------------------------------------------------------------------------- - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.activeRange.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "activeEnd", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.activeRange.end); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "currentStart", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.currentRange.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "currentEnd", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.currentRange.end); - }, - enumerable: true, - configurable: true - }); - // General Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.render = function (props) { - this.renderDatesMem(props.dateProfile); - this.renderBusinessHoursMem(props.businessHours); - this.renderDateSelectionMem(props.dateSelection); - this.renderEventsMem(props.eventStore); - this.renderEventSelectionMem(props.eventSelection); - this.renderEventDragMem(props.eventDrag); - this.renderEventResizeMem(props.eventResize); - }; - View.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderDatesMem.unrender(); // should unrender everything else - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.updateSize = function (isResize, viewHeight, isAuto) { - var calendar = this.calendar; - if (isResize || // HACKS... - calendar.isViewUpdated || - calendar.isDatesUpdated || - calendar.isEventsUpdated) { - // sort of the catch-all sizing - // anything that might cause dimension changes - this.updateBaseSize(isResize, viewHeight, isAuto); - } - }; - View.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) { - }; - // Date Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderDatesWrap = function (dateProfile) { - this.renderDates(dateProfile); - this.addScroll({ - duration: createDuration(this.opt('scrollTime')) - }); - this.startNowIndicator(dateProfile); // shouldn't render yet because updateSize will be called soon - }; - View.prototype.unrenderDatesWrap = function () { - this.stopNowIndicator(); - this.unrenderDates(); - }; - View.prototype.renderDates = function (dateProfile) { }; - View.prototype.unrenderDates = function () { }; - // Business Hours - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderBusinessHours = function (businessHours) { }; - View.prototype.unrenderBusinessHours = function () { }; - // Date Selection - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderDateSelectionWrap = function (selection) { - if (selection) { - this.renderDateSelection(selection); - } - }; - View.prototype.unrenderDateSelectionWrap = function (selection) { - if (selection) { - this.unrenderDateSelection(selection); - } - }; - View.prototype.renderDateSelection = function (selection) { }; - View.prototype.unrenderDateSelection = function (selection) { }; - // Event Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEvents = function (eventStore) { }; - View.prototype.unrenderEvents = function () { }; - // util for subclasses - View.prototype.sliceEvents = function (eventStore, allDay) { - var props = this.props; - return sliceEventStore(eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? this.nextDayThreshold : null).fg; - }; - View.prototype.computeEventDraggable = function (eventDef, eventUi) { - var transformers = this.calendar.pluginSystem.hooks.isDraggableTransformers; - var val = eventUi.startEditable; - for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { - var transformer = transformers_1[_i]; - val = transformer(val, eventDef, eventUi, this); - } - return val; - }; - View.prototype.computeEventStartResizable = function (eventDef, eventUi) { - return eventUi.durationEditable && this.opt('eventResizableFromStart'); - }; - View.prototype.computeEventEndResizable = function (eventDef, eventUi) { - return eventUi.durationEditable; - }; - // Event Selection - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventSelectionWrap = function (instanceId) { - if (instanceId) { - this.renderEventSelection(instanceId); - } - }; - View.prototype.unrenderEventSelectionWrap = function (instanceId) { - if (instanceId) { - this.unrenderEventSelection(instanceId); - } - }; - View.prototype.renderEventSelection = function (instanceId) { }; - View.prototype.unrenderEventSelection = function (instanceId) { }; - // Event Drag - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventDragWrap = function (state) { - if (state) { - this.renderEventDrag(state); - } - }; - View.prototype.unrenderEventDragWrap = function (state) { - if (state) { - this.unrenderEventDrag(state); - } - }; - View.prototype.renderEventDrag = function (state) { }; - View.prototype.unrenderEventDrag = function (state) { }; - // Event Resize - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventResizeWrap = function (state) { - if (state) { - this.renderEventResize(state); - } - }; - View.prototype.unrenderEventResizeWrap = function (state) { - if (state) { - this.unrenderEventResize(state); - } - }; - View.prototype.renderEventResize = function (state) { }; - View.prototype.unrenderEventResize = function (state) { }; - /* Now Indicator - ------------------------------------------------------------------------------------------------------------------*/ - // Immediately render the current time indicator and begins re-rendering it at an interval, - // which is defined by this.getNowIndicatorUnit(). - // TODO: somehow do this for the current whole day's background too - View.prototype.startNowIndicator = function (dateProfile) { - var _this = this; - var dateEnv = this.dateEnv; - var unit; - var update; - var delay; // ms wait value - if (this.opt('nowIndicator')) { - unit = this.getNowIndicatorUnit(dateProfile); - if (unit) { - update = this.updateNowIndicator.bind(this); - this.initialNowDate = this.calendar.getNow(); - this.initialNowQueriedMs = new Date().valueOf(); - // wait until the beginning of the next interval - delay = dateEnv.add(dateEnv.startOf(this.initialNowDate, unit), createDuration(1, unit)).valueOf() - this.initialNowDate.valueOf(); - // TODO: maybe always use setTimeout, waiting until start of next unit - this.nowIndicatorTimeoutID = setTimeout(function () { - _this.nowIndicatorTimeoutID = null; - update(); - if (unit === 'second') { - delay = 1000; // every second - } - else { - delay = 1000 * 60; // otherwise, every minute - } - _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval - }, delay); - } - // rendering will be initiated in updateSize - } - }; - // rerenders the now indicator, computing the new current time from the amount of time that has passed - // since the initial getNow call. - View.prototype.updateNowIndicator = function () { - if (this.props.dateProfile && // a way to determine if dates were rendered yet - this.initialNowDate // activated before? - ) { - this.unrenderNowIndicator(); // won't unrender if unnecessary - this.renderNowIndicator(addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs)); - this.isNowIndicatorRendered = true; - } - }; - // Immediately unrenders the view's current time indicator and stops any re-rendering timers. - // Won't cause side effects if indicator isn't rendered. - View.prototype.stopNowIndicator = function () { - if (this.isNowIndicatorRendered) { - if (this.nowIndicatorTimeoutID) { - clearTimeout(this.nowIndicatorTimeoutID); - this.nowIndicatorTimeoutID = null; - } - if (this.nowIndicatorIntervalID) { - clearInterval(this.nowIndicatorIntervalID); - this.nowIndicatorIntervalID = null; - } - this.unrenderNowIndicator(); - this.isNowIndicatorRendered = false; - } - }; - View.prototype.getNowIndicatorUnit = function (dateProfile) { - // subclasses should implement - }; - // Renders a current time indicator at the given datetime - View.prototype.renderNowIndicator = function (date) { - // SUBCLASSES MUST PASS TO CHILDREN! - }; - // Undoes the rendering actions from renderNowIndicator - View.prototype.unrenderNowIndicator = function () { - // SUBCLASSES MUST PASS TO CHILDREN! - }; - /* Scroller - ------------------------------------------------------------------------------------------------------------------*/ - View.prototype.addScroll = function (scroll) { - var queuedScroll = this.queuedScroll || (this.queuedScroll = {}); - __assign(queuedScroll, scroll); - }; - View.prototype.popScroll = function (isResize) { - this.applyQueuedScroll(isResize); - this.queuedScroll = null; - }; - View.prototype.applyQueuedScroll = function (isResize) { - this.applyScroll(this.queuedScroll || {}, isResize); - }; - View.prototype.queryScroll = function () { - var scroll = {}; - if (this.props.dateProfile) { // dates rendered yet? - __assign(scroll, this.queryDateScroll()); - } - return scroll; - }; - View.prototype.applyScroll = function (scroll, isResize) { - var duration = scroll.duration; - if (duration != null) { - delete scroll.duration; - if (this.props.dateProfile) { // dates rendered yet? - __assign(scroll, this.computeDateScroll(duration)); - } - } - if (this.props.dateProfile) { // dates rendered yet? - this.applyDateScroll(scroll); - } - }; - View.prototype.computeDateScroll = function (duration) { - return {}; // subclasses must implement - }; - View.prototype.queryDateScroll = function () { - return {}; // subclasses must implement - }; - View.prototype.applyDateScroll = function (scroll) { - // subclasses must implement - }; - // for API - View.prototype.scrollToDuration = function (duration) { - this.applyScroll({ duration: duration }, false); - }; - return View; -}(DateComponent)); -EmitterMixin.mixInto(View); -View.prototype.usesMinMaxTime = false; -View.prototype.dateProfileGeneratorClass = DateProfileGenerator; - -var FgEventRenderer = /** @class */ (function () { - function FgEventRenderer(context) { - this.segs = []; - this.isSizeDirty = false; - this.context = context; - } - FgEventRenderer.prototype.renderSegs = function (segs, mirrorInfo) { - this.rangeUpdated(); // called too frequently :( - // render an `.el` on each seg - // returns a subset of the segs. segs that were actually rendered - segs = this.renderSegEls(segs, mirrorInfo); - this.segs = segs; - this.attachSegs(segs, mirrorInfo); - this.isSizeDirty = true; - this.context.view.triggerRenderedSegs(this.segs, Boolean(mirrorInfo)); - }; - FgEventRenderer.prototype.unrender = function (_segs, mirrorInfo) { - this.context.view.triggerWillRemoveSegs(this.segs, Boolean(mirrorInfo)); - this.detachSegs(this.segs); - this.segs = []; - }; - // Updates values that rely on options and also relate to range - FgEventRenderer.prototype.rangeUpdated = function () { - var options = this.context.options; - var displayEventTime; - var displayEventEnd; - this.eventTimeFormat = createFormatter(options.eventTimeFormat || this.computeEventTimeFormat(), options.defaultRangeSeparator); - displayEventTime = options.displayEventTime; - if (displayEventTime == null) { - displayEventTime = this.computeDisplayEventTime(); // might be based off of range - } - displayEventEnd = options.displayEventEnd; - if (displayEventEnd == null) { - displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range - } - this.displayEventTime = displayEventTime; - this.displayEventEnd = displayEventEnd; - }; - // Renders and assigns an `el` property for each foreground event segment. - // Only returns segments that successfully rendered. - FgEventRenderer.prototype.renderSegEls = function (segs, mirrorInfo) { - var html = ''; - var i; - if (segs.length) { // don't build an empty html string - // build a large concatenation of event segment HTML - for (i = 0; i < segs.length; i++) { - html += this.renderSegHtml(segs[i], mirrorInfo); - } - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. - htmlToElements(html).forEach(function (el, i) { - var seg = segs[i]; - if (el) { - seg.el = el; - } - }); - segs = filterSegsViaEls(this.context.view, segs, Boolean(mirrorInfo)); - } - return segs; - }; - // Generic utility for generating the HTML classNames for an event segment's element - FgEventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable, mirrorInfo) { - var classes = [ - 'fc-event', - seg.isStart ? 'fc-start' : 'fc-not-start', - seg.isEnd ? 'fc-end' : 'fc-not-end' - ].concat(seg.eventRange.ui.classNames); - if (isDraggable) { - classes.push('fc-draggable'); - } - if (isResizable) { - classes.push('fc-resizable'); - } - if (mirrorInfo) { - classes.push('fc-mirror'); - if (mirrorInfo.isDragging) { - classes.push('fc-dragging'); - } - if (mirrorInfo.isResizing) { - classes.push('fc-resizing'); - } - } - return classes; - }; - // Compute the text that should be displayed on an event's element. - // `range` can be the Event object itself, or something range-like, with at least a `start`. - // If event times are disabled, or the event has no time, will return a blank string. - // If not specified, formatter will default to the eventTimeFormat setting, - // and displayEnd will default to the displayEventEnd setting. - FgEventRenderer.prototype.getTimeText = function (eventRange, formatter, displayEnd) { - var def = eventRange.def, instance = eventRange.instance; - return this._getTimeText(instance.range.start, def.hasEnd ? instance.range.end : null, def.allDay, formatter, displayEnd, instance.forcedStartTzo, instance.forcedEndTzo); - }; - FgEventRenderer.prototype._getTimeText = function (start, end, allDay, formatter, displayEnd, forcedStartTzo, forcedEndTzo) { - var dateEnv = this.context.dateEnv; - if (formatter == null) { - formatter = this.eventTimeFormat; - } - if (displayEnd == null) { - displayEnd = this.displayEventEnd; - } - if (this.displayEventTime && !allDay) { - if (displayEnd && end) { - return dateEnv.formatRange(start, end, formatter, { - forcedStartTzo: forcedStartTzo, - forcedEndTzo: forcedEndTzo - }); - } - else { - return dateEnv.format(start, formatter, { - forcedTzo: forcedStartTzo - }); - } - } - return ''; - }; - FgEventRenderer.prototype.computeEventTimeFormat = function () { - return { - hour: 'numeric', - minute: '2-digit', - omitZeroMinute: true - }; - }; - FgEventRenderer.prototype.computeDisplayEventTime = function () { - return true; - }; - FgEventRenderer.prototype.computeDisplayEventEnd = function () { - return true; - }; - // Utility for generating event skin-related CSS properties - FgEventRenderer.prototype.getSkinCss = function (ui) { - return { - 'background-color': ui.backgroundColor, - 'border-color': ui.borderColor, - color: ui.textColor - }; - }; - FgEventRenderer.prototype.sortEventSegs = function (segs) { - var specs = this.context.view.eventOrderSpecs; - var objs = segs.map(buildSegCompareObj); - objs.sort(function (obj0, obj1) { - return compareByFieldSpecs(obj0, obj1, specs); - }); - return objs.map(function (c) { - return c._seg; - }); - }; - FgEventRenderer.prototype.computeSizes = function (force) { - if (force || this.isSizeDirty) { - this.computeSegSizes(this.segs); - } - }; - FgEventRenderer.prototype.assignSizes = function (force) { - if (force || this.isSizeDirty) { - this.assignSegSizes(this.segs); - this.isSizeDirty = false; - } - }; - FgEventRenderer.prototype.computeSegSizes = function (segs) { - }; - FgEventRenderer.prototype.assignSegSizes = function (segs) { - }; - // Manipulation on rendered segs - FgEventRenderer.prototype.hideByHash = function (hash) { - if (hash) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (hash[seg.eventRange.instance.instanceId]) { - seg.el.style.visibility = 'hidden'; - } - } - } - }; - FgEventRenderer.prototype.showByHash = function (hash) { - if (hash) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (hash[seg.eventRange.instance.instanceId]) { - seg.el.style.visibility = ''; - } - } - } - }; - FgEventRenderer.prototype.selectByInstanceId = function (instanceId) { - if (instanceId) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - var eventInstance = seg.eventRange.instance; - if (eventInstance && eventInstance.instanceId === instanceId && - seg.el // necessary? - ) { - seg.el.classList.add('fc-selected'); - } - } - } - }; - FgEventRenderer.prototype.unselectByInstanceId = function (instanceId) { - if (instanceId) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (seg.el) { // necessary? - seg.el.classList.remove('fc-selected'); - } - } - } - }; - return FgEventRenderer; -}()); -// returns a object with all primitive props that can be compared -function buildSegCompareObj(seg) { - var eventDef = seg.eventRange.def; - var range = seg.eventRange.instance.range; - var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events - var end = range.end ? range.end.valueOf() : 0; // " - return __assign({}, eventDef.extendedProps, eventDef, { id: eventDef.publicId, start: start, - end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg // for later retrieval - }); -} - -var FillRenderer = /** @class */ (function () { - function FillRenderer(context) { - this.fillSegTag = 'div'; - this.dirtySizeFlags = {}; - this.context = context; - this.containerElsByType = {}; - this.segsByType = {}; - } - FillRenderer.prototype.getSegsByType = function (type) { - return this.segsByType[type] || []; - }; - FillRenderer.prototype.renderSegs = function (type, segs) { - var _a; - var renderedSegs = this.renderSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs - var containerEls = this.attachSegs(type, renderedSegs); - if (containerEls) { - (_a = (this.containerElsByType[type] || (this.containerElsByType[type] = []))).push.apply(_a, containerEls); - } - this.segsByType[type] = renderedSegs; - if (type === 'bgEvent') { - this.context.view.triggerRenderedSegs(renderedSegs, false); // isMirror=false - } - this.dirtySizeFlags[type] = true; - }; - // Unrenders a specific type of fill that is currently rendered on the grid - FillRenderer.prototype.unrender = function (type) { - var segs = this.segsByType[type]; - if (segs) { - if (type === 'bgEvent') { - this.context.view.triggerWillRemoveSegs(segs, false); // isMirror=false - } - this.detachSegs(type, segs); - } - }; - // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. - // Only returns segments that successfully rendered. - FillRenderer.prototype.renderSegEls = function (type, segs) { - var _this = this; - var html = ''; - var i; - if (segs.length) { - // build a large concatenation of segment HTML - for (i = 0; i < segs.length; i++) { - html += this.renderSegHtml(type, segs[i]); - } - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. - htmlToElements(html).forEach(function (el, i) { - var seg = segs[i]; - if (el) { - seg.el = el; - } - }); - if (type === 'bgEvent') { - segs = filterSegsViaEls(this.context.view, segs, false // isMirror. background events can never be mirror elements - ); - } - // correct element type? (would be bad if a non-TD were inserted into a table for example) - segs = segs.filter(function (seg) { - return elementMatches(seg.el, _this.fillSegTag); - }); - } - return segs; - }; - // Builds the HTML needed for one fill segment. Generic enough to work with different types. - FillRenderer.prototype.renderSegHtml = function (type, seg) { - var css = null; - var classNames = []; - if (type !== 'highlight' && type !== 'businessHours') { - css = { - 'background-color': seg.eventRange.ui.backgroundColor - }; - } - if (type !== 'highlight') { - classNames = classNames.concat(seg.eventRange.ui.classNames); - } - if (type === 'businessHours') { - classNames.push('fc-bgevent'); - } - else { - classNames.push('fc-' + type.toLowerCase()); - } - return '<' + this.fillSegTag + - (classNames.length ? ' class="' + classNames.join(' ') + '"' : '') + - (css ? ' style="' + cssToStr(css) + '"' : '') + - '>'; - }; - FillRenderer.prototype.detachSegs = function (type, segs) { - var containerEls = this.containerElsByType[type]; - if (containerEls) { - containerEls.forEach(removeElement); - delete this.containerElsByType[type]; - } - }; - FillRenderer.prototype.computeSizes = function (force) { - for (var type in this.segsByType) { - if (force || this.dirtySizeFlags[type]) { - this.computeSegSizes(this.segsByType[type]); - } - } - }; - FillRenderer.prototype.assignSizes = function (force) { - for (var type in this.segsByType) { - if (force || this.dirtySizeFlags[type]) { - this.assignSegSizes(this.segsByType[type]); - } - } - this.dirtySizeFlags = {}; - }; - FillRenderer.prototype.computeSegSizes = function (segs) { - }; - FillRenderer.prototype.assignSegSizes = function (segs) { - }; - return FillRenderer; -}()); - -var NamedTimeZoneImpl = /** @class */ (function () { - function NamedTimeZoneImpl(timeZoneName) { - this.timeZoneName = timeZoneName; - } - return NamedTimeZoneImpl; -}()); - -/* -An abstraction for a dragging interaction originating on an event. -Does higher-level things than PointerDragger, such as possibly: -- a "mirror" that moves with the pointer -- a minimum number of pixels or other criteria for a true drag to begin - -subclasses must emit: -- pointerdown -- dragstart -- dragmove -- pointerup -- dragend -*/ -var ElementDragging = /** @class */ (function () { - function ElementDragging(el) { - this.emitter = new EmitterMixin(); - } - ElementDragging.prototype.destroy = function () { - }; - ElementDragging.prototype.setMirrorIsVisible = function (bool) { - // optional if subclass doesn't want to support a mirror - }; - ElementDragging.prototype.setMirrorNeedsRevert = function (bool) { - // optional if subclass doesn't want to support a mirror - }; - ElementDragging.prototype.setAutoScrollEnabled = function (bool) { - // optional - }; - return ElementDragging; -}()); - -function formatDate(dateInput, settings) { - if (settings === void 0) { settings = {}; } - var dateEnv = buildDateEnv$1(settings); - var formatter = createFormatter(settings); - var dateMeta = dateEnv.createMarkerMeta(dateInput); - if (!dateMeta) { // TODO: warning? - return ''; - } - return dateEnv.format(dateMeta.marker, formatter, { - forcedTzo: dateMeta.forcedTzo - }); -} -function formatRange(startInput, endInput, settings // mixture of env and formatter settings -) { - var dateEnv = buildDateEnv$1(typeof settings === 'object' && settings ? settings : {}); // pass in if non-null object - var formatter = createFormatter(settings, globalDefaults.defaultRangeSeparator); - var startMeta = dateEnv.createMarkerMeta(startInput); - var endMeta = dateEnv.createMarkerMeta(endInput); - if (!startMeta || !endMeta) { // TODO: warning? - return ''; - } - return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, { - forcedStartTzo: startMeta.forcedTzo, - forcedEndTzo: endMeta.forcedTzo, - isEndExclusive: settings.isEndExclusive - }); -} -// TODO: more DRY and optimized -function buildDateEnv$1(settings) { - var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere - // ensure required settings - settings = __assign({ timeZone: globalDefaults.timeZone, calendarSystem: 'gregory' }, settings, { locale: locale }); - return new DateEnv(settings); -} - -var DRAG_META_PROPS = { - startTime: createDuration, - duration: createDuration, - create: Boolean, - sourceId: String -}; -var DRAG_META_DEFAULTS = { - create: true -}; -function parseDragMeta(raw) { - var leftoverProps = {}; - var refined = refineProps(raw, DRAG_META_PROPS, DRAG_META_DEFAULTS, leftoverProps); - refined.leftoverProps = leftoverProps; - return refined; -} - -// Computes a default column header formatting string if `colFormat` is not explicitly defined -function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) { - // if more than one week row, or if there are a lot of columns with not much space, - // put just the day numbers will be in each cell - if (!datesRepDistinctDays || dayCnt > 10) { - return { weekday: 'short' }; // "Sat" - } - else if (dayCnt > 1) { - return { weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }; // "Sat 11/12" - } - else { - return { weekday: 'long' }; // "Saturday" - } -} -function renderDateCell(dateMarker, dateProfile, datesRepDistinctDays, colCnt, colHeadFormat, context, colspan, otherAttrs) { - var view = context.view, dateEnv = context.dateEnv, theme = context.theme, options = context.options; - var isDateValid = rangeContainsMarker(dateProfile.activeRange, dateMarker); // TODO: called too frequently. cache somehow. - var classNames = [ - 'fc-day-header', - theme.getClass('widgetHeader') - ]; - var innerHtml; - if (typeof options.columnHeaderHtml === 'function') { - innerHtml = options.columnHeaderHtml(dateEnv.toDate(dateMarker)); - } - else if (typeof options.columnHeaderText === 'function') { - innerHtml = htmlEscape(options.columnHeaderText(dateEnv.toDate(dateMarker))); - } - else { - innerHtml = htmlEscape(dateEnv.format(dateMarker, colHeadFormat)); - } - // if only one row of days, the classNames on the header can represent the specific days beneath - if (datesRepDistinctDays) { - classNames = classNames.concat( - // includes the day-of-week class - // noThemeHighlight=true (don't highlight the header) - getDayClasses(dateMarker, dateProfile, context, true)); - } - else { - classNames.push('fc-' + DAY_IDS[dateMarker.getUTCDay()]); // only add the day-of-week class - } - return '' + - ' 1 ? - ' colspan="' + colspan + '"' : - '') + - (otherAttrs ? - ' ' + otherAttrs : - '') + - '>' + - (isDateValid ? - // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff) - buildGotoAnchorHtml(view, { date: dateMarker, forceOff: !datesRepDistinctDays || colCnt === 1 }, innerHtml) : - // if not valid, display text, but no link - innerHtml) + - ''; -} - -var DayHeader = /** @class */ (function (_super) { - __extends(DayHeader, _super); - function DayHeader(context, parentEl) { - var _this = _super.call(this, context) || this; - parentEl.innerHTML = ''; // because might be nbsp - parentEl.appendChild(_this.el = htmlToElement('
      ' + - '' + - '' + - '
      ' + - '
      ')); - _this.thead = _this.el.querySelector('thead'); - return _this; - } - DayHeader.prototype.destroy = function () { - removeElement(this.el); - }; - DayHeader.prototype.render = function (props) { - var dates = props.dates, datesRepDistinctDays = props.datesRepDistinctDays; - var parts = []; - if (props.renderIntroHtml) { - parts.push(props.renderIntroHtml()); - } - var colHeadFormat = createFormatter(this.opt('columnHeaderFormat') || - computeFallbackHeaderFormat(datesRepDistinctDays, dates.length)); - for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) { - var date = dates_1[_i]; - parts.push(renderDateCell(date, props.dateProfile, datesRepDistinctDays, dates.length, colHeadFormat, this.context)); - } - if (this.isRtl) { - parts.reverse(); - } - this.thead.innerHTML = '' + parts.join('') + ''; - }; - return DayHeader; -}(Component)); - -var DaySeries = /** @class */ (function () { - function DaySeries(range, dateProfileGenerator) { - var date = range.start; - var end = range.end; - var indices = []; - var dates = []; - var dayIndex = -1; - while (date < end) { // loop each day from start to end - if (dateProfileGenerator.isHiddenDay(date)) { - indices.push(dayIndex + 0.5); // mark that it's between indices - } - else { - dayIndex++; - indices.push(dayIndex); - dates.push(date); - } - date = addDays(date, 1); - } - this.dates = dates; - this.indices = indices; - this.cnt = dates.length; - } - DaySeries.prototype.sliceRange = function (range) { - var firstIndex = this.getDateDayIndex(range.start); // inclusive first index - var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index - var clippedFirstIndex = Math.max(0, firstIndex); - var clippedLastIndex = Math.min(this.cnt - 1, lastIndex); - // deal with in-between indices - clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell - clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell - if (clippedFirstIndex <= clippedLastIndex) { - return { - firstIndex: clippedFirstIndex, - lastIndex: clippedLastIndex, - isStart: firstIndex === clippedFirstIndex, - isEnd: lastIndex === clippedLastIndex - }; - } - else { - return null; - } - }; - // Given a date, returns its chronolocial cell-index from the first cell of the grid. - // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. - // If before the first offset, returns a negative number. - // If after the last offset, returns an offset past the last cell offset. - // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. - DaySeries.prototype.getDateDayIndex = function (date) { - var indices = this.indices; - var dayOffset = Math.floor(diffDays(this.dates[0], date)); - if (dayOffset < 0) { - return indices[0] - 1; - } - else if (dayOffset >= indices.length) { - return indices[indices.length - 1] + 1; - } - else { - return indices[dayOffset]; - } - }; - return DaySeries; -}()); - -var DayTable = /** @class */ (function () { - function DayTable(daySeries, breakOnWeeks) { - var dates = daySeries.dates; - var daysPerRow; - var firstDay; - var rowCnt; - if (breakOnWeeks) { - // count columns until the day-of-week repeats - firstDay = dates[0].getUTCDay(); - for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) { - if (dates[daysPerRow].getUTCDay() === firstDay) { - break; - } - } - rowCnt = Math.ceil(dates.length / daysPerRow); - } - else { - rowCnt = 1; - daysPerRow = dates.length; - } - this.rowCnt = rowCnt; - this.colCnt = daysPerRow; - this.daySeries = daySeries; - this.cells = this.buildCells(); - this.headerDates = this.buildHeaderDates(); - } - DayTable.prototype.buildCells = function () { - var rows = []; - for (var row = 0; row < this.rowCnt; row++) { - var cells = []; - for (var col = 0; col < this.colCnt; col++) { - cells.push(this.buildCell(row, col)); - } - rows.push(cells); - } - return rows; - }; - DayTable.prototype.buildCell = function (row, col) { - return { - date: this.daySeries.dates[row * this.colCnt + col] - }; - }; - DayTable.prototype.buildHeaderDates = function () { - var dates = []; - for (var col = 0; col < this.colCnt; col++) { - dates.push(this.cells[0][col].date); - } - return dates; - }; - DayTable.prototype.sliceRange = function (range) { - var colCnt = this.colCnt; - var seriesSeg = this.daySeries.sliceRange(range); - var segs = []; - if (seriesSeg) { - var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex; - var index = firstIndex; - while (index <= lastIndex) { - var row = Math.floor(index / colCnt); - var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1); - segs.push({ - row: row, - firstCol: index % colCnt, - lastCol: (nextIndex - 1) % colCnt, - isStart: seriesSeg.isStart && index === firstIndex, - isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex - }); - index = nextIndex; - } - } - return segs; - }; - return DayTable; -}()); - -var Slicer = /** @class */ (function () { - function Slicer() { - this.sliceBusinessHours = memoize(this._sliceBusinessHours); - this.sliceDateSelection = memoize(this._sliceDateSpan); - this.sliceEventStore = memoize(this._sliceEventStore); - this.sliceEventDrag = memoize(this._sliceInteraction); - this.sliceEventResize = memoize(this._sliceInteraction); - } - Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 4; _i < arguments.length; _i++) { - extraArgs[_i - 4] = arguments[_i]; - } - var eventUiBases = props.eventUiBases; - var eventSegs = this.sliceEventStore.apply(this, [props.eventStore, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)); - return { - dateSelectionSegs: this.sliceDateSelection.apply(this, [props.dateSelection, eventUiBases, component].concat(extraArgs)), - businessHourSegs: this.sliceBusinessHours.apply(this, [props.businessHours, dateProfile, nextDayThreshold, component].concat(extraArgs)), - fgEventSegs: eventSegs.fg, - bgEventSegs: eventSegs.bg, - eventDrag: this.sliceEventDrag.apply(this, [props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)), - eventResize: this.sliceEventResize.apply(this, [props.eventResize, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)), - eventSelection: props.eventSelection - }; // TODO: give interactionSegs? - }; - Slicer.prototype.sliceNowDate = function (// does not memoize - date, component) { - var extraArgs = []; - for (var _i = 2; _i < arguments.length; _i++) { - extraArgs[_i - 2] = arguments[_i]; - } - return this._sliceDateSpan.apply(this, [{ range: { start: date, end: addMs(date, 1) }, allDay: false }, - {}, - component].concat(extraArgs)); - }; - Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 4; _i < arguments.length; _i++) { - extraArgs[_i - 4] = arguments[_i]; - } - if (!businessHours) { - return []; - } - return this._sliceEventStore.apply(this, [expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), component.calendar), - {}, - dateProfile, - nextDayThreshold, - component].concat(extraArgs)).bg; - }; - Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 5; _i < arguments.length; _i++) { - extraArgs[_i - 5] = arguments[_i]; - } - if (eventStore) { - var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); - return { - bg: this.sliceEventRanges(rangeRes.bg, component, extraArgs), - fg: this.sliceEventRanges(rangeRes.fg, component, extraArgs) - }; - } - else { - return { bg: [], fg: [] }; - } - }; - Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 5; _i < arguments.length; _i++) { - extraArgs[_i - 5] = arguments[_i]; - } - if (!interaction) { - return null; - } - var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); - return { - segs: this.sliceEventRanges(rangeRes.fg, component, extraArgs), - affectedInstances: interaction.affectedEvents.instances, - isEvent: interaction.isEvent, - sourceSeg: interaction.origSeg - }; - }; - Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, component) { - var extraArgs = []; - for (var _i = 3; _i < arguments.length; _i++) { - extraArgs[_i - 3] = arguments[_i]; - } - if (!dateSpan) { - return []; - } - var eventRange = fabricateEventRange(dateSpan, eventUiBases, component.calendar); - var segs = this.sliceRange.apply(this, [dateSpan.range].concat(extraArgs)); - for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) { - var seg = segs_1[_a]; - seg.component = component; - seg.eventRange = eventRange; - } - return segs; - }; - /* - "complete" seg means it has component and eventRange - */ - Slicer.prototype.sliceEventRanges = function (eventRanges, component, // TODO: kill - extraArgs) { - var segs = []; - for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) { - var eventRange = eventRanges_1[_i]; - segs.push.apply(segs, this.sliceEventRange(eventRange, component, extraArgs)); - } - return segs; - }; - /* - "complete" seg means it has component and eventRange - */ - Slicer.prototype.sliceEventRange = function (eventRange, component, // TODO: kill - extraArgs) { - var segs = this.sliceRange.apply(this, [eventRange.range].concat(extraArgs)); - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - seg.component = component; - seg.eventRange = eventRange; - seg.isStart = eventRange.isStart && seg.isStart; - seg.isEnd = eventRange.isEnd && seg.isEnd; - } - return segs; - }; - return Slicer; -}()); -/* -for incorporating minTime/maxTime if appropriate -TODO: should be part of DateProfile! -TimelineDateProfile already does this btw -*/ -function computeActiveRange(dateProfile, isComponentAllDay) { - var range = dateProfile.activeRange; - if (isComponentAllDay) { - return range; - } - return { - start: addMs(range.start, dateProfile.minTime.milliseconds), - end: addMs(range.end, dateProfile.maxTime.milliseconds - 864e5) // 864e5 = ms in a day - }; -} - -// exports -// -------------------------------------------------------------------------------------------------- -var version = '4.3.1'; - -export { Calendar, Component, DateComponent, DateEnv, DateProfileGenerator, DayHeader, DaySeries, DayTable, ElementDragging, ElementScrollController, EmitterMixin, EventApi, FgEventRenderer, FillRenderer, Interaction, Mixin, NamedTimeZoneImpl, PositionCache, ScrollComponent, ScrollController, Slicer, Splitter, Theme, View, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, appendToElement, applyAll, applyMutationToEventStore, applyStyle, applyStyleProp, asRoughMinutes, asRoughMs, asRoughSeconds, buildGotoAnchorHtml, buildSegCompareObj, capitaliseFirstLetter, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compensateScroll, computeClippingRect, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeVisibleDayRange, config, constrainPoint, createDuration, createElement, createEmptyEventStore, createEventInstance, createFormatter, createPlugin, cssToStr, debounce, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, distributeHeight, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findChildren, findElements, flexibleCompare, forceClassName, formatDate, formatIsoTimeString, formatRange, getAllDayHtml, getClippingParents, getDayClasses, getElSeg, getRectCenter, getRelevantEvents, globalDefaults, greatestDurationDenominator, hasBgRendering, htmlEscape, htmlToElement, insertAfterElement, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, isArraysEqual, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isSingleDay, isValidDate, listenBySelector, mapHash, matchCellWidths, memoize, memoizeOutput, memoizeRendering, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, prependToElement, preventContextMenu, preventDefault, preventSelection, processScopedUiProps, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineProps, removeElement, removeExact, renderDateCell, requestJson, sliceEventStore, startOfDay, subtractInnerElHeight, translateRect, uncompensateScroll, undistributeHeight, unpromisify, version, whenTransitionDone, wholeDivideDurations }; diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.js deleted file mode 100644 index ec0808d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.js +++ /dev/null @@ -1,8717 +0,0 @@ -/*! -FullCalendar Core Package v4.3.1 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.FullCalendar = {})); -}(this, function (exports) { 'use strict'; - - // Creating - // ---------------------------------------------------------------------------------------------------------------- - var elementPropHash = { - className: true, - colSpan: true, - rowSpan: true - }; - var containerTagHash = { - '= rect.left && - point.left < rect.right && - point.top >= rect.top && - point.top < rect.bottom; - } - // Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false - function intersectRects(rect1, rect2) { - var res = { - left: Math.max(rect1.left, rect2.left), - right: Math.min(rect1.right, rect2.right), - top: Math.max(rect1.top, rect2.top), - bottom: Math.min(rect1.bottom, rect2.bottom) - }; - if (res.left < res.right && res.top < res.bottom) { - return res; - } - return false; - } - function translateRect(rect, deltaX, deltaY) { - return { - left: rect.left + deltaX, - right: rect.right + deltaX, - top: rect.top + deltaY, - bottom: rect.bottom + deltaY - }; - } - // Returns a new point that will have been moved to reside within the given rectangle - function constrainPoint(point, rect) { - return { - left: Math.min(Math.max(point.left, rect.left), rect.right), - top: Math.min(Math.max(point.top, rect.top), rect.bottom) - }; - } - // Returns a point that is the center of the given rectangle - function getRectCenter(rect) { - return { - left: (rect.left + rect.right) / 2, - top: (rect.top + rect.bottom) / 2 - }; - } - // Subtracts point2's coordinates from point1's coordinates, returning a delta - function diffPoints(point1, point2) { - return { - left: point1.left - point2.left, - top: point1.top - point2.top - }; - } - - // Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side - var isRtlScrollbarOnLeft = null; - function getIsRtlScrollbarOnLeft() { - if (isRtlScrollbarOnLeft === null) { - isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft(); - } - return isRtlScrollbarOnLeft; - } - function computeIsRtlScrollbarOnLeft() { - var outerEl = createElement('div', { - style: { - position: 'absolute', - top: -1000, - left: 0, - border: 0, - padding: 0, - overflow: 'scroll', - direction: 'rtl' - } - }, '
      '); - document.body.appendChild(outerEl); - var innerEl = outerEl.firstChild; - var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left; - removeElement(outerEl); - return res; - } - // The scrollbar width computations in computeEdges are sometimes flawed when it comes to - // retina displays, rounding, and IE11. Massage them into a usable value. - function sanitizeScrollbarWidth(width) { - width = Math.max(0, width); // no negatives - width = Math.round(width); - return width; - } - - function computeEdges(el, getPadding) { - if (getPadding === void 0) { getPadding = false; } - var computedStyle = window.getComputedStyle(el); - var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0; - var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0; - var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0; - var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; - // must use offset(Width|Height) because compatible with client(Width|Height) - var scrollbarLeftRight = sanitizeScrollbarWidth(el.offsetWidth - el.clientWidth - borderLeft - borderRight); - var scrollbarBottom = sanitizeScrollbarWidth(el.offsetHeight - el.clientHeight - borderTop - borderBottom); - var res = { - borderLeft: borderLeft, - borderRight: borderRight, - borderTop: borderTop, - borderBottom: borderBottom, - scrollbarBottom: scrollbarBottom, - scrollbarLeft: 0, - scrollbarRight: 0 - }; - if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side? - res.scrollbarLeft = scrollbarLeftRight; - } - else { - res.scrollbarRight = scrollbarLeftRight; - } - if (getPadding) { - res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0; - res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0; - res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0; - res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0; - } - return res; - } - function computeInnerRect(el, goWithinPadding) { - if (goWithinPadding === void 0) { goWithinPadding = false; } - var outerRect = computeRect(el); - var edges = computeEdges(el, goWithinPadding); - var res = { - left: outerRect.left + edges.borderLeft + edges.scrollbarLeft, - right: outerRect.right - edges.borderRight - edges.scrollbarRight, - top: outerRect.top + edges.borderTop, - bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom - }; - if (goWithinPadding) { - res.left += edges.paddingLeft; - res.right -= edges.paddingRight; - res.top += edges.paddingTop; - res.bottom -= edges.paddingBottom; - } - return res; - } - function computeRect(el) { - var rect = el.getBoundingClientRect(); - return { - left: rect.left + window.pageXOffset, - top: rect.top + window.pageYOffset, - right: rect.right + window.pageXOffset, - bottom: rect.bottom + window.pageYOffset - }; - } - function computeViewportRect() { - return { - left: window.pageXOffset, - right: window.pageXOffset + document.documentElement.clientWidth, - top: window.pageYOffset, - bottom: window.pageYOffset + document.documentElement.clientHeight - }; - } - function computeHeightAndMargins(el) { - return el.getBoundingClientRect().height + computeVMargins(el); - } - function computeVMargins(el) { - var computed = window.getComputedStyle(el); - return parseInt(computed.marginTop, 10) + - parseInt(computed.marginBottom, 10); - } - // does not return window - function getClippingParents(el) { - var parents = []; - while (el instanceof HTMLElement) { // will stop when gets to document or null - var computedStyle = window.getComputedStyle(el); - if (computedStyle.position === 'fixed') { - break; - } - if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) { - parents.push(el); - } - el = el.parentNode; - } - return parents; - } - function computeClippingRect(el) { - return getClippingParents(el) - .map(function (el) { - return computeInnerRect(el); - }) - .concat(computeViewportRect()) - .reduce(function (rect0, rect1) { - return intersectRects(rect0, rect1) || rect1; // should always intersect - }); - } - - // Stops a mouse/touch event from doing it's native browser action - function preventDefault(ev) { - ev.preventDefault(); - } - // Event Delegation - // ---------------------------------------------------------------------------------------------------------------- - function listenBySelector(container, eventType, selector, handler) { - function realHandler(ev) { - var matchedChild = elementClosest(ev.target, selector); - if (matchedChild) { - handler.call(matchedChild, ev, matchedChild); - } - } - container.addEventListener(eventType, realHandler); - return function () { - container.removeEventListener(eventType, realHandler); - }; - } - function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) { - var currentMatchedChild; - return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) { - if (matchedChild !== currentMatchedChild) { - currentMatchedChild = matchedChild; - onMouseEnter(ev, matchedChild); - var realOnMouseLeave_1 = function (ev) { - currentMatchedChild = null; - onMouseLeave(ev, matchedChild); - matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1); - }; - // listen to the next mouseleave, and then unattach - matchedChild.addEventListener('mouseleave', realOnMouseLeave_1); - } - }); - } - // Animation - // ---------------------------------------------------------------------------------------------------------------- - var transitionEventNames = [ - 'webkitTransitionEnd', - 'otransitionend', - 'oTransitionEnd', - 'msTransitionEnd', - 'transitionend' - ]; - // triggered only when the next single subsequent transition finishes - function whenTransitionDone(el, callback) { - var realCallback = function (ev) { - callback(ev); - transitionEventNames.forEach(function (eventName) { - el.removeEventListener(eventName, realCallback); - }); - }; - transitionEventNames.forEach(function (eventName) { - el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes - }); - } - - var DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; - // Adding - function addWeeks(m, n) { - var a = dateToUtcArray(m); - a[2] += n * 7; - return arrayToUtcDate(a); - } - function addDays(m, n) { - var a = dateToUtcArray(m); - a[2] += n; - return arrayToUtcDate(a); - } - function addMs(m, n) { - var a = dateToUtcArray(m); - a[6] += n; - return arrayToUtcDate(a); - } - // Diffing (all return floats) - function diffWeeks(m0, m1) { - return diffDays(m0, m1) / 7; - } - function diffDays(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24); - } - function diffHours(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60); - } - function diffMinutes(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / (1000 * 60); - } - function diffSeconds(m0, m1) { - return (m1.valueOf() - m0.valueOf()) / 1000; - } - function diffDayAndTime(m0, m1) { - var m0day = startOfDay(m0); - var m1day = startOfDay(m1); - return { - years: 0, - months: 0, - days: Math.round(diffDays(m0day, m1day)), - milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()) - }; - } - // Diffing Whole Units - function diffWholeWeeks(m0, m1) { - var d = diffWholeDays(m0, m1); - if (d !== null && d % 7 === 0) { - return d / 7; - } - return null; - } - function diffWholeDays(m0, m1) { - if (timeAsMs(m0) === timeAsMs(m1)) { - return Math.round(diffDays(m0, m1)); - } - return null; - } - // Start-Of - function startOfDay(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate() - ]); - } - function startOfHour(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours() - ]); - } - function startOfMinute(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours(), - m.getUTCMinutes() - ]); - } - function startOfSecond(m) { - return arrayToUtcDate([ - m.getUTCFullYear(), - m.getUTCMonth(), - m.getUTCDate(), - m.getUTCHours(), - m.getUTCMinutes(), - m.getUTCSeconds() - ]); - } - // Week Computation - function weekOfYear(marker, dow, doy) { - var y = marker.getUTCFullYear(); - var w = weekOfGivenYear(marker, y, dow, doy); - if (w < 1) { - return weekOfGivenYear(marker, y - 1, dow, doy); - } - var nextW = weekOfGivenYear(marker, y + 1, dow, doy); - if (nextW >= 1) { - return Math.min(w, nextW); - } - return w; - } - function weekOfGivenYear(marker, year, dow, doy) { - var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]); - var dayStart = startOfDay(marker); - var days = Math.round(diffDays(firstWeekStart, dayStart)); - return Math.floor(days / 7) + 1; // zero-indexed - } - // start-of-first-week - start-of-year - function firstWeekOffset(year, dow, doy) { - // first-week day -- which january is always in the first week (4 for iso, 1 for other) - var fwd = 7 + dow - doy; - // first-week day local weekday -- which local weekday is fwd - var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7; - return -fwdlw + fwd - 1; - } - // Array Conversion - function dateToLocalArray(date) { - return [ - date.getFullYear(), - date.getMonth(), - date.getDate(), - date.getHours(), - date.getMinutes(), - date.getSeconds(), - date.getMilliseconds() - ]; - } - function arrayToLocalDate(a) { - return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month - a[3] || 0, a[4] || 0, a[5] || 0); - } - function dateToUtcArray(date) { - return [ - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() - ]; - } - function arrayToUtcDate(a) { - // according to web standards (and Safari), a month index is required. - // massage if only given a year. - if (a.length === 1) { - a = a.concat([0]); - } - return new Date(Date.UTC.apply(Date, a)); - } - // Other Utils - function isValidDate(m) { - return !isNaN(m.valueOf()); - } - function timeAsMs(m) { - return m.getUTCHours() * 1000 * 60 * 60 + - m.getUTCMinutes() * 1000 * 60 + - m.getUTCSeconds() * 1000 + - m.getUTCMilliseconds(); - } - - var INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds']; - var PARSE_RE = /^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/; - // Parsing and Creation - function createDuration(input, unit) { - var _a; - if (typeof input === 'string') { - return parseString(input); - } - else if (typeof input === 'object' && input) { // non-null object - return normalizeObject(input); - } - else if (typeof input === 'number') { - return normalizeObject((_a = {}, _a[unit || 'milliseconds'] = input, _a)); - } - else { - return null; - } - } - function parseString(s) { - var m = PARSE_RE.exec(s); - if (m) { - var sign = m[1] ? -1 : 1; - return { - years: 0, - months: 0, - days: sign * (m[2] ? parseInt(m[2], 10) : 0), - milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours - (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes - (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds - (m[6] ? parseInt(m[6], 10) : 0) // ms - ) - }; - } - return null; - } - function normalizeObject(obj) { - return { - years: obj.years || obj.year || 0, - months: obj.months || obj.month || 0, - days: (obj.days || obj.day || 0) + - getWeeksFromInput(obj) * 7, - milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours - (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes - (obj.seconds || obj.second || 0) * 1000 + // seconds - (obj.milliseconds || obj.millisecond || obj.ms || 0) // ms - }; - } - function getWeeksFromInput(obj) { - return obj.weeks || obj.week || 0; - } - // Equality - function durationsEqual(d0, d1) { - return d0.years === d1.years && - d0.months === d1.months && - d0.days === d1.days && - d0.milliseconds === d1.milliseconds; - } - function isSingleDay(dur) { - return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0; - } - // Simple Math - function addDurations(d0, d1) { - return { - years: d0.years + d1.years, - months: d0.months + d1.months, - days: d0.days + d1.days, - milliseconds: d0.milliseconds + d1.milliseconds - }; - } - function subtractDurations(d1, d0) { - return { - years: d1.years - d0.years, - months: d1.months - d0.months, - days: d1.days - d0.days, - milliseconds: d1.milliseconds - d0.milliseconds - }; - } - function multiplyDuration(d, n) { - return { - years: d.years * n, - months: d.months * n, - days: d.days * n, - milliseconds: d.milliseconds * n - }; - } - // Conversions - // "Rough" because they are based on average-case Gregorian months/years - function asRoughYears(dur) { - return asRoughDays(dur) / 365; - } - function asRoughMonths(dur) { - return asRoughDays(dur) / 30; - } - function asRoughDays(dur) { - return asRoughMs(dur) / 864e5; - } - function asRoughMinutes(dur) { - return asRoughMs(dur) / (1000 * 60); - } - function asRoughSeconds(dur) { - return asRoughMs(dur) / 1000; - } - function asRoughMs(dur) { - return dur.years * (365 * 864e5) + - dur.months * (30 * 864e5) + - dur.days * 864e5 + - dur.milliseconds; - } - // Advanced Math - function wholeDivideDurations(numerator, denominator) { - var res = null; - for (var i = 0; i < INTERNAL_UNITS.length; i++) { - var unit = INTERNAL_UNITS[i]; - if (denominator[unit]) { - var localRes = numerator[unit] / denominator[unit]; - if (!isInt(localRes) || (res !== null && res !== localRes)) { - return null; - } - res = localRes; - } - else if (numerator[unit]) { - // needs to divide by something but can't! - return null; - } - } - return res; - } - function greatestDurationDenominator(dur, dontReturnWeeks) { - var ms = dur.milliseconds; - if (ms) { - if (ms % 1000 !== 0) { - return { unit: 'millisecond', value: ms }; - } - if (ms % (1000 * 60) !== 0) { - return { unit: 'second', value: ms / 1000 }; - } - if (ms % (1000 * 60 * 60) !== 0) { - return { unit: 'minute', value: ms / (1000 * 60) }; - } - if (ms) { - return { unit: 'hour', value: ms / (1000 * 60 * 60) }; - } - } - if (dur.days) { - if (!dontReturnWeeks && dur.days % 7 === 0) { - return { unit: 'week', value: dur.days / 7 }; - } - return { unit: 'day', value: dur.days }; - } - if (dur.months) { - return { unit: 'month', value: dur.months }; - } - if (dur.years) { - return { unit: 'year', value: dur.years }; - } - return { unit: 'millisecond', value: 0 }; - } - - /* FullCalendar-specific DOM Utilities - ----------------------------------------------------------------------------------------------------------------------*/ - // Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left - // and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. - function compensateScroll(rowEl, scrollbarWidths) { - if (scrollbarWidths.left) { - applyStyle(rowEl, { - borderLeftWidth: 1, - marginLeft: scrollbarWidths.left - 1 - }); - } - if (scrollbarWidths.right) { - applyStyle(rowEl, { - borderRightWidth: 1, - marginRight: scrollbarWidths.right - 1 - }); - } - } - // Undoes compensateScroll and restores all borders/margins - function uncompensateScroll(rowEl) { - applyStyle(rowEl, { - marginLeft: '', - marginRight: '', - borderLeftWidth: '', - borderRightWidth: '' - }); - } - // Make the mouse cursor express that an event is not allowed in the current area - function disableCursor() { - document.body.classList.add('fc-not-allowed'); - } - // Returns the mouse cursor to its original look - function enableCursor() { - document.body.classList.remove('fc-not-allowed'); - } - // Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. - // By default, all elements that are shorter than the recommended height are expanded uniformly, not considering - // any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and - // reduces the available height. - function distributeHeight(els, availableHeight, shouldRedistribute) { - // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, - // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. - var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element - var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* - var flexEls = []; // elements that are allowed to expand. array of DOM nodes - var flexOffsets = []; // amount of vertical space it takes up - var flexHeights = []; // actual css height - var usedHeight = 0; - undistributeHeight(els); // give all elements their natural height - // find elements that are below the recommended height (expandable). - // important to query for heights in a single first pass (to avoid reflow oscillation). - els.forEach(function (el, i) { - var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; - var naturalHeight = el.getBoundingClientRect().height; - var naturalOffset = naturalHeight + computeVMargins(el); - if (naturalOffset < minOffset) { - flexEls.push(el); - flexOffsets.push(naturalOffset); - flexHeights.push(naturalHeight); - } - else { - // this element stretches past recommended height (non-expandable). mark the space as occupied. - usedHeight += naturalOffset; - } - }); - // readjust the recommended height to only consider the height available to non-maxed-out rows. - if (shouldRedistribute) { - availableHeight -= usedHeight; - minOffset1 = Math.floor(availableHeight / flexEls.length); - minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* - } - // assign heights to all expandable elements - flexEls.forEach(function (el, i) { - var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; - var naturalOffset = flexOffsets[i]; - var naturalHeight = flexHeights[i]; - var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding - if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things - el.style.height = newHeight + 'px'; - } - }); - } - // Undoes distrubuteHeight, restoring all els to their natural height - function undistributeHeight(els) { - els.forEach(function (el) { - el.style.height = ''; - }); - } - // Given `els`, a set of cells, find the cell with the largest natural width and set the widths of all the - // cells to be that width. - // PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline - function matchCellWidths(els) { - var maxInnerWidth = 0; - els.forEach(function (el) { - var innerEl = el.firstChild; // hopefully an element - if (innerEl instanceof HTMLElement) { - var innerWidth_1 = innerEl.getBoundingClientRect().width; - if (innerWidth_1 > maxInnerWidth) { - maxInnerWidth = innerWidth_1; - } - } - }); - maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance - els.forEach(function (el) { - el.style.width = maxInnerWidth + 'px'; - }); - return maxInnerWidth; - } - // Given one element that resides inside another, - // Subtracts the height of the inner element from the outer element. - function subtractInnerElHeight(outerEl, innerEl) { - // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked - var reflowStyleProps = { - position: 'relative', - left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll - }; - applyStyle(outerEl, reflowStyleProps); - applyStyle(innerEl, reflowStyleProps); - var diff = // grab the dimensions - outerEl.getBoundingClientRect().height - - innerEl.getBoundingClientRect().height; - // undo hack - var resetStyleProps = { position: '', left: '' }; - applyStyle(outerEl, resetStyleProps); - applyStyle(innerEl, resetStyleProps); - return diff; - } - /* Selection - ----------------------------------------------------------------------------------------------------------------------*/ - function preventSelection(el) { - el.classList.add('fc-unselectable'); - el.addEventListener('selectstart', preventDefault); - } - function allowSelection(el) { - el.classList.remove('fc-unselectable'); - el.removeEventListener('selectstart', preventDefault); - } - /* Context Menu - ----------------------------------------------------------------------------------------------------------------------*/ - function preventContextMenu(el) { - el.addEventListener('contextmenu', preventDefault); - } - function allowContextMenu(el) { - el.removeEventListener('contextmenu', preventDefault); - } - /* Object Ordering by Field - ----------------------------------------------------------------------------------------------------------------------*/ - function parseFieldSpecs(input) { - var specs = []; - var tokens = []; - var i; - var token; - if (typeof input === 'string') { - tokens = input.split(/\s*,\s*/); - } - else if (typeof input === 'function') { - tokens = [input]; - } - else if (Array.isArray(input)) { - tokens = input; - } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - if (typeof token === 'string') { - specs.push(token.charAt(0) === '-' ? - { field: token.substring(1), order: -1 } : - { field: token, order: 1 }); - } - else if (typeof token === 'function') { - specs.push({ func: token }); - } - } - return specs; - } - function compareByFieldSpecs(obj0, obj1, fieldSpecs) { - var i; - var cmp; - for (i = 0; i < fieldSpecs.length; i++) { - cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]); - if (cmp) { - return cmp; - } - } - return 0; - } - function compareByFieldSpec(obj0, obj1, fieldSpec) { - if (fieldSpec.func) { - return fieldSpec.func(obj0, obj1); - } - return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) - * (fieldSpec.order || 1); - } - function flexibleCompare(a, b) { - if (!a && !b) { - return 0; - } - if (b == null) { - return -1; - } - if (a == null) { - return 1; - } - if (typeof a === 'string' || typeof b === 'string') { - return String(a).localeCompare(String(b)); - } - return a - b; - } - /* String Utilities - ----------------------------------------------------------------------------------------------------------------------*/ - function capitaliseFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); - } - function padStart(val, len) { - var s = String(val); - return '000'.substr(0, len - s.length) + s; - } - /* Number Utilities - ----------------------------------------------------------------------------------------------------------------------*/ - function compareNumbers(a, b) { - return a - b; - } - function isInt(n) { - return n % 1 === 0; - } - /* Weird Utilities - ----------------------------------------------------------------------------------------------------------------------*/ - function applyAll(functions, thisObj, args) { - if (typeof functions === 'function') { // supplied a single function - functions = [functions]; - } - if (functions) { - var i = void 0; - var ret = void 0; - for (i = 0; i < functions.length; i++) { - ret = functions[i].apply(thisObj, args) || ret; - } - return ret; - } - } - function firstDefined() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - for (var i = 0; i < args.length; i++) { - if (args[i] !== undefined) { - return args[i]; - } - } - } - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - // https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 - function debounce(func, wait) { - var timeout; - var args; - var context; - var timestamp; - var result; - var later = function () { - var last = new Date().valueOf() - timestamp; - if (last < wait) { - timeout = setTimeout(later, wait - last); - } - else { - timeout = null; - result = func.apply(context, args); - context = args = null; - } - }; - return function () { - context = this; - args = arguments; - timestamp = new Date().valueOf(); - if (!timeout) { - timeout = setTimeout(later, wait); - } - return result; - }; - } - // Number and Boolean are only types that defaults or not computed for - // TODO: write more comments - function refineProps(rawProps, processors, defaults, leftoverProps) { - if (defaults === void 0) { defaults = {}; } - var refined = {}; - for (var key in processors) { - var processor = processors[key]; - if (rawProps[key] !== undefined) { - // found - if (processor === Function) { - refined[key] = typeof rawProps[key] === 'function' ? rawProps[key] : null; - } - else if (processor) { // a refining function? - refined[key] = processor(rawProps[key]); - } - else { - refined[key] = rawProps[key]; - } - } - else if (defaults[key] !== undefined) { - // there's an explicit default - refined[key] = defaults[key]; - } - else { - // must compute a default - if (processor === String) { - refined[key] = ''; // empty string is default for String - } - else if (!processor || processor === Number || processor === Boolean || processor === Function) { - refined[key] = null; // assign null for other non-custom processor funcs - } - else { - refined[key] = processor(null); // run the custom processor func - } - } - } - if (leftoverProps) { - for (var key in rawProps) { - if (processors[key] === undefined) { - leftoverProps[key] = rawProps[key]; - } - } - } - return refined; - } - /* Date stuff that doesn't belong in datelib core - ----------------------------------------------------------------------------------------------------------------------*/ - // given a timed range, computes an all-day range that has the same exact duration, - // but whose start time is aligned with the start of the day. - function computeAlignedDayRange(timedRange) { - var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1; - var start = startOfDay(timedRange.start); - var end = addDays(start, dayCnt); - return { start: start, end: end }; - } - // given a timed range, computes an all-day range based on how for the end date bleeds into the next day - // TODO: give nextDayThreshold a default arg - function computeVisibleDayRange(timedRange, nextDayThreshold) { - if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); } - var startDay = null; - var endDay = null; - if (timedRange.end) { - endDay = startOfDay(timedRange.end); - var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay` - // If the end time is actually inclusively part of the next day and is equal to or - // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. - // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. - if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) { - endDay = addDays(endDay, 1); - } - } - if (timedRange.start) { - startDay = startOfDay(timedRange.start); // the beginning of the day the range starts - // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. - if (endDay && endDay <= startDay) { - endDay = addDays(startDay, 1); - } - } - return { start: startDay, end: endDay }; - } - // spans from one day into another? - function isMultiDayRange(range) { - var visibleRange = computeVisibleDayRange(range); - return diffDays(visibleRange.start, visibleRange.end) > 1; - } - function diffDates(date0, date1, dateEnv, largeUnit) { - if (largeUnit === 'year') { - return createDuration(dateEnv.diffWholeYears(date0, date1), 'year'); - } - else if (largeUnit === 'month') { - return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month'); - } - else { - return diffDayAndTime(date0, date1); // returns a duration - } - } - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function parseRecurring(eventInput, allDayDefault, dateEnv, recurringTypes, leftovers) { - for (var i = 0; i < recurringTypes.length; i++) { - var localLeftovers = {}; - var parsed = recurringTypes[i].parse(eventInput, localLeftovers, dateEnv); - if (parsed) { - var allDay = localLeftovers.allDay; - delete localLeftovers.allDay; // remove from leftovers - if (allDay == null) { - allDay = allDayDefault; - if (allDay == null) { - allDay = parsed.allDayGuess; - if (allDay == null) { - allDay = false; - } - } - } - __assign(leftovers, localLeftovers); - return { - allDay: allDay, - duration: parsed.duration, - typeData: parsed.typeData, - typeId: i - }; - } - } - return null; - } - /* - Event MUST have a recurringDef - */ - function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) { - var typeDef = recurringTypes[eventDef.recurringDef.typeId]; - var markers = typeDef.expand(eventDef.recurringDef.typeData, { - start: dateEnv.subtract(framingRange.start, duration), - end: framingRange.end - }, dateEnv); - // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to - if (eventDef.allDay) { - markers = markers.map(startOfDay); - } - return markers; - } - - var hasOwnProperty = Object.prototype.hasOwnProperty; - // Merges an array of objects into a single object. - // The second argument allows for an array of property names who's object values will be merged together. - function mergeProps(propObjs, complexProps) { - var dest = {}; - var i; - var name; - var complexObjs; - var j; - var val; - var props; - if (complexProps) { - for (i = 0; i < complexProps.length; i++) { - name = complexProps[i]; - complexObjs = []; - // collect the trailing object values, stopping when a non-object is discovered - for (j = propObjs.length - 1; j >= 0; j--) { - val = propObjs[j][name]; - if (typeof val === 'object' && val) { // non-null object - complexObjs.unshift(val); - } - else if (val !== undefined) { - dest[name] = val; // if there were no objects, this value will be used - break; - } - } - // if the trailing values were objects, use the merged value - if (complexObjs.length) { - dest[name] = mergeProps(complexObjs); - } - } - } - // copy values into the destination, going from last to first - for (i = propObjs.length - 1; i >= 0; i--) { - props = propObjs[i]; - for (name in props) { - if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign - dest[name] = props[name]; - } - } - } - return dest; - } - function filterHash(hash, func) { - var filtered = {}; - for (var key in hash) { - if (func(hash[key], key)) { - filtered[key] = hash[key]; - } - } - return filtered; - } - function mapHash(hash, func) { - var newHash = {}; - for (var key in hash) { - newHash[key] = func(hash[key], key); - } - return newHash; - } - function arrayToHash(a) { - var hash = {}; - for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { - var item = a_1[_i]; - hash[item] = true; - } - return hash; - } - function hashValuesToArray(obj) { - var a = []; - for (var key in obj) { - a.push(obj[key]); - } - return a; - } - function isPropsEqual(obj0, obj1) { - for (var key in obj0) { - if (hasOwnProperty.call(obj0, key)) { - if (!(key in obj1)) { - return false; - } - } - } - for (var key in obj1) { - if (hasOwnProperty.call(obj1, key)) { - if (obj0[key] !== obj1[key]) { - return false; - } - } - } - return true; - } - - function parseEvents(rawEvents, sourceId, calendar, allowOpenRange) { - var eventStore = createEmptyEventStore(); - for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) { - var rawEvent = rawEvents_1[_i]; - var tuple = parseEvent(rawEvent, sourceId, calendar, allowOpenRange); - if (tuple) { - eventTupleToStore(tuple, eventStore); - } - } - return eventStore; - } - function eventTupleToStore(tuple, eventStore) { - if (eventStore === void 0) { eventStore = createEmptyEventStore(); } - eventStore.defs[tuple.def.defId] = tuple.def; - if (tuple.instance) { - eventStore.instances[tuple.instance.instanceId] = tuple.instance; - } - return eventStore; - } - function expandRecurring(eventStore, framingRange, calendar) { - var dateEnv = calendar.dateEnv; - var defs = eventStore.defs, instances = eventStore.instances; - // remove existing recurring instances - instances = filterHash(instances, function (instance) { - return !defs[instance.defId].recurringDef; - }); - for (var defId in defs) { - var def = defs[defId]; - if (def.recurringDef) { - var duration = def.recurringDef.duration; - if (!duration) { - duration = def.allDay ? - calendar.defaultAllDayEventDuration : - calendar.defaultTimedEventDuration; - } - var starts = expandRecurringRanges(def, duration, framingRange, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes); - for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) { - var start = starts_1[_i]; - var instance = createEventInstance(defId, { - start: start, - end: dateEnv.add(start, duration) - }); - instances[instance.instanceId] = instance; - } - } - } - return { defs: defs, instances: instances }; - } - // retrieves events that have the same groupId as the instance specified by `instanceId` - // or they are the same as the instance. - // why might instanceId not be in the store? an event from another calendar? - function getRelevantEvents(eventStore, instanceId) { - var instance = eventStore.instances[instanceId]; - if (instance) { - var def_1 = eventStore.defs[instance.defId]; - // get events/instances with same group - var newStore = filterEventStoreDefs(eventStore, function (lookDef) { - return isEventDefsGrouped(def_1, lookDef); - }); - // add the original - // TODO: wish we could use eventTupleToStore or something like it - newStore.defs[def_1.defId] = def_1; - newStore.instances[instance.instanceId] = instance; - return newStore; - } - return createEmptyEventStore(); - } - function isEventDefsGrouped(def0, def1) { - return Boolean(def0.groupId && def0.groupId === def1.groupId); - } - function transformRawEvents(rawEvents, eventSource, calendar) { - var calEachTransform = calendar.opt('eventDataTransform'); - var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null; - if (sourceEachTransform) { - rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform); - } - if (calEachTransform) { - rawEvents = transformEachRawEvent(rawEvents, calEachTransform); - } - return rawEvents; - } - function transformEachRawEvent(rawEvents, func) { - var refinedEvents; - if (!func) { - refinedEvents = rawEvents; - } - else { - refinedEvents = []; - for (var _i = 0, rawEvents_2 = rawEvents; _i < rawEvents_2.length; _i++) { - var rawEvent = rawEvents_2[_i]; - var refinedEvent = func(rawEvent); - if (refinedEvent) { - refinedEvents.push(refinedEvent); - } - else if (refinedEvent == null) { - refinedEvents.push(rawEvent); - } // if a different falsy value, do nothing - } - } - return refinedEvents; - } - function createEmptyEventStore() { - return { defs: {}, instances: {} }; - } - function mergeEventStores(store0, store1) { - return { - defs: __assign({}, store0.defs, store1.defs), - instances: __assign({}, store0.instances, store1.instances) - }; - } - function filterEventStoreDefs(eventStore, filterFunc) { - var defs = filterHash(eventStore.defs, filterFunc); - var instances = filterHash(eventStore.instances, function (instance) { - return defs[instance.defId]; // still exists? - }); - return { defs: defs, instances: instances }; - } - - function parseRange(input, dateEnv) { - var start = null; - var end = null; - if (input.start) { - start = dateEnv.createMarker(input.start); - } - if (input.end) { - end = dateEnv.createMarker(input.end); - } - if (!start && !end) { - return null; - } - if (start && end && end < start) { - return null; - } - return { start: start, end: end }; - } - // SIDE-EFFECT: will mutate ranges. - // Will return a new array result. - function invertRanges(ranges, constraintRange) { - var invertedRanges = []; - var start = constraintRange.start; // the end of the previous range. the start of the new range - var i; - var dateRange; - // ranges need to be in order. required for our date-walking algorithm - ranges.sort(compareRanges); - for (i = 0; i < ranges.length; i++) { - dateRange = ranges[i]; - // add the span of time before the event (if there is any) - if (dateRange.start > start) { // compare millisecond time (skip any ambig logic) - invertedRanges.push({ start: start, end: dateRange.start }); - } - if (dateRange.end > start) { - start = dateRange.end; - } - } - // add the span of time after the last event (if there is any) - if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic) - invertedRanges.push({ start: start, end: constraintRange.end }); - } - return invertedRanges; - } - function compareRanges(range0, range1) { - return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first - } - function intersectRanges(range0, range1) { - var start = range0.start; - var end = range0.end; - var newRange = null; - if (range1.start !== null) { - if (start === null) { - start = range1.start; - } - else { - start = new Date(Math.max(start.valueOf(), range1.start.valueOf())); - } - } - if (range1.end != null) { - if (end === null) { - end = range1.end; - } - else { - end = new Date(Math.min(end.valueOf(), range1.end.valueOf())); - } - } - if (start === null || end === null || start < end) { - newRange = { start: start, end: end }; - } - return newRange; - } - function rangesEqual(range0, range1) { - return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && - (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf()); - } - function rangesIntersect(range0, range1) { - return (range0.end === null || range1.start === null || range0.end > range1.start) && - (range0.start === null || range1.end === null || range0.start < range1.end); - } - function rangeContainsRange(outerRange, innerRange) { - return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) && - (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end)); - } - function rangeContainsMarker(range, date) { - return (range.start === null || date >= range.start) && - (range.end === null || date < range.end); - } - // If the given date is not within the given range, move it inside. - // (If it's past the end, make it one millisecond before the end). - function constrainMarkerToRange(date, range) { - if (range.start != null && date < range.start) { - return range.start; - } - if (range.end != null && date >= range.end) { - return new Date(range.end.valueOf() - 1); - } - return date; - } - - function removeExact(array, exactVal) { - var removeCnt = 0; - var i = 0; - while (i < array.length) { - if (array[i] === exactVal) { - array.splice(i, 1); - removeCnt++; - } - else { - i++; - } - } - return removeCnt; - } - function isArraysEqual(a0, a1) { - var len = a0.length; - var i; - if (len !== a1.length) { // not array? or not same length? - return false; - } - for (i = 0; i < len; i++) { - if (a0[i] !== a1[i]) { - return false; - } - } - return true; - } - - function memoize(workerFunc) { - var args; - var res; - return function () { - if (!args || !isArraysEqual(args, arguments)) { - args = arguments; - res = workerFunc.apply(this, arguments); - } - return res; - }; - } - /* - always executes the workerFunc, but if the result is equal to the previous result, - return the previous result instead. - */ - function memoizeOutput(workerFunc, equalityFunc) { - var cachedRes = null; - return function () { - var newRes = workerFunc.apply(this, arguments); - if (cachedRes === null || !(cachedRes === newRes || equalityFunc(cachedRes, newRes))) { - cachedRes = newRes; - } - return cachedRes; - }; - } - - var EXTENDED_SETTINGS_AND_SEVERITIES = { - week: 3, - separator: 0, - omitZeroMinute: 0, - meridiem: 0, - omitCommas: 0 - }; - var STANDARD_DATE_PROP_SEVERITIES = { - timeZoneName: 7, - era: 6, - year: 5, - month: 4, - day: 2, - weekday: 2, - hour: 1, - minute: 1, - second: 1 - }; - var MERIDIEM_RE = /\s*([ap])\.?m\.?/i; // eats up leading spaces too - var COMMA_RE = /,/g; // we need re for globalness - var MULTI_SPACE_RE = /\s+/g; - var LTR_RE = /\u200e/g; // control character - var UTC_RE = /UTC|GMT/; - var NativeFormatter = /** @class */ (function () { - function NativeFormatter(formatSettings) { - var standardDateProps = {}; - var extendedSettings = {}; - var severity = 0; - for (var name_1 in formatSettings) { - if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) { - extendedSettings[name_1] = formatSettings[name_1]; - severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity); - } - else { - standardDateProps[name_1] = formatSettings[name_1]; - if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { - severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity); - } - } - } - this.standardDateProps = standardDateProps; - this.extendedSettings = extendedSettings; - this.severity = severity; - this.buildFormattingFunc = memoize(buildFormattingFunc); - } - NativeFormatter.prototype.format = function (date, context) { - return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date); - }; - NativeFormatter.prototype.formatRange = function (start, end, context) { - var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings; - var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem); - if (!diffSeverity) { - return this.format(start, context); - } - var biggestUnitForPartial = diffSeverity; - if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time - (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && - (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && - (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) { - biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time - } - var full0 = this.format(start, context); - var full1 = this.format(end, context); - if (full0 === full1) { - return full0; - } - var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial); - var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context); - var partial0 = partialFormattingFunc(start); - var partial1 = partialFormattingFunc(end); - var insertion = findCommonInsertion(full0, partial0, full1, partial1); - var separator = extendedSettings.separator || ''; - if (insertion) { - return insertion.before + partial0 + separator + partial1 + insertion.after; - } - return full0 + separator + full1; - }; - NativeFormatter.prototype.getLargestUnit = function () { - switch (this.severity) { - case 7: - case 6: - case 5: - return 'year'; - case 4: - return 'month'; - case 3: - return 'week'; - default: - return 'day'; - } - }; - return NativeFormatter; - }()); - function buildFormattingFunc(standardDateProps, extendedSettings, context) { - var standardDatePropCnt = Object.keys(standardDateProps).length; - if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') { - return function (date) { - return formatTimeZoneOffset(date.timeZoneOffset); - }; - } - if (standardDatePropCnt === 0 && extendedSettings.week) { - return function (date) { - return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekLabel, context.locale, extendedSettings.week); - }; - } - return buildNativeFormattingFunc(standardDateProps, extendedSettings, context); - } - function buildNativeFormattingFunc(standardDateProps, extendedSettings, context) { - standardDateProps = __assign({}, standardDateProps); // copy - extendedSettings = __assign({}, extendedSettings); // copy - sanitizeSettings(standardDateProps, extendedSettings); - standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers - var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps); - var zeroFormat; // needed? - if (extendedSettings.omitZeroMinute) { - var zeroProps = __assign({}, standardDateProps); - delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings - zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps); - } - return function (date) { - var marker = date.marker; - var format; - if (zeroFormat && !marker.getUTCMinutes()) { - format = zeroFormat; - } - else { - format = normalFormat; - } - var s = format.format(marker); - return postProcess(s, date, standardDateProps, extendedSettings, context); - }; - } - function sanitizeSettings(standardDateProps, extendedSettings) { - // deal with a browser inconsistency where formatting the timezone - // requires that the hour/minute be present. - if (standardDateProps.timeZoneName) { - if (!standardDateProps.hour) { - standardDateProps.hour = '2-digit'; - } - if (!standardDateProps.minute) { - standardDateProps.minute = '2-digit'; - } - } - // only support short timezone names - if (standardDateProps.timeZoneName === 'long') { - standardDateProps.timeZoneName = 'short'; - } - // if requesting to display seconds, MUST display minutes - if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) { - delete extendedSettings.omitZeroMinute; - } - } - function postProcess(s, date, standardDateProps, extendedSettings, context) { - s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes - if (standardDateProps.timeZoneName === 'short') { - s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ? - 'UTC' : // important to normalize for IE, which does "GMT" - formatTimeZoneOffset(date.timeZoneOffset)); - } - if (extendedSettings.omitCommas) { - s = s.replace(COMMA_RE, '').trim(); - } - if (extendedSettings.omitZeroMinute) { - s = s.replace(':00', ''); // zeroFormat doesn't always achieve this - } - // ^ do anything that might create adjacent spaces before this point, - // because MERIDIEM_RE likes to eat up loading spaces - if (extendedSettings.meridiem === false) { - s = s.replace(MERIDIEM_RE, '').trim(); - } - else if (extendedSettings.meridiem === 'narrow') { // a/p - s = s.replace(MERIDIEM_RE, function (m0, m1) { - return m1.toLocaleLowerCase(); - }); - } - else if (extendedSettings.meridiem === 'short') { // am/pm - s = s.replace(MERIDIEM_RE, function (m0, m1) { - return m1.toLocaleLowerCase() + 'm'; - }); - } - else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase - s = s.replace(MERIDIEM_RE, function (m0) { - return m0.toLocaleLowerCase(); - }); - } - s = s.replace(MULTI_SPACE_RE, ' '); - s = s.trim(); - return s; - } - function injectTzoStr(s, tzoStr) { - var replaced = false; - s = s.replace(UTC_RE, function () { - replaced = true; - return tzoStr; - }); - // IE11 doesn't include UTC/GMT in the original string, so append to end - if (!replaced) { - s += ' ' + tzoStr; - } - return s; - } - function formatWeekNumber(num, weekLabel, locale, display) { - var parts = []; - if (display === 'narrow') { - parts.push(weekLabel); - } - else if (display === 'short') { - parts.push(weekLabel, ' '); - } - // otherwise, considered 'numeric' - parts.push(locale.simpleNumberFormat.format(num)); - if (locale.options.isRtl) { // TODO: use control characters instead? - parts.reverse(); - } - return parts.join(''); - } - // Range Formatting Utils - // 0 = exactly the same - // 1 = different by time - // and bigger - function computeMarkerDiffSeverity(d0, d1, ca) { - if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) { - return 5; - } - if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) { - return 4; - } - if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) { - return 2; - } - if (timeAsMs(d0) !== timeAsMs(d1)) { - return 1; - } - return 0; - } - function computePartialFormattingOptions(options, biggestUnit) { - var partialOptions = {}; - for (var name_2 in options) { - if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone) - STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) { - partialOptions[name_2] = options[name_2]; - } - } - return partialOptions; - } - function findCommonInsertion(full0, partial0, full1, partial1) { - var i0 = 0; - while (i0 < full0.length) { - var found0 = full0.indexOf(partial0, i0); - if (found0 === -1) { - break; - } - var before0 = full0.substr(0, found0); - i0 = found0 + partial0.length; - var after0 = full0.substr(i0); - var i1 = 0; - while (i1 < full1.length) { - var found1 = full1.indexOf(partial1, i1); - if (found1 === -1) { - break; - } - var before1 = full1.substr(0, found1); - i1 = found1 + partial1.length; - var after1 = full1.substr(i1); - if (before0 === before1 && after0 === after1) { - return { - before: before0, - after: after0 - }; - } - } - } - return null; - } - - /* - TODO: fix the terminology of "formatter" vs "formatting func" - */ - /* - At the time of instantiation, this object does not know which cmd-formatting system it will use. - It receives this at the time of formatting, as a setting. - */ - var CmdFormatter = /** @class */ (function () { - function CmdFormatter(cmdStr, separator) { - this.cmdStr = cmdStr; - this.separator = separator; - } - CmdFormatter.prototype.format = function (date, context) { - return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, this.separator)); - }; - CmdFormatter.prototype.formatRange = function (start, end, context) { - return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, this.separator)); - }; - return CmdFormatter; - }()); - - var FuncFormatter = /** @class */ (function () { - function FuncFormatter(func) { - this.func = func; - } - FuncFormatter.prototype.format = function (date, context) { - return this.func(createVerboseFormattingArg(date, null, context)); - }; - FuncFormatter.prototype.formatRange = function (start, end, context) { - return this.func(createVerboseFormattingArg(start, end, context)); - }; - return FuncFormatter; - }()); - - // Formatter Object Creation - function createFormatter(input, defaultSeparator) { - if (typeof input === 'object' && input) { // non-null object - if (typeof defaultSeparator === 'string') { - input = __assign({ separator: defaultSeparator }, input); - } - return new NativeFormatter(input); - } - else if (typeof input === 'string') { - return new CmdFormatter(input, defaultSeparator); - } - else if (typeof input === 'function') { - return new FuncFormatter(input); - } - } - // String Utils - // timeZoneOffset is in minutes - function buildIsoString(marker, timeZoneOffset, stripZeroTime) { - if (stripZeroTime === void 0) { stripZeroTime = false; } - var s = marker.toISOString(); - s = s.replace('.000', ''); - if (stripZeroTime) { - s = s.replace('T00:00:00Z', ''); - } - if (s.length > 10) { // time part wasn't stripped, can add timezone info - if (timeZoneOffset == null) { - s = s.replace('Z', ''); - } - else if (timeZoneOffset !== 0) { - s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true)); - } - // otherwise, its UTC-0 and we want to keep the Z - } - return s; - } - function formatIsoTimeString(marker) { - return padStart(marker.getUTCHours(), 2) + ':' + - padStart(marker.getUTCMinutes(), 2) + ':' + - padStart(marker.getUTCSeconds(), 2); - } - function formatTimeZoneOffset(minutes, doIso) { - if (doIso === void 0) { doIso = false; } - var sign = minutes < 0 ? '-' : '+'; - var abs = Math.abs(minutes); - var hours = Math.floor(abs / 60); - var mins = Math.round(abs % 60); - if (doIso) { - return sign + padStart(hours, 2) + ':' + padStart(mins, 2); - } - else { - return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2) : ''); - } - } - // Arg Utils - function createVerboseFormattingArg(start, end, context, separator) { - var startInfo = expandZonedMarker(start, context.calendarSystem); - var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null; - return { - date: startInfo, - start: startInfo, - end: endInfo, - timeZone: context.timeZone, - localeCodes: context.locale.codes, - separator: separator - }; - } - function expandZonedMarker(dateInfo, calendarSystem) { - var a = calendarSystem.markerToArray(dateInfo.marker); - return { - marker: dateInfo.marker, - timeZoneOffset: dateInfo.timeZoneOffset, - array: a, - year: a[0], - month: a[1], - day: a[2], - hour: a[3], - minute: a[4], - second: a[5], - millisecond: a[6] - }; - } - - var EventSourceApi = /** @class */ (function () { - function EventSourceApi(calendar, internalEventSource) { - this.calendar = calendar; - this.internalEventSource = internalEventSource; - } - EventSourceApi.prototype.remove = function () { - this.calendar.dispatch({ - type: 'REMOVE_EVENT_SOURCE', - sourceId: this.internalEventSource.sourceId - }); - }; - EventSourceApi.prototype.refetch = function () { - this.calendar.dispatch({ - type: 'FETCH_EVENT_SOURCES', - sourceIds: [this.internalEventSource.sourceId] - }); - }; - Object.defineProperty(EventSourceApi.prototype, "id", { - get: function () { - return this.internalEventSource.publicId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventSourceApi.prototype, "url", { - // only relevant to json-feed event sources - get: function () { - return this.internalEventSource.meta.url; - }, - enumerable: true, - configurable: true - }); - return EventSourceApi; - }()); - - var EventApi = /** @class */ (function () { - function EventApi(calendar, def, instance) { - this._calendar = calendar; - this._def = def; - this._instance = instance || null; - } - /* - TODO: make event struct more responsible for this - */ - EventApi.prototype.setProp = function (name, val) { - var _a, _b; - if (name in DATE_PROPS) ; - else if (name in NON_DATE_PROPS) { - if (typeof NON_DATE_PROPS[name] === 'function') { - val = NON_DATE_PROPS[name](val); - } - this.mutate({ - standardProps: (_a = {}, _a[name] = val, _a) - }); - } - else if (name in UNSCOPED_EVENT_UI_PROPS) { - var ui = void 0; - if (typeof UNSCOPED_EVENT_UI_PROPS[name] === 'function') { - val = UNSCOPED_EVENT_UI_PROPS[name](val); - } - if (name === 'color') { - ui = { backgroundColor: val, borderColor: val }; - } - else if (name === 'editable') { - ui = { startEditable: val, durationEditable: val }; - } - else { - ui = (_b = {}, _b[name] = val, _b); - } - this.mutate({ - standardProps: { ui: ui } - }); - } - }; - EventApi.prototype.setExtendedProp = function (name, val) { - var _a; - this.mutate({ - extendedProps: (_a = {}, _a[name] = val, _a) - }); - }; - EventApi.prototype.setStart = function (startInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var start = dateEnv.createMarker(startInput); - if (start && this._instance) { // TODO: warning if parsed bad - var instanceRange = this._instance.range; - var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!? - if (options.maintainDuration) { - this.mutate({ datesDelta: startDelta }); - } - else { - this.mutate({ startDelta: startDelta }); - } - } - }; - EventApi.prototype.setEnd = function (endInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var end; - if (endInput != null) { - end = dateEnv.createMarker(endInput); - if (!end) { - return; // TODO: warning if parsed bad - } - } - if (this._instance) { - if (end) { - var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity); - this.mutate({ endDelta: endDelta }); - } - else { - this.mutate({ standardProps: { hasEnd: false } }); - } - } - }; - EventApi.prototype.setDates = function (startInput, endInput, options) { - if (options === void 0) { options = {}; } - var dateEnv = this._calendar.dateEnv; - var standardProps = { allDay: options.allDay }; - var start = dateEnv.createMarker(startInput); - var end; - if (!start) { - return; // TODO: warning if parsed bad - } - if (endInput != null) { - end = dateEnv.createMarker(endInput); - if (!end) { // TODO: warning if parsed bad - return; - } - } - if (this._instance) { - var instanceRange = this._instance.range; - // when computing the diff for an event being converted to all-day, - // compute diff off of the all-day values the way event-mutation does. - if (options.allDay === true) { - instanceRange = computeAlignedDayRange(instanceRange); - } - var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); - if (end) { - var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity); - if (durationsEqual(startDelta, endDelta)) { - this.mutate({ datesDelta: startDelta, standardProps: standardProps }); - } - else { - this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps }); - } - } - else { // means "clear the end" - standardProps.hasEnd = false; - this.mutate({ datesDelta: startDelta, standardProps: standardProps }); - } - } - }; - EventApi.prototype.moveStart = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ startDelta: delta }); - } - }; - EventApi.prototype.moveEnd = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ endDelta: delta }); - } - }; - EventApi.prototype.moveDates = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // TODO: warning if parsed bad - this.mutate({ datesDelta: delta }); - } - }; - EventApi.prototype.setAllDay = function (allDay, options) { - if (options === void 0) { options = {}; } - var standardProps = { allDay: allDay }; - var maintainDuration = options.maintainDuration; - if (maintainDuration == null) { - maintainDuration = this._calendar.opt('allDayMaintainDuration'); - } - if (this._def.allDay !== allDay) { - standardProps.hasEnd = maintainDuration; - } - this.mutate({ standardProps: standardProps }); - }; - EventApi.prototype.formatRange = function (formatInput) { - var dateEnv = this._calendar.dateEnv; - var instance = this._instance; - var formatter = createFormatter(formatInput, this._calendar.opt('defaultRangeSeparator')); - if (this._def.hasEnd) { - return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, { - forcedStartTzo: instance.forcedStartTzo, - forcedEndTzo: instance.forcedEndTzo - }); - } - else { - return dateEnv.format(instance.range.start, formatter, { - forcedTzo: instance.forcedStartTzo - }); - } - }; - EventApi.prototype.mutate = function (mutation) { - var def = this._def; - var instance = this._instance; - if (instance) { - this._calendar.dispatch({ - type: 'MUTATE_EVENTS', - instanceId: instance.instanceId, - mutation: mutation, - fromApi: true - }); - var eventStore = this._calendar.state.eventStore; - this._def = eventStore.defs[def.defId]; - this._instance = eventStore.instances[instance.instanceId]; - } - }; - EventApi.prototype.remove = function () { - this._calendar.dispatch({ - type: 'REMOVE_EVENT_DEF', - defId: this._def.defId - }); - }; - Object.defineProperty(EventApi.prototype, "source", { - get: function () { - var sourceId = this._def.sourceId; - if (sourceId) { - return new EventSourceApi(this._calendar, this._calendar.state.eventSources[sourceId]); - } - return null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "start", { - get: function () { - return this._instance ? - this._calendar.dateEnv.toDate(this._instance.range.start) : - null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "end", { - get: function () { - return (this._instance && this._def.hasEnd) ? - this._calendar.dateEnv.toDate(this._instance.range.end) : - null; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "id", { - // computable props that all access the def - // TODO: find a TypeScript-compatible way to do this at scale - get: function () { return this._def.publicId; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "groupId", { - get: function () { return this._def.groupId; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "allDay", { - get: function () { return this._def.allDay; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "title", { - get: function () { return this._def.title; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "url", { - get: function () { return this._def.url; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "rendering", { - get: function () { return this._def.rendering; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "startEditable", { - get: function () { return this._def.ui.startEditable; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "durationEditable", { - get: function () { return this._def.ui.durationEditable; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "constraint", { - get: function () { return this._def.ui.constraints[0] || null; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "overlap", { - get: function () { return this._def.ui.overlap; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "allow", { - get: function () { return this._def.ui.allows[0] || null; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "backgroundColor", { - get: function () { return this._def.ui.backgroundColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "borderColor", { - get: function () { return this._def.ui.borderColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "textColor", { - get: function () { return this._def.ui.textColor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "classNames", { - // NOTE: user can't modify these because Object.freeze was called in event-def parsing - get: function () { return this._def.ui.classNames; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventApi.prototype, "extendedProps", { - get: function () { return this._def.extendedProps; }, - enumerable: true, - configurable: true - }); - return EventApi; - }()); - - /* - Specifying nextDayThreshold signals that all-day ranges should be sliced. - */ - function sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) { - var inverseBgByGroupId = {}; - var inverseBgByDefId = {}; - var defByGroupId = {}; - var bgRanges = []; - var fgRanges = []; - var eventUis = compileEventUis(eventStore.defs, eventUiBases); - for (var defId in eventStore.defs) { - var def = eventStore.defs[defId]; - if (def.rendering === 'inverse-background') { - if (def.groupId) { - inverseBgByGroupId[def.groupId] = []; - if (!defByGroupId[def.groupId]) { - defByGroupId[def.groupId] = def; - } - } - else { - inverseBgByDefId[defId] = []; - } - } - } - for (var instanceId in eventStore.instances) { - var instance = eventStore.instances[instanceId]; - var def = eventStore.defs[instance.defId]; - var ui = eventUis[def.defId]; - var origRange = instance.range; - var normalRange = (!def.allDay && nextDayThreshold) ? - computeVisibleDayRange(origRange, nextDayThreshold) : - origRange; - var slicedRange = intersectRanges(normalRange, framingRange); - if (slicedRange) { - if (def.rendering === 'inverse-background') { - if (def.groupId) { - inverseBgByGroupId[def.groupId].push(slicedRange); - } - else { - inverseBgByDefId[instance.defId].push(slicedRange); - } - } - else { - (def.rendering === 'background' ? bgRanges : fgRanges).push({ - def: def, - ui: ui, - instance: instance, - range: slicedRange, - isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(), - isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf() - }); - } - } - } - for (var groupId in inverseBgByGroupId) { // BY GROUP - var ranges = inverseBgByGroupId[groupId]; - var invertedRanges = invertRanges(ranges, framingRange); - for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) { - var invertedRange = invertedRanges_1[_i]; - var def = defByGroupId[groupId]; - var ui = eventUis[def.defId]; - bgRanges.push({ - def: def, - ui: ui, - instance: null, - range: invertedRange, - isStart: false, - isEnd: false - }); - } - } - for (var defId in inverseBgByDefId) { - var ranges = inverseBgByDefId[defId]; - var invertedRanges = invertRanges(ranges, framingRange); - for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) { - var invertedRange = invertedRanges_2[_a]; - bgRanges.push({ - def: eventStore.defs[defId], - ui: eventUis[defId], - instance: null, - range: invertedRange, - isStart: false, - isEnd: false - }); - } - } - return { bg: bgRanges, fg: fgRanges }; - } - function hasBgRendering(def) { - return def.rendering === 'background' || def.rendering === 'inverse-background'; - } - function filterSegsViaEls(view, segs, isMirror) { - if (view.hasPublicHandlers('eventRender')) { - segs = segs.filter(function (seg) { - var custom = view.publiclyTrigger('eventRender', [ - { - event: new EventApi(view.calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirror, - isStart: seg.isStart, - isEnd: seg.isEnd, - // TODO: include seg.range once all components consistently generate it - el: seg.el, - view: view - } - ]); - if (custom === false) { // means don't render at all - return false; - } - else if (custom && custom !== true) { - seg.el = custom; - } - return true; - }); - } - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - setElSeg(seg.el, seg); - } - return segs; - } - function setElSeg(el, seg) { - el.fcSeg = seg; - } - function getElSeg(el) { - return el.fcSeg || null; - } - // event ui computation - function compileEventUis(eventDefs, eventUiBases) { - return mapHash(eventDefs, function (eventDef) { - return compileEventUi(eventDef, eventUiBases); - }); - } - function compileEventUi(eventDef, eventUiBases) { - var uis = []; - if (eventUiBases['']) { - uis.push(eventUiBases['']); - } - if (eventUiBases[eventDef.defId]) { - uis.push(eventUiBases[eventDef.defId]); - } - uis.push(eventDef.ui); - return combineEventUis(uis); - } - - // applies the mutation to ALL defs/instances within the event store - function applyMutationToEventStore(eventStore, eventConfigBase, mutation, calendar) { - var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase); - var dest = createEmptyEventStore(); - for (var defId in eventStore.defs) { - var def = eventStore.defs[defId]; - dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, calendar.pluginSystem.hooks.eventDefMutationAppliers, calendar); - } - for (var instanceId in eventStore.instances) { - var instance = eventStore.instances[instanceId]; - var def = dest.defs[instance.defId]; // important to grab the newly modified def - dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, calendar); - } - return dest; - } - function applyMutationToEventDef(eventDef, eventConfig, mutation, appliers, calendar) { - var standardProps = mutation.standardProps || {}; - // if hasEnd has not been specified, guess a good value based on deltas. - // if duration will change, there's no way the default duration will persist, - // and thus, we need to mark the event as having a real end - if (standardProps.hasEnd == null && - eventConfig.durationEditable && - (mutation.startDelta || mutation.endDelta)) { - standardProps.hasEnd = true; // TODO: is this mutation okay? - } - var copy = __assign({}, eventDef, standardProps, { ui: __assign({}, eventDef.ui, standardProps.ui) }); - if (mutation.extendedProps) { - copy.extendedProps = __assign({}, copy.extendedProps, mutation.extendedProps); - } - for (var _i = 0, appliers_1 = appliers; _i < appliers_1.length; _i++) { - var applier = appliers_1[_i]; - applier(copy, mutation, calendar); - } - if (!copy.hasEnd && calendar.opt('forceEventDuration')) { - copy.hasEnd = true; - } - return copy; - } - function applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef - eventConfig, mutation, calendar) { - var dateEnv = calendar.dateEnv; - var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true; - var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false; - var copy = __assign({}, eventInstance); - if (forceAllDay) { - copy.range = computeAlignedDayRange(copy.range); - } - if (mutation.datesDelta && eventConfig.startEditable) { - copy.range = { - start: dateEnv.add(copy.range.start, mutation.datesDelta), - end: dateEnv.add(copy.range.end, mutation.datesDelta) - }; - } - if (mutation.startDelta && eventConfig.durationEditable) { - copy.range = { - start: dateEnv.add(copy.range.start, mutation.startDelta), - end: copy.range.end - }; - } - if (mutation.endDelta && eventConfig.durationEditable) { - copy.range = { - start: copy.range.start, - end: dateEnv.add(copy.range.end, mutation.endDelta) - }; - } - if (clearEnd) { - copy.range = { - start: copy.range.start, - end: calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start) - }; - } - // in case event was all-day but the supplied deltas were not - // better util for this? - if (eventDef.allDay) { - copy.range = { - start: startOfDay(copy.range.start), - end: startOfDay(copy.range.end) - }; - } - // handle invalid durations - if (copy.range.end < copy.range.start) { - copy.range.end = calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start); - } - return copy; - } - - function reduceEventStore (eventStore, action, eventSources, dateProfile, calendar) { - switch (action.type) { - case 'RECEIVE_EVENTS': // raw - return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, calendar); - case 'ADD_EVENTS': // already parsed, but not expanded - return addEvent(eventStore, action.eventStore, // new ones - dateProfile ? dateProfile.activeRange : null, calendar); - case 'MERGE_EVENTS': // already parsed and expanded - return mergeEventStores(eventStore, action.eventStore); - case 'PREV': // TODO: how do we track all actions that affect dateProfile :( - case 'NEXT': - case 'SET_DATE': - case 'SET_VIEW_TYPE': - if (dateProfile) { - return expandRecurring(eventStore, dateProfile.activeRange, calendar); - } - else { - return eventStore; - } - case 'CHANGE_TIMEZONE': - return rezoneDates(eventStore, action.oldDateEnv, calendar.dateEnv); - case 'MUTATE_EVENTS': - return applyMutationToRelated(eventStore, action.instanceId, action.mutation, action.fromApi, calendar); - case 'REMOVE_EVENT_INSTANCES': - return excludeInstances(eventStore, action.instances); - case 'REMOVE_EVENT_DEF': - return filterEventStoreDefs(eventStore, function (eventDef) { - return eventDef.defId !== action.defId; - }); - case 'REMOVE_EVENT_SOURCE': - return excludeEventsBySourceId(eventStore, action.sourceId); - case 'REMOVE_ALL_EVENT_SOURCES': - return filterEventStoreDefs(eventStore, function (eventDef) { - return !eventDef.sourceId; // only keep events with no source id - }); - case 'REMOVE_ALL_EVENTS': - return createEmptyEventStore(); - case 'RESET_EVENTS': - return { - defs: eventStore.defs, - instances: eventStore.instances - }; - default: - return eventStore; - } - } - function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, calendar) { - if (eventSource && // not already removed - fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources - ) { - var subset = parseEvents(transformRawEvents(rawEvents, eventSource, calendar), eventSource.sourceId, calendar); - if (fetchRange) { - subset = expandRecurring(subset, fetchRange, calendar); - } - return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset); - } - return eventStore; - } - function addEvent(eventStore, subset, expandRange, calendar) { - if (expandRange) { - subset = expandRecurring(subset, expandRange, calendar); - } - return mergeEventStores(eventStore, subset); - } - function rezoneDates(eventStore, oldDateEnv, newDateEnv) { - var defs = eventStore.defs; - var instances = mapHash(eventStore.instances, function (instance) { - var def = defs[instance.defId]; - if (def.allDay || def.recurringDef) { - return instance; // isn't dependent on timezone - } - else { - return __assign({}, instance, { range: { - start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)), - end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)) - }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo }); - } - }); - return { defs: defs, instances: instances }; - } - function applyMutationToRelated(eventStore, instanceId, mutation, fromApi, calendar) { - var relevant = getRelevantEvents(eventStore, instanceId); - var eventConfigBase = fromApi ? - { '': { - startEditable: true, - durationEditable: true, - constraints: [], - overlap: null, - allows: [], - backgroundColor: '', - borderColor: '', - textColor: '', - classNames: [] - } } : - calendar.eventUiBases; - relevant = applyMutationToEventStore(relevant, eventConfigBase, mutation, calendar); - return mergeEventStores(eventStore, relevant); - } - function excludeEventsBySourceId(eventStore, sourceId) { - return filterEventStoreDefs(eventStore, function (eventDef) { - return eventDef.sourceId !== sourceId; - }); - } - // QUESTION: why not just return instances? do a general object-property-exclusion util - function excludeInstances(eventStore, removals) { - return { - defs: eventStore.defs, - instances: filterHash(eventStore.instances, function (instance) { - return !removals[instance.instanceId]; - }) - }; - } - - // high-level segmenting-aware tester functions - // ------------------------------------------------------------------------------------------------------------------------ - function isInteractionValid(interaction, calendar) { - return isNewPropsValid({ eventDrag: interaction }, calendar); // HACK: the eventDrag props is used for ALL interactions - } - function isDateSelectionValid(dateSelection, calendar) { - return isNewPropsValid({ dateSelection: dateSelection }, calendar); - } - function isNewPropsValid(newProps, calendar) { - var view = calendar.view; - var props = __assign({ businessHours: view ? view.props.businessHours : createEmptyEventStore(), dateSelection: '', eventStore: calendar.state.eventStore, eventUiBases: calendar.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps); - return (calendar.pluginSystem.hooks.isPropsValid || isPropsValid)(props, calendar); - } - function isPropsValid(state, calendar, dateSpanMeta, filterConfig) { - if (dateSpanMeta === void 0) { dateSpanMeta = {}; } - if (state.eventDrag && !isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig)) { - return false; - } - if (state.dateSelection && !isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig)) { - return false; - } - return true; - } - // Moving Event Validation - // ------------------------------------------------------------------------------------------------------------------------ - function isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig) { - var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions - var subjectEventStore = interaction.mutatedEvents; - var subjectDefs = subjectEventStore.defs; - var subjectInstances = subjectEventStore.instances; - var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? - state.eventUiBases : - { '': calendar.selectionConfig } // if not a real event, validate as a selection - ); - if (filterConfig) { - subjectConfigs = mapHash(subjectConfigs, filterConfig); - } - var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); // exclude the subject events. TODO: exclude defs too? - var otherDefs = otherEventStore.defs; - var otherInstances = otherEventStore.instances; - var otherConfigs = compileEventUis(otherDefs, state.eventUiBases); - for (var subjectInstanceId in subjectInstances) { - var subjectInstance = subjectInstances[subjectInstanceId]; - var subjectRange = subjectInstance.range; - var subjectConfig = subjectConfigs[subjectInstance.defId]; - var subjectDef = subjectDefs[subjectInstance.defId]; - // constraint - if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, calendar)) { - return false; - } - // overlap - var overlapFunc = calendar.opt('eventOverlap'); - if (typeof overlapFunc !== 'function') { - overlapFunc = null; - } - for (var otherInstanceId in otherInstances) { - var otherInstance = otherInstances[otherInstanceId]; - // intersect! evaluate - if (rangesIntersect(subjectRange, otherInstance.range)) { - var otherOverlap = otherConfigs[otherInstance.defId].overlap; - // consider the other event's overlap. only do this if the subject event is a "real" event - if (otherOverlap === false && interaction.isEvent) { - return false; - } - if (subjectConfig.overlap === false) { - return false; - } - if (overlapFunc && !overlapFunc(new EventApi(calendar, otherDefs[otherInstance.defId], otherInstance), // still event - new EventApi(calendar, subjectDef, subjectInstance) // moving event - )) { - return false; - } - } - } - // allow (a function) - var calendarEventStore = calendar.state.eventStore; // need global-to-calendar, not local to component (splittable)state - for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) { - var subjectAllow = _a[_i]; - var subjectDateSpan = __assign({}, dateSpanMeta, { range: subjectInstance.range, allDay: subjectDef.allDay }); - var origDef = calendarEventStore.defs[subjectDef.defId]; - var origInstance = calendarEventStore.instances[subjectInstanceId]; - var eventApi = void 0; - if (origDef) { // was previously in the calendar - eventApi = new EventApi(calendar, origDef, origInstance); - } - else { // was an external event - eventApi = new EventApi(calendar, subjectDef); // no instance, because had no dates - } - if (!subjectAllow(calendar.buildDateSpanApi(subjectDateSpan), eventApi)) { - return false; - } - } - } - return true; - } - // Date Selection Validation - // ------------------------------------------------------------------------------------------------------------------------ - function isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig) { - var relevantEventStore = state.eventStore; - var relevantDefs = relevantEventStore.defs; - var relevantInstances = relevantEventStore.instances; - var selection = state.dateSelection; - var selectionRange = selection.range; - var selectionConfig = calendar.selectionConfig; - if (filterConfig) { - selectionConfig = filterConfig(selectionConfig); - } - // constraint - if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, calendar)) { - return false; - } - // overlap - var overlapFunc = calendar.opt('selectOverlap'); - if (typeof overlapFunc !== 'function') { - overlapFunc = null; - } - for (var relevantInstanceId in relevantInstances) { - var relevantInstance = relevantInstances[relevantInstanceId]; - // intersect! evaluate - if (rangesIntersect(selectionRange, relevantInstance.range)) { - if (selectionConfig.overlap === false) { - return false; - } - if (overlapFunc && !overlapFunc(new EventApi(calendar, relevantDefs[relevantInstance.defId], relevantInstance))) { - return false; - } - } - } - // allow (a function) - for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) { - var selectionAllow = _a[_i]; - var fullDateSpan = __assign({}, dateSpanMeta, selection); - if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) { - return false; - } - } - return true; - } - // Constraint Utils - // ------------------------------------------------------------------------------------------------------------------------ - function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, calendar) { - for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) { - var constraint = constraints_1[_i]; - if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, calendar), subjectRange)) { - return false; - } - } - return true; - } - function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours - otherEventStore, // for if constraint is an even group ID - businessHoursUnexpanded, // for if constraint is 'businessHours' - calendar // for expanding businesshours - ) { - if (constraint === 'businessHours') { - return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, calendar)); - } - else if (typeof constraint === 'string') { // an group ID - return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { - return eventDef.groupId === constraint; - })); - } - else if (typeof constraint === 'object' && constraint) { // non-null object - return eventStoreToRanges(expandRecurring(constraint, subjectRange, calendar)); - } - return []; // if it's false - } - // TODO: move to event-store file? - function eventStoreToRanges(eventStore) { - var instances = eventStore.instances; - var ranges = []; - for (var instanceId in instances) { - ranges.push(instances[instanceId].range); - } - return ranges; - } - // TODO: move to geom file? - function anyRangesContainRange(outerRanges, innerRange) { - for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) { - var outerRange = outerRanges_1[_i]; - if (rangeContainsRange(outerRange, innerRange)) { - return true; - } - } - return false; - } - // Parsing - // ------------------------------------------------------------------------------------------------------------------------ - function normalizeConstraint(input, calendar) { - if (Array.isArray(input)) { - return parseEvents(input, '', calendar, true); // allowOpenRange=true - } - else if (typeof input === 'object' && input) { // non-null object - return parseEvents([input], '', calendar, true); // allowOpenRange=true - } - else if (input != null) { - return String(input); - } - else { - return null; - } - } - - function htmlEscape(s) { - return (s + '').replace(/&/g, '&') - .replace(//g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"') - .replace(/\n/g, '
      '); - } - // Given a hash of CSS properties, returns a string of CSS. - // Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values. - function cssToStr(cssProps) { - var statements = []; - for (var name_1 in cssProps) { - var val = cssProps[name_1]; - if (val != null && val !== '') { - statements.push(name_1 + ':' + val); - } - } - return statements.join(';'); - } - // Given an object hash of HTML attribute names to values, - // generates a string that can be injected between < > in HTML - function attrsToStr(attrs) { - var parts = []; - for (var name_2 in attrs) { - var val = attrs[name_2]; - if (val != null) { - parts.push(name_2 + '="' + htmlEscape(val) + '"'); - } - } - return parts.join(' '); - } - function parseClassName(raw) { - if (Array.isArray(raw)) { - return raw; - } - else if (typeof raw === 'string') { - return raw.split(/\s+/); - } - else { - return []; - } - } - - var UNSCOPED_EVENT_UI_PROPS = { - editable: Boolean, - startEditable: Boolean, - durationEditable: Boolean, - constraint: null, - overlap: null, - allow: null, - className: parseClassName, - classNames: parseClassName, - color: String, - backgroundColor: String, - borderColor: String, - textColor: String - }; - function processUnscopedUiProps(rawProps, calendar, leftovers) { - var props = refineProps(rawProps, UNSCOPED_EVENT_UI_PROPS, {}, leftovers); - var constraint = normalizeConstraint(props.constraint, calendar); - return { - startEditable: props.startEditable != null ? props.startEditable : props.editable, - durationEditable: props.durationEditable != null ? props.durationEditable : props.editable, - constraints: constraint != null ? [constraint] : [], - overlap: props.overlap, - allows: props.allow != null ? [props.allow] : [], - backgroundColor: props.backgroundColor || props.color, - borderColor: props.borderColor || props.color, - textColor: props.textColor, - classNames: props.classNames.concat(props.className) - }; - } - function processScopedUiProps(prefix, rawScoped, calendar, leftovers) { - var rawUnscoped = {}; - var wasFound = {}; - for (var key in UNSCOPED_EVENT_UI_PROPS) { - var scopedKey = prefix + capitaliseFirstLetter(key); - rawUnscoped[key] = rawScoped[scopedKey]; - wasFound[scopedKey] = true; - } - if (prefix === 'event') { - rawUnscoped.editable = rawScoped.editable; // special case. there is no 'eventEditable', just 'editable' - } - if (leftovers) { - for (var key in rawScoped) { - if (!wasFound[key]) { - leftovers[key] = rawScoped[key]; - } - } - } - return processUnscopedUiProps(rawUnscoped, calendar); - } - var EMPTY_EVENT_UI = { - startEditable: null, - durationEditable: null, - constraints: [], - overlap: null, - allows: [], - backgroundColor: '', - borderColor: '', - textColor: '', - classNames: [] - }; - // prevent against problems with <2 args! - function combineEventUis(uis) { - return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI); - } - function combineTwoEventUis(item0, item1) { - return { - startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable, - durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable, - constraints: item0.constraints.concat(item1.constraints), - overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap, - allows: item0.allows.concat(item1.allows), - backgroundColor: item1.backgroundColor || item0.backgroundColor, - borderColor: item1.borderColor || item0.borderColor, - textColor: item1.textColor || item0.textColor, - classNames: item0.classNames.concat(item1.classNames) - }; - } - - var NON_DATE_PROPS = { - id: String, - groupId: String, - title: String, - url: String, - rendering: String, - extendedProps: null - }; - var DATE_PROPS = { - start: null, - date: null, - end: null, - allDay: null - }; - var uid = 0; - function parseEvent(raw, sourceId, calendar, allowOpenRange) { - var allDayDefault = computeIsAllDayDefault(sourceId, calendar); - var leftovers0 = {}; - var recurringRes = parseRecurring(raw, // raw, but with single-event stuff stripped out - allDayDefault, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes, leftovers0 // will populate with non-recurring props - ); - if (recurringRes) { - var def = parseEventDef(leftovers0, sourceId, recurringRes.allDay, Boolean(recurringRes.duration), calendar); - def.recurringDef = { - typeId: recurringRes.typeId, - typeData: recurringRes.typeData, - duration: recurringRes.duration - }; - return { def: def, instance: null }; - } - else { - var leftovers1 = {}; - var singleRes = parseSingle(raw, allDayDefault, calendar, leftovers1, allowOpenRange); - if (singleRes) { - var def = parseEventDef(leftovers1, sourceId, singleRes.allDay, singleRes.hasEnd, calendar); - var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo); - return { def: def, instance: instance }; - } - } - return null; - } - /* - Will NOT populate extendedProps with the leftover properties. - Will NOT populate date-related props. - The EventNonDateInput has been normalized (id => publicId, etc). - */ - function parseEventDef(raw, sourceId, allDay, hasEnd, calendar) { - var leftovers = {}; - var def = pluckNonDateProps(raw, calendar, leftovers); - def.defId = String(uid++); - def.sourceId = sourceId; - def.allDay = allDay; - def.hasEnd = hasEnd; - for (var _i = 0, _a = calendar.pluginSystem.hooks.eventDefParsers; _i < _a.length; _i++) { - var eventDefParser = _a[_i]; - var newLeftovers = {}; - eventDefParser(def, leftovers, newLeftovers); - leftovers = newLeftovers; - } - def.extendedProps = __assign(leftovers, def.extendedProps || {}); - // help out EventApi from having user modify props - Object.freeze(def.ui.classNames); - Object.freeze(def.extendedProps); - return def; - } - function createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) { - return { - instanceId: String(uid++), - defId: defId, - range: range, - forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo, - forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo - }; - } - function parseSingle(raw, allDayDefault, calendar, leftovers, allowOpenRange) { - var props = pluckDateProps(raw, leftovers); - var allDay = props.allDay; - var startMeta; - var startMarker = null; - var hasEnd = false; - var endMeta; - var endMarker = null; - startMeta = calendar.dateEnv.createMarkerMeta(props.start); - if (startMeta) { - startMarker = startMeta.marker; - } - else if (!allowOpenRange) { - return null; - } - if (props.end != null) { - endMeta = calendar.dateEnv.createMarkerMeta(props.end); - } - if (allDay == null) { - if (allDayDefault != null) { - allDay = allDayDefault; - } - else { - // fall back to the date props LAST - allDay = (!startMeta || startMeta.isTimeUnspecified) && - (!endMeta || endMeta.isTimeUnspecified); - } - } - if (allDay && startMarker) { - startMarker = startOfDay(startMarker); - } - if (endMeta) { - endMarker = endMeta.marker; - if (allDay) { - endMarker = startOfDay(endMarker); - } - if (startMarker && endMarker <= startMarker) { - endMarker = null; - } - } - if (endMarker) { - hasEnd = true; - } - else if (!allowOpenRange) { - hasEnd = calendar.opt('forceEventDuration') || false; - endMarker = calendar.dateEnv.add(startMarker, allDay ? - calendar.defaultAllDayEventDuration : - calendar.defaultTimedEventDuration); - } - return { - allDay: allDay, - hasEnd: hasEnd, - range: { start: startMarker, end: endMarker }, - forcedStartTzo: startMeta ? startMeta.forcedTzo : null, - forcedEndTzo: endMeta ? endMeta.forcedTzo : null - }; - } - function pluckDateProps(raw, leftovers) { - var props = refineProps(raw, DATE_PROPS, {}, leftovers); - props.start = (props.start !== null) ? props.start : props.date; - delete props.date; - return props; - } - function pluckNonDateProps(raw, calendar, leftovers) { - var preLeftovers = {}; - var props = refineProps(raw, NON_DATE_PROPS, {}, preLeftovers); - var ui = processUnscopedUiProps(preLeftovers, calendar, leftovers); - props.publicId = props.id; - delete props.id; - props.ui = ui; - return props; - } - function computeIsAllDayDefault(sourceId, calendar) { - var res = null; - if (sourceId) { - var source = calendar.state.eventSources[sourceId]; - res = source.allDayDefault; - } - if (res == null) { - res = calendar.opt('allDayDefault'); - } - return res; - } - - var DEF_DEFAULTS = { - startTime: '09:00', - endTime: '17:00', - daysOfWeek: [1, 2, 3, 4, 5], - rendering: 'inverse-background', - classNames: 'fc-nonbusiness', - groupId: '_businessHours' // so multiple defs get grouped - }; - /* - TODO: pass around as EventDefHash!!! - */ - function parseBusinessHours(input, calendar) { - return parseEvents(refineInputs(input), '', calendar); - } - function refineInputs(input) { - var rawDefs; - if (input === true) { - rawDefs = [{}]; // will get DEF_DEFAULTS verbatim - } - else if (Array.isArray(input)) { - // if specifying an array, every sub-definition NEEDS a day-of-week - rawDefs = input.filter(function (rawDef) { - return rawDef.daysOfWeek; - }); - } - else if (typeof input === 'object' && input) { // non-null object - rawDefs = [input]; - } - else { // is probably false - rawDefs = []; - } - rawDefs = rawDefs.map(function (rawDef) { - return __assign({}, DEF_DEFAULTS, rawDef); - }); - return rawDefs; - } - - function memoizeRendering(renderFunc, unrenderFunc, dependencies) { - if (dependencies === void 0) { dependencies = []; } - var dependents = []; - var thisContext; - var prevArgs; - function unrender() { - if (prevArgs) { - for (var _i = 0, dependents_1 = dependents; _i < dependents_1.length; _i++) { - var dependent = dependents_1[_i]; - dependent.unrender(); - } - if (unrenderFunc) { - unrenderFunc.apply(thisContext, prevArgs); - } - prevArgs = null; - } - } - function res() { - if (!prevArgs || !isArraysEqual(prevArgs, arguments)) { - unrender(); - thisContext = this; - prevArgs = arguments; - renderFunc.apply(this, arguments); - } - } - res.dependents = dependents; - res.unrender = unrender; - for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) { - var dependency = dependencies_1[_i]; - dependency.dependents.push(res); - } - return res; - } - - var EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere - var Splitter = /** @class */ (function () { - function Splitter() { - this.getKeysForEventDefs = memoize(this._getKeysForEventDefs); - this.splitDateSelection = memoize(this._splitDateSpan); - this.splitEventStore = memoize(this._splitEventStore); - this.splitIndividualUi = memoize(this._splitIndividualUi); - this.splitEventDrag = memoize(this._splitInteraction); - this.splitEventResize = memoize(this._splitInteraction); - this.eventUiBuilders = {}; // TODO: typescript protection - } - Splitter.prototype.splitProps = function (props) { - var _this = this; - var keyInfos = this.getKeyInfo(props); - var defKeys = this.getKeysForEventDefs(props.eventStore); - var dateSelections = this.splitDateSelection(props.dateSelection); - var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases* - var eventStores = this.splitEventStore(props.eventStore, defKeys); - var eventDrags = this.splitEventDrag(props.eventDrag); - var eventResizes = this.splitEventResize(props.eventResize); - var splitProps = {}; - this.eventUiBuilders = mapHash(keyInfos, function (info, key) { - return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); - }); - for (var key in keyInfos) { - var keyInfo = keyInfos[key]; - var eventStore = eventStores[key] || EMPTY_EVENT_STORE; - var buildEventUi = this.eventUiBuilders[key]; - splitProps[key] = { - businessHours: keyInfo.businessHours || props.businessHours, - dateSelection: dateSelections[key] || null, - eventStore: eventStore, - eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]), - eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '', - eventDrag: eventDrags[key] || null, - eventResize: eventResizes[key] || null - }; - } - return splitProps; - }; - Splitter.prototype._splitDateSpan = function (dateSpan) { - var dateSpans = {}; - if (dateSpan) { - var keys = this.getKeysForDateSpan(dateSpan); - for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { - var key = keys_1[_i]; - dateSpans[key] = dateSpan; - } - } - return dateSpans; - }; - Splitter.prototype._getKeysForEventDefs = function (eventStore) { - var _this = this; - return mapHash(eventStore.defs, function (eventDef) { - return _this.getKeysForEventDef(eventDef); - }); - }; - Splitter.prototype._splitEventStore = function (eventStore, defKeys) { - var defs = eventStore.defs, instances = eventStore.instances; - var splitStores = {}; - for (var defId in defs) { - for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { - var key = _a[_i]; - if (!splitStores[key]) { - splitStores[key] = createEmptyEventStore(); - } - splitStores[key].defs[defId] = defs[defId]; - } - } - for (var instanceId in instances) { - var instance = instances[instanceId]; - for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) { - var key = _c[_b]; - if (splitStores[key]) { // must have already been created - splitStores[key].instances[instanceId] = instance; - } - } - } - return splitStores; - }; - Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) { - var splitHashes = {}; - for (var defId in eventUiBases) { - if (defId) { // not the '' key - for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) { - var key = _a[_i]; - if (!splitHashes[key]) { - splitHashes[key] = {}; - } - splitHashes[key][defId] = eventUiBases[defId]; - } - } - } - return splitHashes; - }; - Splitter.prototype._splitInteraction = function (interaction) { - var splitStates = {}; - if (interaction) { - var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar - ); - // can't rely on defKeys because event data is mutated - var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents); - var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId); - var populate = function (key) { - if (!splitStates[key]) { - splitStates[key] = { - affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE, - mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE, - isEvent: interaction.isEvent, - origSeg: interaction.origSeg - }; - } - }; - for (var key in affectedStores_1) { - populate(key); - } - for (var key in mutatedStores_1) { - populate(key); - } - } - return splitStates; - }; - return Splitter; - }()); - function buildEventUiForKey(allUi, eventUiForKey, individualUi) { - var baseParts = []; - if (allUi) { - baseParts.push(allUi); - } - if (eventUiForKey) { - baseParts.push(eventUiForKey); - } - var stuff = { - '': combineEventUis(baseParts) - }; - if (individualUi) { - __assign(stuff, individualUi); - } - return stuff; - } - - // Generates HTML for an anchor to another view into the calendar. - // Will either generate an
      tag or a non-clickable tag, depending on enabled settings. - // `gotoOptions` can either be a DateMarker, or an object with the form: - // { date, type, forceOff } - // `type` is a view-type like "day" or "week". default value is "day". - // `attrs` and `innerHtml` are use to generate the rest of the HTML tag. - function buildGotoAnchorHtml(component, gotoOptions, attrs, innerHtml) { - var dateEnv = component.dateEnv; - var date; - var type; - var forceOff; - var finalOptions; - if (gotoOptions instanceof Date) { - date = gotoOptions; // a single date-like input - } - else { - date = gotoOptions.date; - type = gotoOptions.type; - forceOff = gotoOptions.forceOff; - } - finalOptions = { - date: dateEnv.formatIso(date, { omitTime: true }), - type: type || 'day' - }; - if (typeof attrs === 'string') { - innerHtml = attrs; - attrs = null; - } - attrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space - innerHtml = innerHtml || ''; - if (!forceOff && component.opt('navLinks')) { - return '' + - innerHtml + - ''; - } - else { - return '' + - innerHtml + - ''; - } - } - function getAllDayHtml(component) { - return component.opt('allDayHtml') || htmlEscape(component.opt('allDayText')); - } - // Computes HTML classNames for a single-day element - function getDayClasses(date, dateProfile, context, noThemeHighlight) { - var calendar = context.calendar, view = context.view, theme = context.theme, dateEnv = context.dateEnv; - var classes = []; - var todayStart; - var todayEnd; - if (!rangeContainsMarker(dateProfile.activeRange, date)) { - classes.push('fc-disabled-day'); - } - else { - classes.push('fc-' + DAY_IDS[date.getUTCDay()]); - if (view.opt('monthMode') && - dateEnv.getMonth(date) !== dateEnv.getMonth(dateProfile.currentRange.start)) { - classes.push('fc-other-month'); - } - todayStart = startOfDay(calendar.getNow()); - todayEnd = addDays(todayStart, 1); - if (date < todayStart) { - classes.push('fc-past'); - } - else if (date >= todayEnd) { - classes.push('fc-future'); - } - else { - classes.push('fc-today'); - if (noThemeHighlight !== true) { - classes.push(theme.getClass('today')); - } - } - } - return classes; - } - - // given a function that resolves a result asynchronously. - // the function can either call passed-in success and failure callbacks, - // or it can return a promise. - // if you need to pass additional params to func, bind them first. - function unpromisify(func, success, failure) { - // guard against success/failure callbacks being called more than once - // and guard against a promise AND callback being used together. - var isResolved = false; - var wrappedSuccess = function () { - if (!isResolved) { - isResolved = true; - success.apply(this, arguments); - } - }; - var wrappedFailure = function () { - if (!isResolved) { - isResolved = true; - if (failure) { - failure.apply(this, arguments); - } - } - }; - var res = func(wrappedSuccess, wrappedFailure); - if (res && typeof res.then === 'function') { - res.then(wrappedSuccess, wrappedFailure); - } - } - - var Mixin = /** @class */ (function () { - function Mixin() { - } - // mix into a CLASS - Mixin.mixInto = function (destClass) { - this.mixIntoObj(destClass.prototype); - }; - // mix into ANY object - Mixin.mixIntoObj = function (destObj) { - var _this = this; - Object.getOwnPropertyNames(this.prototype).forEach(function (name) { - if (!destObj[name]) { // if destination doesn't already define it - destObj[name] = _this.prototype[name]; - } - }); - }; - /* - will override existing methods - TODO: remove! not used anymore - */ - Mixin.mixOver = function (destClass) { - var _this = this; - Object.getOwnPropertyNames(this.prototype).forEach(function (name) { - destClass.prototype[name] = _this.prototype[name]; - }); - }; - return Mixin; - }()); - - /* - USAGE: - import { default as EmitterMixin, EmitterInterface } from './EmitterMixin' - in class: - on: EmitterInterface['on'] - one: EmitterInterface['one'] - off: EmitterInterface['off'] - trigger: EmitterInterface['trigger'] - triggerWith: EmitterInterface['triggerWith'] - hasHandlers: EmitterInterface['hasHandlers'] - after class: - EmitterMixin.mixInto(TheClass) - */ - var EmitterMixin = /** @class */ (function (_super) { - __extends(EmitterMixin, _super); - function EmitterMixin() { - return _super !== null && _super.apply(this, arguments) || this; - } - EmitterMixin.prototype.on = function (type, handler) { - addToHash(this._handlers || (this._handlers = {}), type, handler); - return this; // for chaining - }; - // todo: add comments - EmitterMixin.prototype.one = function (type, handler) { - addToHash(this._oneHandlers || (this._oneHandlers = {}), type, handler); - return this; // for chaining - }; - EmitterMixin.prototype.off = function (type, handler) { - if (this._handlers) { - removeFromHash(this._handlers, type, handler); - } - if (this._oneHandlers) { - removeFromHash(this._oneHandlers, type, handler); - } - return this; // for chaining - }; - EmitterMixin.prototype.trigger = function (type) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - this.triggerWith(type, this, args); - return this; // for chaining - }; - EmitterMixin.prototype.triggerWith = function (type, context, args) { - if (this._handlers) { - applyAll(this._handlers[type], context, args); - } - if (this._oneHandlers) { - applyAll(this._oneHandlers[type], context, args); - delete this._oneHandlers[type]; // will never fire again - } - return this; // for chaining - }; - EmitterMixin.prototype.hasHandlers = function (type) { - return (this._handlers && this._handlers[type] && this._handlers[type].length) || - (this._oneHandlers && this._oneHandlers[type] && this._oneHandlers[type].length); - }; - return EmitterMixin; - }(Mixin)); - function addToHash(hash, type, handler) { - (hash[type] || (hash[type] = [])) - .push(handler); - } - function removeFromHash(hash, type, handler) { - if (handler) { - if (hash[type]) { - hash[type] = hash[type].filter(function (func) { - return func !== handler; - }); - } - } - else { - delete hash[type]; // remove all handler funcs for this type - } - } - - /* - Records offset information for a set of elements, relative to an origin element. - Can record the left/right OR the top/bottom OR both. - Provides methods for querying the cache by position. - */ - var PositionCache = /** @class */ (function () { - function PositionCache(originEl, els, isHorizontal, isVertical) { - this.originEl = originEl; - this.els = els; - this.isHorizontal = isHorizontal; - this.isVertical = isVertical; - } - // Queries the els for coordinates and stores them. - // Call this method before using and of the get* methods below. - PositionCache.prototype.build = function () { - var originEl = this.originEl; - var originClientRect = this.originClientRect = - originEl.getBoundingClientRect(); // relative to viewport top-left - if (this.isHorizontal) { - this.buildElHorizontals(originClientRect.left); - } - if (this.isVertical) { - this.buildElVerticals(originClientRect.top); - } - }; - // Populates the left/right internal coordinate arrays - PositionCache.prototype.buildElHorizontals = function (originClientLeft) { - var lefts = []; - var rights = []; - for (var _i = 0, _a = this.els; _i < _a.length; _i++) { - var el = _a[_i]; - var rect = el.getBoundingClientRect(); - lefts.push(rect.left - originClientLeft); - rights.push(rect.right - originClientLeft); - } - this.lefts = lefts; - this.rights = rights; - }; - // Populates the top/bottom internal coordinate arrays - PositionCache.prototype.buildElVerticals = function (originClientTop) { - var tops = []; - var bottoms = []; - for (var _i = 0, _a = this.els; _i < _a.length; _i++) { - var el = _a[_i]; - var rect = el.getBoundingClientRect(); - tops.push(rect.top - originClientTop); - bottoms.push(rect.bottom - originClientTop); - } - this.tops = tops; - this.bottoms = bottoms; - }; - // Given a left offset (from document left), returns the index of the el that it horizontally intersects. - // If no intersection is made, returns undefined. - PositionCache.prototype.leftToIndex = function (leftPosition) { - var lefts = this.lefts; - var rights = this.rights; - var len = lefts.length; - var i; - for (i = 0; i < len; i++) { - if (leftPosition >= lefts[i] && leftPosition < rights[i]) { - return i; - } - } - }; - // Given a top offset (from document top), returns the index of the el that it vertically intersects. - // If no intersection is made, returns undefined. - PositionCache.prototype.topToIndex = function (topPosition) { - var tops = this.tops; - var bottoms = this.bottoms; - var len = tops.length; - var i; - for (i = 0; i < len; i++) { - if (topPosition >= tops[i] && topPosition < bottoms[i]) { - return i; - } - } - }; - // Gets the width of the element at the given index - PositionCache.prototype.getWidth = function (leftIndex) { - return this.rights[leftIndex] - this.lefts[leftIndex]; - }; - // Gets the height of the element at the given index - PositionCache.prototype.getHeight = function (topIndex) { - return this.bottoms[topIndex] - this.tops[topIndex]; - }; - return PositionCache; - }()); - - /* - An object for getting/setting scroll-related information for an element. - Internally, this is done very differently for window versus DOM element, - so this object serves as a common interface. - */ - var ScrollController = /** @class */ (function () { - function ScrollController() { - } - ScrollController.prototype.getMaxScrollTop = function () { - return this.getScrollHeight() - this.getClientHeight(); - }; - ScrollController.prototype.getMaxScrollLeft = function () { - return this.getScrollWidth() - this.getClientWidth(); - }; - ScrollController.prototype.canScrollVertically = function () { - return this.getMaxScrollTop() > 0; - }; - ScrollController.prototype.canScrollHorizontally = function () { - return this.getMaxScrollLeft() > 0; - }; - ScrollController.prototype.canScrollUp = function () { - return this.getScrollTop() > 0; - }; - ScrollController.prototype.canScrollDown = function () { - return this.getScrollTop() < this.getMaxScrollTop(); - }; - ScrollController.prototype.canScrollLeft = function () { - return this.getScrollLeft() > 0; - }; - ScrollController.prototype.canScrollRight = function () { - return this.getScrollLeft() < this.getMaxScrollLeft(); - }; - return ScrollController; - }()); - var ElementScrollController = /** @class */ (function (_super) { - __extends(ElementScrollController, _super); - function ElementScrollController(el) { - var _this = _super.call(this) || this; - _this.el = el; - return _this; - } - ElementScrollController.prototype.getScrollTop = function () { - return this.el.scrollTop; - }; - ElementScrollController.prototype.getScrollLeft = function () { - return this.el.scrollLeft; - }; - ElementScrollController.prototype.setScrollTop = function (top) { - this.el.scrollTop = top; - }; - ElementScrollController.prototype.setScrollLeft = function (left) { - this.el.scrollLeft = left; - }; - ElementScrollController.prototype.getScrollWidth = function () { - return this.el.scrollWidth; - }; - ElementScrollController.prototype.getScrollHeight = function () { - return this.el.scrollHeight; - }; - ElementScrollController.prototype.getClientHeight = function () { - return this.el.clientHeight; - }; - ElementScrollController.prototype.getClientWidth = function () { - return this.el.clientWidth; - }; - return ElementScrollController; - }(ScrollController)); - var WindowScrollController = /** @class */ (function (_super) { - __extends(WindowScrollController, _super); - function WindowScrollController() { - return _super !== null && _super.apply(this, arguments) || this; - } - WindowScrollController.prototype.getScrollTop = function () { - return window.pageYOffset; - }; - WindowScrollController.prototype.getScrollLeft = function () { - return window.pageXOffset; - }; - WindowScrollController.prototype.setScrollTop = function (n) { - window.scroll(window.pageXOffset, n); - }; - WindowScrollController.prototype.setScrollLeft = function (n) { - window.scroll(n, window.pageYOffset); - }; - WindowScrollController.prototype.getScrollWidth = function () { - return document.documentElement.scrollWidth; - }; - WindowScrollController.prototype.getScrollHeight = function () { - return document.documentElement.scrollHeight; - }; - WindowScrollController.prototype.getClientHeight = function () { - return document.documentElement.clientHeight; - }; - WindowScrollController.prototype.getClientWidth = function () { - return document.documentElement.clientWidth; - }; - return WindowScrollController; - }(ScrollController)); - - /* - Embodies a div that has potential scrollbars - */ - var ScrollComponent = /** @class */ (function (_super) { - __extends(ScrollComponent, _super); - function ScrollComponent(overflowX, overflowY) { - var _this = _super.call(this, createElement('div', { - className: 'fc-scroller' - })) || this; - _this.overflowX = overflowX; - _this.overflowY = overflowY; - _this.applyOverflow(); - return _this; - } - // sets to natural height, unlocks overflow - ScrollComponent.prototype.clear = function () { - this.setHeight('auto'); - this.applyOverflow(); - }; - ScrollComponent.prototype.destroy = function () { - removeElement(this.el); - }; - // Overflow - // ----------------------------------------------------------------------------------------------------------------- - ScrollComponent.prototype.applyOverflow = function () { - applyStyle(this.el, { - overflowX: this.overflowX, - overflowY: this.overflowY - }); - }; - // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'. - // Useful for preserving scrollbar widths regardless of future resizes. - // Can pass in scrollbarWidths for optimization. - ScrollComponent.prototype.lockOverflow = function (scrollbarWidths) { - var overflowX = this.overflowX; - var overflowY = this.overflowY; - scrollbarWidths = scrollbarWidths || this.getScrollbarWidths(); - if (overflowX === 'auto') { - overflowX = (scrollbarWidths.bottom || // horizontal scrollbars? - this.canScrollHorizontally() // OR scrolling pane with massless scrollbars? - ) ? 'scroll' : 'hidden'; - } - if (overflowY === 'auto') { - overflowY = (scrollbarWidths.left || scrollbarWidths.right || // horizontal scrollbars? - this.canScrollVertically() // OR scrolling pane with massless scrollbars? - ) ? 'scroll' : 'hidden'; - } - applyStyle(this.el, { overflowX: overflowX, overflowY: overflowY }); - }; - ScrollComponent.prototype.setHeight = function (height) { - applyStyleProp(this.el, 'height', height); - }; - ScrollComponent.prototype.getScrollbarWidths = function () { - var edges = computeEdges(this.el); - return { - left: edges.scrollbarLeft, - right: edges.scrollbarRight, - bottom: edges.scrollbarBottom - }; - }; - return ScrollComponent; - }(ElementScrollController)); - - var Theme = /** @class */ (function () { - function Theme(calendarOptions) { - this.calendarOptions = calendarOptions; - this.processIconOverride(); - } - Theme.prototype.processIconOverride = function () { - if (this.iconOverrideOption) { - this.setIconOverride(this.calendarOptions[this.iconOverrideOption]); - } - }; - Theme.prototype.setIconOverride = function (iconOverrideHash) { - var iconClassesCopy; - var buttonName; - if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object - iconClassesCopy = __assign({}, this.iconClasses); - for (buttonName in iconOverrideHash) { - iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]); - } - this.iconClasses = iconClassesCopy; - } - else if (iconOverrideHash === false) { - this.iconClasses = {}; - } - }; - Theme.prototype.applyIconOverridePrefix = function (className) { - var prefix = this.iconOverridePrefix; - if (prefix && className.indexOf(prefix) !== 0) { // if not already present - className = prefix + className; - } - return className; - }; - Theme.prototype.getClass = function (key) { - return this.classes[key] || ''; - }; - Theme.prototype.getIconClass = function (buttonName) { - var className = this.iconClasses[buttonName]; - if (className) { - return this.baseIconClass + ' ' + className; - } - return ''; - }; - Theme.prototype.getCustomButtonIconClass = function (customButtonProps) { - var className; - if (this.iconOverrideCustomButtonOption) { - className = customButtonProps[this.iconOverrideCustomButtonOption]; - if (className) { - return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className); - } - } - return ''; - }; - return Theme; - }()); - Theme.prototype.classes = {}; - Theme.prototype.iconClasses = {}; - Theme.prototype.baseIconClass = ''; - Theme.prototype.iconOverridePrefix = ''; - - var guid = 0; - var Component = /** @class */ (function () { - function Component(context, isView) { - // HACK to populate view at top of component instantiation call chain - if (isView) { - context.view = this; - } - this.uid = String(guid++); - this.context = context; - this.dateEnv = context.dateEnv; - this.theme = context.theme; - this.view = context.view; - this.calendar = context.calendar; - this.isRtl = this.opt('dir') === 'rtl'; - } - Component.addEqualityFuncs = function (newFuncs) { - this.prototype.equalityFuncs = __assign({}, this.prototype.equalityFuncs, newFuncs); - }; - Component.prototype.opt = function (name) { - return this.context.options[name]; - }; - Component.prototype.receiveProps = function (props) { - var _a = recycleProps(this.props || {}, props, this.equalityFuncs), anyChanges = _a.anyChanges, comboProps = _a.comboProps; - this.props = comboProps; - if (anyChanges) { - this.render(comboProps); - } - }; - Component.prototype.render = function (props) { - }; - // after destroy is called, this component won't ever be used again - Component.prototype.destroy = function () { - }; - return Component; - }()); - Component.prototype.equalityFuncs = {}; - /* - Reuses old values when equal. If anything is unequal, returns newProps as-is. - Great for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing. - */ - function recycleProps(oldProps, newProps, equalityFuncs) { - var comboProps = {}; // some old, some new - var anyChanges = false; - for (var key in newProps) { - if (key in oldProps && (oldProps[key] === newProps[key] || - (equalityFuncs[key] && equalityFuncs[key](oldProps[key], newProps[key])))) { - // equal to old? use old prop - comboProps[key] = oldProps[key]; - } - else { - comboProps[key] = newProps[key]; - anyChanges = true; - } - } - for (var key in oldProps) { - if (!(key in newProps)) { - anyChanges = true; - break; - } - } - return { anyChanges: anyChanges, comboProps: comboProps }; - } - - /* - PURPOSES: - - hook up to fg, fill, and mirror renderers - - interface for dragging and hits - */ - var DateComponent = /** @class */ (function (_super) { - __extends(DateComponent, _super); - function DateComponent(context, el, isView) { - var _this = _super.call(this, context, isView) || this; - _this.el = el; - return _this; - } - DateComponent.prototype.destroy = function () { - _super.prototype.destroy.call(this); - removeElement(this.el); - }; - // TODO: WHAT ABOUT (sourceSeg && sourceSeg.component.doesDragMirror) - // - // Event Drag-n-Drop Rendering (for both events and external elements) - // --------------------------------------------------------------------------------------------------------------- - /* - renderEventDragSegs(state: EventSegUiInteractionState) { - if (state) { - let { isEvent, segs, sourceSeg } = state - - if (this.eventRenderer) { - this.eventRenderer.hideByHash(state.affectedInstances) - } - - // if the user is dragging something that is considered an event with real event data, - // and this component likes to do drag mirrors OR the component where the seg came from - // likes to do drag mirrors, then render a drag mirror. - if (isEvent && (this.doesDragMirror || sourceSeg && sourceSeg.component.doesDragMirror)) { - if (this.mirrorRenderer) { - this.mirrorRenderer.renderSegs(segs, { isDragging: true, sourceSeg }) - } - } - - // if it would be impossible to render a drag mirror OR this component likes to render - // highlights, then render a highlight. - if (!isEvent || this.doesDragHighlight) { - if (this.fillRenderer) { - this.fillRenderer.renderSegs('highlight', segs) - } - } - } - } - */ - // Hit System - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.buildPositionCaches = function () { - }; - DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { - return null; // this should be abstract - }; - // Validation - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.isInteractionValid = function (interaction) { - var calendar = this.calendar; - var dateProfile = this.props.dateProfile; // HACK - var instances = interaction.mutatedEvents.instances; - if (dateProfile) { // HACK for DayTile - for (var instanceId in instances) { - if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) { - return false; - } - } - } - return isInteractionValid(interaction, calendar); - }; - DateComponent.prototype.isDateSelectionValid = function (selection) { - var dateProfile = this.props.dateProfile; // HACK - if (dateProfile && // HACK for DayTile - !rangeContainsRange(dateProfile.validRange, selection.range)) { - return false; - } - return isDateSelectionValid(selection, this.calendar); - }; - // Triggering - // ----------------------------------------------------------------------------------------------------------------- - // TODO: move to Calendar - DateComponent.prototype.publiclyTrigger = function (name, args) { - var calendar = this.calendar; - return calendar.publiclyTrigger(name, args); - }; - DateComponent.prototype.publiclyTriggerAfterSizing = function (name, args) { - var calendar = this.calendar; - return calendar.publiclyTriggerAfterSizing(name, args); - }; - DateComponent.prototype.hasPublicHandlers = function (name) { - var calendar = this.calendar; - return calendar.hasPublicHandlers(name); - }; - DateComponent.prototype.triggerRenderedSegs = function (segs, isMirrors) { - var calendar = this.calendar; - if (this.hasPublicHandlers('eventPositioned')) { - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { - var seg = segs_1[_i]; - this.publiclyTriggerAfterSizing('eventPositioned', [ - { - event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirrors, - isStart: seg.isStart, - isEnd: seg.isEnd, - el: seg.el, - view: this // safe to cast because this method is only called on context.view - } - ]); - } - } - if (!calendar.state.loadingLevel) { // avoid initial empty state while pending - calendar.afterSizingTriggers._eventsPositioned = [null]; // fire once - } - }; - DateComponent.prototype.triggerWillRemoveSegs = function (segs, isMirrors) { - var calendar = this.calendar; - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - calendar.trigger('eventElRemove', seg.el); - } - if (this.hasPublicHandlers('eventDestroy')) { - for (var _a = 0, segs_3 = segs; _a < segs_3.length; _a++) { - var seg = segs_3[_a]; - this.publiclyTrigger('eventDestroy', [ - { - event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance), - isMirror: isMirrors, - el: seg.el, - view: this // safe to cast because this method is only called on context.view - } - ]); - } - } - }; - // Pointer Interaction Utils - // ----------------------------------------------------------------------------------------------------------------- - DateComponent.prototype.isValidSegDownEl = function (el) { - return !this.props.eventDrag && // HACK - !this.props.eventResize && // HACK - !elementClosest(el, '.fc-mirror') && - (this.isPopover() || !this.isInPopover(el)); - // ^above line ensures we don't detect a seg interaction within a nested component. - // it's a HACK because it only supports a popover as the nested component. - }; - DateComponent.prototype.isValidDateDownEl = function (el) { - var segEl = elementClosest(el, this.fgSegSelector); - return (!segEl || segEl.classList.contains('fc-mirror')) && - !elementClosest(el, '.fc-more') && // a "more.." link - !elementClosest(el, 'a[data-goto]') && // a clickable nav link - !this.isInPopover(el); - }; - DateComponent.prototype.isPopover = function () { - return this.el.classList.contains('fc-popover'); - }; - DateComponent.prototype.isInPopover = function (el) { - return Boolean(elementClosest(el, '.fc-popover')); - }; - return DateComponent; - }(Component)); - DateComponent.prototype.fgSegSelector = '.fc-event-container > *'; - DateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)'; - - var uid$1 = 0; - function createPlugin(input) { - return { - id: String(uid$1++), - deps: input.deps || [], - reducers: input.reducers || [], - eventDefParsers: input.eventDefParsers || [], - isDraggableTransformers: input.isDraggableTransformers || [], - eventDragMutationMassagers: input.eventDragMutationMassagers || [], - eventDefMutationAppliers: input.eventDefMutationAppliers || [], - dateSelectionTransformers: input.dateSelectionTransformers || [], - datePointTransforms: input.datePointTransforms || [], - dateSpanTransforms: input.dateSpanTransforms || [], - views: input.views || {}, - viewPropsTransformers: input.viewPropsTransformers || [], - isPropsValid: input.isPropsValid || null, - externalDefTransforms: input.externalDefTransforms || [], - eventResizeJoinTransforms: input.eventResizeJoinTransforms || [], - viewContainerModifiers: input.viewContainerModifiers || [], - eventDropTransformers: input.eventDropTransformers || [], - componentInteractions: input.componentInteractions || [], - calendarInteractions: input.calendarInteractions || [], - themeClasses: input.themeClasses || {}, - eventSourceDefs: input.eventSourceDefs || [], - cmdFormatter: input.cmdFormatter, - recurringTypes: input.recurringTypes || [], - namedTimeZonedImpl: input.namedTimeZonedImpl, - defaultView: input.defaultView || '', - elementDraggingImpl: input.elementDraggingImpl, - optionChangeHandlers: input.optionChangeHandlers || {} - }; - } - var PluginSystem = /** @class */ (function () { - function PluginSystem() { - this.hooks = { - reducers: [], - eventDefParsers: [], - isDraggableTransformers: [], - eventDragMutationMassagers: [], - eventDefMutationAppliers: [], - dateSelectionTransformers: [], - datePointTransforms: [], - dateSpanTransforms: [], - views: {}, - viewPropsTransformers: [], - isPropsValid: null, - externalDefTransforms: [], - eventResizeJoinTransforms: [], - viewContainerModifiers: [], - eventDropTransformers: [], - componentInteractions: [], - calendarInteractions: [], - themeClasses: {}, - eventSourceDefs: [], - cmdFormatter: null, - recurringTypes: [], - namedTimeZonedImpl: null, - defaultView: '', - elementDraggingImpl: null, - optionChangeHandlers: {} - }; - this.addedHash = {}; - } - PluginSystem.prototype.add = function (plugin) { - if (!this.addedHash[plugin.id]) { - this.addedHash[plugin.id] = true; - for (var _i = 0, _a = plugin.deps; _i < _a.length; _i++) { - var dep = _a[_i]; - this.add(dep); - } - this.hooks = combineHooks(this.hooks, plugin); - } - }; - return PluginSystem; - }()); - function combineHooks(hooks0, hooks1) { - return { - reducers: hooks0.reducers.concat(hooks1.reducers), - eventDefParsers: hooks0.eventDefParsers.concat(hooks1.eventDefParsers), - isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers), - eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers), - eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers), - dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers), - datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms), - dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms), - views: __assign({}, hooks0.views, hooks1.views), - viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers), - isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid, - externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms), - eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms), - viewContainerModifiers: hooks0.viewContainerModifiers.concat(hooks1.viewContainerModifiers), - eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers), - calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions), - componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions), - themeClasses: __assign({}, hooks0.themeClasses, hooks1.themeClasses), - eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs), - cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter, - recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes), - namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl, - defaultView: hooks0.defaultView || hooks1.defaultView, - elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, - optionChangeHandlers: __assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers) - }; - } - - var eventSourceDef = { - ignoreRange: true, - parseMeta: function (raw) { - if (Array.isArray(raw)) { // short form - return raw; - } - else if (Array.isArray(raw.events)) { - return raw.events; - } - return null; - }, - fetch: function (arg, success) { - success({ - rawEvents: arg.eventSource.meta - }); - } - }; - var ArrayEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef] - }); - - var eventSourceDef$1 = { - parseMeta: function (raw) { - if (typeof raw === 'function') { // short form - return raw; - } - else if (typeof raw.events === 'function') { - return raw.events; - } - return null; - }, - fetch: function (arg, success, failure) { - var dateEnv = arg.calendar.dateEnv; - var func = arg.eventSource.meta; - unpromisify(func.bind(null, { - start: dateEnv.toDate(arg.range.start), - end: dateEnv.toDate(arg.range.end), - startStr: dateEnv.formatIso(arg.range.start), - endStr: dateEnv.formatIso(arg.range.end), - timeZone: dateEnv.timeZone - }), function (rawEvents) { - success({ rawEvents: rawEvents }); // needs an object response - }, failure // send errorObj directly to failure callback - ); - } - }; - var FuncEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef$1] - }); - - function requestJson(method, url, params, successCallback, failureCallback) { - method = method.toUpperCase(); - var body = null; - if (method === 'GET') { - url = injectQueryStringParams(url, params); - } - else { - body = encodeParams(params); - } - var xhr = new XMLHttpRequest(); - xhr.open(method, url, true); - if (method !== 'GET') { - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 400) { - try { - var res = JSON.parse(xhr.responseText); - successCallback(res, xhr); - } - catch (err) { - failureCallback('Failure parsing JSON', xhr); - } - } - else { - failureCallback('Request failed', xhr); - } - }; - xhr.onerror = function () { - failureCallback('Request failed', xhr); - }; - xhr.send(body); - } - function injectQueryStringParams(url, params) { - return url + - (url.indexOf('?') === -1 ? '?' : '&') + - encodeParams(params); - } - function encodeParams(params) { - var parts = []; - for (var key in params) { - parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key])); - } - return parts.join('&'); - } - - var eventSourceDef$2 = { - parseMeta: function (raw) { - if (typeof raw === 'string') { // short form - raw = { url: raw }; - } - else if (!raw || typeof raw !== 'object' || !raw.url) { - return null; - } - return { - url: raw.url, - method: (raw.method || 'GET').toUpperCase(), - extraParams: raw.extraParams, - startParam: raw.startParam, - endParam: raw.endParam, - timeZoneParam: raw.timeZoneParam - }; - }, - fetch: function (arg, success, failure) { - var meta = arg.eventSource.meta; - var requestParams = buildRequestParams(meta, arg.range, arg.calendar); - requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) { - success({ rawEvents: rawEvents, xhr: xhr }); - }, function (errorMessage, xhr) { - failure({ message: errorMessage, xhr: xhr }); - }); - } - }; - var JsonFeedEventSourcePlugin = createPlugin({ - eventSourceDefs: [eventSourceDef$2] - }); - function buildRequestParams(meta, range, calendar) { - var dateEnv = calendar.dateEnv; - var startParam; - var endParam; - var timeZoneParam; - var customRequestParams; - var params = {}; - startParam = meta.startParam; - if (startParam == null) { - startParam = calendar.opt('startParam'); - } - endParam = meta.endParam; - if (endParam == null) { - endParam = calendar.opt('endParam'); - } - timeZoneParam = meta.timeZoneParam; - if (timeZoneParam == null) { - timeZoneParam = calendar.opt('timeZoneParam'); - } - // retrieve any outbound GET/POST data from the options - if (typeof meta.extraParams === 'function') { - // supplied as a function that returns a key/value object - customRequestParams = meta.extraParams(); - } - else { - // probably supplied as a straight key/value object - customRequestParams = meta.extraParams || {}; - } - __assign(params, customRequestParams); - params[startParam] = dateEnv.formatIso(range.start); - params[endParam] = dateEnv.formatIso(range.end); - if (dateEnv.timeZone !== 'local') { - params[timeZoneParam] = dateEnv.timeZone; - } - return params; - } - - var recurring = { - parse: function (rawEvent, leftoverProps, dateEnv) { - var createMarker = dateEnv.createMarker.bind(dateEnv); - var processors = { - daysOfWeek: null, - startTime: createDuration, - endTime: createDuration, - startRecur: createMarker, - endRecur: createMarker - }; - var props = refineProps(rawEvent, processors, {}, leftoverProps); - var anyValid = false; - for (var propName in props) { - if (props[propName] != null) { - anyValid = true; - break; - } - } - if (anyValid) { - var duration = null; - if ('duration' in leftoverProps) { - duration = createDuration(leftoverProps.duration); - delete leftoverProps.duration; - } - if (!duration && props.startTime && props.endTime) { - duration = subtractDurations(props.endTime, props.startTime); - } - return { - allDayGuess: Boolean(!props.startTime && !props.endTime), - duration: duration, - typeData: props // doesn't need endTime anymore but oh well - }; - } - return null; - }, - expand: function (typeData, framingRange, dateEnv) { - var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur }); - if (clippedFramingRange) { - return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv); - } - else { - return []; - } - } - }; - var SimpleRecurrencePlugin = createPlugin({ - recurringTypes: [recurring] - }); - function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) { - var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null; - var dayMarker = startOfDay(framingRange.start); - var endMarker = framingRange.end; - var instanceStarts = []; - while (dayMarker < endMarker) { - var instanceStart - // if everyday, or this particular day-of-week - = void 0; - // if everyday, or this particular day-of-week - if (!dowHash || dowHash[dayMarker.getUTCDay()]) { - if (startTime) { - instanceStart = dateEnv.add(dayMarker, startTime); - } - else { - instanceStart = dayMarker; - } - instanceStarts.push(instanceStart); - } - dayMarker = addDays(dayMarker, 1); - } - return instanceStarts; - } - - var DefaultOptionChangeHandlers = createPlugin({ - optionChangeHandlers: { - events: function (events, calendar, deepEqual) { - handleEventSources([events], calendar, deepEqual); - }, - eventSources: handleEventSources, - plugins: handlePlugins - } - }); - function handleEventSources(inputs, calendar, deepEqual) { - var unfoundSources = hashValuesToArray(calendar.state.eventSources); - var newInputs = []; - for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { - var input = inputs_1[_i]; - var inputFound = false; - for (var i = 0; i < unfoundSources.length; i++) { - if (deepEqual(unfoundSources[i]._raw, input)) { - unfoundSources.splice(i, 1); // delete - inputFound = true; - break; - } - } - if (!inputFound) { - newInputs.push(input); - } - } - for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) { - var unfoundSource = unfoundSources_1[_a]; - calendar.dispatch({ - type: 'REMOVE_EVENT_SOURCE', - sourceId: unfoundSource.sourceId - }); - } - for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) { - var newInput = newInputs_1[_b]; - calendar.addEventSource(newInput); - } - } - // shortcoming: won't remove plugins - function handlePlugins(inputs, calendar) { - calendar.addPluginInputs(inputs); // will gracefully handle duplicates - } - - var config = {}; // TODO: make these options - var globalDefaults = { - defaultRangeSeparator: ' - ', - titleRangeSeparator: ' \u2013 ', - defaultTimedEventDuration: '01:00:00', - defaultAllDayEventDuration: { day: 1 }, - forceEventDuration: false, - nextDayThreshold: '00:00:00', - // display - columnHeader: true, - defaultView: '', - aspectRatio: 1.35, - header: { - left: 'title', - center: '', - right: 'today prev,next' - }, - weekends: true, - weekNumbers: false, - weekNumberCalculation: 'local', - editable: false, - // nowIndicator: false, - scrollTime: '06:00:00', - minTime: '00:00:00', - maxTime: '24:00:00', - showNonCurrentDates: true, - // event ajax - lazyFetching: true, - startParam: 'start', - endParam: 'end', - timeZoneParam: 'timeZone', - timeZone: 'local', - // allDayDefault: undefined, - // locale - locales: [], - locale: '', - // dir: will get this from the default locale - // buttonIcons: null, - // allows setting a min-height to the event segment to prevent short events overlapping each other - timeGridEventMinHeight: 0, - themeSystem: 'standard', - // eventResizableFromStart: false, - dragRevertDuration: 500, - dragScroll: true, - allDayMaintainDuration: false, - // selectable: false, - unselectAuto: true, - // selectMinDistance: 0, - dropAccept: '*', - eventOrder: 'start,-duration,allDay,title', - // ^ if start tie, longer events go before shorter. final tie-breaker is title text - // rerenderDelay: null, - eventLimit: false, - eventLimitClick: 'popover', - dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' }, - handleWindowResize: true, - windowResizeDelay: 100, - longPressDelay: 1000, - eventDragMinDistance: 5 // only applies to mouse - }; - var rtlDefaults = { - header: { - left: 'next,prev today', - center: '', - right: 'title' - }, - buttonIcons: { - // TODO: make RTL support the responibility of the theme - prev: 'fc-icon-chevron-right', - next: 'fc-icon-chevron-left', - prevYear: 'fc-icon-chevrons-right', - nextYear: 'fc-icon-chevrons-left' - } - }; - var complexOptions = [ - 'header', - 'footer', - 'buttonText', - 'buttonIcons' - ]; - // Merges an array of option objects into a single object - function mergeOptions(optionObjs) { - return mergeProps(optionObjs, complexOptions); - } - // TODO: move this stuff to a "plugin"-related file... - var INTERNAL_PLUGINS = [ - ArrayEventSourcePlugin, - FuncEventSourcePlugin, - JsonFeedEventSourcePlugin, - SimpleRecurrencePlugin, - DefaultOptionChangeHandlers - ]; - function refinePluginDefs(pluginInputs) { - var plugins = []; - for (var _i = 0, pluginInputs_1 = pluginInputs; _i < pluginInputs_1.length; _i++) { - var pluginInput = pluginInputs_1[_i]; - if (typeof pluginInput === 'string') { - var globalName = 'FullCalendar' + capitaliseFirstLetter(pluginInput); - if (!window[globalName]) { - console.warn('Plugin file not loaded for ' + pluginInput); - } - else { - plugins.push(window[globalName].default); // is an ES6 module - } - } - else { - plugins.push(pluginInput); - } - } - return INTERNAL_PLUGINS.concat(plugins); - } - - var RAW_EN_LOCALE = { - code: 'en', - week: { - dow: 0, - doy: 4 // 4 days need to be within the year to be considered the first week - }, - dir: 'ltr', - buttonText: { - prev: 'prev', - next: 'next', - prevYear: 'prev year', - nextYear: 'next year', - year: 'year', - today: 'today', - month: 'month', - week: 'week', - day: 'day', - list: 'list' - }, - weekLabel: 'W', - allDayText: 'all-day', - eventLimitText: 'more', - noEventsMessage: 'No events to display' - }; - function parseRawLocales(explicitRawLocales) { - var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'; - var globalArray = window['FullCalendarLocalesAll'] || []; // from locales-all.js - var globalObject = window['FullCalendarLocales'] || {}; // from locales/*.js. keys are meaningless - var allRawLocales = globalArray.concat(// globalArray is low prio - hashValuesToArray(globalObject), // medium prio - explicitRawLocales // highest prio - ); - var rawLocaleMap = { - en: RAW_EN_LOCALE // necessary? - }; - for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) { - var rawLocale = allRawLocales_1[_i]; - rawLocaleMap[rawLocale.code] = rawLocale; - } - return { - map: rawLocaleMap, - defaultCode: defaultCode - }; - } - function buildLocale(inputSingular, available) { - if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) { - return parseLocale(inputSingular.code, [inputSingular.code], inputSingular); - } - else { - return queryLocale(inputSingular, available); - } - } - function queryLocale(codeArg, available) { - var codes = [].concat(codeArg || []); // will convert to array - var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE; - return parseLocale(codeArg, codes, raw); - } - function queryRawLocale(codes, available) { - for (var i = 0; i < codes.length; i++) { - var parts = codes[i].toLocaleLowerCase().split('-'); - for (var j = parts.length; j > 0; j--) { - var simpleId = parts.slice(0, j).join('-'); - if (available[simpleId]) { - return available[simpleId]; - } - } - } - return null; - } - function parseLocale(codeArg, codes, raw) { - var merged = mergeProps([RAW_EN_LOCALE, raw], ['buttonText']); - delete merged.code; // don't want this part of the options - var week = merged.week; - delete merged.week; - return { - codeArg: codeArg, - codes: codes, - week: week, - simpleNumberFormat: new Intl.NumberFormat(codeArg), - options: merged - }; - } - - var OptionsManager = /** @class */ (function () { - function OptionsManager(overrides) { - this.overrides = __assign({}, overrides); // make a copy - this.dynamicOverrides = {}; - this.compute(); - } - OptionsManager.prototype.mutate = function (updates, removals, isDynamic) { - var overrideHash = isDynamic ? this.dynamicOverrides : this.overrides; - __assign(overrideHash, updates); - for (var _i = 0, removals_1 = removals; _i < removals_1.length; _i++) { - var propName = removals_1[_i]; - delete overrideHash[propName]; - } - this.compute(); - }; - // Computes the flattened options hash for the calendar and assigns to `this.options`. - // Assumes this.overrides and this.dynamicOverrides have already been initialized. - OptionsManager.prototype.compute = function () { - // TODO: not a very efficient system - var locales = firstDefined(// explicit locale option given? - this.dynamicOverrides.locales, this.overrides.locales, globalDefaults.locales); - var locale = firstDefined(// explicit locales option given? - this.dynamicOverrides.locale, this.overrides.locale, globalDefaults.locale); - var available = parseRawLocales(locales); - var localeDefaults = buildLocale(locale || available.defaultCode, available.map).options; - var dir = firstDefined(// based on options computed so far, is direction RTL? - this.dynamicOverrides.dir, this.overrides.dir, localeDefaults.dir); - var dirDefaults = dir === 'rtl' ? rtlDefaults : {}; - this.dirDefaults = dirDefaults; - this.localeDefaults = localeDefaults; - this.computed = mergeOptions([ - globalDefaults, - dirDefaults, - localeDefaults, - this.overrides, - this.dynamicOverrides - ]); - }; - return OptionsManager; - }()); - - var calendarSystemClassMap = {}; - function registerCalendarSystem(name, theClass) { - calendarSystemClassMap[name] = theClass; - } - function createCalendarSystem(name) { - return new calendarSystemClassMap[name](); - } - var GregorianCalendarSystem = /** @class */ (function () { - function GregorianCalendarSystem() { - } - GregorianCalendarSystem.prototype.getMarkerYear = function (d) { - return d.getUTCFullYear(); - }; - GregorianCalendarSystem.prototype.getMarkerMonth = function (d) { - return d.getUTCMonth(); - }; - GregorianCalendarSystem.prototype.getMarkerDay = function (d) { - return d.getUTCDate(); - }; - GregorianCalendarSystem.prototype.arrayToMarker = function (arr) { - return arrayToUtcDate(arr); - }; - GregorianCalendarSystem.prototype.markerToArray = function (marker) { - return dateToUtcArray(marker); - }; - return GregorianCalendarSystem; - }()); - registerCalendarSystem('gregory', GregorianCalendarSystem); - - var ISO_RE = /^\s*(\d{4})(-(\d{2})(-(\d{2})([T ](\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/; - function parse(str) { - var m = ISO_RE.exec(str); - if (m) { - var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number('0.' + m[12]) * 1000 : 0)); - if (isValidDate(marker)) { - var timeZoneOffset = null; - if (m[13]) { - timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + - Number(m[18] || 0)); - } - return { - marker: marker, - isTimeUnspecified: !m[6], - timeZoneOffset: timeZoneOffset - }; - } - } - return null; - } - - var DateEnv = /** @class */ (function () { - function DateEnv(settings) { - var timeZone = this.timeZone = settings.timeZone; - var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC'; - if (settings.namedTimeZoneImpl && isNamedTimeZone) { - this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone); - } - this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl); - this.calendarSystem = createCalendarSystem(settings.calendarSystem); - this.locale = settings.locale; - this.weekDow = settings.locale.week.dow; - this.weekDoy = settings.locale.week.doy; - if (settings.weekNumberCalculation === 'ISO') { - this.weekDow = 1; - this.weekDoy = 4; - } - if (typeof settings.firstDay === 'number') { - this.weekDow = settings.firstDay; - } - if (typeof settings.weekNumberCalculation === 'function') { - this.weekNumberFunc = settings.weekNumberCalculation; - } - this.weekLabel = settings.weekLabel != null ? settings.weekLabel : settings.locale.options.weekLabel; - this.cmdFormatter = settings.cmdFormatter; - } - // Creating / Parsing - DateEnv.prototype.createMarker = function (input) { - var meta = this.createMarkerMeta(input); - if (meta === null) { - return null; - } - return meta.marker; - }; - DateEnv.prototype.createNowMarker = function () { - if (this.canComputeOffset) { - return this.timestampToMarker(new Date().valueOf()); - } - else { - // if we can't compute the current date val for a timezone, - // better to give the current local date vals than UTC - return arrayToUtcDate(dateToLocalArray(new Date())); - } - }; - DateEnv.prototype.createMarkerMeta = function (input) { - if (typeof input === 'string') { - return this.parse(input); - } - var marker = null; - if (typeof input === 'number') { - marker = this.timestampToMarker(input); - } - else if (input instanceof Date) { - input = input.valueOf(); - if (!isNaN(input)) { - marker = this.timestampToMarker(input); - } - } - else if (Array.isArray(input)) { - marker = arrayToUtcDate(input); - } - if (marker === null || !isValidDate(marker)) { - return null; - } - return { marker: marker, isTimeUnspecified: false, forcedTzo: null }; - }; - DateEnv.prototype.parse = function (s) { - var parts = parse(s); - if (parts === null) { - return null; - } - var marker = parts.marker; - var forcedTzo = null; - if (parts.timeZoneOffset !== null) { - if (this.canComputeOffset) { - marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000); - } - else { - forcedTzo = parts.timeZoneOffset; - } - } - return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo }; - }; - // Accessors - DateEnv.prototype.getYear = function (marker) { - return this.calendarSystem.getMarkerYear(marker); - }; - DateEnv.prototype.getMonth = function (marker) { - return this.calendarSystem.getMarkerMonth(marker); - }; - // Adding / Subtracting - DateEnv.prototype.add = function (marker, dur) { - var a = this.calendarSystem.markerToArray(marker); - a[0] += dur.years; - a[1] += dur.months; - a[2] += dur.days; - a[6] += dur.milliseconds; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.subtract = function (marker, dur) { - var a = this.calendarSystem.markerToArray(marker); - a[0] -= dur.years; - a[1] -= dur.months; - a[2] -= dur.days; - a[6] -= dur.milliseconds; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.addYears = function (marker, n) { - var a = this.calendarSystem.markerToArray(marker); - a[0] += n; - return this.calendarSystem.arrayToMarker(a); - }; - DateEnv.prototype.addMonths = function (marker, n) { - var a = this.calendarSystem.markerToArray(marker); - a[1] += n; - return this.calendarSystem.arrayToMarker(a); - }; - // Diffing Whole Units - DateEnv.prototype.diffWholeYears = function (m0, m1) { - var calendarSystem = this.calendarSystem; - if (timeAsMs(m0) === timeAsMs(m1) && - calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && - calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) { - return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0); - } - return null; - }; - DateEnv.prototype.diffWholeMonths = function (m0, m1) { - var calendarSystem = this.calendarSystem; - if (timeAsMs(m0) === timeAsMs(m1) && - calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) { - return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) + - (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12; - } - return null; - }; - // Range / Duration - DateEnv.prototype.greatestWholeUnit = function (m0, m1) { - var n = this.diffWholeYears(m0, m1); - if (n !== null) { - return { unit: 'year', value: n }; - } - n = this.diffWholeMonths(m0, m1); - if (n !== null) { - return { unit: 'month', value: n }; - } - n = diffWholeWeeks(m0, m1); - if (n !== null) { - return { unit: 'week', value: n }; - } - n = diffWholeDays(m0, m1); - if (n !== null) { - return { unit: 'day', value: n }; - } - n = diffHours(m0, m1); - if (isInt(n)) { - return { unit: 'hour', value: n }; - } - n = diffMinutes(m0, m1); - if (isInt(n)) { - return { unit: 'minute', value: n }; - } - n = diffSeconds(m0, m1); - if (isInt(n)) { - return { unit: 'second', value: n }; - } - return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() }; - }; - DateEnv.prototype.countDurationsBetween = function (m0, m1, d) { - // TODO: can use greatestWholeUnit - var diff; - if (d.years) { - diff = this.diffWholeYears(m0, m1); - if (diff !== null) { - return diff / asRoughYears(d); - } - } - if (d.months) { - diff = this.diffWholeMonths(m0, m1); - if (diff !== null) { - return diff / asRoughMonths(d); - } - } - if (d.days) { - diff = diffWholeDays(m0, m1); - if (diff !== null) { - return diff / asRoughDays(d); - } - } - return (m1.valueOf() - m0.valueOf()) / asRoughMs(d); - }; - // Start-Of - DateEnv.prototype.startOf = function (m, unit) { - if (unit === 'year') { - return this.startOfYear(m); - } - else if (unit === 'month') { - return this.startOfMonth(m); - } - else if (unit === 'week') { - return this.startOfWeek(m); - } - else if (unit === 'day') { - return startOfDay(m); - } - else if (unit === 'hour') { - return startOfHour(m); - } - else if (unit === 'minute') { - return startOfMinute(m); - } - else if (unit === 'second') { - return startOfSecond(m); - } - }; - DateEnv.prototype.startOfYear = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m) - ]); - }; - DateEnv.prototype.startOfMonth = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m), - this.calendarSystem.getMarkerMonth(m) - ]); - }; - DateEnv.prototype.startOfWeek = function (m) { - return this.calendarSystem.arrayToMarker([ - this.calendarSystem.getMarkerYear(m), - this.calendarSystem.getMarkerMonth(m), - m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7) - ]); - }; - // Week Number - DateEnv.prototype.computeWeekNumber = function (marker) { - if (this.weekNumberFunc) { - return this.weekNumberFunc(this.toDate(marker)); - } - else { - return weekOfYear(marker, this.weekDow, this.weekDoy); - } - }; - // TODO: choke on timeZoneName: long - DateEnv.prototype.format = function (marker, formatter, dateOptions) { - if (dateOptions === void 0) { dateOptions = {}; } - return formatter.format({ - marker: marker, - timeZoneOffset: dateOptions.forcedTzo != null ? - dateOptions.forcedTzo : - this.offsetForMarker(marker) - }, this); - }; - DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) { - if (dateOptions === void 0) { dateOptions = {}; } - if (dateOptions.isEndExclusive) { - end = addMs(end, -1); - } - return formatter.formatRange({ - marker: start, - timeZoneOffset: dateOptions.forcedStartTzo != null ? - dateOptions.forcedStartTzo : - this.offsetForMarker(start) - }, { - marker: end, - timeZoneOffset: dateOptions.forcedEndTzo != null ? - dateOptions.forcedEndTzo : - this.offsetForMarker(end) - }, this); - }; - DateEnv.prototype.formatIso = function (marker, extraOptions) { - if (extraOptions === void 0) { extraOptions = {}; } - var timeZoneOffset = null; - if (!extraOptions.omitTimeZoneOffset) { - if (extraOptions.forcedTzo != null) { - timeZoneOffset = extraOptions.forcedTzo; - } - else { - timeZoneOffset = this.offsetForMarker(marker); - } - } - return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime); - }; - // TimeZone - DateEnv.prototype.timestampToMarker = function (ms) { - if (this.timeZone === 'local') { - return arrayToUtcDate(dateToLocalArray(new Date(ms))); - } - else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) { - return new Date(ms); - } - else { - return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms)); - } - }; - DateEnv.prototype.offsetForMarker = function (m) { - if (this.timeZone === 'local') { - return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert "inverse" offset to "normal" offset - } - else if (this.timeZone === 'UTC') { - return 0; - } - else if (this.namedTimeZoneImpl) { - return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)); - } - return null; - }; - // Conversion - DateEnv.prototype.toDate = function (m, forcedTzo) { - if (this.timeZone === 'local') { - return arrayToLocalDate(dateToUtcArray(m)); - } - else if (this.timeZone === 'UTC') { - return new Date(m.valueOf()); // make sure it's a copy - } - else if (!this.namedTimeZoneImpl) { - return new Date(m.valueOf() - (forcedTzo || 0)); - } - else { - return new Date(m.valueOf() - - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms - ); - } - }; - return DateEnv; - }()); - - var SIMPLE_SOURCE_PROPS = { - id: String, - allDayDefault: Boolean, - eventDataTransform: Function, - success: Function, - failure: Function - }; - var uid$2 = 0; - function doesSourceNeedRange(eventSource, calendar) { - var defs = calendar.pluginSystem.hooks.eventSourceDefs; - return !defs[eventSource.sourceDefId].ignoreRange; - } - function parseEventSource(raw, calendar) { - var defs = calendar.pluginSystem.hooks.eventSourceDefs; - for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence - var def = defs[i]; - var meta = def.parseMeta(raw); - if (meta) { - var res = parseEventSourceProps(typeof raw === 'object' ? raw : {}, meta, i, calendar); - res._raw = raw; - return res; - } - } - return null; - } - function parseEventSourceProps(raw, meta, sourceDefId, calendar) { - var leftovers0 = {}; - var props = refineProps(raw, SIMPLE_SOURCE_PROPS, {}, leftovers0); - var leftovers1 = {}; - var ui = processUnscopedUiProps(leftovers0, calendar, leftovers1); - props.isFetching = false; - props.latestFetchId = ''; - props.fetchRange = null; - props.publicId = String(raw.id || ''); - props.sourceId = String(uid$2++); - props.sourceDefId = sourceDefId; - props.meta = meta; - props.ui = ui; - props.extendedProps = leftovers1; - return props; - } - - function reduceEventSources (eventSources, action, dateProfile, calendar) { - switch (action.type) { - case 'ADD_EVENT_SOURCES': // already parsed - return addSources(eventSources, action.sources, dateProfile ? dateProfile.activeRange : null, calendar); - case 'REMOVE_EVENT_SOURCE': - return removeSource(eventSources, action.sourceId); - case 'PREV': // TODO: how do we track all actions that affect dateProfile :( - case 'NEXT': - case 'SET_DATE': - case 'SET_VIEW_TYPE': - if (dateProfile) { - return fetchDirtySources(eventSources, dateProfile.activeRange, calendar); - } - else { - return eventSources; - } - case 'FETCH_EVENT_SOURCES': - case 'CHANGE_TIMEZONE': - return fetchSourcesByIds(eventSources, action.sourceIds ? - arrayToHash(action.sourceIds) : - excludeStaticSources(eventSources, calendar), dateProfile ? dateProfile.activeRange : null, calendar); - case 'RECEIVE_EVENTS': - case 'RECEIVE_EVENT_ERROR': - return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange); - case 'REMOVE_ALL_EVENT_SOURCES': - return {}; - default: - return eventSources; - } - } - var uid$3 = 0; - function addSources(eventSourceHash, sources, fetchRange, calendar) { - var hash = {}; - for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) { - var source = sources_1[_i]; - hash[source.sourceId] = source; - } - if (fetchRange) { - hash = fetchDirtySources(hash, fetchRange, calendar); - } - return __assign({}, eventSourceHash, hash); - } - function removeSource(eventSourceHash, sourceId) { - return filterHash(eventSourceHash, function (eventSource) { - return eventSource.sourceId !== sourceId; - }); - } - function fetchDirtySources(sourceHash, fetchRange, calendar) { - return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { - return isSourceDirty(eventSource, fetchRange, calendar); - }), fetchRange, calendar); - } - function isSourceDirty(eventSource, fetchRange, calendar) { - if (!doesSourceNeedRange(eventSource, calendar)) { - return !eventSource.latestFetchId; - } - else { - return !calendar.opt('lazyFetching') || - !eventSource.fetchRange || - fetchRange.start < eventSource.fetchRange.start || - fetchRange.end > eventSource.fetchRange.end; - } - } - function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, calendar) { - var nextSources = {}; - for (var sourceId in prevSources) { - var source = prevSources[sourceId]; - if (sourceIdHash[sourceId]) { - nextSources[sourceId] = fetchSource(source, fetchRange, calendar); - } - else { - nextSources[sourceId] = source; - } - } - return nextSources; - } - function fetchSource(eventSource, fetchRange, calendar) { - var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId]; - var fetchId = String(uid$3++); - sourceDef.fetch({ - eventSource: eventSource, - calendar: calendar, - range: fetchRange - }, function (res) { - var rawEvents = res.rawEvents; - var calSuccess = calendar.opt('eventSourceSuccess'); - var calSuccessRes; - var sourceSuccessRes; - if (eventSource.success) { - sourceSuccessRes = eventSource.success(rawEvents, res.xhr); - } - if (calSuccess) { - calSuccessRes = calSuccess(rawEvents, res.xhr); - } - rawEvents = sourceSuccessRes || calSuccessRes || rawEvents; - calendar.dispatch({ - type: 'RECEIVE_EVENTS', - sourceId: eventSource.sourceId, - fetchId: fetchId, - fetchRange: fetchRange, - rawEvents: rawEvents - }); - }, function (error) { - var callFailure = calendar.opt('eventSourceFailure'); - console.warn(error.message, error); - if (eventSource.failure) { - eventSource.failure(error); - } - if (callFailure) { - callFailure(error); - } - calendar.dispatch({ - type: 'RECEIVE_EVENT_ERROR', - sourceId: eventSource.sourceId, - fetchId: fetchId, - fetchRange: fetchRange, - error: error - }); - }); - return __assign({}, eventSource, { isFetching: true, latestFetchId: fetchId }); - } - function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) { - var _a; - var eventSource = sourceHash[sourceId]; - if (eventSource && // not already removed - fetchId === eventSource.latestFetchId) { - return __assign({}, sourceHash, (_a = {}, _a[sourceId] = __assign({}, eventSource, { isFetching: false, fetchRange: fetchRange }), _a)); - } - return sourceHash; - } - function excludeStaticSources(eventSources, calendar) { - return filterHash(eventSources, function (eventSource) { - return doesSourceNeedRange(eventSource, calendar); - }); - } - - var DateProfileGenerator = /** @class */ (function () { - function DateProfileGenerator(viewSpec, calendar) { - this.viewSpec = viewSpec; - this.options = viewSpec.options; - this.dateEnv = calendar.dateEnv; - this.calendar = calendar; - this.initHiddenDays(); - } - /* Date Range Computation - ------------------------------------------------------------------------------------------------------------------*/ - // Builds a structure with info about what the dates/ranges will be for the "prev" view. - DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate) { - var dateEnv = this.dateEnv; - var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month - currentDateProfile.dateIncrement); - return this.build(prevDate, -1); - }; - // Builds a structure with info about what the dates/ranges will be for the "next" view. - DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate) { - var dateEnv = this.dateEnv; - var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month - currentDateProfile.dateIncrement); - return this.build(nextDate, 1); - }; - // Builds a structure holding dates/ranges for rendering around the given date. - // Optional direction param indicates whether the date is being incremented/decremented - // from its previous value. decremented = -1, incremented = 1 (default). - DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) { - if (forceToValid === void 0) { forceToValid = false; } - var validRange; - var minTime = null; - var maxTime = null; - var currentInfo; - var isRangeAllDay; - var renderRange; - var activeRange; - var isValid; - validRange = this.buildValidRange(); - validRange = this.trimHiddenDays(validRange); - if (forceToValid) { - currentDate = constrainMarkerToRange(currentDate, validRange); - } - currentInfo = this.buildCurrentRangeInfo(currentDate, direction); - isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit); - renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay); - renderRange = this.trimHiddenDays(renderRange); - activeRange = renderRange; - if (!this.options.showNonCurrentDates) { - activeRange = intersectRanges(activeRange, currentInfo.range); - } - minTime = createDuration(this.options.minTime); - maxTime = createDuration(this.options.maxTime); - activeRange = this.adjustActiveRange(activeRange, minTime, maxTime); - activeRange = intersectRanges(activeRange, validRange); // might return null - // it's invalid if the originally requested date is not contained, - // or if the range is completely outside of the valid range. - isValid = rangesIntersect(currentInfo.range, validRange); - return { - // constraint for where prev/next operations can go and where events can be dragged/resized to. - // an object with optional start and end properties. - validRange: validRange, - // range the view is formally responsible for. - // for example, a month view might have 1st-31st, excluding padded dates - currentRange: currentInfo.range, - // name of largest unit being displayed, like "month" or "week" - currentRangeUnit: currentInfo.unit, - isRangeAllDay: isRangeAllDay, - // dates that display events and accept drag-n-drop - // will be `null` if no dates accept events - activeRange: activeRange, - // date range with a rendered skeleton - // includes not-active days that need some sort of DOM - renderRange: renderRange, - // Duration object that denotes the first visible time of any given day - minTime: minTime, - // Duration object that denotes the exclusive visible end time of any given day - maxTime: maxTime, - isValid: isValid, - // how far the current date will move for a prev/next operation - dateIncrement: this.buildDateIncrement(currentInfo.duration) - // pass a fallback (might be null) ^ - }; - }; - // Builds an object with optional start/end properties. - // Indicates the minimum/maximum dates to display. - // not responsible for trimming hidden days. - DateProfileGenerator.prototype.buildValidRange = function () { - return this.getRangeOption('validRange', this.calendar.getNow()) || - { start: null, end: null }; // completely open-ended - }; - // Builds a structure with info about the "current" range, the range that is - // highlighted as being the current month for example. - // See build() for a description of `direction`. - // Guaranteed to have `range` and `unit` properties. `duration` is optional. - DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) { - var _a = this, viewSpec = _a.viewSpec, dateEnv = _a.dateEnv; - var duration = null; - var unit = null; - var range = null; - var dayCount; - if (viewSpec.duration) { - duration = viewSpec.duration; - unit = viewSpec.durationUnit; - range = this.buildRangeFromDuration(date, direction, duration, unit); - } - else if ((dayCount = this.options.dayCount)) { - unit = 'day'; - range = this.buildRangeFromDayCount(date, direction, dayCount); - } - else if ((range = this.buildCustomVisibleRange(date))) { - unit = dateEnv.greatestWholeUnit(range.start, range.end).unit; - } - else { - duration = this.getFallbackDuration(); - unit = greatestDurationDenominator(duration).unit; - range = this.buildRangeFromDuration(date, direction, duration, unit); - } - return { duration: duration, unit: unit, range: range }; - }; - DateProfileGenerator.prototype.getFallbackDuration = function () { - return createDuration({ day: 1 }); - }; - // Returns a new activeRange to have time values (un-ambiguate) - // minTime or maxTime causes the range to expand. - DateProfileGenerator.prototype.adjustActiveRange = function (range, minTime, maxTime) { - var dateEnv = this.dateEnv; - var start = range.start; - var end = range.end; - if (this.viewSpec.class.prototype.usesMinMaxTime) { - // expand active range if minTime is negative (why not when positive?) - if (asRoughDays(minTime) < 0) { - start = startOfDay(start); // necessary? - start = dateEnv.add(start, minTime); - } - // expand active range if maxTime is beyond one day (why not when positive?) - if (asRoughDays(maxTime) > 1) { - end = startOfDay(end); // necessary? - end = addDays(end, -1); - end = dateEnv.add(end, maxTime); - } - } - return { start: start, end: end }; - }; - // Builds the "current" range when it is specified as an explicit duration. - // `unit` is the already-computed greatestDurationDenominator unit of duration. - DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) { - var dateEnv = this.dateEnv; - var alignment = this.options.dateAlignment; - var dateIncrementInput; - var dateIncrementDuration; - var start; - var end; - var res; - // compute what the alignment should be - if (!alignment) { - dateIncrementInput = this.options.dateIncrement; - if (dateIncrementInput) { - dateIncrementDuration = createDuration(dateIncrementInput); - // use the smaller of the two units - if (asRoughMs(dateIncrementDuration) < asRoughMs(duration)) { - alignment = greatestDurationDenominator(dateIncrementDuration, !getWeeksFromInput(dateIncrementInput)).unit; - } - else { - alignment = unit; - } - } - else { - alignment = unit; - } - } - // if the view displays a single day or smaller - if (asRoughDays(duration) <= 1) { - if (this.isHiddenDay(start)) { - start = this.skipHiddenDays(start, direction); - start = startOfDay(start); - } - } - function computeRes() { - start = dateEnv.startOf(date, alignment); - end = dateEnv.add(start, duration); - res = { start: start, end: end }; - } - computeRes(); - // if range is completely enveloped by hidden days, go past the hidden days - if (!this.trimHiddenDays(res)) { - date = this.skipHiddenDays(date, direction); - computeRes(); - } - return res; - }; - // Builds the "current" range when a dayCount is specified. - DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) { - var dateEnv = this.dateEnv; - var customAlignment = this.options.dateAlignment; - var runningCount = 0; - var start = date; - var end; - if (customAlignment) { - start = dateEnv.startOf(start, customAlignment); - } - start = startOfDay(start); - start = this.skipHiddenDays(start, direction); - end = start; - do { - end = addDays(end, 1); - if (!this.isHiddenDay(end)) { - runningCount++; - } - } while (runningCount < dayCount); - return { start: start, end: end }; - }; - // Builds a normalized range object for the "visible" range, - // which is a way to define the currentRange and activeRange at the same time. - DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) { - var dateEnv = this.dateEnv; - var visibleRange = this.getRangeOption('visibleRange', dateEnv.toDate(date)); - if (visibleRange && (visibleRange.start == null || visibleRange.end == null)) { - return null; - } - return visibleRange; - }; - // Computes the range that will represent the element/cells for *rendering*, - // but which may have voided days/times. - // not responsible for trimming hidden days. - DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { - return currentRange; - }; - // Compute the duration value that should be added/substracted to the current date - // when a prev/next operation happens. - DateProfileGenerator.prototype.buildDateIncrement = function (fallback) { - var dateIncrementInput = this.options.dateIncrement; - var customAlignment; - if (dateIncrementInput) { - return createDuration(dateIncrementInput); - } - else if ((customAlignment = this.options.dateAlignment)) { - return createDuration(1, customAlignment); - } - else if (fallback) { - return fallback; - } - else { - return createDuration({ days: 1 }); - } - }; - // Arguments after name will be forwarded to a hypothetical function value - // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects. - // Always clone your objects if you fear mutation. - DateProfileGenerator.prototype.getRangeOption = function (name) { - var otherArgs = []; - for (var _i = 1; _i < arguments.length; _i++) { - otherArgs[_i - 1] = arguments[_i]; - } - var val = this.options[name]; - if (typeof val === 'function') { - val = val.apply(null, otherArgs); - } - if (val) { - val = parseRange(val, this.dateEnv); - } - if (val) { - val = computeVisibleDayRange(val); - } - return val; - }; - /* Hidden Days - ------------------------------------------------------------------------------------------------------------------*/ - // Initializes internal variables related to calculating hidden days-of-week - DateProfileGenerator.prototype.initHiddenDays = function () { - var hiddenDays = this.options.hiddenDays || []; // array of day-of-week indices that are hidden - var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) - var dayCnt = 0; - var i; - if (this.options.weekends === false) { - hiddenDays.push(0, 6); // 0=sunday, 6=saturday - } - for (i = 0; i < 7; i++) { - if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) { - dayCnt++; - } - } - if (!dayCnt) { - throw new Error('invalid hiddenDays'); // all days were hidden? bad. - } - this.isHiddenDayHash = isHiddenDayHash; - }; - // Remove days from the beginning and end of the range that are computed as hidden. - // If the whole range is trimmed off, returns null - DateProfileGenerator.prototype.trimHiddenDays = function (range) { - var start = range.start; - var end = range.end; - if (start) { - start = this.skipHiddenDays(start); - } - if (end) { - end = this.skipHiddenDays(end, -1, true); - } - if (start == null || end == null || start < end) { - return { start: start, end: end }; - } - return null; - }; - // Is the current day hidden? - // `day` is a day-of-week index (0-6), or a Date (used for UTC) - DateProfileGenerator.prototype.isHiddenDay = function (day) { - if (day instanceof Date) { - day = day.getUTCDay(); - } - return this.isHiddenDayHash[day]; - }; - // Incrementing the current day until it is no longer a hidden day, returning a copy. - // DOES NOT CONSIDER validRange! - // If the initial value of `date` is not a hidden day, don't do anything. - // Pass `isExclusive` as `true` if you are dealing with an end date. - // `inc` defaults to `1` (increment one day forward each time) - DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) { - if (inc === void 0) { inc = 1; } - if (isExclusive === void 0) { isExclusive = false; } - while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) { - date = addDays(date, inc); - } - return date; - }; - return DateProfileGenerator; - }()); - // TODO: find a way to avoid comparing DateProfiles. it's tedious - function isDateProfilesEqual(p0, p1) { - return rangesEqual(p0.validRange, p1.validRange) && - rangesEqual(p0.activeRange, p1.activeRange) && - rangesEqual(p0.renderRange, p1.renderRange) && - durationsEqual(p0.minTime, p1.minTime) && - durationsEqual(p0.maxTime, p1.maxTime); - /* - TODO: compare more? - currentRange: DateRange - currentRangeUnit: string - isRangeAllDay: boolean - isValid: boolean - dateIncrement: Duration - */ - } - - function reduce (state, action, calendar) { - var viewType = reduceViewType(state.viewType, action); - var dateProfile = reduceDateProfile(state.dateProfile, action, state.currentDate, viewType, calendar); - var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendar); - var nextState = __assign({}, state, { viewType: viewType, - dateProfile: dateProfile, currentDate: reduceCurrentDate(state.currentDate, action, dateProfile), eventSources: eventSources, eventStore: reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendar), dateSelection: reduceDateSelection(state.dateSelection, action, calendar), eventSelection: reduceSelectedEvent(state.eventSelection, action), eventDrag: reduceEventDrag(state.eventDrag, action, eventSources, calendar), eventResize: reduceEventResize(state.eventResize, action, eventSources, calendar), eventSourceLoadingLevel: computeLoadingLevel(eventSources), loadingLevel: computeLoadingLevel(eventSources) }); - for (var _i = 0, _a = calendar.pluginSystem.hooks.reducers; _i < _a.length; _i++) { - var reducerFunc = _a[_i]; - nextState = reducerFunc(nextState, action, calendar); - } - // console.log(action.type, nextState) - return nextState; - } - function reduceViewType(currentViewType, action) { - switch (action.type) { - case 'SET_VIEW_TYPE': - return action.viewType; - default: - return currentViewType; - } - } - function reduceDateProfile(currentDateProfile, action, currentDate, viewType, calendar) { - var newDateProfile; - switch (action.type) { - case 'PREV': - newDateProfile = calendar.dateProfileGenerators[viewType].buildPrev(currentDateProfile, currentDate); - break; - case 'NEXT': - newDateProfile = calendar.dateProfileGenerators[viewType].buildNext(currentDateProfile, currentDate); - break; - case 'SET_DATE': - if (!currentDateProfile.activeRange || - !rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)) { - newDateProfile = calendar.dateProfileGenerators[viewType].build(action.dateMarker, undefined, true // forceToValid - ); - } - break; - case 'SET_VIEW_TYPE': - var generator = calendar.dateProfileGenerators[viewType]; - if (!generator) { - throw new Error(viewType ? - 'The FullCalendar view "' + viewType + '" does not exist. Make sure your plugins are loaded correctly.' : - 'No available FullCalendar view plugins.'); - } - newDateProfile = generator.build(action.dateMarker || currentDate, undefined, true // forceToValid - ); - break; - } - if (newDateProfile && - newDateProfile.isValid && - !(currentDateProfile && isDateProfilesEqual(currentDateProfile, newDateProfile))) { - return newDateProfile; - } - else { - return currentDateProfile; - } - } - function reduceCurrentDate(currentDate, action, dateProfile) { - switch (action.type) { - case 'PREV': - case 'NEXT': - if (!rangeContainsMarker(dateProfile.currentRange, currentDate)) { - return dateProfile.currentRange.start; - } - else { - return currentDate; - } - case 'SET_DATE': - case 'SET_VIEW_TYPE': - var newDate = action.dateMarker || currentDate; - if (dateProfile.activeRange && !rangeContainsMarker(dateProfile.activeRange, newDate)) { - return dateProfile.currentRange.start; - } - else { - return newDate; - } - default: - return currentDate; - } - } - function reduceDateSelection(currentSelection, action, calendar) { - switch (action.type) { - case 'SELECT_DATES': - return action.selection; - case 'UNSELECT_DATES': - return null; - default: - return currentSelection; - } - } - function reduceSelectedEvent(currentInstanceId, action) { - switch (action.type) { - case 'SELECT_EVENT': - return action.eventInstanceId; - case 'UNSELECT_EVENT': - return ''; - default: - return currentInstanceId; - } - } - function reduceEventDrag(currentDrag, action, sources, calendar) { - switch (action.type) { - case 'SET_EVENT_DRAG': - var newDrag = action.state; - return { - affectedEvents: newDrag.affectedEvents, - mutatedEvents: newDrag.mutatedEvents, - isEvent: newDrag.isEvent, - origSeg: newDrag.origSeg - }; - case 'UNSET_EVENT_DRAG': - return null; - default: - return currentDrag; - } - } - function reduceEventResize(currentResize, action, sources, calendar) { - switch (action.type) { - case 'SET_EVENT_RESIZE': - var newResize = action.state; - return { - affectedEvents: newResize.affectedEvents, - mutatedEvents: newResize.mutatedEvents, - isEvent: newResize.isEvent, - origSeg: newResize.origSeg - }; - case 'UNSET_EVENT_RESIZE': - return null; - default: - return currentResize; - } - } - function computeLoadingLevel(eventSources) { - var cnt = 0; - for (var sourceId in eventSources) { - if (eventSources[sourceId].isFetching) { - cnt++; - } - } - return cnt; - } - - var STANDARD_PROPS = { - start: null, - end: null, - allDay: Boolean - }; - function parseDateSpan(raw, dateEnv, defaultDuration) { - var span = parseOpenDateSpan(raw, dateEnv); - var range = span.range; - if (!range.start) { - return null; - } - if (!range.end) { - if (defaultDuration == null) { - return null; - } - else { - range.end = dateEnv.add(range.start, defaultDuration); - } - } - return span; - } - /* - TODO: somehow combine with parseRange? - Will return null if the start/end props were present but parsed invalidly. - */ - function parseOpenDateSpan(raw, dateEnv) { - var leftovers = {}; - var standardProps = refineProps(raw, STANDARD_PROPS, {}, leftovers); - var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null; - var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null; - var allDay = standardProps.allDay; - if (allDay == null) { - allDay = (startMeta && startMeta.isTimeUnspecified) && - (!endMeta || endMeta.isTimeUnspecified); - } - // use this leftover object as the selection object - leftovers.range = { - start: startMeta ? startMeta.marker : null, - end: endMeta ? endMeta.marker : null - }; - leftovers.allDay = allDay; - return leftovers; - } - function isDateSpansEqual(span0, span1) { - return rangesEqual(span0.range, span1.range) && - span0.allDay === span1.allDay && - isSpanPropsEqual(span0, span1); - } - // the NON-DATE-RELATED props - function isSpanPropsEqual(span0, span1) { - for (var propName in span1) { - if (propName !== 'range' && propName !== 'allDay') { - if (span0[propName] !== span1[propName]) { - return false; - } - } - } - // are there any props that span0 has that span1 DOESN'T have? - // both have range/allDay, so no need to special-case. - for (var propName in span0) { - if (!(propName in span1)) { - return false; - } - } - return true; - } - function buildDateSpanApi(span, dateEnv) { - return { - start: dateEnv.toDate(span.range.start), - end: dateEnv.toDate(span.range.end), - startStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }), - endStr: dateEnv.formatIso(span.range.end, { omitTime: span.allDay }), - allDay: span.allDay - }; - } - function buildDatePointApi(span, dateEnv) { - return { - date: dateEnv.toDate(span.range.start), - dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }), - allDay: span.allDay - }; - } - function fabricateEventRange(dateSpan, eventUiBases, calendar) { - var def = parseEventDef({ editable: false }, '', // sourceId - dateSpan.allDay, true, // hasEnd - calendar); - return { - def: def, - ui: compileEventUi(def, eventUiBases), - instance: createEventInstance(def.defId, dateSpan.range), - range: dateSpan.range, - isStart: true, - isEnd: true - }; - } - - function compileViewDefs(defaultConfigs, overrideConfigs) { - var hash = {}; - var viewType; - for (viewType in defaultConfigs) { - ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); - } - for (viewType in overrideConfigs) { - ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs); - } - return hash; - } - function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) { - if (hash[viewType]) { - return hash[viewType]; - } - var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs); - if (viewDef) { - hash[viewType] = viewDef; - } - return viewDef; - } - function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) { - var defaultConfig = defaultConfigs[viewType]; - var overrideConfig = overrideConfigs[viewType]; - var queryProp = function (name) { - return (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] : - ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null); - }; - var theClass = queryProp('class'); - var superType = queryProp('superType'); - if (!superType && theClass) { - superType = - findViewNameBySubclass(theClass, overrideConfigs) || - findViewNameBySubclass(theClass, defaultConfigs); - } - var superDef = null; - if (superType) { - if (superType === viewType) { - throw new Error('Can\'t have a custom view type that references itself'); - } - superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs); - } - if (!theClass && superDef) { - theClass = superDef.class; - } - if (!theClass) { - return null; // don't throw a warning, might be settings for a single-unit view - } - return { - type: viewType, - class: theClass, - defaults: __assign({}, (superDef ? superDef.defaults : {}), (defaultConfig ? defaultConfig.options : {})), - overrides: __assign({}, (superDef ? superDef.overrides : {}), (overrideConfig ? overrideConfig.options : {})) - }; - } - function findViewNameBySubclass(viewSubclass, configs) { - var superProto = Object.getPrototypeOf(viewSubclass.prototype); - for (var viewType in configs) { - var parsed = configs[viewType]; - // need DIRECT subclass, so instanceof won't do it - if (parsed.class && parsed.class.prototype === superProto) { - return viewType; - } - } - return ''; - } - - function parseViewConfigs(inputs) { - return mapHash(inputs, parseViewConfig); - } - var VIEW_DEF_PROPS = { - type: String, - class: null - }; - function parseViewConfig(input) { - if (typeof input === 'function') { - input = { class: input }; - } - var options = {}; - var props = refineProps(input, VIEW_DEF_PROPS, {}, options); - return { - superType: props.type, - class: props.class, - options: options - }; - } - - function buildViewSpecs(defaultInputs, optionsManager) { - var defaultConfigs = parseViewConfigs(defaultInputs); - var overrideConfigs = parseViewConfigs(optionsManager.overrides.views); - var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs); - return mapHash(viewDefs, function (viewDef) { - return buildViewSpec(viewDef, overrideConfigs, optionsManager); - }); - } - function buildViewSpec(viewDef, overrideConfigs, optionsManager) { - var durationInput = viewDef.overrides.duration || - viewDef.defaults.duration || - optionsManager.dynamicOverrides.duration || - optionsManager.overrides.duration; - var duration = null; - var durationUnit = ''; - var singleUnit = ''; - var singleUnitOverrides = {}; - if (durationInput) { - duration = createDuration(durationInput); - if (duration) { // valid? - var denom = greatestDurationDenominator(duration, !getWeeksFromInput(durationInput)); - durationUnit = denom.unit; - if (denom.value === 1) { - singleUnit = durationUnit; - singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].options : {}; - } - } - } - var queryButtonText = function (options) { - var buttonTextMap = options.buttonText || {}; - var buttonTextKey = viewDef.defaults.buttonTextKey; - if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) { - return buttonTextMap[buttonTextKey]; - } - if (buttonTextMap[viewDef.type] != null) { - return buttonTextMap[viewDef.type]; - } - if (buttonTextMap[singleUnit] != null) { - return buttonTextMap[singleUnit]; - } - }; - return { - type: viewDef.type, - class: viewDef.class, - duration: duration, - durationUnit: durationUnit, - singleUnit: singleUnit, - options: __assign({}, globalDefaults, viewDef.defaults, optionsManager.dirDefaults, optionsManager.localeDefaults, optionsManager.overrides, singleUnitOverrides, viewDef.overrides, optionsManager.dynamicOverrides), - buttonTextOverride: queryButtonText(optionsManager.dynamicOverrides) || - queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence - viewDef.overrides.buttonText, - buttonTextDefault: queryButtonText(optionsManager.localeDefaults) || - queryButtonText(optionsManager.dirDefaults) || - viewDef.defaults.buttonText || - queryButtonText(globalDefaults) || - viewDef.type // fall back to given view name - }; - } - - var Toolbar = /** @class */ (function (_super) { - __extends(Toolbar, _super); - function Toolbar(context, extraClassName) { - var _this = _super.call(this, context) || this; - _this._renderLayout = memoizeRendering(_this.renderLayout, _this.unrenderLayout); - _this._updateTitle = memoizeRendering(_this.updateTitle, null, [_this._renderLayout]); - _this._updateActiveButton = memoizeRendering(_this.updateActiveButton, null, [_this._renderLayout]); - _this._updateToday = memoizeRendering(_this.updateToday, null, [_this._renderLayout]); - _this._updatePrev = memoizeRendering(_this.updatePrev, null, [_this._renderLayout]); - _this._updateNext = memoizeRendering(_this.updateNext, null, [_this._renderLayout]); - _this.el = createElement('div', { className: 'fc-toolbar ' + extraClassName }); - return _this; - } - Toolbar.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this._renderLayout.unrender(); // should unrender everything else - removeElement(this.el); - }; - Toolbar.prototype.render = function (props) { - this._renderLayout(props.layout); - this._updateTitle(props.title); - this._updateActiveButton(props.activeButton); - this._updateToday(props.isTodayEnabled); - this._updatePrev(props.isPrevEnabled); - this._updateNext(props.isNextEnabled); - }; - Toolbar.prototype.renderLayout = function (layout) { - var el = this.el; - this.viewsWithButtons = []; - appendToElement(el, this.renderSection('left', layout.left)); - appendToElement(el, this.renderSection('center', layout.center)); - appendToElement(el, this.renderSection('right', layout.right)); - }; - Toolbar.prototype.unrenderLayout = function () { - this.el.innerHTML = ''; - }; - Toolbar.prototype.renderSection = function (position, buttonStr) { - var _this = this; - var _a = this, theme = _a.theme, calendar = _a.calendar; - var optionsManager = calendar.optionsManager; - var viewSpecs = calendar.viewSpecs; - var sectionEl = createElement('div', { className: 'fc-' + position }); - var calendarCustomButtons = optionsManager.computed.customButtons || {}; - var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {}; - var calendarButtonText = optionsManager.computed.buttonText || {}; - if (buttonStr) { - buttonStr.split(' ').forEach(function (buttonGroupStr, i) { - var groupChildren = []; - var isOnlyButtons = true; - var groupEl; - buttonGroupStr.split(',').forEach(function (buttonName, j) { - var customButtonProps; - var viewSpec; - var buttonClick; - var buttonIcon; // only one of these will be set - var buttonText; // " - var buttonInnerHtml; - var buttonClasses; - var buttonEl; - var buttonAriaAttr; - if (buttonName === 'title') { - groupChildren.push(htmlToElement('

       

      ')); // we always want it to take up height - isOnlyButtons = false; - } - else { - if ((customButtonProps = calendarCustomButtons[buttonName])) { - buttonClick = function (ev) { - if (customButtonProps.click) { - customButtonProps.click.call(buttonEl, ev); - } - }; - (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = customButtonProps.text); - } - else if ((viewSpec = viewSpecs[buttonName])) { - _this.viewsWithButtons.push(buttonName); - buttonClick = function () { - calendar.changeView(buttonName); - }; - (buttonText = viewSpec.buttonTextOverride) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = viewSpec.buttonTextDefault); - } - else if (calendar[buttonName]) { // a calendar method - buttonClick = function () { - calendar[buttonName](); - }; - (buttonText = calendarButtonTextOverrides[buttonName]) || - (buttonIcon = theme.getIconClass(buttonName)) || - (buttonText = calendarButtonText[buttonName]); - // ^ everything else is considered default - } - if (buttonClick) { - buttonClasses = [ - 'fc-' + buttonName + '-button', - theme.getClass('button') - ]; - if (buttonText) { - buttonInnerHtml = htmlEscape(buttonText); - buttonAriaAttr = ''; - } - else if (buttonIcon) { - buttonInnerHtml = ""; - buttonAriaAttr = ' aria-label="' + buttonName + '"'; - } - buttonEl = htmlToElement(// type="button" so that it doesn't submit a form - ''); - buttonEl.addEventListener('click', buttonClick); - groupChildren.push(buttonEl); - } - } - }); - if (groupChildren.length > 1) { - groupEl = document.createElement('div'); - var buttonGroupClassName = theme.getClass('buttonGroup'); - if (isOnlyButtons && buttonGroupClassName) { - groupEl.classList.add(buttonGroupClassName); - } - appendToElement(groupEl, groupChildren); - sectionEl.appendChild(groupEl); - } - else { - appendToElement(sectionEl, groupChildren); // 1 or 0 children - } - }); - } - return sectionEl; - }; - Toolbar.prototype.updateToday = function (isTodayEnabled) { - this.toggleButtonEnabled('today', isTodayEnabled); - }; - Toolbar.prototype.updatePrev = function (isPrevEnabled) { - this.toggleButtonEnabled('prev', isPrevEnabled); - }; - Toolbar.prototype.updateNext = function (isNextEnabled) { - this.toggleButtonEnabled('next', isNextEnabled); - }; - Toolbar.prototype.updateTitle = function (text) { - findElements(this.el, 'h2').forEach(function (titleEl) { - titleEl.innerText = text; - }); - }; - Toolbar.prototype.updateActiveButton = function (buttonName) { - var className = this.theme.getClass('buttonActive'); - findElements(this.el, 'button').forEach(function (buttonEl) { - if (buttonName && buttonEl.classList.contains('fc-' + buttonName + '-button')) { - buttonEl.classList.add(className); - } - else { - buttonEl.classList.remove(className); - } - }); - }; - Toolbar.prototype.toggleButtonEnabled = function (buttonName, bool) { - findElements(this.el, '.fc-' + buttonName + '-button').forEach(function (buttonEl) { - buttonEl.disabled = !bool; - }); - }; - return Toolbar; - }(Component)); - - var CalendarComponent = /** @class */ (function (_super) { - __extends(CalendarComponent, _super); - function CalendarComponent(context, el) { - var _this = _super.call(this, context) || this; - _this._renderToolbars = memoizeRendering(_this.renderToolbars); - _this.buildViewPropTransformers = memoize(buildViewPropTransformers); - _this.el = el; - prependToElement(el, _this.contentEl = createElement('div', { className: 'fc-view-container' })); - var calendar = _this.calendar; - for (var _i = 0, _a = calendar.pluginSystem.hooks.viewContainerModifiers; _i < _a.length; _i++) { - var modifyViewContainer = _a[_i]; - modifyViewContainer(_this.contentEl, calendar); - } - _this.toggleElClassNames(true); - _this.computeTitle = memoize(computeTitle); - _this.parseBusinessHours = memoize(function (input) { - return parseBusinessHours(input, _this.calendar); - }); - return _this; - } - CalendarComponent.prototype.destroy = function () { - if (this.header) { - this.header.destroy(); - } - if (this.footer) { - this.footer.destroy(); - } - if (this.view) { - this.view.destroy(); - } - removeElement(this.contentEl); - this.toggleElClassNames(false); - _super.prototype.destroy.call(this); - }; - CalendarComponent.prototype.toggleElClassNames = function (bool) { - var classList = this.el.classList; - var dirClassName = 'fc-' + this.opt('dir'); - var themeClassName = this.theme.getClass('widget'); - if (bool) { - classList.add('fc'); - classList.add(dirClassName); - classList.add(themeClassName); - } - else { - classList.remove('fc'); - classList.remove(dirClassName); - classList.remove(themeClassName); - } - }; - CalendarComponent.prototype.render = function (props) { - this.freezeHeight(); - var title = this.computeTitle(props.dateProfile, props.viewSpec.options); - this._renderToolbars(props.viewSpec, props.dateProfile, props.currentDate, props.dateProfileGenerator, title); - this.renderView(props, title); - this.updateSize(); - this.thawHeight(); - }; - CalendarComponent.prototype.renderToolbars = function (viewSpec, dateProfile, currentDate, dateProfileGenerator, title) { - var headerLayout = this.opt('header'); - var footerLayout = this.opt('footer'); - var now = this.calendar.getNow(); - var todayInfo = dateProfileGenerator.build(now); - var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate); - var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate); - var toolbarProps = { - title: title, - activeButton: viewSpec.type, - isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now), - isPrevEnabled: prevInfo.isValid, - isNextEnabled: nextInfo.isValid - }; - if (headerLayout) { - if (!this.header) { - this.header = new Toolbar(this.context, 'fc-header-toolbar'); - prependToElement(this.el, this.header.el); - } - this.header.receiveProps(__assign({ layout: headerLayout }, toolbarProps)); - } - else if (this.header) { - this.header.destroy(); - this.header = null; - } - if (footerLayout) { - if (!this.footer) { - this.footer = new Toolbar(this.context, 'fc-footer-toolbar'); - appendToElement(this.el, this.footer.el); - } - this.footer.receiveProps(__assign({ layout: footerLayout }, toolbarProps)); - } - else if (this.footer) { - this.footer.destroy(); - this.footer = null; - } - }; - CalendarComponent.prototype.renderView = function (props, title) { - var view = this.view; - var viewSpec = props.viewSpec, dateProfileGenerator = props.dateProfileGenerator; - if (!view || view.viewSpec !== viewSpec) { - if (view) { - view.destroy(); - } - view = this.view = new viewSpec['class']({ - calendar: this.calendar, - view: null, - dateEnv: this.dateEnv, - theme: this.theme, - options: viewSpec.options - }, viewSpec, dateProfileGenerator, this.contentEl); - } - else { - view.addScroll(view.queryScroll()); - } - view.title = title; // for the API - var viewProps = { - dateProfile: props.dateProfile, - businessHours: this.parseBusinessHours(viewSpec.options.businessHours), - eventStore: props.eventStore, - eventUiBases: props.eventUiBases, - dateSelection: props.dateSelection, - eventSelection: props.eventSelection, - eventDrag: props.eventDrag, - eventResize: props.eventResize - }; - var transformers = this.buildViewPropTransformers(this.calendar.pluginSystem.hooks.viewPropsTransformers); - for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { - var transformer = transformers_1[_i]; - __assign(viewProps, transformer.transform(viewProps, viewSpec, props, view)); - } - view.receiveProps(viewProps); - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - CalendarComponent.prototype.updateSize = function (isResize) { - if (isResize === void 0) { isResize = false; } - var view = this.view; - if (isResize) { - view.addScroll(view.queryScroll()); - } - if (isResize || this.isHeightAuto == null) { - this.computeHeightVars(); - } - view.updateSize(isResize, this.viewHeight, this.isHeightAuto); - view.updateNowIndicator(); // we need to guarantee this will run after updateSize - view.popScroll(isResize); - }; - CalendarComponent.prototype.computeHeightVars = function () { - var calendar = this.calendar; // yuck. need to handle dynamic options - var heightInput = calendar.opt('height'); - var contentHeightInput = calendar.opt('contentHeight'); - this.isHeightAuto = heightInput === 'auto' || contentHeightInput === 'auto'; - if (typeof contentHeightInput === 'number') { // exists and not 'auto' - this.viewHeight = contentHeightInput; - } - else if (typeof contentHeightInput === 'function') { // exists and is a function - this.viewHeight = contentHeightInput(); - } - else if (typeof heightInput === 'number') { // exists and not 'auto' - this.viewHeight = heightInput - this.queryToolbarsHeight(); - } - else if (typeof heightInput === 'function') { // exists and is a function - this.viewHeight = heightInput() - this.queryToolbarsHeight(); - } - else if (heightInput === 'parent') { // set to height of parent element - var parentEl = this.el.parentNode; - this.viewHeight = parentEl.getBoundingClientRect().height - this.queryToolbarsHeight(); - } - else { - this.viewHeight = Math.round(this.contentEl.getBoundingClientRect().width / - Math.max(calendar.opt('aspectRatio'), .5)); - } - }; - CalendarComponent.prototype.queryToolbarsHeight = function () { - var height = 0; - if (this.header) { - height += computeHeightAndMargins(this.header.el); - } - if (this.footer) { - height += computeHeightAndMargins(this.footer.el); - } - return height; - }; - // Height "Freezing" - // ----------------------------------------------------------------------------------------------------------------- - CalendarComponent.prototype.freezeHeight = function () { - applyStyle(this.el, { - height: this.el.getBoundingClientRect().height, - overflow: 'hidden' - }); - }; - CalendarComponent.prototype.thawHeight = function () { - applyStyle(this.el, { - height: '', - overflow: '' - }); - }; - return CalendarComponent; - }(Component)); - // Title and Date Formatting - // ----------------------------------------------------------------------------------------------------------------- - // Computes what the title at the top of the calendar should be for this view - function computeTitle(dateProfile, viewOptions) { - var range; - // for views that span a large unit of time, show the proper interval, ignoring stray days before and after - if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) { - range = dateProfile.currentRange; - } - else { // for day units or smaller, use the actual day range - range = dateProfile.activeRange; - } - return this.dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || computeTitleFormat(dateProfile), viewOptions.titleRangeSeparator), { isEndExclusive: dateProfile.isRangeAllDay }); - } - // Generates the format string that should be used to generate the title for the current date range. - // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. - function computeTitleFormat(dateProfile) { - var currentRangeUnit = dateProfile.currentRangeUnit; - if (currentRangeUnit === 'year') { - return { year: 'numeric' }; - } - else if (currentRangeUnit === 'month') { - return { year: 'numeric', month: 'long' }; // like "September 2014" - } - else { - var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end); - if (days !== null && days > 1) { - // multi-day range. shorter, like "Sep 9 - 10 2014" - return { year: 'numeric', month: 'short', day: 'numeric' }; - } - else { - // one day. longer, like "September 9 2014" - return { year: 'numeric', month: 'long', day: 'numeric' }; - } - } - } - // Plugin - // ----------------------------------------------------------------------------------------------------------------- - function buildViewPropTransformers(theClasses) { - return theClasses.map(function (theClass) { - return new theClass(); - }); - } - - var Interaction = /** @class */ (function () { - function Interaction(settings) { - this.component = settings.component; - } - Interaction.prototype.destroy = function () { - }; - return Interaction; - }()); - function parseInteractionSettings(component, input) { - return { - component: component, - el: input.el, - useEventCenter: input.useEventCenter != null ? input.useEventCenter : true - }; - } - function interactionSettingsToStore(settings) { - var _a; - return _a = {}, - _a[settings.component.uid] = settings, - _a; - } - // global state - var interactionSettingsStore = {}; - - /* - Detects when the user clicks on an event within a DateComponent - */ - var EventClicking = /** @class */ (function (_super) { - __extends(EventClicking, _super); - function EventClicking(settings) { - var _this = _super.call(this, settings) || this; - _this.handleSegClick = function (ev, segEl) { - var component = _this.component; - var seg = getElSeg(segEl); - if (seg && // might be the
      surrounding the more link - component.isValidSegDownEl(ev.target)) { - // our way to simulate a link click for elements that can't be tags - // grab before trigger fired in case trigger trashes DOM thru rerendering - var hasUrlContainer = elementClosest(ev.target, '.fc-has-url'); - var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : ''; - component.publiclyTrigger('eventClick', [ - { - el: segEl, - event: new EventApi(component.calendar, seg.eventRange.def, seg.eventRange.instance), - jsEvent: ev, - view: component.view - } - ]); - if (url && !ev.defaultPrevented) { - window.location.href = url; - } - } - }; - var component = settings.component; - _this.destroy = listenBySelector(component.el, 'click', component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegClick); - return _this; - } - return EventClicking; - }(Interaction)); - - /* - Triggers events and adds/removes core classNames when the user's pointer - enters/leaves event-elements of a component. - */ - var EventHovering = /** @class */ (function (_super) { - __extends(EventHovering, _super); - function EventHovering(settings) { - var _this = _super.call(this, settings) || this; - // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it - _this.handleEventElRemove = function (el) { - if (el === _this.currentSegEl) { - _this.handleSegLeave(null, _this.currentSegEl); - } - }; - _this.handleSegEnter = function (ev, segEl) { - if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper - segEl.classList.add('fc-allow-mouse-resize'); - _this.currentSegEl = segEl; - _this.triggerEvent('eventMouseEnter', ev, segEl); - } - }; - _this.handleSegLeave = function (ev, segEl) { - if (_this.currentSegEl) { - segEl.classList.remove('fc-allow-mouse-resize'); - _this.currentSegEl = null; - _this.triggerEvent('eventMouseLeave', ev, segEl); - } - }; - var component = settings.component; - _this.removeHoverListeners = listenToHoverBySelector(component.el, component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegEnter, _this.handleSegLeave); - component.calendar.on('eventElRemove', _this.handleEventElRemove); - return _this; - } - EventHovering.prototype.destroy = function () { - this.removeHoverListeners(); - this.component.calendar.off('eventElRemove', this.handleEventElRemove); - }; - EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) { - var component = this.component; - var seg = getElSeg(segEl); - if (!ev || component.isValidSegDownEl(ev.target)) { - component.publiclyTrigger(publicEvName, [ - { - el: segEl, - event: new EventApi(this.component.calendar, seg.eventRange.def, seg.eventRange.instance), - jsEvent: ev, - view: component.view - } - ]); - } - }; - return EventHovering; - }(Interaction)); - - var StandardTheme = /** @class */ (function (_super) { - __extends(StandardTheme, _super); - function StandardTheme() { - return _super !== null && _super.apply(this, arguments) || this; - } - return StandardTheme; - }(Theme)); - StandardTheme.prototype.classes = { - widget: 'fc-unthemed', - widgetHeader: 'fc-widget-header', - widgetContent: 'fc-widget-content', - buttonGroup: 'fc-button-group', - button: 'fc-button fc-button-primary', - buttonActive: 'fc-button-active', - popoverHeader: 'fc-widget-header', - popoverContent: 'fc-widget-content', - // day grid - headerRow: 'fc-widget-header', - dayRow: 'fc-widget-content', - // list view - listView: 'fc-widget-content' - }; - StandardTheme.prototype.baseIconClass = 'fc-icon'; - StandardTheme.prototype.iconClasses = { - close: 'fc-icon-x', - prev: 'fc-icon-chevron-left', - next: 'fc-icon-chevron-right', - prevYear: 'fc-icon-chevrons-left', - nextYear: 'fc-icon-chevrons-right' - }; - StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; - StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'; - StandardTheme.prototype.iconOverridePrefix = 'fc-icon-'; - - var Calendar = /** @class */ (function () { - function Calendar(el, overrides) { - var _this = this; - this.parseRawLocales = memoize(parseRawLocales); - this.buildLocale = memoize(buildLocale); - this.buildDateEnv = memoize(buildDateEnv); - this.buildTheme = memoize(buildTheme); - this.buildEventUiSingleBase = memoize(this._buildEventUiSingleBase); - this.buildSelectionConfig = memoize(this._buildSelectionConfig); - this.buildEventUiBySource = memoizeOutput(buildEventUiBySource, isPropsEqual); - this.buildEventUiBases = memoize(buildEventUiBases); - this.interactionsStore = {}; - this.actionQueue = []; - this.isReducing = false; - // isDisplaying: boolean = false // installed in DOM? accepting renders? - this.needsRerender = false; // needs a render? - this.needsFullRerender = false; - this.isRendering = false; // currently in the executeRender function? - this.renderingPauseDepth = 0; - this.buildDelayedRerender = memoize(buildDelayedRerender); - this.afterSizingTriggers = {}; - this.isViewUpdated = false; - this.isDatesUpdated = false; - this.isEventsUpdated = false; - this.el = el; - this.optionsManager = new OptionsManager(overrides || {}); - this.pluginSystem = new PluginSystem(); - // only do once. don't do in handleOptions. because can't remove plugins - this.addPluginInputs(this.optionsManager.computed.plugins || []); - this.handleOptions(this.optionsManager.computed); - this.publiclyTrigger('_init'); // for tests - this.hydrate(); - this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions - .map(function (calendarInteractionClass) { - return new calendarInteractionClass(_this); - }); - } - Calendar.prototype.addPluginInputs = function (pluginInputs) { - var pluginDefs = refinePluginDefs(pluginInputs); - for (var _i = 0, pluginDefs_1 = pluginDefs; _i < pluginDefs_1.length; _i++) { - var pluginDef = pluginDefs_1[_i]; - this.pluginSystem.add(pluginDef); - } - }; - Object.defineProperty(Calendar.prototype, "view", { - // public API - get: function () { - return this.component ? this.component.view : null; - }, - enumerable: true, - configurable: true - }); - // Public API for rendering - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.render = function () { - if (!this.component) { - this.renderableEventStore = createEmptyEventStore(); - this.bindHandlers(); - this.executeRender(); - } - else { - this.requestRerender(true); - } - }; - Calendar.prototype.destroy = function () { - if (this.component) { - this.unbindHandlers(); - this.component.destroy(); // don't null-out. in case API needs access - this.component = null; // umm ??? - for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) { - var interaction = _a[_i]; - interaction.destroy(); - } - this.publiclyTrigger('_destroyed'); - } - }; - // Handlers - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.bindHandlers = function () { - var _this = this; - // event delegation for nav links - this.removeNavLinkListener = listenBySelector(this.el, 'click', 'a[data-goto]', function (ev, anchorEl) { - var gotoOptions = anchorEl.getAttribute('data-goto'); - gotoOptions = gotoOptions ? JSON.parse(gotoOptions) : {}; - var dateEnv = _this.dateEnv; - var dateMarker = dateEnv.createMarker(gotoOptions.date); - var viewType = gotoOptions.type; - // property like "navLinkDayClick". might be a string or a function - var customAction = _this.viewOpt('navLink' + capitaliseFirstLetter(viewType) + 'Click'); - if (typeof customAction === 'function') { - customAction(dateEnv.toDate(dateMarker), ev); - } - else { - if (typeof customAction === 'string') { - viewType = customAction; - } - _this.zoomTo(dateMarker, viewType); - } - }); - if (this.opt('handleWindowResize')) { - window.addEventListener('resize', this.windowResizeProxy = debounce(// prevents rapid calls - this.windowResize.bind(this), this.opt('windowResizeDelay'))); - } - }; - Calendar.prototype.unbindHandlers = function () { - this.removeNavLinkListener(); - if (this.windowResizeProxy) { - window.removeEventListener('resize', this.windowResizeProxy); - this.windowResizeProxy = null; - } - }; - // Dispatcher - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.hydrate = function () { - var _this = this; - this.state = this.buildInitialState(); - var rawSources = this.opt('eventSources') || []; - var singleRawSource = this.opt('events'); - var sources = []; // parsed - if (singleRawSource) { - rawSources.unshift(singleRawSource); - } - for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) { - var rawSource = rawSources_1[_i]; - var source = parseEventSource(rawSource, this); - if (source) { - sources.push(source); - } - } - this.batchRendering(function () { - _this.dispatch({ type: 'INIT' }); // pass in sources here? - _this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: sources }); - _this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: _this.opt('defaultView') || _this.pluginSystem.hooks.defaultView - }); - }); - }; - Calendar.prototype.buildInitialState = function () { - return { - viewType: null, - loadingLevel: 0, - eventSourceLoadingLevel: 0, - currentDate: this.getInitialDate(), - dateProfile: null, - eventSources: {}, - eventStore: createEmptyEventStore(), - dateSelection: null, - eventSelection: '', - eventDrag: null, - eventResize: null - }; - }; - Calendar.prototype.dispatch = function (action) { - this.actionQueue.push(action); - if (!this.isReducing) { - this.isReducing = true; - var oldState = this.state; - while (this.actionQueue.length) { - this.state = this.reduce(this.state, this.actionQueue.shift(), this); - } - var newState = this.state; - this.isReducing = false; - if (!oldState.loadingLevel && newState.loadingLevel) { - this.publiclyTrigger('loading', [true]); - } - else if (oldState.loadingLevel && !newState.loadingLevel) { - this.publiclyTrigger('loading', [false]); - } - var view = this.component && this.component.view; - if (oldState.eventStore !== newState.eventStore || this.needsFullRerender) { - if (oldState.eventStore) { - this.isEventsUpdated = true; - } - } - if (oldState.dateProfile !== newState.dateProfile || this.needsFullRerender) { - if (oldState.dateProfile && view) { // why would view be null!? - this.publiclyTrigger('datesDestroy', [ - { - view: view, - el: view.el - } - ]); - } - this.isDatesUpdated = true; - } - if (oldState.viewType !== newState.viewType || this.needsFullRerender) { - if (oldState.viewType && view) { // why would view be null!? - this.publiclyTrigger('viewSkeletonDestroy', [ - { - view: view, - el: view.el - } - ]); - } - this.isViewUpdated = true; - } - this.requestRerender(); - } - }; - Calendar.prototype.reduce = function (state, action, calendar) { - return reduce(state, action, calendar); - }; - // Render Queue - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.requestRerender = function (needsFull) { - if (needsFull === void 0) { needsFull = false; } - this.needsRerender = true; - this.needsFullRerender = this.needsFullRerender || needsFull; - this.delayedRerender(); // will call a debounced-version of tryRerender - }; - Calendar.prototype.tryRerender = function () { - if (this.component && // must be accepting renders - this.needsRerender && // indicates that a rerender was requested - !this.renderingPauseDepth && // not paused - !this.isRendering // not currently in the render loop - ) { - this.executeRender(); - } - }; - Calendar.prototype.batchRendering = function (func) { - this.renderingPauseDepth++; - func(); - this.renderingPauseDepth--; - if (this.needsRerender) { - this.requestRerender(); - } - }; - // Rendering - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.executeRender = function () { - var needsFullRerender = this.needsFullRerender; // save before clearing - // clear these BEFORE the render so that new values will accumulate during render - this.needsRerender = false; - this.needsFullRerender = false; - this.isRendering = true; - this.renderComponent(needsFullRerender); - this.isRendering = false; - // received a rerender request while rendering - if (this.needsRerender) { - this.delayedRerender(); - } - }; - /* - don't call this directly. use executeRender instead - */ - Calendar.prototype.renderComponent = function (needsFull) { - var _a = this, state = _a.state, component = _a.component; - var viewType = state.viewType; - var viewSpec = this.viewSpecs[viewType]; - var savedScroll = (needsFull && component) ? component.view.queryScroll() : null; - if (!viewSpec) { - throw new Error("View type \"" + viewType + "\" is not valid"); - } - // if event sources are still loading and progressive rendering hasn't been enabled, - // keep rendering the last fully loaded set of events - var renderableEventStore = this.renderableEventStore = - (state.eventSourceLoadingLevel && !this.opt('progressiveEventRendering')) ? - this.renderableEventStore : - state.eventStore; - var eventUiSingleBase = this.buildEventUiSingleBase(viewSpec.options); - var eventUiBySource = this.buildEventUiBySource(state.eventSources); - var eventUiBases = this.eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource); - if (needsFull || !component) { - if (component) { - component.freezeHeight(); // next component will unfreeze it - component.destroy(); - } - component = this.component = new CalendarComponent({ - calendar: this, - view: null, - dateEnv: this.dateEnv, - theme: this.theme, - options: this.optionsManager.computed - }, this.el); - this.isViewUpdated = true; - this.isDatesUpdated = true; - this.isEventsUpdated = true; - } - component.receiveProps(__assign({}, state, { viewSpec: viewSpec, dateProfile: state.dateProfile, dateProfileGenerator: this.dateProfileGenerators[viewType], eventStore: renderableEventStore, eventUiBases: eventUiBases, dateSelection: state.dateSelection, eventSelection: state.eventSelection, eventDrag: state.eventDrag, eventResize: state.eventResize })); - if (savedScroll) { - component.view.applyScroll(savedScroll, false); - } - if (this.isViewUpdated) { - this.isViewUpdated = false; - this.publiclyTrigger('viewSkeletonRender', [ - { - view: component.view, - el: component.view.el - } - ]); - } - if (this.isDatesUpdated) { - this.isDatesUpdated = false; - this.publiclyTrigger('datesRender', [ - { - view: component.view, - el: component.view.el - } - ]); - } - if (this.isEventsUpdated) { - this.isEventsUpdated = false; - } - this.releaseAfterSizingTriggers(); - }; - // Options - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.setOption = function (name, val) { - var _a; - this.mutateOptions((_a = {}, _a[name] = val, _a), [], true); - }; - Calendar.prototype.getOption = function (name) { - return this.optionsManager.computed[name]; - }; - Calendar.prototype.opt = function (name) { - return this.optionsManager.computed[name]; - }; - Calendar.prototype.viewOpt = function (name) { - return this.viewOpts()[name]; - }; - Calendar.prototype.viewOpts = function () { - return this.viewSpecs[this.state.viewType].options; - }; - /* - handles option changes (like a diff) - */ - Calendar.prototype.mutateOptions = function (updates, removals, isDynamic, deepEqual) { - var _this = this; - var changeHandlers = this.pluginSystem.hooks.optionChangeHandlers; - var normalUpdates = {}; - var specialUpdates = {}; - var oldDateEnv = this.dateEnv; // do this before handleOptions - var isTimeZoneDirty = false; - var isSizeDirty = false; - var anyDifficultOptions = Boolean(removals.length); - for (var name_1 in updates) { - if (changeHandlers[name_1]) { - specialUpdates[name_1] = updates[name_1]; - } - else { - normalUpdates[name_1] = updates[name_1]; - } - } - for (var name_2 in normalUpdates) { - if (/^(height|contentHeight|aspectRatio)$/.test(name_2)) { - isSizeDirty = true; - } - else if (/^(defaultDate|defaultView)$/.test(name_2)) ; - else { - anyDifficultOptions = true; - if (name_2 === 'timeZone') { - isTimeZoneDirty = true; - } - } - } - this.optionsManager.mutate(normalUpdates, removals, isDynamic); - if (anyDifficultOptions) { - this.handleOptions(this.optionsManager.computed); - this.needsFullRerender = true; - } - this.batchRendering(function () { - if (anyDifficultOptions) { - if (isTimeZoneDirty) { - _this.dispatch({ - type: 'CHANGE_TIMEZONE', - oldDateEnv: oldDateEnv - }); - } - /* HACK - has the same effect as calling this.requestRerender(true) - but recomputes the state's dateProfile - */ - _this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: _this.state.viewType - }); - } - else if (isSizeDirty) { - _this.updateSize(); - } - // special updates - if (deepEqual) { - for (var name_3 in specialUpdates) { - changeHandlers[name_3](specialUpdates[name_3], _this, deepEqual); - } - } - }); - }; - /* - rebuilds things based off of a complete set of refined options - */ - Calendar.prototype.handleOptions = function (options) { - var _this = this; - var pluginHooks = this.pluginSystem.hooks; - this.defaultAllDayEventDuration = createDuration(options.defaultAllDayEventDuration); - this.defaultTimedEventDuration = createDuration(options.defaultTimedEventDuration); - this.delayedRerender = this.buildDelayedRerender(options.rerenderDelay); - this.theme = this.buildTheme(options); - var available = this.parseRawLocales(options.locales); - this.availableRawLocales = available.map; - var locale = this.buildLocale(options.locale || available.defaultCode, available.map); - this.dateEnv = this.buildDateEnv(locale, options.timeZone, pluginHooks.namedTimeZonedImpl, options.firstDay, options.weekNumberCalculation, options.weekLabel, pluginHooks.cmdFormatter); - this.selectionConfig = this.buildSelectionConfig(options); // needs dateEnv. do after :( - // ineffecient to do every time? - this.viewSpecs = buildViewSpecs(pluginHooks.views, this.optionsManager); - // ineffecient to do every time? - this.dateProfileGenerators = mapHash(this.viewSpecs, function (viewSpec) { - return new viewSpec.class.prototype.dateProfileGeneratorClass(viewSpec, _this); - }); - }; - Calendar.prototype.getAvailableLocaleCodes = function () { - return Object.keys(this.availableRawLocales); - }; - Calendar.prototype._buildSelectionConfig = function (rawOpts) { - return processScopedUiProps('select', rawOpts, this); - }; - Calendar.prototype._buildEventUiSingleBase = function (rawOpts) { - if (rawOpts.editable) { // so 'editable' affected events - rawOpts = __assign({}, rawOpts, { eventEditable: true }); - } - return processScopedUiProps('event', rawOpts, this); - }; - // Trigger - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.hasPublicHandlers = function (name) { - return this.hasHandlers(name) || - this.opt(name); // handler specified in options - }; - Calendar.prototype.publiclyTrigger = function (name, args) { - var optHandler = this.opt(name); - this.triggerWith(name, this, args); - if (optHandler) { - return optHandler.apply(this, args); - } - }; - Calendar.prototype.publiclyTriggerAfterSizing = function (name, args) { - var afterSizingTriggers = this.afterSizingTriggers; - (afterSizingTriggers[name] || (afterSizingTriggers[name] = [])).push(args); - }; - Calendar.prototype.releaseAfterSizingTriggers = function () { - var afterSizingTriggers = this.afterSizingTriggers; - for (var name_4 in afterSizingTriggers) { - for (var _i = 0, _a = afterSizingTriggers[name_4]; _i < _a.length; _i++) { - var args = _a[_i]; - this.publiclyTrigger(name_4, args); - } - } - this.afterSizingTriggers = {}; - }; - // View - // ----------------------------------------------------------------------------------------------------------------- - // Returns a boolean about whether the view is okay to instantiate at some point - Calendar.prototype.isValidViewType = function (viewType) { - return Boolean(this.viewSpecs[viewType]); - }; - Calendar.prototype.changeView = function (viewType, dateOrRange) { - var dateMarker = null; - if (dateOrRange) { - if (dateOrRange.start && dateOrRange.end) { // a range - this.optionsManager.mutate({ visibleRange: dateOrRange }, []); // will not rerender - this.handleOptions(this.optionsManager.computed); // ...but yuck - } - else { // a date - dateMarker = this.dateEnv.createMarker(dateOrRange); // just like gotoDate - } - } - this.unselect(); - this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: viewType, - dateMarker: dateMarker - }); - }; - // Forces navigation to a view for the given date. - // `viewType` can be a specific view name or a generic one like "week" or "day". - // needs to change - Calendar.prototype.zoomTo = function (dateMarker, viewType) { - var spec; - viewType = viewType || 'day'; // day is default zoom - spec = this.viewSpecs[viewType] || - this.getUnitViewSpec(viewType); - this.unselect(); - if (spec) { - this.dispatch({ - type: 'SET_VIEW_TYPE', - viewType: spec.type, - dateMarker: dateMarker - }); - } - else { - this.dispatch({ - type: 'SET_DATE', - dateMarker: dateMarker - }); - } - }; - // Given a duration singular unit, like "week" or "day", finds a matching view spec. - // Preference is given to views that have corresponding buttons. - Calendar.prototype.getUnitViewSpec = function (unit) { - var component = this.component; - var viewTypes = []; - var i; - var spec; - // put views that have buttons first. there will be duplicates, but oh - if (component.header) { - viewTypes.push.apply(viewTypes, component.header.viewsWithButtons); - } - if (component.footer) { - viewTypes.push.apply(viewTypes, component.footer.viewsWithButtons); - } - for (var viewType in this.viewSpecs) { - viewTypes.push(viewType); - } - for (i = 0; i < viewTypes.length; i++) { - spec = this.viewSpecs[viewTypes[i]]; - if (spec) { - if (spec.singleUnit === unit) { - return spec; - } - } - } - }; - // Current Date - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.getInitialDate = function () { - var defaultDateInput = this.opt('defaultDate'); - // compute the initial ambig-timezone date - if (defaultDateInput != null) { - return this.dateEnv.createMarker(defaultDateInput); - } - else { - return this.getNow(); // getNow already returns unzoned - } - }; - Calendar.prototype.prev = function () { - this.unselect(); - this.dispatch({ type: 'PREV' }); - }; - Calendar.prototype.next = function () { - this.unselect(); - this.dispatch({ type: 'NEXT' }); - }; - Calendar.prototype.prevYear = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.addYears(this.state.currentDate, -1) - }); - }; - Calendar.prototype.nextYear = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.addYears(this.state.currentDate, 1) - }); - }; - Calendar.prototype.today = function () { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.getNow() - }); - }; - Calendar.prototype.gotoDate = function (zonedDateInput) { - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.createMarker(zonedDateInput) - }); - }; - Calendar.prototype.incrementDate = function (deltaInput) { - var delta = createDuration(deltaInput); - if (delta) { // else, warn about invalid input? - this.unselect(); - this.dispatch({ - type: 'SET_DATE', - dateMarker: this.dateEnv.add(this.state.currentDate, delta) - }); - } - }; - // for external API - Calendar.prototype.getDate = function () { - return this.dateEnv.toDate(this.state.currentDate); - }; - // Date Formatting Utils - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.formatDate = function (d, formatter) { - var dateEnv = this.dateEnv; - return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter)); - }; - // `settings` is for formatter AND isEndExclusive - Calendar.prototype.formatRange = function (d0, d1, settings) { - var dateEnv = this.dateEnv; - return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings, this.opt('defaultRangeSeparator')), settings); - }; - Calendar.prototype.formatIso = function (d, omitTime) { - var dateEnv = this.dateEnv; - return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime }); - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.windowResize = function (ev) { - if (!this.isHandlingWindowResize && - this.component && // why? - ev.target === window // not a jqui resize event - ) { - this.isHandlingWindowResize = true; - this.updateSize(); - this.publiclyTrigger('windowResize', [this.view]); - this.isHandlingWindowResize = false; - } - }; - Calendar.prototype.updateSize = function () { - if (this.component) { // when? - this.component.updateSize(true); - } - }; - // Component Registration - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.registerInteractiveComponent = function (component, settingsInput) { - var settings = parseInteractionSettings(component, settingsInput); - var DEFAULT_INTERACTIONS = [ - EventClicking, - EventHovering - ]; - var interactionClasses = DEFAULT_INTERACTIONS.concat(this.pluginSystem.hooks.componentInteractions); - var interactions = interactionClasses.map(function (interactionClass) { - return new interactionClass(settings); - }); - this.interactionsStore[component.uid] = interactions; - interactionSettingsStore[component.uid] = settings; - }; - Calendar.prototype.unregisterInteractiveComponent = function (component) { - for (var _i = 0, _a = this.interactionsStore[component.uid]; _i < _a.length; _i++) { - var listener = _a[_i]; - listener.destroy(); - } - delete this.interactionsStore[component.uid]; - delete interactionSettingsStore[component.uid]; - }; - // Date Selection / Event Selection / DayClick - // ----------------------------------------------------------------------------------------------------------------- - // this public method receives start/end dates in any format, with any timezone - // NOTE: args were changed from v3 - Calendar.prototype.select = function (dateOrObj, endDate) { - var selectionInput; - if (endDate == null) { - if (dateOrObj.start != null) { - selectionInput = dateOrObj; - } - else { - selectionInput = { - start: dateOrObj, - end: null - }; - } - } - else { - selectionInput = { - start: dateOrObj, - end: endDate - }; - } - var selection = parseDateSpan(selectionInput, this.dateEnv, createDuration({ days: 1 }) // TODO: cache this? - ); - if (selection) { // throw parse error otherwise? - this.dispatch({ type: 'SELECT_DATES', selection: selection }); - this.triggerDateSelect(selection); - } - }; - // public method - Calendar.prototype.unselect = function (pev) { - if (this.state.dateSelection) { - this.dispatch({ type: 'UNSELECT_DATES' }); - this.triggerDateUnselect(pev); - } - }; - Calendar.prototype.triggerDateSelect = function (selection, pev) { - var arg = __assign({}, this.buildDateSpanApi(selection), { jsEvent: pev ? pev.origEvent : null, view: this.view }); - this.publiclyTrigger('select', [arg]); - }; - Calendar.prototype.triggerDateUnselect = function (pev) { - this.publiclyTrigger('unselect', [ - { - jsEvent: pev ? pev.origEvent : null, - view: this.view - } - ]); - }; - // TODO: receive pev? - Calendar.prototype.triggerDateClick = function (dateSpan, dayEl, view, ev) { - var arg = __assign({}, this.buildDatePointApi(dateSpan), { dayEl: dayEl, jsEvent: ev, // Is this always a mouse event? See #4655 - view: view }); - this.publiclyTrigger('dateClick', [arg]); - }; - Calendar.prototype.buildDatePointApi = function (dateSpan) { - var props = {}; - for (var _i = 0, _a = this.pluginSystem.hooks.datePointTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(props, transform(dateSpan, this)); - } - __assign(props, buildDatePointApi(dateSpan, this.dateEnv)); - return props; - }; - Calendar.prototype.buildDateSpanApi = function (dateSpan) { - var props = {}; - for (var _i = 0, _a = this.pluginSystem.hooks.dateSpanTransforms; _i < _a.length; _i++) { - var transform = _a[_i]; - __assign(props, transform(dateSpan, this)); - } - __assign(props, buildDateSpanApi(dateSpan, this.dateEnv)); - return props; - }; - // Date Utils - // ----------------------------------------------------------------------------------------------------------------- - // Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option - Calendar.prototype.getNow = function () { - var now = this.opt('now'); - if (typeof now === 'function') { - now = now(); - } - if (now == null) { - return this.dateEnv.createNowMarker(); - } - return this.dateEnv.createMarker(now); - }; - // Event-Date Utilities - // ----------------------------------------------------------------------------------------------------------------- - // Given an event's allDay status and start date, return what its fallback end date should be. - // TODO: rename to computeDefaultEventEnd - Calendar.prototype.getDefaultEventEnd = function (allDay, marker) { - var end = marker; - if (allDay) { - end = startOfDay(end); - end = this.dateEnv.add(end, this.defaultAllDayEventDuration); - } - else { - end = this.dateEnv.add(end, this.defaultTimedEventDuration); - } - return end; - }; - // Public Events API - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.addEvent = function (eventInput, sourceInput) { - if (eventInput instanceof EventApi) { - var def = eventInput._def; - var instance = eventInput._instance; - // not already present? don't want to add an old snapshot - if (!this.state.eventStore.defs[def.defId]) { - this.dispatch({ - type: 'ADD_EVENTS', - eventStore: eventTupleToStore({ def: def, instance: instance }) // TODO: better util for two args? - }); - } - return eventInput; - } - var sourceId; - if (sourceInput instanceof EventSourceApi) { - sourceId = sourceInput.internalEventSource.sourceId; - } - else if (sourceInput != null) { - var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function - if (!sourceApi) { - console.warn('Could not find an event source with ID "' + sourceInput + '"'); // TODO: test - return null; - } - else { - sourceId = sourceApi.internalEventSource.sourceId; - } - } - var tuple = parseEvent(eventInput, sourceId, this); - if (tuple) { - this.dispatch({ - type: 'ADD_EVENTS', - eventStore: eventTupleToStore(tuple) - }); - return new EventApi(this, tuple.def, tuple.def.recurringDef ? null : tuple.instance); - } - return null; - }; - // TODO: optimize - Calendar.prototype.getEventById = function (id) { - var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances; - id = String(id); - for (var defId in defs) { - var def = defs[defId]; - if (def.publicId === id) { - if (def.recurringDef) { - return new EventApi(this, def, null); - } - else { - for (var instanceId in instances) { - var instance = instances[instanceId]; - if (instance.defId === def.defId) { - return new EventApi(this, def, instance); - } - } - } - } - } - return null; - }; - Calendar.prototype.getEvents = function () { - var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances; - var eventApis = []; - for (var id in instances) { - var instance = instances[id]; - var def = defs[instance.defId]; - eventApis.push(new EventApi(this, def, instance)); - } - return eventApis; - }; - Calendar.prototype.removeAllEvents = function () { - this.dispatch({ type: 'REMOVE_ALL_EVENTS' }); - }; - Calendar.prototype.rerenderEvents = function () { - this.dispatch({ type: 'RESET_EVENTS' }); - }; - // Public Event Sources API - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.getEventSources = function () { - var sourceHash = this.state.eventSources; - var sourceApis = []; - for (var internalId in sourceHash) { - sourceApis.push(new EventSourceApi(this, sourceHash[internalId])); - } - return sourceApis; - }; - Calendar.prototype.getEventSourceById = function (id) { - var sourceHash = this.state.eventSources; - id = String(id); - for (var sourceId in sourceHash) { - if (sourceHash[sourceId].publicId === id) { - return new EventSourceApi(this, sourceHash[sourceId]); - } - } - return null; - }; - Calendar.prototype.addEventSource = function (sourceInput) { - if (sourceInput instanceof EventSourceApi) { - // not already present? don't want to add an old snapshot - if (!this.state.eventSources[sourceInput.internalEventSource.sourceId]) { - this.dispatch({ - type: 'ADD_EVENT_SOURCES', - sources: [sourceInput.internalEventSource] - }); - } - return sourceInput; - } - var eventSource = parseEventSource(sourceInput, this); - if (eventSource) { // TODO: error otherwise? - this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] }); - return new EventSourceApi(this, eventSource); - } - return null; - }; - Calendar.prototype.removeAllEventSources = function () { - this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' }); - }; - Calendar.prototype.refetchEvents = function () { - this.dispatch({ type: 'FETCH_EVENT_SOURCES' }); - }; - // Scroll - // ----------------------------------------------------------------------------------------------------------------- - Calendar.prototype.scrollToTime = function (timeInput) { - var duration = createDuration(timeInput); - if (duration) { - this.component.view.scrollToDuration(duration); - } - }; - return Calendar; - }()); - EmitterMixin.mixInto(Calendar); - // for memoizers - // ----------------------------------------------------------------------------------------------------------------- - function buildDateEnv(locale, timeZone, namedTimeZoneImpl, firstDay, weekNumberCalculation, weekLabel, cmdFormatter) { - return new DateEnv({ - calendarSystem: 'gregory', - timeZone: timeZone, - namedTimeZoneImpl: namedTimeZoneImpl, - locale: locale, - weekNumberCalculation: weekNumberCalculation, - firstDay: firstDay, - weekLabel: weekLabel, - cmdFormatter: cmdFormatter - }); - } - function buildTheme(calendarOptions) { - var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme; - return new themeClass(calendarOptions); - } - function buildDelayedRerender(wait) { - var func = this.tryRerender.bind(this); - if (wait != null) { - func = debounce(func, wait); - } - return func; - } - function buildEventUiBySource(eventSources) { - return mapHash(eventSources, function (eventSource) { - return eventSource.ui; - }); - } - function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) { - var eventUiBases = { '': eventUiSingleBase }; - for (var defId in eventDefs) { - var def = eventDefs[defId]; - if (def.sourceId && eventUiBySource[def.sourceId]) { - eventUiBases[defId] = eventUiBySource[def.sourceId]; - } - } - return eventUiBases; - } - - var View = /** @class */ (function (_super) { - __extends(View, _super); - function View(context, viewSpec, dateProfileGenerator, parentEl) { - var _this = _super.call(this, context, createElement('div', { className: 'fc-view fc-' + viewSpec.type + '-view' }), true // isView (HACK) - ) || this; - _this.renderDatesMem = memoizeRendering(_this.renderDatesWrap, _this.unrenderDatesWrap); - _this.renderBusinessHoursMem = memoizeRendering(_this.renderBusinessHours, _this.unrenderBusinessHours, [_this.renderDatesMem]); - _this.renderDateSelectionMem = memoizeRendering(_this.renderDateSelectionWrap, _this.unrenderDateSelectionWrap, [_this.renderDatesMem]); - _this.renderEventsMem = memoizeRendering(_this.renderEvents, _this.unrenderEvents, [_this.renderDatesMem]); - _this.renderEventSelectionMem = memoizeRendering(_this.renderEventSelectionWrap, _this.unrenderEventSelectionWrap, [_this.renderEventsMem]); - _this.renderEventDragMem = memoizeRendering(_this.renderEventDragWrap, _this.unrenderEventDragWrap, [_this.renderDatesMem]); - _this.renderEventResizeMem = memoizeRendering(_this.renderEventResizeWrap, _this.unrenderEventResizeWrap, [_this.renderDatesMem]); - _this.viewSpec = viewSpec; - _this.dateProfileGenerator = dateProfileGenerator; - _this.type = viewSpec.type; - _this.eventOrderSpecs = parseFieldSpecs(_this.opt('eventOrder')); - _this.nextDayThreshold = createDuration(_this.opt('nextDayThreshold')); - parentEl.appendChild(_this.el); - _this.initialize(); - return _this; - } - View.prototype.initialize = function () { - }; - Object.defineProperty(View.prototype, "activeStart", { - // Date Setting/Unsetting - // ----------------------------------------------------------------------------------------------------------------- - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.activeRange.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "activeEnd", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.activeRange.end); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "currentStart", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.currentRange.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(View.prototype, "currentEnd", { - get: function () { - return this.dateEnv.toDate(this.props.dateProfile.currentRange.end); - }, - enumerable: true, - configurable: true - }); - // General Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.render = function (props) { - this.renderDatesMem(props.dateProfile); - this.renderBusinessHoursMem(props.businessHours); - this.renderDateSelectionMem(props.dateSelection); - this.renderEventsMem(props.eventStore); - this.renderEventSelectionMem(props.eventSelection); - this.renderEventDragMem(props.eventDrag); - this.renderEventResizeMem(props.eventResize); - }; - View.prototype.destroy = function () { - _super.prototype.destroy.call(this); - this.renderDatesMem.unrender(); // should unrender everything else - }; - // Sizing - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.updateSize = function (isResize, viewHeight, isAuto) { - var calendar = this.calendar; - if (isResize || // HACKS... - calendar.isViewUpdated || - calendar.isDatesUpdated || - calendar.isEventsUpdated) { - // sort of the catch-all sizing - // anything that might cause dimension changes - this.updateBaseSize(isResize, viewHeight, isAuto); - } - }; - View.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) { - }; - // Date Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderDatesWrap = function (dateProfile) { - this.renderDates(dateProfile); - this.addScroll({ - duration: createDuration(this.opt('scrollTime')) - }); - this.startNowIndicator(dateProfile); // shouldn't render yet because updateSize will be called soon - }; - View.prototype.unrenderDatesWrap = function () { - this.stopNowIndicator(); - this.unrenderDates(); - }; - View.prototype.renderDates = function (dateProfile) { }; - View.prototype.unrenderDates = function () { }; - // Business Hours - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderBusinessHours = function (businessHours) { }; - View.prototype.unrenderBusinessHours = function () { }; - // Date Selection - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderDateSelectionWrap = function (selection) { - if (selection) { - this.renderDateSelection(selection); - } - }; - View.prototype.unrenderDateSelectionWrap = function (selection) { - if (selection) { - this.unrenderDateSelection(selection); - } - }; - View.prototype.renderDateSelection = function (selection) { }; - View.prototype.unrenderDateSelection = function (selection) { }; - // Event Rendering - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEvents = function (eventStore) { }; - View.prototype.unrenderEvents = function () { }; - // util for subclasses - View.prototype.sliceEvents = function (eventStore, allDay) { - var props = this.props; - return sliceEventStore(eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? this.nextDayThreshold : null).fg; - }; - View.prototype.computeEventDraggable = function (eventDef, eventUi) { - var transformers = this.calendar.pluginSystem.hooks.isDraggableTransformers; - var val = eventUi.startEditable; - for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) { - var transformer = transformers_1[_i]; - val = transformer(val, eventDef, eventUi, this); - } - return val; - }; - View.prototype.computeEventStartResizable = function (eventDef, eventUi) { - return eventUi.durationEditable && this.opt('eventResizableFromStart'); - }; - View.prototype.computeEventEndResizable = function (eventDef, eventUi) { - return eventUi.durationEditable; - }; - // Event Selection - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventSelectionWrap = function (instanceId) { - if (instanceId) { - this.renderEventSelection(instanceId); - } - }; - View.prototype.unrenderEventSelectionWrap = function (instanceId) { - if (instanceId) { - this.unrenderEventSelection(instanceId); - } - }; - View.prototype.renderEventSelection = function (instanceId) { }; - View.prototype.unrenderEventSelection = function (instanceId) { }; - // Event Drag - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventDragWrap = function (state) { - if (state) { - this.renderEventDrag(state); - } - }; - View.prototype.unrenderEventDragWrap = function (state) { - if (state) { - this.unrenderEventDrag(state); - } - }; - View.prototype.renderEventDrag = function (state) { }; - View.prototype.unrenderEventDrag = function (state) { }; - // Event Resize - // ----------------------------------------------------------------------------------------------------------------- - View.prototype.renderEventResizeWrap = function (state) { - if (state) { - this.renderEventResize(state); - } - }; - View.prototype.unrenderEventResizeWrap = function (state) { - if (state) { - this.unrenderEventResize(state); - } - }; - View.prototype.renderEventResize = function (state) { }; - View.prototype.unrenderEventResize = function (state) { }; - /* Now Indicator - ------------------------------------------------------------------------------------------------------------------*/ - // Immediately render the current time indicator and begins re-rendering it at an interval, - // which is defined by this.getNowIndicatorUnit(). - // TODO: somehow do this for the current whole day's background too - View.prototype.startNowIndicator = function (dateProfile) { - var _this = this; - var dateEnv = this.dateEnv; - var unit; - var update; - var delay; // ms wait value - if (this.opt('nowIndicator')) { - unit = this.getNowIndicatorUnit(dateProfile); - if (unit) { - update = this.updateNowIndicator.bind(this); - this.initialNowDate = this.calendar.getNow(); - this.initialNowQueriedMs = new Date().valueOf(); - // wait until the beginning of the next interval - delay = dateEnv.add(dateEnv.startOf(this.initialNowDate, unit), createDuration(1, unit)).valueOf() - this.initialNowDate.valueOf(); - // TODO: maybe always use setTimeout, waiting until start of next unit - this.nowIndicatorTimeoutID = setTimeout(function () { - _this.nowIndicatorTimeoutID = null; - update(); - if (unit === 'second') { - delay = 1000; // every second - } - else { - delay = 1000 * 60; // otherwise, every minute - } - _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval - }, delay); - } - // rendering will be initiated in updateSize - } - }; - // rerenders the now indicator, computing the new current time from the amount of time that has passed - // since the initial getNow call. - View.prototype.updateNowIndicator = function () { - if (this.props.dateProfile && // a way to determine if dates were rendered yet - this.initialNowDate // activated before? - ) { - this.unrenderNowIndicator(); // won't unrender if unnecessary - this.renderNowIndicator(addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs)); - this.isNowIndicatorRendered = true; - } - }; - // Immediately unrenders the view's current time indicator and stops any re-rendering timers. - // Won't cause side effects if indicator isn't rendered. - View.prototype.stopNowIndicator = function () { - if (this.isNowIndicatorRendered) { - if (this.nowIndicatorTimeoutID) { - clearTimeout(this.nowIndicatorTimeoutID); - this.nowIndicatorTimeoutID = null; - } - if (this.nowIndicatorIntervalID) { - clearInterval(this.nowIndicatorIntervalID); - this.nowIndicatorIntervalID = null; - } - this.unrenderNowIndicator(); - this.isNowIndicatorRendered = false; - } - }; - View.prototype.getNowIndicatorUnit = function (dateProfile) { - // subclasses should implement - }; - // Renders a current time indicator at the given datetime - View.prototype.renderNowIndicator = function (date) { - // SUBCLASSES MUST PASS TO CHILDREN! - }; - // Undoes the rendering actions from renderNowIndicator - View.prototype.unrenderNowIndicator = function () { - // SUBCLASSES MUST PASS TO CHILDREN! - }; - /* Scroller - ------------------------------------------------------------------------------------------------------------------*/ - View.prototype.addScroll = function (scroll) { - var queuedScroll = this.queuedScroll || (this.queuedScroll = {}); - __assign(queuedScroll, scroll); - }; - View.prototype.popScroll = function (isResize) { - this.applyQueuedScroll(isResize); - this.queuedScroll = null; - }; - View.prototype.applyQueuedScroll = function (isResize) { - this.applyScroll(this.queuedScroll || {}, isResize); - }; - View.prototype.queryScroll = function () { - var scroll = {}; - if (this.props.dateProfile) { // dates rendered yet? - __assign(scroll, this.queryDateScroll()); - } - return scroll; - }; - View.prototype.applyScroll = function (scroll, isResize) { - var duration = scroll.duration; - if (duration != null) { - delete scroll.duration; - if (this.props.dateProfile) { // dates rendered yet? - __assign(scroll, this.computeDateScroll(duration)); - } - } - if (this.props.dateProfile) { // dates rendered yet? - this.applyDateScroll(scroll); - } - }; - View.prototype.computeDateScroll = function (duration) { - return {}; // subclasses must implement - }; - View.prototype.queryDateScroll = function () { - return {}; // subclasses must implement - }; - View.prototype.applyDateScroll = function (scroll) { - // subclasses must implement - }; - // for API - View.prototype.scrollToDuration = function (duration) { - this.applyScroll({ duration: duration }, false); - }; - return View; - }(DateComponent)); - EmitterMixin.mixInto(View); - View.prototype.usesMinMaxTime = false; - View.prototype.dateProfileGeneratorClass = DateProfileGenerator; - - var FgEventRenderer = /** @class */ (function () { - function FgEventRenderer(context) { - this.segs = []; - this.isSizeDirty = false; - this.context = context; - } - FgEventRenderer.prototype.renderSegs = function (segs, mirrorInfo) { - this.rangeUpdated(); // called too frequently :( - // render an `.el` on each seg - // returns a subset of the segs. segs that were actually rendered - segs = this.renderSegEls(segs, mirrorInfo); - this.segs = segs; - this.attachSegs(segs, mirrorInfo); - this.isSizeDirty = true; - this.context.view.triggerRenderedSegs(this.segs, Boolean(mirrorInfo)); - }; - FgEventRenderer.prototype.unrender = function (_segs, mirrorInfo) { - this.context.view.triggerWillRemoveSegs(this.segs, Boolean(mirrorInfo)); - this.detachSegs(this.segs); - this.segs = []; - }; - // Updates values that rely on options and also relate to range - FgEventRenderer.prototype.rangeUpdated = function () { - var options = this.context.options; - var displayEventTime; - var displayEventEnd; - this.eventTimeFormat = createFormatter(options.eventTimeFormat || this.computeEventTimeFormat(), options.defaultRangeSeparator); - displayEventTime = options.displayEventTime; - if (displayEventTime == null) { - displayEventTime = this.computeDisplayEventTime(); // might be based off of range - } - displayEventEnd = options.displayEventEnd; - if (displayEventEnd == null) { - displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range - } - this.displayEventTime = displayEventTime; - this.displayEventEnd = displayEventEnd; - }; - // Renders and assigns an `el` property for each foreground event segment. - // Only returns segments that successfully rendered. - FgEventRenderer.prototype.renderSegEls = function (segs, mirrorInfo) { - var html = ''; - var i; - if (segs.length) { // don't build an empty html string - // build a large concatenation of event segment HTML - for (i = 0; i < segs.length; i++) { - html += this.renderSegHtml(segs[i], mirrorInfo); - } - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. - htmlToElements(html).forEach(function (el, i) { - var seg = segs[i]; - if (el) { - seg.el = el; - } - }); - segs = filterSegsViaEls(this.context.view, segs, Boolean(mirrorInfo)); - } - return segs; - }; - // Generic utility for generating the HTML classNames for an event segment's element - FgEventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable, mirrorInfo) { - var classes = [ - 'fc-event', - seg.isStart ? 'fc-start' : 'fc-not-start', - seg.isEnd ? 'fc-end' : 'fc-not-end' - ].concat(seg.eventRange.ui.classNames); - if (isDraggable) { - classes.push('fc-draggable'); - } - if (isResizable) { - classes.push('fc-resizable'); - } - if (mirrorInfo) { - classes.push('fc-mirror'); - if (mirrorInfo.isDragging) { - classes.push('fc-dragging'); - } - if (mirrorInfo.isResizing) { - classes.push('fc-resizing'); - } - } - return classes; - }; - // Compute the text that should be displayed on an event's element. - // `range` can be the Event object itself, or something range-like, with at least a `start`. - // If event times are disabled, or the event has no time, will return a blank string. - // If not specified, formatter will default to the eventTimeFormat setting, - // and displayEnd will default to the displayEventEnd setting. - FgEventRenderer.prototype.getTimeText = function (eventRange, formatter, displayEnd) { - var def = eventRange.def, instance = eventRange.instance; - return this._getTimeText(instance.range.start, def.hasEnd ? instance.range.end : null, def.allDay, formatter, displayEnd, instance.forcedStartTzo, instance.forcedEndTzo); - }; - FgEventRenderer.prototype._getTimeText = function (start, end, allDay, formatter, displayEnd, forcedStartTzo, forcedEndTzo) { - var dateEnv = this.context.dateEnv; - if (formatter == null) { - formatter = this.eventTimeFormat; - } - if (displayEnd == null) { - displayEnd = this.displayEventEnd; - } - if (this.displayEventTime && !allDay) { - if (displayEnd && end) { - return dateEnv.formatRange(start, end, formatter, { - forcedStartTzo: forcedStartTzo, - forcedEndTzo: forcedEndTzo - }); - } - else { - return dateEnv.format(start, formatter, { - forcedTzo: forcedStartTzo - }); - } - } - return ''; - }; - FgEventRenderer.prototype.computeEventTimeFormat = function () { - return { - hour: 'numeric', - minute: '2-digit', - omitZeroMinute: true - }; - }; - FgEventRenderer.prototype.computeDisplayEventTime = function () { - return true; - }; - FgEventRenderer.prototype.computeDisplayEventEnd = function () { - return true; - }; - // Utility for generating event skin-related CSS properties - FgEventRenderer.prototype.getSkinCss = function (ui) { - return { - 'background-color': ui.backgroundColor, - 'border-color': ui.borderColor, - color: ui.textColor - }; - }; - FgEventRenderer.prototype.sortEventSegs = function (segs) { - var specs = this.context.view.eventOrderSpecs; - var objs = segs.map(buildSegCompareObj); - objs.sort(function (obj0, obj1) { - return compareByFieldSpecs(obj0, obj1, specs); - }); - return objs.map(function (c) { - return c._seg; - }); - }; - FgEventRenderer.prototype.computeSizes = function (force) { - if (force || this.isSizeDirty) { - this.computeSegSizes(this.segs); - } - }; - FgEventRenderer.prototype.assignSizes = function (force) { - if (force || this.isSizeDirty) { - this.assignSegSizes(this.segs); - this.isSizeDirty = false; - } - }; - FgEventRenderer.prototype.computeSegSizes = function (segs) { - }; - FgEventRenderer.prototype.assignSegSizes = function (segs) { - }; - // Manipulation on rendered segs - FgEventRenderer.prototype.hideByHash = function (hash) { - if (hash) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (hash[seg.eventRange.instance.instanceId]) { - seg.el.style.visibility = 'hidden'; - } - } - } - }; - FgEventRenderer.prototype.showByHash = function (hash) { - if (hash) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (hash[seg.eventRange.instance.instanceId]) { - seg.el.style.visibility = ''; - } - } - } - }; - FgEventRenderer.prototype.selectByInstanceId = function (instanceId) { - if (instanceId) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - var eventInstance = seg.eventRange.instance; - if (eventInstance && eventInstance.instanceId === instanceId && - seg.el // necessary? - ) { - seg.el.classList.add('fc-selected'); - } - } - } - }; - FgEventRenderer.prototype.unselectByInstanceId = function (instanceId) { - if (instanceId) { - for (var _i = 0, _a = this.segs; _i < _a.length; _i++) { - var seg = _a[_i]; - if (seg.el) { // necessary? - seg.el.classList.remove('fc-selected'); - } - } - } - }; - return FgEventRenderer; - }()); - // returns a object with all primitive props that can be compared - function buildSegCompareObj(seg) { - var eventDef = seg.eventRange.def; - var range = seg.eventRange.instance.range; - var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events - var end = range.end ? range.end.valueOf() : 0; // " - return __assign({}, eventDef.extendedProps, eventDef, { id: eventDef.publicId, start: start, - end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg // for later retrieval - }); - } - - var FillRenderer = /** @class */ (function () { - function FillRenderer(context) { - this.fillSegTag = 'div'; - this.dirtySizeFlags = {}; - this.context = context; - this.containerElsByType = {}; - this.segsByType = {}; - } - FillRenderer.prototype.getSegsByType = function (type) { - return this.segsByType[type] || []; - }; - FillRenderer.prototype.renderSegs = function (type, segs) { - var _a; - var renderedSegs = this.renderSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs - var containerEls = this.attachSegs(type, renderedSegs); - if (containerEls) { - (_a = (this.containerElsByType[type] || (this.containerElsByType[type] = []))).push.apply(_a, containerEls); - } - this.segsByType[type] = renderedSegs; - if (type === 'bgEvent') { - this.context.view.triggerRenderedSegs(renderedSegs, false); // isMirror=false - } - this.dirtySizeFlags[type] = true; - }; - // Unrenders a specific type of fill that is currently rendered on the grid - FillRenderer.prototype.unrender = function (type) { - var segs = this.segsByType[type]; - if (segs) { - if (type === 'bgEvent') { - this.context.view.triggerWillRemoveSegs(segs, false); // isMirror=false - } - this.detachSegs(type, segs); - } - }; - // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. - // Only returns segments that successfully rendered. - FillRenderer.prototype.renderSegEls = function (type, segs) { - var _this = this; - var html = ''; - var i; - if (segs.length) { - // build a large concatenation of segment HTML - for (i = 0; i < segs.length; i++) { - html += this.renderSegHtml(type, segs[i]); - } - // Grab individual elements from the combined HTML string. Use each as the default rendering. - // Then, compute the 'el' for each segment. - htmlToElements(html).forEach(function (el, i) { - var seg = segs[i]; - if (el) { - seg.el = el; - } - }); - if (type === 'bgEvent') { - segs = filterSegsViaEls(this.context.view, segs, false // isMirror. background events can never be mirror elements - ); - } - // correct element type? (would be bad if a non-TD were inserted into a table for example) - segs = segs.filter(function (seg) { - return elementMatches(seg.el, _this.fillSegTag); - }); - } - return segs; - }; - // Builds the HTML needed for one fill segment. Generic enough to work with different types. - FillRenderer.prototype.renderSegHtml = function (type, seg) { - var css = null; - var classNames = []; - if (type !== 'highlight' && type !== 'businessHours') { - css = { - 'background-color': seg.eventRange.ui.backgroundColor - }; - } - if (type !== 'highlight') { - classNames = classNames.concat(seg.eventRange.ui.classNames); - } - if (type === 'businessHours') { - classNames.push('fc-bgevent'); - } - else { - classNames.push('fc-' + type.toLowerCase()); - } - return '<' + this.fillSegTag + - (classNames.length ? ' class="' + classNames.join(' ') + '"' : '') + - (css ? ' style="' + cssToStr(css) + '"' : '') + - '>'; - }; - FillRenderer.prototype.detachSegs = function (type, segs) { - var containerEls = this.containerElsByType[type]; - if (containerEls) { - containerEls.forEach(removeElement); - delete this.containerElsByType[type]; - } - }; - FillRenderer.prototype.computeSizes = function (force) { - for (var type in this.segsByType) { - if (force || this.dirtySizeFlags[type]) { - this.computeSegSizes(this.segsByType[type]); - } - } - }; - FillRenderer.prototype.assignSizes = function (force) { - for (var type in this.segsByType) { - if (force || this.dirtySizeFlags[type]) { - this.assignSegSizes(this.segsByType[type]); - } - } - this.dirtySizeFlags = {}; - }; - FillRenderer.prototype.computeSegSizes = function (segs) { - }; - FillRenderer.prototype.assignSegSizes = function (segs) { - }; - return FillRenderer; - }()); - - var NamedTimeZoneImpl = /** @class */ (function () { - function NamedTimeZoneImpl(timeZoneName) { - this.timeZoneName = timeZoneName; - } - return NamedTimeZoneImpl; - }()); - - /* - An abstraction for a dragging interaction originating on an event. - Does higher-level things than PointerDragger, such as possibly: - - a "mirror" that moves with the pointer - - a minimum number of pixels or other criteria for a true drag to begin - - subclasses must emit: - - pointerdown - - dragstart - - dragmove - - pointerup - - dragend - */ - var ElementDragging = /** @class */ (function () { - function ElementDragging(el) { - this.emitter = new EmitterMixin(); - } - ElementDragging.prototype.destroy = function () { - }; - ElementDragging.prototype.setMirrorIsVisible = function (bool) { - // optional if subclass doesn't want to support a mirror - }; - ElementDragging.prototype.setMirrorNeedsRevert = function (bool) { - // optional if subclass doesn't want to support a mirror - }; - ElementDragging.prototype.setAutoScrollEnabled = function (bool) { - // optional - }; - return ElementDragging; - }()); - - function formatDate(dateInput, settings) { - if (settings === void 0) { settings = {}; } - var dateEnv = buildDateEnv$1(settings); - var formatter = createFormatter(settings); - var dateMeta = dateEnv.createMarkerMeta(dateInput); - if (!dateMeta) { // TODO: warning? - return ''; - } - return dateEnv.format(dateMeta.marker, formatter, { - forcedTzo: dateMeta.forcedTzo - }); - } - function formatRange(startInput, endInput, settings // mixture of env and formatter settings - ) { - var dateEnv = buildDateEnv$1(typeof settings === 'object' && settings ? settings : {}); // pass in if non-null object - var formatter = createFormatter(settings, globalDefaults.defaultRangeSeparator); - var startMeta = dateEnv.createMarkerMeta(startInput); - var endMeta = dateEnv.createMarkerMeta(endInput); - if (!startMeta || !endMeta) { // TODO: warning? - return ''; - } - return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, { - forcedStartTzo: startMeta.forcedTzo, - forcedEndTzo: endMeta.forcedTzo, - isEndExclusive: settings.isEndExclusive - }); - } - // TODO: more DRY and optimized - function buildDateEnv$1(settings) { - var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere - // ensure required settings - settings = __assign({ timeZone: globalDefaults.timeZone, calendarSystem: 'gregory' }, settings, { locale: locale }); - return new DateEnv(settings); - } - - var DRAG_META_PROPS = { - startTime: createDuration, - duration: createDuration, - create: Boolean, - sourceId: String - }; - var DRAG_META_DEFAULTS = { - create: true - }; - function parseDragMeta(raw) { - var leftoverProps = {}; - var refined = refineProps(raw, DRAG_META_PROPS, DRAG_META_DEFAULTS, leftoverProps); - refined.leftoverProps = leftoverProps; - return refined; - } - - // Computes a default column header formatting string if `colFormat` is not explicitly defined - function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) { - // if more than one week row, or if there are a lot of columns with not much space, - // put just the day numbers will be in each cell - if (!datesRepDistinctDays || dayCnt > 10) { - return { weekday: 'short' }; // "Sat" - } - else if (dayCnt > 1) { - return { weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }; // "Sat 11/12" - } - else { - return { weekday: 'long' }; // "Saturday" - } - } - function renderDateCell(dateMarker, dateProfile, datesRepDistinctDays, colCnt, colHeadFormat, context, colspan, otherAttrs) { - var view = context.view, dateEnv = context.dateEnv, theme = context.theme, options = context.options; - var isDateValid = rangeContainsMarker(dateProfile.activeRange, dateMarker); // TODO: called too frequently. cache somehow. - var classNames = [ - 'fc-day-header', - theme.getClass('widgetHeader') - ]; - var innerHtml; - if (typeof options.columnHeaderHtml === 'function') { - innerHtml = options.columnHeaderHtml(dateEnv.toDate(dateMarker)); - } - else if (typeof options.columnHeaderText === 'function') { - innerHtml = htmlEscape(options.columnHeaderText(dateEnv.toDate(dateMarker))); - } - else { - innerHtml = htmlEscape(dateEnv.format(dateMarker, colHeadFormat)); - } - // if only one row of days, the classNames on the header can represent the specific days beneath - if (datesRepDistinctDays) { - classNames = classNames.concat( - // includes the day-of-week class - // noThemeHighlight=true (don't highlight the header) - getDayClasses(dateMarker, dateProfile, context, true)); - } - else { - classNames.push('fc-' + DAY_IDS[dateMarker.getUTCDay()]); // only add the day-of-week class - } - return '' + - ' 1 ? - ' colspan="' + colspan + '"' : - '') + - (otherAttrs ? - ' ' + otherAttrs : - '') + - '>' + - (isDateValid ? - // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff) - buildGotoAnchorHtml(view, { date: dateMarker, forceOff: !datesRepDistinctDays || colCnt === 1 }, innerHtml) : - // if not valid, display text, but no link - innerHtml) + - ''; - } - - var DayHeader = /** @class */ (function (_super) { - __extends(DayHeader, _super); - function DayHeader(context, parentEl) { - var _this = _super.call(this, context) || this; - parentEl.innerHTML = ''; // because might be nbsp - parentEl.appendChild(_this.el = htmlToElement('
      ' + - '' + - '' + - '
      ' + - '
      ')); - _this.thead = _this.el.querySelector('thead'); - return _this; - } - DayHeader.prototype.destroy = function () { - removeElement(this.el); - }; - DayHeader.prototype.render = function (props) { - var dates = props.dates, datesRepDistinctDays = props.datesRepDistinctDays; - var parts = []; - if (props.renderIntroHtml) { - parts.push(props.renderIntroHtml()); - } - var colHeadFormat = createFormatter(this.opt('columnHeaderFormat') || - computeFallbackHeaderFormat(datesRepDistinctDays, dates.length)); - for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) { - var date = dates_1[_i]; - parts.push(renderDateCell(date, props.dateProfile, datesRepDistinctDays, dates.length, colHeadFormat, this.context)); - } - if (this.isRtl) { - parts.reverse(); - } - this.thead.innerHTML = '' + parts.join('') + ''; - }; - return DayHeader; - }(Component)); - - var DaySeries = /** @class */ (function () { - function DaySeries(range, dateProfileGenerator) { - var date = range.start; - var end = range.end; - var indices = []; - var dates = []; - var dayIndex = -1; - while (date < end) { // loop each day from start to end - if (dateProfileGenerator.isHiddenDay(date)) { - indices.push(dayIndex + 0.5); // mark that it's between indices - } - else { - dayIndex++; - indices.push(dayIndex); - dates.push(date); - } - date = addDays(date, 1); - } - this.dates = dates; - this.indices = indices; - this.cnt = dates.length; - } - DaySeries.prototype.sliceRange = function (range) { - var firstIndex = this.getDateDayIndex(range.start); // inclusive first index - var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index - var clippedFirstIndex = Math.max(0, firstIndex); - var clippedLastIndex = Math.min(this.cnt - 1, lastIndex); - // deal with in-between indices - clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell - clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell - if (clippedFirstIndex <= clippedLastIndex) { - return { - firstIndex: clippedFirstIndex, - lastIndex: clippedLastIndex, - isStart: firstIndex === clippedFirstIndex, - isEnd: lastIndex === clippedLastIndex - }; - } - else { - return null; - } - }; - // Given a date, returns its chronolocial cell-index from the first cell of the grid. - // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. - // If before the first offset, returns a negative number. - // If after the last offset, returns an offset past the last cell offset. - // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. - DaySeries.prototype.getDateDayIndex = function (date) { - var indices = this.indices; - var dayOffset = Math.floor(diffDays(this.dates[0], date)); - if (dayOffset < 0) { - return indices[0] - 1; - } - else if (dayOffset >= indices.length) { - return indices[indices.length - 1] + 1; - } - else { - return indices[dayOffset]; - } - }; - return DaySeries; - }()); - - var DayTable = /** @class */ (function () { - function DayTable(daySeries, breakOnWeeks) { - var dates = daySeries.dates; - var daysPerRow; - var firstDay; - var rowCnt; - if (breakOnWeeks) { - // count columns until the day-of-week repeats - firstDay = dates[0].getUTCDay(); - for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) { - if (dates[daysPerRow].getUTCDay() === firstDay) { - break; - } - } - rowCnt = Math.ceil(dates.length / daysPerRow); - } - else { - rowCnt = 1; - daysPerRow = dates.length; - } - this.rowCnt = rowCnt; - this.colCnt = daysPerRow; - this.daySeries = daySeries; - this.cells = this.buildCells(); - this.headerDates = this.buildHeaderDates(); - } - DayTable.prototype.buildCells = function () { - var rows = []; - for (var row = 0; row < this.rowCnt; row++) { - var cells = []; - for (var col = 0; col < this.colCnt; col++) { - cells.push(this.buildCell(row, col)); - } - rows.push(cells); - } - return rows; - }; - DayTable.prototype.buildCell = function (row, col) { - return { - date: this.daySeries.dates[row * this.colCnt + col] - }; - }; - DayTable.prototype.buildHeaderDates = function () { - var dates = []; - for (var col = 0; col < this.colCnt; col++) { - dates.push(this.cells[0][col].date); - } - return dates; - }; - DayTable.prototype.sliceRange = function (range) { - var colCnt = this.colCnt; - var seriesSeg = this.daySeries.sliceRange(range); - var segs = []; - if (seriesSeg) { - var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex; - var index = firstIndex; - while (index <= lastIndex) { - var row = Math.floor(index / colCnt); - var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1); - segs.push({ - row: row, - firstCol: index % colCnt, - lastCol: (nextIndex - 1) % colCnt, - isStart: seriesSeg.isStart && index === firstIndex, - isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex - }); - index = nextIndex; - } - } - return segs; - }; - return DayTable; - }()); - - var Slicer = /** @class */ (function () { - function Slicer() { - this.sliceBusinessHours = memoize(this._sliceBusinessHours); - this.sliceDateSelection = memoize(this._sliceDateSpan); - this.sliceEventStore = memoize(this._sliceEventStore); - this.sliceEventDrag = memoize(this._sliceInteraction); - this.sliceEventResize = memoize(this._sliceInteraction); - } - Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 4; _i < arguments.length; _i++) { - extraArgs[_i - 4] = arguments[_i]; - } - var eventUiBases = props.eventUiBases; - var eventSegs = this.sliceEventStore.apply(this, [props.eventStore, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)); - return { - dateSelectionSegs: this.sliceDateSelection.apply(this, [props.dateSelection, eventUiBases, component].concat(extraArgs)), - businessHourSegs: this.sliceBusinessHours.apply(this, [props.businessHours, dateProfile, nextDayThreshold, component].concat(extraArgs)), - fgEventSegs: eventSegs.fg, - bgEventSegs: eventSegs.bg, - eventDrag: this.sliceEventDrag.apply(this, [props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)), - eventResize: this.sliceEventResize.apply(this, [props.eventResize, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)), - eventSelection: props.eventSelection - }; // TODO: give interactionSegs? - }; - Slicer.prototype.sliceNowDate = function (// does not memoize - date, component) { - var extraArgs = []; - for (var _i = 2; _i < arguments.length; _i++) { - extraArgs[_i - 2] = arguments[_i]; - } - return this._sliceDateSpan.apply(this, [{ range: { start: date, end: addMs(date, 1) }, allDay: false }, - {}, - component].concat(extraArgs)); - }; - Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 4; _i < arguments.length; _i++) { - extraArgs[_i - 4] = arguments[_i]; - } - if (!businessHours) { - return []; - } - return this._sliceEventStore.apply(this, [expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), component.calendar), - {}, - dateProfile, - nextDayThreshold, - component].concat(extraArgs)).bg; - }; - Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 5; _i < arguments.length; _i++) { - extraArgs[_i - 5] = arguments[_i]; - } - if (eventStore) { - var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); - return { - bg: this.sliceEventRanges(rangeRes.bg, component, extraArgs), - fg: this.sliceEventRanges(rangeRes.fg, component, extraArgs) - }; - } - else { - return { bg: [], fg: [] }; - } - }; - Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold, component) { - var extraArgs = []; - for (var _i = 5; _i < arguments.length; _i++) { - extraArgs[_i - 5] = arguments[_i]; - } - if (!interaction) { - return null; - } - var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold); - return { - segs: this.sliceEventRanges(rangeRes.fg, component, extraArgs), - affectedInstances: interaction.affectedEvents.instances, - isEvent: interaction.isEvent, - sourceSeg: interaction.origSeg - }; - }; - Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, component) { - var extraArgs = []; - for (var _i = 3; _i < arguments.length; _i++) { - extraArgs[_i - 3] = arguments[_i]; - } - if (!dateSpan) { - return []; - } - var eventRange = fabricateEventRange(dateSpan, eventUiBases, component.calendar); - var segs = this.sliceRange.apply(this, [dateSpan.range].concat(extraArgs)); - for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) { - var seg = segs_1[_a]; - seg.component = component; - seg.eventRange = eventRange; - } - return segs; - }; - /* - "complete" seg means it has component and eventRange - */ - Slicer.prototype.sliceEventRanges = function (eventRanges, component, // TODO: kill - extraArgs) { - var segs = []; - for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) { - var eventRange = eventRanges_1[_i]; - segs.push.apply(segs, this.sliceEventRange(eventRange, component, extraArgs)); - } - return segs; - }; - /* - "complete" seg means it has component and eventRange - */ - Slicer.prototype.sliceEventRange = function (eventRange, component, // TODO: kill - extraArgs) { - var segs = this.sliceRange.apply(this, [eventRange.range].concat(extraArgs)); - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { - var seg = segs_2[_i]; - seg.component = component; - seg.eventRange = eventRange; - seg.isStart = eventRange.isStart && seg.isStart; - seg.isEnd = eventRange.isEnd && seg.isEnd; - } - return segs; - }; - return Slicer; - }()); - /* - for incorporating minTime/maxTime if appropriate - TODO: should be part of DateProfile! - TimelineDateProfile already does this btw - */ - function computeActiveRange(dateProfile, isComponentAllDay) { - var range = dateProfile.activeRange; - if (isComponentAllDay) { - return range; - } - return { - start: addMs(range.start, dateProfile.minTime.milliseconds), - end: addMs(range.end, dateProfile.maxTime.milliseconds - 864e5) // 864e5 = ms in a day - }; - } - - // exports - // -------------------------------------------------------------------------------------------------- - var version = '4.3.1'; - - exports.Calendar = Calendar; - exports.Component = Component; - exports.DateComponent = DateComponent; - exports.DateEnv = DateEnv; - exports.DateProfileGenerator = DateProfileGenerator; - exports.DayHeader = DayHeader; - exports.DaySeries = DaySeries; - exports.DayTable = DayTable; - exports.ElementDragging = ElementDragging; - exports.ElementScrollController = ElementScrollController; - exports.EmitterMixin = EmitterMixin; - exports.EventApi = EventApi; - exports.FgEventRenderer = FgEventRenderer; - exports.FillRenderer = FillRenderer; - exports.Interaction = Interaction; - exports.Mixin = Mixin; - exports.NamedTimeZoneImpl = NamedTimeZoneImpl; - exports.PositionCache = PositionCache; - exports.ScrollComponent = ScrollComponent; - exports.ScrollController = ScrollController; - exports.Slicer = Slicer; - exports.Splitter = Splitter; - exports.Theme = Theme; - exports.View = View; - exports.WindowScrollController = WindowScrollController; - exports.addDays = addDays; - exports.addDurations = addDurations; - exports.addMs = addMs; - exports.addWeeks = addWeeks; - exports.allowContextMenu = allowContextMenu; - exports.allowSelection = allowSelection; - exports.appendToElement = appendToElement; - exports.applyAll = applyAll; - exports.applyMutationToEventStore = applyMutationToEventStore; - exports.applyStyle = applyStyle; - exports.applyStyleProp = applyStyleProp; - exports.asRoughMinutes = asRoughMinutes; - exports.asRoughMs = asRoughMs; - exports.asRoughSeconds = asRoughSeconds; - exports.buildGotoAnchorHtml = buildGotoAnchorHtml; - exports.buildSegCompareObj = buildSegCompareObj; - exports.capitaliseFirstLetter = capitaliseFirstLetter; - exports.combineEventUis = combineEventUis; - exports.compareByFieldSpec = compareByFieldSpec; - exports.compareByFieldSpecs = compareByFieldSpecs; - exports.compareNumbers = compareNumbers; - exports.compensateScroll = compensateScroll; - exports.computeClippingRect = computeClippingRect; - exports.computeEdges = computeEdges; - exports.computeFallbackHeaderFormat = computeFallbackHeaderFormat; - exports.computeHeightAndMargins = computeHeightAndMargins; - exports.computeInnerRect = computeInnerRect; - exports.computeRect = computeRect; - exports.computeVisibleDayRange = computeVisibleDayRange; - exports.config = config; - exports.constrainPoint = constrainPoint; - exports.createDuration = createDuration; - exports.createElement = createElement; - exports.createEmptyEventStore = createEmptyEventStore; - exports.createEventInstance = createEventInstance; - exports.createFormatter = createFormatter; - exports.createPlugin = createPlugin; - exports.cssToStr = cssToStr; - exports.debounce = debounce; - exports.diffDates = diffDates; - exports.diffDayAndTime = diffDayAndTime; - exports.diffDays = diffDays; - exports.diffPoints = diffPoints; - exports.diffWeeks = diffWeeks; - exports.diffWholeDays = diffWholeDays; - exports.diffWholeWeeks = diffWholeWeeks; - exports.disableCursor = disableCursor; - exports.distributeHeight = distributeHeight; - exports.elementClosest = elementClosest; - exports.elementMatches = elementMatches; - exports.enableCursor = enableCursor; - exports.eventTupleToStore = eventTupleToStore; - exports.filterEventStoreDefs = filterEventStoreDefs; - exports.filterHash = filterHash; - exports.findChildren = findChildren; - exports.findElements = findElements; - exports.flexibleCompare = flexibleCompare; - exports.forceClassName = forceClassName; - exports.formatDate = formatDate; - exports.formatIsoTimeString = formatIsoTimeString; - exports.formatRange = formatRange; - exports.getAllDayHtml = getAllDayHtml; - exports.getClippingParents = getClippingParents; - exports.getDayClasses = getDayClasses; - exports.getElSeg = getElSeg; - exports.getRectCenter = getRectCenter; - exports.getRelevantEvents = getRelevantEvents; - exports.globalDefaults = globalDefaults; - exports.greatestDurationDenominator = greatestDurationDenominator; - exports.hasBgRendering = hasBgRendering; - exports.htmlEscape = htmlEscape; - exports.htmlToElement = htmlToElement; - exports.insertAfterElement = insertAfterElement; - exports.interactionSettingsStore = interactionSettingsStore; - exports.interactionSettingsToStore = interactionSettingsToStore; - exports.intersectRanges = intersectRanges; - exports.intersectRects = intersectRects; - exports.isArraysEqual = isArraysEqual; - exports.isDateSpansEqual = isDateSpansEqual; - exports.isInt = isInt; - exports.isInteractionValid = isInteractionValid; - exports.isMultiDayRange = isMultiDayRange; - exports.isPropsEqual = isPropsEqual; - exports.isPropsValid = isPropsValid; - exports.isSingleDay = isSingleDay; - exports.isValidDate = isValidDate; - exports.listenBySelector = listenBySelector; - exports.mapHash = mapHash; - exports.matchCellWidths = matchCellWidths; - exports.memoize = memoize; - exports.memoizeOutput = memoizeOutput; - exports.memoizeRendering = memoizeRendering; - exports.mergeEventStores = mergeEventStores; - exports.multiplyDuration = multiplyDuration; - exports.padStart = padStart; - exports.parseBusinessHours = parseBusinessHours; - exports.parseDragMeta = parseDragMeta; - exports.parseEventDef = parseEventDef; - exports.parseFieldSpecs = parseFieldSpecs; - exports.parseMarker = parse; - exports.pointInsideRect = pointInsideRect; - exports.prependToElement = prependToElement; - exports.preventContextMenu = preventContextMenu; - exports.preventDefault = preventDefault; - exports.preventSelection = preventSelection; - exports.processScopedUiProps = processScopedUiProps; - exports.rangeContainsMarker = rangeContainsMarker; - exports.rangeContainsRange = rangeContainsRange; - exports.rangesEqual = rangesEqual; - exports.rangesIntersect = rangesIntersect; - exports.refineProps = refineProps; - exports.removeElement = removeElement; - exports.removeExact = removeExact; - exports.renderDateCell = renderDateCell; - exports.requestJson = requestJson; - exports.sliceEventStore = sliceEventStore; - exports.startOfDay = startOfDay; - exports.subtractInnerElHeight = subtractInnerElHeight; - exports.translateRect = translateRect; - exports.uncompensateScroll = uncompensateScroll; - exports.undistributeHeight = undistributeHeight; - exports.unpromisify = unpromisify; - exports.version = version; - exports.whenTransitionDone = whenTransitionDone; - exports.wholeDivideDurations = wholeDivideDurations; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.css deleted file mode 100644 index 8948b53..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.fc-button:not(:disabled),.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a.fc-more,a[data-goto]{cursor:pointer}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:2px 4px}.fc-rtl .fc-popover .fc-header{flex-direction:row-reverse}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{opacity:.65;font-size:1.1em}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-bg,.fc-bgevent-skeleton,.fc-highlight-skeleton,.fc-mirror-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-mirror-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-mirror-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-mirror-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-mirror-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.4;border-radius:3px;border:1px solid #3788d8}.fc-event,.fc-event-dot{background-color:#3788d8}.fc-event,.fc-event:hover{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-event.fc-dragging.fc-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event.fc-dragging:not(.fc-selected){opacity:.75}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-mirror-skeleton tr:first-child>td>.fc-day-grid-event{margin-top:0}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-button,.fc-icon{display:inline-block;font-weight:400;text-align:center}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");font-weight:400;font-style:normal}.fc-icon{font-family:fcicons!important;speak:none;font-style:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:1em;height:1em}.fc-icon-chevron-left:before{content:""}.fc-icon-chevron-right:before{content:""}.fc-icon-chevrons-left:before{content:""}.fc-icon-chevrons-right:before{content:""}.fc-icon-minus-square:before{content:""}.fc-icon-plus-square:before{content:""}.fc-icon-x:before{content:""}.fc-button{overflow:visible;text-transform:none;margin:0;font-family:inherit}.fc-button::-moz-focus-inner{padding:0;border-style:none}.fc-button{-webkit-appearance:button;color:#212529;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc-button:hover{color:#212529;text-decoration:none}.fc-button:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(44,62,80,.25);box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc-button:disabled{opacity:.65}.fc-button-primary{color:#fff;background-color:#2C3E50;border-color:#2C3E50}.fc-button-primary:hover{color:#fff;background-color:#1e2b37;border-color:#1a252f}.fc-button-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button-primary:disabled{color:#fff;background-color:#2C3E50;border-color:#2C3E50}.fc-button-primary:not(:disabled).fc-button-active,.fc-button-primary:not(:disabled):active{color:#fff;background-color:#1a252f;border-color:#151e27}.fc-button-primary:not(:disabled).fc-button-active:focus,.fc-button-primary:not(:disabled):active:focus{-webkit-box-shadow:0 0 0 .2rem rgba(76,91,106,.5);box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc-button .fc-icon{vertical-align:middle;font-size:1.5em}.fc-button-group{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.fc-button-group>.fc-button{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.fc-button-group>.fc-button.fc-button-active,.fc-button-group>.fc-button:active,.fc-button-group>.fc-button:focus,.fc-button-group>.fc-button:hover{z-index:1}.fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-toolbar h2{font-size:1.75em;margin:0}.fc-view-container{position:relative}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}@media print{.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-highlight-container,.fc-highlight-skeleton,.fc-mirror-container,.fc-mirror-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-popover,.fc-timeGrid-view .fc-axis{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.js deleted file mode 100644 index 6b72fff..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/fullcalendar/main.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -FullCalendar Core Package v4.3.1 -Docs & License: https://fullcalendar.io/ -(c) 2019 Adam Shaw -*/ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).FullCalendar={})}(this,function(e){"use strict";var t={className:!0,colSpan:!0,rowSpan:!0},n={"
      ");document.body.appendChild(e);var t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return c(e),t}()),S}function D(e){return e=Math.max(0,e),e=Math.round(e)}function T(e,t){void 0===t&&(t=!1);var n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,i=parseInt(n.borderRightWidth,10)||0,o=parseInt(n.borderTopWidth,10)||0,a=parseInt(n.borderBottomWidth,10)||0,s=D(e.offsetWidth-e.clientWidth-r-i),u={borderLeft:r,borderRight:i,borderTop:o,borderBottom:a,scrollbarBottom:D(e.offsetHeight-e.clientHeight-o-a),scrollbarLeft:0,scrollbarRight:0};return b()&&"rtl"===n.direction?u.scrollbarLeft=s:u.scrollbarRight=s,t&&(u.paddingLeft=parseInt(n.paddingLeft,10)||0,u.paddingRight=parseInt(n.paddingRight,10)||0,u.paddingTop=parseInt(n.paddingTop,10)||0,u.paddingBottom=parseInt(n.paddingBottom,10)||0),u}function w(e,t){void 0===t&&(t=!1);var n=R(e),r=T(e,t),i={left:n.left+r.borderLeft+r.scrollbarLeft,right:n.right-r.borderRight-r.scrollbarRight,top:n.top+r.borderTop,bottom:n.bottom-r.borderBottom-r.scrollbarBottom};return t&&(i.left+=r.paddingLeft,i.right-=r.paddingRight,i.top+=r.paddingTop,i.bottom-=r.paddingBottom),i}function R(e){var t=e.getBoundingClientRect();return{left:t.left+window.pageXOffset,top:t.top+window.pageYOffset,right:t.right+window.pageXOffset,bottom:t.bottom+window.pageYOffset}}function I(e){return e.getBoundingClientRect().height+C(e)}function C(e){var t=window.getComputedStyle(e);return parseInt(t.marginTop,10)+parseInt(t.marginBottom,10)}function M(e){for(var t=[];e instanceof HTMLElement;){var n=window.getComputedStyle(e);if("fixed"===n.position)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}function k(e){e.preventDefault()}function O(e,t,n,r){function i(e){var t=p(e.target,n);t&&r.call(t,e,t)}return e.addEventListener(t,i),function(){e.removeEventListener(t,i)}}var _=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];var P=["sun","mon","tue","wed","thu","fri","sat"];function x(e,t){var n=Z(e);return n[2]+=t,j(n)}function H(e,t){var n=Z(e);return n[6]+=t,j(n)}function N(e,t){return(t.valueOf()-e.valueOf())/864e5}function z(e,t){var n=B(e),r=B(t);return{years:0,months:0,days:Math.round(N(n,r)),milliseconds:t.valueOf()-r.valueOf()-(e.valueOf()-n.valueOf())}}function U(e,t){var n=L(e,t);return null!==n&&n%7==0?n/7:null}function L(e,t){return q(e)===q(t)?Math.round(N(e,t)):null}function B(e){return j([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()])}function V(e,t,n,r){var i=j([t,0,1+A(t,n,r)]),o=B(e),a=Math.round(N(i,o));return Math.floor(a/7)+1}function A(e,t,n){var r=7+t-n;return-((7+j([e,0,r]).getUTCDay()-t)%7)+r-1}function F(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function W(e){return new Date(e[0],e[1]||0,null==e[2]?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function Z(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function j(e){return 1===e.length&&(e=e.concat([0])),new Date(Date.UTC.apply(Date,e))}function Y(e){return!isNaN(e.valueOf())}function q(e){return 1e3*e.getUTCHours()*60*60+1e3*e.getUTCMinutes()*60+1e3*e.getUTCSeconds()+e.getUTCMilliseconds()}var G=["years","months","days","milliseconds"],X=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function J(e,t){var n;return"string"==typeof e?function(e){var t=X.exec(e);if(t){var n=t[1]?-1:1;return{years:0,months:0,days:n*(t[2]?parseInt(t[2],10):0),milliseconds:n*(60*(t[3]?parseInt(t[3],10):0)*60*1e3+60*(t[4]?parseInt(t[4],10):0)*1e3+1e3*(t[5]?parseInt(t[5],10):0)+(t[6]?parseInt(t[6],10):0))}}return null}(e):"object"==typeof e&&e?K(e):"number"==typeof e?K(((n={})[t||"milliseconds"]=e,n)):null}function K(e){return{years:e.years||e.year||0,months:e.months||e.month||0,days:(e.days||e.day||0)+7*Q(e),milliseconds:60*(e.hours||e.hour||0)*60*1e3+60*(e.minutes||e.minute||0)*1e3+1e3*(e.seconds||e.second||0)+(e.milliseconds||e.millisecond||e.ms||0)}}function Q(e){return e.weeks||e.week||0}function $(e,t){return e.years===t.years&&e.months===t.months&&e.days===t.days&&e.milliseconds===t.milliseconds}function ee(e){return te(e)/864e5}function te(e){return 31536e6*e.years+2592e6*e.months+864e5*e.days+e.milliseconds}function ne(e,t){var n=e.milliseconds;if(n){if(n%1e3!=0)return{unit:"millisecond",value:n};if(n%6e4!=0)return{unit:"second",value:n/1e3};if(n%36e5!=0)return{unit:"minute",value:n/6e4};if(n)return{unit:"hour",value:n/36e5}}return e.days?t||e.days%7!=0?{unit:"day",value:e.days}:{unit:"week",value:e.days/7}:e.months?{unit:"month",value:e.months}:e.years?{unit:"year",value:e.years}:{unit:"millisecond",value:0}}function re(e){e.forEach(function(e){e.style.height=""})}function ie(e){var t,n,r=[],i=[];for("string"==typeof e?i=e.split(/\s*,\s*/):"function"==typeof e?i=[e]:Array.isArray(e)&&(i=e),t=0;t=te(t)&&(r=x(r,1))}return e.start&&(n=B(e.start),r&&r<=n&&(r=x(n,1))),{start:n,end:r}}function ye(e,t,n,r){return"year"===r?J(n.diffWholeYears(e,t),"year"):"month"===r?J(n.diffWholeMonths(e,t),"month"):z(e,t)}var me=function(e,t){return(me=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function Ee(e,t){function n(){this.constructor=e}me(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var Se=function(){return(Se=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;o--)if("object"==typeof(a=e[o][r])&&a)i.unshift(a);else if(void 0!==a){u[r]=a;break}i.length&&(u[r]=Te(i))}for(n=e.length-1;n>=0;n--)for(r in s=e[n])r in u||(u[r]=s[r]);return u}function we(e,t){var n={};for(var r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Re(e,t){var n={};for(var r in e)n[r]=t(e[r],r);return n}function Ie(e){for(var t={},n=0,r=e;no&&i.push({start:o,end:r.start}),r.end>o&&(o=r.end);return ot.start)&&(null===e.start||null===t.end||e.start=e.start)&&(null===e.end||null!==t.end&&t.end<=e.end)}function Ze(e,t){return(null===e.start||t>=e.start)&&(null===e.end||t1)||"numeric"!==r.year&&"2-digit"!==r.year||"numeric"!==r.month&&"2-digit"!==r.month||"numeric"!==r.day&&"2-digit"!==r.day||(a=1);var s=this.format(e,n),u=this.format(t,n);if(s===u)return s;var l=nt(function(e,t){var n={};for(var r in e)r in Xe&&!(Xe[r]<=t)||(n[r]=e[r]);return n}(r,a),i,n),c=l(e),d=l(t),f=function(e,t,n,r){var i=0;for(;i/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"
      ")}function _t(e){var t=[];for(var n in e){var r=e[n];null!=r&&""!==r&&t.push(n+":"+r)}return t.join(";")}function Pt(e){return Array.isArray(e)?e:"string"==typeof e?e.split(/\s+/):[]}var xt={editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:null,overlap:null,allow:null,className:Pt,classNames:Pt,color:String,backgroundColor:String,borderColor:String,textColor:String};function Ht(e,t,n){var r=he(e,xt,{},n),i=function(e,t){return Array.isArray(e)?ke(e,"",t,!0):"object"==typeof e&&e?ke([e],"",t,!0):null!=e?String(e):null}(r.constraint,t);return{startEditable:null!=r.startEditable?r.startEditable:r.editable,durationEditable:null!=r.durationEditable?r.durationEditable:r.editable,constraints:null!=i?[i]:[],overlap:r.overlap,allows:null!=r.allow?[r.allow]:[],backgroundColor:r.backgroundColor||r.color,borderColor:r.borderColor||r.color,textColor:r.textColor,classNames:r.classNames.concat(r.className)}}function Nt(e,t,n,r){var i={},o={};for(var a in xt){var s=e+ue(a);i[a]=t[s],o[s]=!0}if("event"===e&&(i.editable=t.editable),r)for(var a in t)o[a]||(r[a]=t[a]);return Ht(i,n)}var zt={startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]};function Ut(e){return e.reduce(Lt,zt)}function Lt(e,t){return{startEditable:null!=t.startEditable?t.startEditable:e.startEditable,durationEditable:null!=t.durationEditable?t.durationEditable:e.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:"boolean"==typeof t.overlap?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var Bt={id:String,groupId:String,title:String,url:String,rendering:String,extendedProps:null},Vt={start:null,date:null,end:null,allDay:null},At=0;function Ft(e,t,n,r){var i=function(e,t){var n=null;if(e){var r=t.state.eventSources[e];n=r.allDayDefault}null==n&&(n=t.opt("allDayDefault"));return n}(t,n),o={},a=function(e,t,n,r,i){for(var o=0;o'+r+"
      ":""+r+""}function Qt(e,t,n,r){var i,o,a=n.calendar,s=n.view,u=n.theme,l=n.dateEnv,c=[];return Ze(t.activeRange,e)?(c.push("fc-"+P[e.getUTCDay()]),s.opt("monthMode")&&l.getMonth(e)!==l.getMonth(t.currentRange.start)&&c.push("fc-other-month"),o=x(i=B(a.getNow()),1),e=o?c.push("fc-future"):(c.push("fc-today"),!0!==r&&c.push(u.getClass("today")))):c.push("fc-disabled-day"),c}function $t(e,t,n){var r=!1,i=function(){r||(r=!0,t.apply(this,arguments))},o=function(){r||(r=!0,n&&n.apply(this,arguments))},a=e(i,o);a&&"function"==typeof a.then&&a.then(i,o)}var en=function(){function e(){}return e.mixInto=function(e){this.mixIntoObj(e.prototype)},e.mixIntoObj=function(e){var t=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){e[n]||(e[n]=t.prototype[n])})},e.mixOver=function(e){var t=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){e.prototype[n]=t.prototype[n]})},e}(),tn=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ee(t,e),t.prototype.on=function(e,t){return nn(this._handlers||(this._handlers={}),e,t),this},t.prototype.one=function(e,t){return nn(this._oneHandlers||(this._oneHandlers={}),e,t),this},t.prototype.off=function(e,t){return this._handlers&&rn(this._handlers,e,t),this._oneHandlers&&rn(this._oneHandlers,e,t),this},t.prototype.trigger=function(e){for(var t=[],n=1;n=n[t]&&e=n[t]&&e0},e.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0},e.prototype.canScrollUp=function(){return this.getScrollTop()>0},e.prototype.canScrollDown=function(){return this.getScrollTop()0},e.prototype.canScrollRight=function(){return this.getScrollLeft()=200&&a.status<400)try{var e=JSON.parse(a.responseText);r(e,a)}catch(e){i("Failure parsing JSON",a)}else i("Request failed",a)},a.onerror=function(){i("Request failed",a)},a.send(o)}function Sn(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.join("&")}var bn=vn({eventSourceDefs:[{parseMeta:function(e){if("string"==typeof e)e={url:e};else if(!e||"object"!=typeof e||!e.url)return null;return{url:e.url,method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}},fetch:function(e,t,n){var r=e.eventSource.meta,i=function(e,t,n){var r,i,o,a,s=n.dateEnv,u={};null==(r=e.startParam)&&(r=n.opt("startParam"));null==(i=e.endParam)&&(i=n.opt("endParam"));null==(o=e.timeZoneParam)&&(o=n.opt("timeZoneParam"));a="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};Se(u,a),u[r]=s.formatIso(t.start),u[i]=s.formatIso(t.end),"local"!==s.timeZone&&(u[o]=s.timeZone);return u}(r,e.range,e.calendar);En(r.method,r.url,i,function(e,n){t({rawEvents:e,xhr:n})},function(e,t){n({message:e,xhr:t})})}}]});var Dn=vn({recurringTypes:[{parse:function(e,t,n){var r,i,o=n.createMarker.bind(n),a=he(e,{daysOfWeek:null,startTime:J,endTime:J,startRecur:o,endRecur:o},{},t),s=!1;for(var u in a)if(null!=a[u]){s=!0;break}if(s){var l=null;return"duration"in t&&(l=J(t.duration),delete t.duration),!l&&a.startTime&&a.endTime&&(r=a.endTime,i=a.startTime,l={years:r.years-i.years,months:r.months-i.months,days:r.days-i.days,milliseconds:r.milliseconds-i.milliseconds}),{allDayGuess:Boolean(!a.startTime&&!a.endTime),duration:l,typeData:a}}return null},expand:function(e,t,n){var r=Ve(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r){var i=e?Ie(e):null,o=B(n.start),a=n.end,s=[];for(;o0?e[0].code:"en",n=window.FullCalendarLocalesAll||[],r=window.FullCalendarLocales||{},i=n.concat(Ce(r),e),o={en:kn},a=0,s=i;a0;i--){var o=r.slice(0,i).join("-");if(t[o])return t[o]}return null}(n,t)||kn;return Pn(e,n,r)}(e,t):Pn(e.code,[e.code],e)}function Pn(e,t,n){var r=Te([kn,n],["buttonText"]);delete r.code;var i=r.week;return delete r.week,{codeArg:e,codes:t,week:i,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}var xn=function(){function e(e){this.overrides=Se({},e),this.dynamicOverrides={},this.compute()}return e.prototype.mutate=function(e,t,n){var r=n?this.dynamicOverrides:this.overrides;Se(r,e);for(var i=0,o=t;i=1?Math.min(i,o):i}(e,this.weekDow,this.weekDoy)},e.prototype.format=function(e,t,n){return void 0===n&&(n={}),t.format({marker:e,timeZoneOffset:null!=n.forcedTzo?n.forcedTzo:this.offsetForMarker(e)},this)},e.prototype.formatRange=function(e,t,n,r){return void 0===r&&(r={}),r.isEndExclusive&&(t=H(t,-1)),n.formatRange({marker:e,timeZoneOffset:null!=r.forcedStartTzo?r.forcedStartTzo:this.offsetForMarker(e)},{marker:t,timeZoneOffset:null!=r.forcedEndTzo?r.forcedEndTzo:this.offsetForMarker(t)},this)},e.prototype.formatIso=function(e,t){void 0===t&&(t={});var n=null;return t.omitTimeZoneOffset||(n=null!=t.forcedTzo?t.forcedTzo:this.offsetForMarker(e)),function(e,t,n){void 0===n&&(n=!1);var r=e.toISOString();return r=r.replace(".000",""),n&&(r=r.replace("T00:00:00Z","")),r.length>10&&(null==t?r=r.replace("Z",""):0!==t&&(r=r.replace("Z",at(t,!0)))),r}(e,n,t.omitTime)},e.prototype.timestampToMarker=function(e){return"local"===this.timeZone?j(F(new Date(e))):"UTC"!==this.timeZone&&this.namedTimeZoneImpl?j(this.namedTimeZoneImpl.timestampToArray(e)):new Date(e)},e.prototype.offsetForMarker=function(e){return"local"===this.timeZone?-W(Z(e)).getTimezoneOffset():"UTC"===this.timeZone?0:this.namedTimeZoneImpl?this.namedTimeZoneImpl.offsetForArray(Z(e)):null},e.prototype.toDate=function(e,t){return"local"===this.timeZone?W(Z(e)):"UTC"===this.timeZone?new Date(e.valueOf()):this.namedTimeZoneImpl?new Date(e.valueOf()-1e3*this.namedTimeZoneImpl.offsetForArray(Z(e))*60):new Date(e.valueOf()-(t||0))},e}(),Vn={id:String,allDayDefault:Boolean,eventDataTransform:Function,success:Function,failure:Function},An=0;function Fn(e,t){return!t.pluginSystem.hooks.eventSourceDefs[e.sourceDefId].ignoreRange}function Wn(e,t){for(var n=t.pluginSystem.hooks.eventSourceDefs,r=n.length-1;r>=0;r--){var i=n[r].parseMeta(e);if(i){var o=Zn("object"==typeof e?e:{},i,r,t);return o._raw=e,o}}return null}function Zn(e,t,n,r){var i={},o=he(e,Vn,{},i),a={},s=Ht(i,r,a);return o.isFetching=!1,o.latestFetchId="",o.fetchRange=null,o.publicId=String(e.id||""),o.sourceId=String(An++),o.sourceDefId=n,o.meta=t,o.ui=s,o.extendedProps=a,o}function jn(e,t,n,r){switch(t.type){case"ADD_EVENT_SOURCES":return function(e,t,n,r){for(var i={},o=0,a=t;oe.fetchRange.end:!e.latestFetchId}(e,t,n)}),t,n)}function Gn(e,t,n,r){var i={};for(var o in e){var a=e[o];t[o]?i[o]=Xn(a,n,r):i[o]=a}return i}function Xn(e,t,n){var r=n.pluginSystem.hooks.eventSourceDefs[e.sourceDefId],i=String(Yn++);return r.fetch({eventSource:e,calendar:n,range:t},function(r){var o,a,s=r.rawEvents,u=n.opt("eventSourceSuccess");e.success&&(a=e.success(s,r.xhr)),u&&(o=u(s,r.xhr)),s=a||o||s,n.dispatch({type:"RECEIVE_EVENTS",sourceId:e.sourceId,fetchId:i,fetchRange:t,rawEvents:s})},function(r){var o=n.opt("eventSourceFailure");console.warn(r.message,r),e.failure&&e.failure(r),o&&o(r),n.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:e.sourceId,fetchId:i,fetchRange:t,error:r})}),Se({},e,{isFetching:!0,latestFetchId:i})}var Jn=function(){function e(e,t){this.viewSpec=e,this.options=e.options,this.dateEnv=t.dateEnv,this.calendar=t,this.initHiddenDays()}return e.prototype.buildPrev=function(e,t){var n=this.dateEnv,r=n.subtract(n.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(r,-1)},e.prototype.buildNext=function(e,t){var n=this.dateEnv,r=n.add(n.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(r,1)},e.prototype.build=function(e,t,n){var r;void 0===n&&(n=!1);var i,o,a,s,u,l,c,d,f;return r=this.buildValidRange(),r=this.trimHiddenDays(r),n&&(d=e,e=null!=(f=r).start&&d=f.end?new Date(f.end.valueOf()-1):d),a=this.buildCurrentRangeInfo(e,t),s=/^(year|month|week|day)$/.test(a.unit),u=this.buildRenderRange(this.trimHiddenDays(a.range),a.unit,s),l=u=this.trimHiddenDays(u),this.options.showNonCurrentDates||(l=Ve(l,a.range)),i=J(this.options.minTime),o=J(this.options.maxTime),l=Ve(l=this.adjustActiveRange(l,i,o),r),c=Fe(a.range,r),{validRange:r,currentRange:a.range,currentRangeUnit:a.unit,isRangeAllDay:s,activeRange:l,renderRange:u,minTime:i,maxTime:o,isValid:c,dateIncrement:this.buildDateIncrement(a.duration)}},e.prototype.buildValidRange=function(){return this.getRangeOption("validRange",this.calendar.getNow())||{start:null,end:null}},e.prototype.buildCurrentRangeInfo=function(e,t){var n,r=this.viewSpec,i=this.dateEnv,o=null,a=null,s=null;return r.duration?(o=r.duration,a=r.durationUnit,s=this.buildRangeFromDuration(e,t,o,a)):(n=this.options.dayCount)?(a="day",s=this.buildRangeFromDayCount(e,t,n)):(s=this.buildCustomVisibleRange(e))?a=i.greatestWholeUnit(s.start,s.end).unit:(a=ne(o=this.getFallbackDuration()).unit,s=this.buildRangeFromDuration(e,t,o,a)),{duration:o,unit:a,range:s}},e.prototype.getFallbackDuration=function(){return J({day:1})},e.prototype.adjustActiveRange=function(e,t,n){var r=this.dateEnv,i=e.start,o=e.end;return this.viewSpec.class.prototype.usesMinMaxTime&&(ee(t)<0&&(i=B(i),i=r.add(i,t)),ee(n)>1&&(o=x(o=B(o),-1),o=r.add(o,n))),{start:i,end:o}},e.prototype.buildRangeFromDuration=function(e,t,n,r){var i,o,a,s,u,l=this.dateEnv,c=this.options.dateAlignment;function d(){a=l.startOf(e,c),s=l.add(a,n),u={start:a,end:s}}return c||((i=this.options.dateIncrement)?(o=J(i),c=te(o) 
      ")),h=!1):((r=d[e])?(c=function(e){r.click&&r.click.call(E,e)},(v=o.getCustomButtonIconClass(r))||(v=o.getIconClass(e))||(g=r.text)):(s=l[e])?(n.viewsWithButtons.push(e),c=function(){a.changeView(e)},(g=s.buttonTextOverride)||(v=o.getIconClass(e))||(g=s.buttonTextDefault)):a[e]&&(c=function(){a[e]()},(g=f[e])||(v=o.getIconClass(e))||(g=p[e])),c&&(m=["fc-"+e+"-button",o.getClass("button")],g?(y=Ot(g),S=""):v&&(y="",S=' aria-label="'+e+'"'),(E=i('")).addEventListener("click",c),u.push(E)))}),u.length>1){r=document.createElement("div");var v=o.getClass("buttonGroup");h&&v&&r.classList.add(v),s(r,u),c.appendChild(r)}else s(c,u)}),c},t.prototype.updateToday=function(e){this.toggleButtonEnabled("today",e)},t.prototype.updatePrev=function(e){this.toggleButtonEnabled("prev",e)},t.prototype.updateNext=function(e){this.toggleButtonEnabled("next",e)},t.prototype.updateTitle=function(e){v(this.el,"h2").forEach(function(t){t.innerText=e})},t.prototype.updateActiveButton=function(e){var t=this.theme.getClass("buttonActive");v(this.el,"button").forEach(function(n){e&&n.classList.contains("fc-"+e+"-button")?n.classList.add(t):n.classList.remove(t)})},t.prototype.toggleButtonEnabled=function(e,t){v(this.el,".fc-"+e+"-button").forEach(function(e){e.disabled=!t})},t}(fn),hr=function(e){function t(t,n){var i=e.call(this,t)||this;i._renderToolbars=qt(i.renderToolbars),i.buildViewPropTransformers=Ye(gr),i.el=n,u(n,i.contentEl=r("div",{className:"fc-view-container"}));for(var o=i.calendar,a=0,s=o.pluginSystem.hooks.viewContainerModifiers;a1?{year:"numeric",month:"short",day:"numeric"}:{year:"numeric",month:"long",day:"numeric"}}(e),t.titleRangeSeparator),{isEndExclusive:e.isRangeAllDay})}function gr(e){return e.map(function(e){return new e})}var yr=function(){function e(e){this.component=e.component}return e.prototype.destroy=function(){},e}();var mr={},Er=function(e){function t(t){var n=e.call(this,t)||this;n.handleSegClick=function(e,t){var r=n.component,i=ht(t);if(i&&r.isValidSegDownEl(e.target)){var o=p(e.target,".fc-has-url"),a=o?o.querySelector("a[href]").href:"";r.publiclyTrigger("eventClick",[{el:t,event:new ct(r.calendar,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:r.view}]),a&&!e.defaultPrevented&&(window.location.href=a)}};var r=t.component;return n.destroy=O(r.el,"click",r.fgSegSelector+","+r.bgSegSelector,n.handleSegClick),n}return Ee(t,e),t}(yr),Sr=function(e){function t(t){var n=e.call(this,t)||this;n.handleEventElRemove=function(e){e===n.currentSegEl&&n.handleSegLeave(null,n.currentSegEl)},n.handleSegEnter=function(e,t){ht(t)&&(t.classList.add("fc-allow-mouse-resize"),n.currentSegEl=t,n.triggerEvent("eventMouseEnter",e,t))},n.handleSegLeave=function(e,t){n.currentSegEl&&(t.classList.remove("fc-allow-mouse-resize"),n.currentSegEl=null,n.triggerEvent("eventMouseLeave",e,t))};var r,i,o,a,s,u=t.component;return n.removeHoverListeners=(r=u.el,i=u.fgSegSelector+","+u.bgSegSelector,o=n.handleSegEnter,a=n.handleSegLeave,O(r,"mouseover",i,function(e,t){if(t!==s){s=t,o(e,t);var n=function(e){s=null,a(e,t),t.removeEventListener("mouseleave",n)};t.addEventListener("mouseleave",n)}})),u.calendar.on("eventElRemove",n.handleEventElRemove),n}return Ee(t,e),t.prototype.destroy=function(){this.removeHoverListeners(),this.component.calendar.off("eventElRemove",this.handleEventElRemove)},t.prototype.triggerEvent=function(e,t,n){var r=this.component,i=ht(n);t&&!r.isValidSegDownEl(t.target)||r.publiclyTrigger(e,[{el:n,event:new ct(this.component.calendar,i.eventRange.def,i.eventRange.instance),jsEvent:t,view:r.view}])},t}(yr),br=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ee(t,e),t}(cn);br.prototype.classes={widget:"fc-unthemed",widgetHeader:"fc-widget-header",widgetContent:"fc-widget-content",buttonGroup:"fc-button-group",button:"fc-button fc-button-primary",buttonActive:"fc-button-active",popoverHeader:"fc-widget-header",popoverContent:"fc-widget-content",headerRow:"fc-widget-header",dayRow:"fc-widget-content",listView:"fc-widget-content"},br.prototype.baseIconClass="fc-icon",br.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-chevron-left",next:"fc-icon-chevron-right",prevYear:"fc-icon-chevrons-left",nextYear:"fc-icon-chevrons-right"},br.prototype.iconOverrideOption="buttonIcons",br.prototype.iconOverrideCustomButtonOption="icon",br.prototype.iconOverridePrefix="fc-icon-";var Dr=function(){function e(e,t){var n=this;this.parseRawLocales=Ye(On),this.buildLocale=Ye(_n),this.buildDateEnv=Ye(Tr),this.buildTheme=Ye(wr),this.buildEventUiSingleBase=Ye(this._buildEventUiSingleBase),this.buildSelectionConfig=Ye(this._buildSelectionConfig),this.buildEventUiBySource=qe(Ir,Me),this.buildEventUiBases=Ye(Cr),this.interactionsStore={},this.actionQueue=[],this.isReducing=!1,this.needsRerender=!1,this.needsFullRerender=!1,this.isRendering=!1,this.renderingPauseDepth=0,this.buildDelayedRerender=Ye(Rr),this.afterSizingTriggers={},this.isViewUpdated=!1,this.isDatesUpdated=!1,this.isEventsUpdated=!1,this.el=e,this.optionsManager=new xn(t||{}),this.pluginSystem=new gn,this.addPluginInputs(this.optionsManager.computed.plugins||[]),this.handleOptions(this.optionsManager.computed),this.publiclyTrigger("_init"),this.hydrate(),this.calendarInteractions=this.pluginSystem.hooks.calendarInteractions.map(function(e){return new e(n)})}return e.prototype.addPluginInputs=function(e){for(var t=function(e){for(var t=[],n=0,r=e;n"},e.prototype.detachSegs=function(e,t){var n=this.containerElsByType[e];n&&(n.forEach(c),delete this.containerElsByType[e])},e.prototype.computeSizes=function(e){for(var t in this.segsByType)(e||this.dirtySizeFlags[t])&&this.computeSegSizes(this.segsByType[t])},e.prototype.assignSizes=function(e){for(var t in this.segsByType)(e||this.dirtySizeFlags[t])&&this.assignSegSizes(this.segsByType[t]);this.dirtySizeFlags={}},e.prototype.computeSegSizes=function(e){},e.prototype.assignSegSizes=function(e){},e}(),Pr=function(e){this.timeZoneName=e},xr=function(){function e(e){this.emitter=new tn}return e.prototype.destroy=function(){},e.prototype.setMirrorIsVisible=function(e){},e.prototype.setMirrorNeedsRevert=function(e){},e.prototype.setAutoScrollEnabled=function(e){},e}();function Hr(e){var t=_n(e.locale||"en",On([]).map);return e=Se({timeZone:Rn.timeZone,calendarSystem:"gregory"},e,{locale:t}),new Bn(e)}var Nr={startTime:J,duration:J,create:Boolean,sourceId:String},zr={create:!0};function Ur(e,t){return!e||t>10?{weekday:"short"}:t>1?{weekday:"short",month:"numeric",day:"numeric",omitCommas:!0}:{weekday:"long"}}function Lr(e,t,n,r,i,o,a,s){var u,l=o.view,c=o.dateEnv,d=o.theme,f=o.options,p=Ze(t.activeRange,e),h=["fc-day-header",d.getClass("widgetHeader")];return u="function"==typeof f.columnHeaderHtml?f.columnHeaderHtml(c.toDate(e)):"function"==typeof f.columnHeaderText?Ot(f.columnHeaderText(c.toDate(e))):Ot(c.format(e,i)),n?h=h.concat(Qt(e,t,o,!0)):h.push("fc-"+P[e.getUTCDay()]),'1?' colspan="'+a+'"':"")+(s?" "+s:"")+">"+(p?Kt(l,{date:e,forceOff:!n||1===r},u):u)+""}var Br=function(e){function t(t,n){var r=e.call(this,t)||this;return n.innerHTML="",n.appendChild(r.el=i('
      ')),r.thead=r.el.querySelector("thead"),r}return Ee(t,e),t.prototype.destroy=function(){c(this.el)},t.prototype.render=function(e){var t=e.dates,n=e.datesRepDistinctDays,r=[];e.renderIntroHtml&&r.push(e.renderIntroHtml());for(var i=ot(this.opt("columnHeaderFormat")||Ur(n,t.length)),o=0,a=t;o"+r.join("")+""},t}(fn),Vr=function(){function e(e,t){for(var n=e.start,r=e.end,i=[],o=[],a=-1;n=t.length?t[t.length-1]+1:t[n]},e}(),Ar=function(){function e(e,t){var n,r,i,o=e.dates;if(t){for(r=o[0].getUTCDay(),n=1;n1},e.isPropsEqual=Me,e.isPropsValid=Rt,e.isSingleDay=function(e){return 0===e.years&&0===e.months&&1===e.days&&0===e.milliseconds},e.isValidDate=Y,e.listenBySelector=O,e.mapHash=Re,e.matchCellWidths=function(e){var t=0;return e.forEach(function(e){var n=e.firstChild;if(n instanceof HTMLElement){var r=n.getBoundingClientRect().width;r>t&&(t=r)}}),t++,e.forEach(function(e){e.style.width=t+"px"}),t},e.memoize=Ye,e.memoizeOutput=qe,e.memoizeRendering=qt,e.mergeEventStores=Ne,e.multiplyDuration=function(e,t){return{years:e.years*t,months:e.months*t,days:e.days*t,milliseconds:e.milliseconds*t}},e.padStart=le,e.parseBusinessHours=Yt,e.parseDragMeta=function(e){var t={},n=he(e,Nr,zr,t);return n.leftoverProps=t,n},e.parseEventDef=Wt,e.parseFieldSpecs=ie,e.parseMarker=Ln,e.pointInsideRect=function(e,t){return e.left>=t.left&&e.left=t.top&&e.top label { - padding-left: 29px !important; - min-height: 22px; - line-height: 22px; - display: inline-block; - position: relative; - vertical-align: top; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} - -[class*="icheck-"] > input:first-child { - position: absolute !important; - opacity: 0; - margin: 0; -} - - [class*="icheck-"] > input:first-child:disabled { - cursor: default; - } - - [class*="icheck-"] > input:first-child + label::before, - [class*="icheck-"] > input:first-child + input[type="hidden"] + label::before { - content: ""; - display: inline-block; - position: absolute; - width: 22px; - height: 22px; - border: 1px solid #D3CFC8; - border-radius: 0px; - margin-left: -29px; - } - - [class*="icheck-"] > input:first-child:checked + label::after, - [class*="icheck-"] > input:first-child:checked + input[type="hidden"] + label::after { - content: ""; - display: inline-block; - position: absolute; - top: 0; - left: 0; - width: 7px; - height: 10px; - border: solid 2px #fff; - border-left: none; - border-top: none; - transform: translate(7.75px, 4.5px) rotate(45deg); - -ms-transform: translate(7.75px, 4.5px) rotate(45deg); - } - -[class*="icheck-"] > input[type="radio"]:first-child + label::before, -[class*="icheck-"] > input[type="radio"]:first-child + input[type="hidden"] + label::before { - border-radius: 50%; -} - -[class*="icheck-"] > input:first-child:not(:checked):not(:disabled):hover + label::before, -[class*="icheck-"] > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-width: 2px; -} - -[class*="icheck-"] > input:first-child:disabled + label, -[class*="icheck-"] > input:first-child:disabled + input[type="hidden"] + label, -[class*="icheck-"] > input:first-child:disabled + label::before, -[class*="icheck-"] > input:first-child:disabled + input[type="hidden"] + label::before { - pointer-events: none; - cursor: default; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} - -.icheck-default > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-default > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #adadad; -} - -.icheck-default > input:first-child:checked + label::before, -.icheck-default > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #e6e6e6; - border-color: #adadad; -} - -.icheck-default > input:first-child:checked + label::after, -.icheck-default > input:first-child:checked + input[type="hidden"] + label::after { - border-bottom-color: #333; - border-right-color: #333; -} - -.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-primary > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #2e6da4; -} - -.icheck-primary > input:first-child:checked + label::before, -.icheck-primary > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #337ab7; - border-color: #2e6da4; -} - -.icheck-success > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-success > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #4cae4c; -} - -.icheck-success > input:first-child:checked + label::before, -.icheck-success > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #5cb85c; - border-color: #4cae4c; -} - -.icheck-info > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-info > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #46b8da; -} - -.icheck-info > input:first-child:checked + label::before, -.icheck-info > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #5bc0de; - border-color: #46b8da; -} - -.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-warning > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #eea236; -} - -.icheck-warning > input:first-child:checked + label::before, -.icheck-warning > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #f0ad4e; - border-color: #eea236; -} - -.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-danger > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #d43f3a; -} - -.icheck-danger > input:first-child:checked + label::before, -.icheck-danger > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #d9534f; - border-color: #d43f3a; -} - -.icheck-turquoise > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-turquoise > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #1abc9c; -} - -.icheck-turquoise > input:first-child:checked + label::before, -.icheck-turquoise > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #1abc9c; - border-color: #1abc9c; -} - -.icheck-emerland > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-emerland > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #2ecc71; -} - -.icheck-emerland > input:first-child:checked + label::before, -.icheck-emerland > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #2ecc71; - border-color: #2ecc71; -} - -.icheck-peterriver > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-peterriver > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #3498db; -} - -.icheck-peterriver > input:first-child:checked + label::before, -.icheck-peterriver > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #3498db; - border-color: #3498db; -} - -.icheck-amethyst > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-amethyst > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #9b59b6; -} - -.icheck-amethyst > input:first-child:checked + label::before, -.icheck-amethyst > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #9b59b6; - border-color: #9b59b6; -} - -.icheck-wetasphalt > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-wetasphalt > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #34495e; -} - -.icheck-wetasphalt > input:first-child:checked + label::before, -.icheck-wetasphalt > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #34495e; - border-color: #34495e; -} - -.icheck-greensea > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-greensea > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #16a085; -} - -.icheck-greensea > input:first-child:checked + label::before, -.icheck-greensea > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #16a085; - border-color: #16a085; -} - -.icheck-nephritis > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-nephritis > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #27ae60; -} - -.icheck-nephritis > input:first-child:checked + label::before, -.icheck-nephritis > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #27ae60; - border-color: #27ae60; -} - -.icheck-belizehole > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-belizehole > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #2980b9; -} - -.icheck-belizehole > input:first-child:checked + label::before, -.icheck-belizehole > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #2980b9; - border-color: #2980b9; -} - -.icheck-wisteria > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-wisteria > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #8e44ad; -} - -.icheck-wisteria > input:first-child:checked + label::before, -.icheck-wisteria > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #8e44ad; - border-color: #8e44ad; -} - -.icheck-midnightblue > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-midnightblue > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #2c3e50; -} - -.icheck-midnightblue > input:first-child:checked + label::before, -.icheck-midnightblue > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #2c3e50; - border-color: #2c3e50; -} - -.icheck-sunflower > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-sunflower > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #f1c40f; -} - -.icheck-sunflower > input:first-child:checked + label::before, -.icheck-sunflower > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #f1c40f; - border-color: #f1c40f; -} - -.icheck-carrot > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-carrot > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #e67e22; -} - -.icheck-carrot > input:first-child:checked + label::before, -.icheck-carrot > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #e67e22; - border-color: #e67e22; -} - -.icheck-alizarin > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-alizarin > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #e74c3c; -} - -.icheck-alizarin > input:first-child:checked + label::before, -.icheck-alizarin > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #e74c3c; - border-color: #e74c3c; -} - -.icheck-clouds > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-clouds > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #ecf0f1; -} - -.icheck-clouds > input:first-child:checked + label::before, -.icheck-clouds > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #ecf0f1; - border-color: #ecf0f1; -} - -.icheck-clouds > input:first-child:checked + label::after, -.icheck-clouds > input:first-child:checked + input[type="hidden"] + label::after { - border-bottom-color: #95a5a6; - border-right-color: #95a5a6; -} - -.icheck-concrete > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-concrete > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #95a5a6; -} - -.icheck-concrete > input:first-child:checked + label::before, -.icheck-concrete > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #95a5a6; - border-color: #95a5a6; -} - -.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-orange > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #f39c12; -} - -.icheck-orange > input:first-child:checked + label::before, -.icheck-orange > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #f39c12; - border-color: #f39c12; -} - -.icheck-pumpkin > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-pumpkin > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #d35400; -} - -.icheck-pumpkin > input:first-child:checked + label::before, -.icheck-pumpkin > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #d35400; - border-color: #d35400; -} - -.icheck-pomegranate > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-pomegranate > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #c0392b; -} - -.icheck-pomegranate > input:first-child:checked + label::before, -.icheck-pomegranate > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #c0392b; - border-color: #c0392b; -} - -.icheck-silver > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-silver > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #bdc3c7; -} - -.icheck-silver > input:first-child:checked + label::before, -.icheck-silver > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #bdc3c7; - border-color: #bdc3c7; -} - -.icheck-asbestos > input:first-child:not(:checked):not(:disabled):hover + label::before, -.icheck-asbestos > input:first-child:not(:checked):not(:disabled):hover + input[type="hidden"] + label::before { - border-color: #7f8c8d; -} - -.icheck-asbestos > input:first-child:checked + label::before, -.icheck-asbestos > input:first-child:checked + input[type="hidden"] + label::before { - background-color: #7f8c8d; - border-color: #7f8c8d; -} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css deleted file mode 100644 index 4849799..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * icheck-bootstrap v3.0.1 (https://github.com/bantikyan/icheck-bootstrap) - * Copyright 2018 Hovhannes Bantikyan. - * Licensed under MIT (https://github.com/bantikyan/icheck-bootstrap/blob/master/LICENSE) - */[class*=icheck-]{min-height:22px;margin-top:6px!important;margin-bottom:6px!important;padding-left:0}.icheck-inline{display:inline-block}.icheck-inline+.icheck-inline{margin-left:.75rem;margin-top:6px}[class*=icheck-]>label{padding-left:29px!important;min-height:22px;line-height:22px;display:inline-block;position:relative;vertical-align:top;margin-bottom:0;font-weight:400;cursor:pointer}[class*=icheck-]>input:first-child{position:absolute!important;opacity:0;margin:0}[class*=icheck-]>input:first-child:disabled{cursor:default}[class*=icheck-]>input:first-child+input[type=hidden]+label::before,[class*=icheck-]>input:first-child+label::before{content:"";display:inline-block;position:absolute;width:22px;height:22px;border:1px solid #D3CFC8;border-radius:0;margin-left:-29px}[class*=icheck-]>input:first-child:checked+input[type=hidden]+label::after,[class*=icheck-]>input:first-child:checked+label::after{content:"";display:inline-block;position:absolute;top:0;left:0;width:7px;height:10px;border:2px solid #fff;border-left:none;border-top:none;transform:translate(7.75px,4.5px) rotate(45deg);-ms-transform:translate(7.75px,4.5px) rotate(45deg)}[class*=icheck-]>input[type=radio]:first-child+input[type=hidden]+label::before,[class*=icheck-]>input[type=radio]:first-child+label::before{border-radius:50%}[class*=icheck-]>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,[class*=icheck-]>input:first-child:not(:checked):not(:disabled):hover+label::before{border-width:2px}[class*=icheck-]>input:first-child:disabled+input[type=hidden]+label,[class*=icheck-]>input:first-child:disabled+input[type=hidden]+label::before,[class*=icheck-]>input:first-child:disabled+label,[class*=icheck-]>input:first-child:disabled+label::before{pointer-events:none;cursor:default;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.icheck-default>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-default>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#adadad}.icheck-default>input:first-child:checked+input[type=hidden]+label::before,.icheck-default>input:first-child:checked+label::before{background-color:#e6e6e6;border-color:#adadad}.icheck-default>input:first-child:checked+input[type=hidden]+label::after,.icheck-default>input:first-child:checked+label::after{border-bottom-color:#333;border-right-color:#333}.icheck-primary>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-primary>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#2e6da4}.icheck-primary>input:first-child:checked+input[type=hidden]+label::before,.icheck-primary>input:first-child:checked+label::before{background-color:#337ab7;border-color:#2e6da4}.icheck-success>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-success>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#4cae4c}.icheck-success>input:first-child:checked+input[type=hidden]+label::before,.icheck-success>input:first-child:checked+label::before{background-color:#5cb85c;border-color:#4cae4c}.icheck-info>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-info>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#46b8da}.icheck-info>input:first-child:checked+input[type=hidden]+label::before,.icheck-info>input:first-child:checked+label::before{background-color:#5bc0de;border-color:#46b8da}.icheck-warning>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-warning>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#eea236}.icheck-warning>input:first-child:checked+input[type=hidden]+label::before,.icheck-warning>input:first-child:checked+label::before{background-color:#f0ad4e;border-color:#eea236}.icheck-danger>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-danger>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#d43f3a}.icheck-danger>input:first-child:checked+input[type=hidden]+label::before,.icheck-danger>input:first-child:checked+label::before{background-color:#d9534f;border-color:#d43f3a}.icheck-turquoise>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-turquoise>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#1abc9c}.icheck-turquoise>input:first-child:checked+input[type=hidden]+label::before,.icheck-turquoise>input:first-child:checked+label::before{background-color:#1abc9c;border-color:#1abc9c}.icheck-emerland>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-emerland>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#2ecc71}.icheck-emerland>input:first-child:checked+input[type=hidden]+label::before,.icheck-emerland>input:first-child:checked+label::before{background-color:#2ecc71;border-color:#2ecc71}.icheck-peterriver>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-peterriver>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#3498db}.icheck-peterriver>input:first-child:checked+input[type=hidden]+label::before,.icheck-peterriver>input:first-child:checked+label::before{background-color:#3498db;border-color:#3498db}.icheck-amethyst>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-amethyst>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#9b59b6}.icheck-amethyst>input:first-child:checked+input[type=hidden]+label::before,.icheck-amethyst>input:first-child:checked+label::before{background-color:#9b59b6;border-color:#9b59b6}.icheck-wetasphalt>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-wetasphalt>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#34495e}.icheck-wetasphalt>input:first-child:checked+input[type=hidden]+label::before,.icheck-wetasphalt>input:first-child:checked+label::before{background-color:#34495e;border-color:#34495e}.icheck-greensea>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-greensea>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#16a085}.icheck-greensea>input:first-child:checked+input[type=hidden]+label::before,.icheck-greensea>input:first-child:checked+label::before{background-color:#16a085;border-color:#16a085}.icheck-nephritis>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-nephritis>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#27ae60}.icheck-nephritis>input:first-child:checked+input[type=hidden]+label::before,.icheck-nephritis>input:first-child:checked+label::before{background-color:#27ae60;border-color:#27ae60}.icheck-belizehole>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-belizehole>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#2980b9}.icheck-belizehole>input:first-child:checked+input[type=hidden]+label::before,.icheck-belizehole>input:first-child:checked+label::before{background-color:#2980b9;border-color:#2980b9}.icheck-wisteria>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-wisteria>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#8e44ad}.icheck-wisteria>input:first-child:checked+input[type=hidden]+label::before,.icheck-wisteria>input:first-child:checked+label::before{background-color:#8e44ad;border-color:#8e44ad}.icheck-midnightblue>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-midnightblue>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#2c3e50}.icheck-midnightblue>input:first-child:checked+input[type=hidden]+label::before,.icheck-midnightblue>input:first-child:checked+label::before{background-color:#2c3e50;border-color:#2c3e50}.icheck-sunflower>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-sunflower>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#f1c40f}.icheck-sunflower>input:first-child:checked+input[type=hidden]+label::before,.icheck-sunflower>input:first-child:checked+label::before{background-color:#f1c40f;border-color:#f1c40f}.icheck-carrot>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-carrot>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#e67e22}.icheck-carrot>input:first-child:checked+input[type=hidden]+label::before,.icheck-carrot>input:first-child:checked+label::before{background-color:#e67e22;border-color:#e67e22}.icheck-alizarin>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-alizarin>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#e74c3c}.icheck-alizarin>input:first-child:checked+input[type=hidden]+label::before,.icheck-alizarin>input:first-child:checked+label::before{background-color:#e74c3c;border-color:#e74c3c}.icheck-clouds>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-clouds>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#ecf0f1}.icheck-clouds>input:first-child:checked+input[type=hidden]+label::before,.icheck-clouds>input:first-child:checked+label::before{background-color:#ecf0f1;border-color:#ecf0f1}.icheck-clouds>input:first-child:checked+input[type=hidden]+label::after,.icheck-clouds>input:first-child:checked+label::after{border-bottom-color:#95a5a6;border-right-color:#95a5a6}.icheck-concrete>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-concrete>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#95a5a6}.icheck-concrete>input:first-child:checked+input[type=hidden]+label::before,.icheck-concrete>input:first-child:checked+label::before{background-color:#95a5a6;border-color:#95a5a6}.icheck-orange>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-orange>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#f39c12}.icheck-orange>input:first-child:checked+input[type=hidden]+label::before,.icheck-orange>input:first-child:checked+label::before{background-color:#f39c12;border-color:#f39c12}.icheck-pumpkin>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-pumpkin>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#d35400}.icheck-pumpkin>input:first-child:checked+input[type=hidden]+label::before,.icheck-pumpkin>input:first-child:checked+label::before{background-color:#d35400;border-color:#d35400}.icheck-pomegranate>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-pomegranate>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#c0392b}.icheck-pomegranate>input:first-child:checked+input[type=hidden]+label::before,.icheck-pomegranate>input:first-child:checked+label::before{background-color:#c0392b;border-color:#c0392b}.icheck-silver>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-silver>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#bdc3c7}.icheck-silver>input:first-child:checked+input[type=hidden]+label::before,.icheck-silver>input:first-child:checked+label::before{background-color:#bdc3c7;border-color:#bdc3c7}.icheck-asbestos>input:first-child:not(:checked):not(:disabled):hover+input[type=hidden]+label::before,.icheck-asbestos>input:first-child:not(:checked):not(:disabled):hover+label::before{border-color:#7f8c8d}.icheck-asbestos>input:first-child:checked+input[type=hidden]+label::before,.icheck-asbestos>input:first-child:checked+label::before{background-color:#7f8c8d;border-color:#7f8c8d} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/bindings/inputmask.binding.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/bindings/inputmask.binding.js deleted file mode 100644 index 6724563..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/bindings/inputmask.binding.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! -* bindings/inputmask.binding.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery", "../inputmask", "../global/window" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("jquery"), require("../inputmask"), require("../global/window")); - } else { - factory(jQuery, window.Inputmask, window); - } -})(function($, Inputmask, window) { - $(window.document).ajaxComplete(function(event, xmlHttpRequest, ajaxOptions) { - if ($.inArray("html", ajaxOptions.dataTypes) !== -1) { - $(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]").each(function(ndx, lmnt) { - if (lmnt.inputmask === undefined) { - Inputmask().mask(lmnt); - } - }); - } - }).ready(function() { - $(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]").each(function(ndx, lmnt) { - if (lmnt.inputmask === undefined) { - Inputmask().mask(lmnt); - } - }); - }); -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js deleted file mode 100644 index 1580a4c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js +++ /dev/null @@ -1,129 +0,0 @@ -/*! -* dependencyLibs/inputmask.dependencyLib.jqlite.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "jqlite", "../global/window" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("jqlite"), require("../global/window")); - } else { - window.dependencyLib = factory(jqlite, window); - } -})(function($, window) { - var document = window.document; - function indexOf(list, elem) { - var i = 0, len = list.length; - for (;i < len; i++) { - if (list[i] === elem) { - return i; - } - } - return -1; - } - function isWindow(obj) { - return obj != null && obj === obj.window; - } - function isArraylike(obj) { - var length = "length" in obj && obj.length, ltype = typeof obj; - if (ltype === "function" || isWindow(obj)) { - return false; - } - if (obj.nodeType === 1 && length) { - return true; - } - return ltype === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; - } - $.inArray = function(elem, arr, i) { - return arr == null ? -1 : indexOf(arr, elem, i); - }; - $.isFunction = function(obj) { - return typeof obj === "function"; - }; - $.isArray = Array.isArray; - $.isPlainObject = function(obj) { - if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) { - return false; - } - if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - return true; - }; - $.extend = function() { - var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; - if (typeof target === "boolean") { - deep = target; - target = arguments[i] || {}; - i++; - } - if (typeof target !== "object" && !$.isFunction(target)) { - target = {}; - } - if (i === length) { - target = this; - i--; - } - for (;i < length; i++) { - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name]; - copy = options[name]; - if (target === copy) { - continue; - } - if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && $.isArray(src) ? src : []; - } else { - clone = src && $.isPlainObject(src) ? src : {}; - } - target[name] = $.extend(deep, clone, copy); - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - return target; - }; - $.each = function(obj, callback) { - var value, i = 0; - if (isArraylike(obj)) { - for (var length = obj.length; i < length; i++) { - value = callback.call(obj[i], i, obj[i]); - if (value === false) { - break; - } - } - } else { - for (i in obj) { - value = callback.call(obj[i], i, obj[i]); - if (value === false) { - break; - } - } - } - return obj; - }; - $.data = function(elem, name, data) { - return $(elem).data(name, data); - }; - $.Event = $.Event || function CustomEvent(event, params) { - params = params || { - bubbles: false, - cancelable: false, - detail: undefined - }; - var evt = document.createEvent("CustomEvent"); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - }; - $.Event.prototype = window.Event.prototype; - return $; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js deleted file mode 100644 index 3f71e60..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js +++ /dev/null @@ -1,19 +0,0 @@ -/*! -* dependencyLibs/inputmask.dependencyLib.jquery.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("jquery")); - } else { - window.dependencyLib = factory(jQuery); - } -})(function($) { - return $; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.js deleted file mode 100644 index 1bb45e7..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.js +++ /dev/null @@ -1,301 +0,0 @@ -/*! -* dependencyLibs/inputmask.dependencyLib.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "../global/window" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("../global/window")); - } else { - window.dependencyLib = factory(window); - } -})(function(window) { - var document = window.document; - function indexOf(list, elem) { - var i = 0, len = list.length; - for (;i < len; i++) { - if (list[i] === elem) { - return i; - } - } - return -1; - } - function isWindow(obj) { - return obj != null && obj === obj.window; - } - function isArraylike(obj) { - var length = "length" in obj && obj.length, ltype = typeof obj; - if (ltype === "function" || isWindow(obj)) { - return false; - } - if (obj.nodeType === 1 && length) { - return true; - } - return ltype === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; - } - function isValidElement(elem) { - return elem instanceof Element; - } - function DependencyLib(elem) { - if (elem instanceof DependencyLib) { - return elem; - } - if (!(this instanceof DependencyLib)) { - return new DependencyLib(elem); - } - if (elem !== undefined && elem !== null && elem !== window) { - this[0] = elem.nodeName ? elem : elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem); - if (this[0] !== undefined && this[0] !== null) { - this[0].eventRegistry = this[0].eventRegistry || {}; - } - } - } - function getWindow(elem) { - return isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; - } - DependencyLib.prototype = { - on: function(events, handler) { - if (isValidElement(this[0])) { - var eventRegistry = this[0].eventRegistry, elem = this[0]; - var addEvent = function(ev, namespace) { - if (elem.addEventListener) { - elem.addEventListener(ev, handler, false); - } else if (elem.attachEvent) { - elem.attachEvent("on" + ev, handler); - } - eventRegistry[ev] = eventRegistry[ev] || {}; - eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || []; - eventRegistry[ev][namespace].push(handler); - }; - var _events = events.split(" "); - for (var endx = 0; endx < _events.length; endx++) { - var nsEvent = _events[endx].split("."), ev = nsEvent[0], namespace = nsEvent[1] || "global"; - addEvent(ev, namespace); - } - } - return this; - }, - off: function(events, handler) { - if (isValidElement(this[0])) { - var eventRegistry = this[0].eventRegistry, elem = this[0]; - var removeEvent = function(ev, namespace, handler) { - if (ev in eventRegistry === true) { - if (elem.removeEventListener) { - elem.removeEventListener(ev, handler, false); - } else if (elem.detachEvent) { - elem.detachEvent("on" + ev, handler); - } - if (namespace === "global") { - for (var nmsp in eventRegistry[ev]) { - eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); - } - } else { - eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1); - } - } - }; - var resolveNamespace = function(ev, namespace) { - var evts = [], hndx, hndL; - if (ev.length > 0) { - if (handler === undefined) { - for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) { - evts.push({ - ev: ev, - namespace: namespace && namespace.length > 0 ? namespace : "global", - handler: eventRegistry[ev][namespace][hndx] - }); - } - } else { - evts.push({ - ev: ev, - namespace: namespace && namespace.length > 0 ? namespace : "global", - handler: handler - }); - } - } else if (namespace.length > 0) { - for (var evNdx in eventRegistry) { - for (var nmsp in eventRegistry[evNdx]) { - if (nmsp === namespace) { - if (handler === undefined) { - for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) { - evts.push({ - ev: evNdx, - namespace: nmsp, - handler: eventRegistry[evNdx][nmsp][hndx] - }); - } - } else { - evts.push({ - ev: evNdx, - namespace: nmsp, - handler: handler - }); - } - } - } - } - } - return evts; - }; - var _events = events.split(" "); - for (var endx = 0; endx < _events.length; endx++) { - var nsEvent = _events[endx].split("."), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]); - for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) { - removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler); - } - } - } - return this; - }, - trigger: function(events) { - if (isValidElement(this[0])) { - var eventRegistry = this[0].eventRegistry, elem = this[0]; - var _events = typeof events === "string" ? events.split(" ") : [ events.type ]; - for (var endx = 0; endx < _events.length; endx++) { - var nsEvent = _events[endx].split("."), ev = nsEvent[0], namespace = nsEvent[1] || "global"; - if (document !== undefined && namespace === "global") { - var evnt, i, params = { - bubbles: true, - cancelable: true, - detail: arguments[1] - }; - if (document.createEvent) { - try { - evnt = new CustomEvent(ev, params); - } catch (e) { - evnt = document.createEvent("CustomEvent"); - evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail); - } - if (events.type) DependencyLib.extend(evnt, events); - elem.dispatchEvent(evnt); - } else { - evnt = document.createEventObject(); - evnt.eventType = ev; - evnt.detail = arguments[1]; - if (events.type) DependencyLib.extend(evnt, events); - elem.fireEvent("on" + evnt.eventType, evnt); - } - } else if (eventRegistry[ev] !== undefined) { - arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]); - if (namespace === "global") { - for (var nmsp in eventRegistry[ev]) { - for (i = 0; i < eventRegistry[ev][nmsp].length; i++) { - eventRegistry[ev][nmsp][i].apply(elem, arguments); - } - } - } else { - for (i = 0; i < eventRegistry[ev][namespace].length; i++) { - eventRegistry[ev][namespace][i].apply(elem, arguments); - } - } - } - } - } - return this; - } - }; - DependencyLib.isFunction = function(obj) { - return typeof obj === "function"; - }; - DependencyLib.noop = function() {}; - DependencyLib.isArray = Array.isArray; - DependencyLib.inArray = function(elem, arr, i) { - return arr == null ? -1 : indexOf(arr, elem, i); - }; - DependencyLib.valHooks = undefined; - DependencyLib.isPlainObject = function(obj) { - if (typeof obj !== "object" || obj.nodeType || isWindow(obj)) { - return false; - } - if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - return true; - }; - DependencyLib.extend = function() { - var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; - if (typeof target === "boolean") { - deep = target; - target = arguments[i] || {}; - i++; - } - if (typeof target !== "object" && !DependencyLib.isFunction(target)) { - target = {}; - } - if (i === length) { - target = this; - i--; - } - for (;i < length; i++) { - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name]; - copy = options[name]; - if (target === copy) { - continue; - } - if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && DependencyLib.isArray(src) ? src : []; - } else { - clone = src && DependencyLib.isPlainObject(src) ? src : {}; - } - target[name] = DependencyLib.extend(deep, clone, copy); - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - return target; - }; - DependencyLib.each = function(obj, callback) { - var value, i = 0; - if (isArraylike(obj)) { - for (var length = obj.length; i < length; i++) { - value = callback.call(obj[i], i, obj[i]); - if (value === false) { - break; - } - } - } else { - for (i in obj) { - value = callback.call(obj[i], i, obj[i]); - if (value === false) { - break; - } - } - } - return obj; - }; - DependencyLib.data = function(owner, key, value) { - if (value === undefined) { - return owner.__data ? owner.__data[key] : null; - } else { - owner.__data = owner.__data || {}; - owner.__data[key] = value; - } - }; - if (typeof window.CustomEvent === "function") { - DependencyLib.Event = window.CustomEvent; - } else { - DependencyLib.Event = function(event, params) { - params = params || { - bubbles: false, - cancelable: false, - detail: undefined - }; - var evt = document.createEvent("CustomEvent"); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - }; - DependencyLib.Event.prototype = window.Event.prototype; - } - return DependencyLib; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/global/window.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/global/window.js deleted file mode 100644 index 773598a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/global/window.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! -* global/window.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -if (typeof define === "function" && define.amd) define(function() { - return typeof window !== "undefined" ? window : new (eval("require('jsdom').JSDOM"))("").window; -}); else if (typeof exports === "object") module.exports = typeof window !== "undefined" ? window : new (eval("require('jsdom').JSDOM"))("").window; \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.date.extensions.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.date.extensions.js deleted file mode 100644 index cfabec9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.date.extensions.js +++ /dev/null @@ -1,252 +0,0 @@ -/*! -* inputmask.date.extensions.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "./inputmask" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("./inputmask")); - } else { - factory(window.Inputmask); - } -})(function(Inputmask) { - var $ = Inputmask.dependencyLib; - var formatCode = { - d: [ "[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", Date.prototype.getDate ], - dd: [ "0[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", function() { - return pad(Date.prototype.getDate.call(this), 2); - } ], - ddd: [ "" ], - dddd: [ "" ], - m: [ "[1-9]|1[012]", Date.prototype.setMonth, "month", function() { - return Date.prototype.getMonth.call(this) + 1; - } ], - mm: [ "0[1-9]|1[012]", Date.prototype.setMonth, "month", function() { - return pad(Date.prototype.getMonth.call(this) + 1, 2); - } ], - mmm: [ "" ], - mmmm: [ "" ], - yy: [ "[0-9]{2}", Date.prototype.setFullYear, "year", function() { - return pad(Date.prototype.getFullYear.call(this), 2); - } ], - yyyy: [ "[0-9]{4}", Date.prototype.setFullYear, "year", function() { - return pad(Date.prototype.getFullYear.call(this), 4); - } ], - h: [ "[1-9]|1[0-2]", Date.prototype.setHours, "hours", Date.prototype.getHours ], - hh: [ "0[1-9]|1[0-2]", Date.prototype.setHours, "hours", function() { - return pad(Date.prototype.getHours.call(this), 2); - } ], - hhh: [ "[0-9]+", Date.prototype.setHours, "hours", Date.prototype.getHours ], - H: [ "1?[0-9]|2[0-3]", Date.prototype.setHours, "hours", Date.prototype.getHours ], - HH: [ "0[0-9]|1[0-9]|2[0-3]", Date.prototype.setHours, "hours", function() { - return pad(Date.prototype.getHours.call(this), 2); - } ], - HHH: [ "[0-9]+", Date.prototype.setHours, "hours", Date.prototype.getHours ], - M: [ "[1-5]?[0-9]", Date.prototype.setMinutes, "minutes", Date.prototype.getMinutes ], - MM: [ "0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]", Date.prototype.setMinutes, "minutes", function() { - return pad(Date.prototype.getMinutes.call(this), 2); - } ], - ss: [ "[0-5][0-9]", Date.prototype.setSeconds, "seconds", function() { - return pad(Date.prototype.getSeconds.call(this), 2); - } ], - l: [ "[0-9]{3}", Date.prototype.setMilliseconds, "milliseconds", function() { - return pad(Date.prototype.getMilliseconds.call(this), 3); - } ], - L: [ "[0-9]{2}", Date.prototype.setMilliseconds, "milliseconds", function() { - return pad(Date.prototype.getMilliseconds.call(this), 2); - } ], - t: [ "[ap]" ], - tt: [ "[ap]m" ], - T: [ "[AP]" ], - TT: [ "[AP]M" ], - Z: [ "" ], - o: [ "" ], - S: [ "" ] - }, formatAlias = { - isoDate: "yyyy-mm-dd", - isoTime: "HH:MM:ss", - isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", - isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" - }; - function getTokenizer(opts) { - if (!opts.tokenizer) { - var tokens = []; - for (var ndx in formatCode) { - if (tokens.indexOf(ndx[0]) === -1) tokens.push(ndx[0]); - } - opts.tokenizer = "(" + tokens.join("+|") + ")+?|."; - opts.tokenizer = new RegExp(opts.tokenizer, "g"); - } - return opts.tokenizer; - } - function isValidDate(dateParts, currentResult) { - return !isFinite(dateParts.rawday) || dateParts.day == "29" && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day ? currentResult : false; - } - function isDateInRange(dateParts, opts) { - var result = true; - if (opts.min) { - if (dateParts["rawyear"]) { - var rawYear = dateParts["rawyear"].replace(/[^0-9]/g, ""), minYear = opts.min.year.substr(0, rawYear.length); - result = minYear <= rawYear; - } - if (dateParts["year"] === dateParts["rawyear"]) { - if (opts.min.date.getTime() === opts.min.date.getTime()) { - result = opts.min.date.getTime() <= dateParts.date.getTime(); - } - } - } - if (result && opts.max && opts.max.date.getTime() === opts.max.date.getTime()) { - result = opts.max.date.getTime() >= dateParts.date.getTime(); - } - return result; - } - function parse(format, dateObjValue, opts, raw) { - var mask = "", match; - while (match = getTokenizer(opts).exec(format)) { - if (dateObjValue === undefined) { - if (formatCode[match[0]]) { - mask += "(" + formatCode[match[0]][0] + ")"; - } else { - switch (match[0]) { - case "[": - mask += "("; - break; - - case "]": - mask += ")?"; - break; - - default: - mask += Inputmask.escapeRegex(match[0]); - } - } - } else { - if (formatCode[match[0]]) { - if (raw !== true && formatCode[match[0]][3]) { - var getFn = formatCode[match[0]][3]; - mask += getFn.call(dateObjValue.date); - } else if (formatCode[match[0]][2]) mask += dateObjValue["raw" + formatCode[match[0]][2]]; else mask += match[0]; - } else mask += match[0]; - } - } - return mask; - } - function pad(val, len) { - val = String(val); - len = len || 2; - while (val.length < len) val = "0" + val; - return val; - } - function analyseMask(maskString, format, opts) { - var dateObj = { - date: new Date(1, 0, 1) - }, targetProp, mask = maskString, match, dateOperation, targetValidator; - function extendProperty(value) { - var correctedValue = value.replace(/[^0-9]/g, "0"); - if (correctedValue != value) { - var enteredPart = value.replace(/[^0-9]/g, ""), min = (opts.min && opts.min[targetProp] || value).toString(), max = (opts.max && opts.max[targetProp] || value).toString(); - correctedValue = enteredPart + (enteredPart < min.slice(0, enteredPart.length) ? min.slice(enteredPart.length) : enteredPart > max.slice(0, enteredPart.length) ? max.slice(enteredPart.length) : correctedValue.toString().slice(enteredPart.length)); - } - return correctedValue; - } - function setValue(dateObj, value, opts) { - dateObj[targetProp] = extendProperty(value); - dateObj["raw" + targetProp] = value; - if (dateOperation !== undefined) dateOperation.call(dateObj.date, targetProp == "month" ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]); - } - if (typeof mask === "string") { - while (match = getTokenizer(opts).exec(format)) { - var value = mask.slice(0, match[0].length); - if (formatCode.hasOwnProperty(match[0])) { - targetValidator = formatCode[match[0]][0]; - targetProp = formatCode[match[0]][2]; - dateOperation = formatCode[match[0]][1]; - setValue(dateObj, value, opts); - } - mask = mask.slice(value.length); - } - return dateObj; - } else if (mask && typeof mask === "object" && mask.hasOwnProperty("date")) { - return mask; - } - return undefined; - } - Inputmask.extendAliases({ - datetime: { - mask: function(opts) { - formatCode.S = opts.i18n.ordinalSuffix.join("|"); - opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat; - opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat; - opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat; - opts.placeholder = opts.placeholder !== "" ? opts.placeholder : opts.inputFormat.replace(/[\[\]]/, ""); - opts.regex = parse(opts.inputFormat, undefined, opts); - return null; - }, - placeholder: "", - inputFormat: "isoDateTime", - displayFormat: undefined, - outputFormat: undefined, - min: null, - max: null, - i18n: { - dayNames: [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ], - monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], - ordinalSuffix: [ "st", "nd", "rd", "th" ] - }, - postValidation: function(buffer, pos, currentResult, opts) { - opts.min = analyseMask(opts.min, opts.inputFormat, opts); - opts.max = analyseMask(opts.max, opts.inputFormat, opts); - var result = currentResult, dateParts = analyseMask(buffer.join(""), opts.inputFormat, opts); - if (result && dateParts.date.getTime() === dateParts.date.getTime()) { - result = isValidDate(dateParts, result); - result = result && isDateInRange(dateParts, opts); - } - if (pos && result && currentResult.pos !== pos) { - return { - buffer: parse(opts.inputFormat, dateParts, opts), - refreshFromBuffer: { - start: pos, - end: currentResult.pos - } - }; - } - return result; - }, - onKeyDown: function(e, buffer, caretPos, opts) { - var input = this; - if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { - var today = new Date(), match, date = ""; - while (match = getTokenizer(opts).exec(opts.inputFormat)) { - if (match[0].charAt(0) === "d") { - date += pad(today.getDate(), match[0].length); - } else if (match[0].charAt(0) === "m") { - date += pad(today.getMonth() + 1, match[0].length); - } else if (match[0] === "yyyy") { - date += today.getFullYear().toString(); - } else if (match[0].charAt(0) === "y") { - date += pad(today.getYear(), match[0].length); - } - } - input.inputmask._valueSet(date); - $(input).trigger("setvalue"); - } - }, - onUnMask: function(maskedValue, unmaskedValue, opts) { - return parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, true); - }, - casing: function(elem, test, pos, validPositions) { - if (test.nativeDef.indexOf("[ap]") == 0) return elem.toLowerCase(); - if (test.nativeDef.indexOf("[AP]") == 0) return elem.toUpperCase(); - return elem; - }, - insertMode: false, - shiftPositions: false - } - }); - return Inputmask; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.extensions.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.extensions.js deleted file mode 100644 index a83c5b1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.extensions.js +++ /dev/null @@ -1,97 +0,0 @@ -/*! -* inputmask.extensions.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "./inputmask" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("./inputmask")); - } else { - factory(window.Inputmask); - } -})(function(Inputmask) { - Inputmask.extendDefinitions({ - A: { - validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - casing: "upper" - }, - "&": { - validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - casing: "upper" - }, - "#": { - validator: "[0-9A-Fa-f]", - casing: "upper" - } - }); - Inputmask.extendAliases({ - cssunit: { - regex: "[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)" - }, - url: { - regex: "(https?|ftp)//.*", - autoUnmask: false - }, - ip: { - mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", - definitions: { - i: { - validator: function(chrs, maskset, pos, strict, opts) { - if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") { - chrs = maskset.buffer[pos - 1] + chrs; - if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") { - chrs = maskset.buffer[pos - 2] + chrs; - } else chrs = "0" + chrs; - } else chrs = "00" + chrs; - return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); - } - } - }, - onUnMask: function(maskedValue, unmaskedValue, opts) { - return maskedValue; - }, - inputmode: "numeric" - }, - email: { - mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]", - greedy: false, - casing: "lower", - onBeforePaste: function(pastedValue, opts) { - pastedValue = pastedValue.toLowerCase(); - return pastedValue.replace("mailto:", ""); - }, - definitions: { - "*": { - validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]" - }, - "-": { - validator: "[0-9A-Za-z-]" - } - }, - onUnMask: function(maskedValue, unmaskedValue, opts) { - return maskedValue; - }, - inputmode: "email" - }, - mac: { - mask: "##:##:##:##:##:##" - }, - vin: { - mask: "V{13}9{4}", - definitions: { - V: { - validator: "[A-HJ-NPR-Za-hj-npr-z\\d]", - casing: "upper" - } - }, - clearIncomplete: true, - autoUnmask: true - } - }); - return Inputmask; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.js deleted file mode 100644 index 662a1cb..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.js +++ /dev/null @@ -1,2745 +0,0 @@ -/*! -* inputmask.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "./dependencyLibs/inputmask.dependencyLib", "./global/window" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("./dependencyLibs/inputmask.dependencyLib"), require("./global/window")); - } else { - window.Inputmask = factory(window.dependencyLib || jQuery, window); - } -})(function($, window, undefined) { - var document = window.document, ua = navigator.userAgent, ie = ua.indexOf("MSIE ") > 0 || ua.indexOf("Trident/") > 0, mobile = isInputEventSupported("touchstart"), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile; - function Inputmask(alias, options, internal) { - if (!(this instanceof Inputmask)) { - return new Inputmask(alias, options, internal); - } - this.el = undefined; - this.events = {}; - this.maskset = undefined; - this.refreshValue = false; - if (internal !== true) { - if ($.isPlainObject(alias)) { - options = alias; - } else { - options = options || {}; - if (alias) options.alias = alias; - } - this.opts = $.extend(true, {}, this.defaults, options); - this.noMasksCache = options && options.definitions !== undefined; - this.userOptions = options || {}; - this.isRTL = this.opts.numericInput; - resolveAlias(this.opts.alias, options, this.opts); - } - } - Inputmask.prototype = { - dataAttribute: "data-inputmask", - defaults: { - placeholder: "_", - optionalmarker: [ "[", "]" ], - quantifiermarker: [ "{", "}" ], - groupmarker: [ "(", ")" ], - alternatormarker: "|", - escapeChar: "\\", - mask: null, - regex: null, - oncomplete: $.noop, - onincomplete: $.noop, - oncleared: $.noop, - repeat: 0, - greedy: false, - autoUnmask: false, - removeMaskOnSubmit: false, - clearMaskOnLostFocus: true, - insertMode: true, - clearIncomplete: false, - alias: null, - onKeyDown: $.noop, - onBeforeMask: null, - onBeforePaste: function(pastedValue, opts) { - return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue; - }, - onBeforeWrite: null, - onUnMask: null, - showMaskOnFocus: true, - showMaskOnHover: true, - onKeyValidation: $.noop, - skipOptionalPartCharacter: " ", - numericInput: false, - rightAlign: false, - undoOnEscape: true, - radixPoint: "", - _radixDance: false, - groupSeparator: "", - keepStatic: null, - positionCaretOnTab: true, - tabThrough: false, - supportsInputType: [ "text", "tel", "url", "password", "search" ], - ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ], - isComplete: null, - preValidation: null, - postValidation: null, - staticDefinitionSymbol: undefined, - jitMasking: false, - nullable: true, - inputEventOnly: false, - noValuePatching: false, - positionCaretOnClick: "lvp", - casing: null, - inputmode: "verbatim", - colorMask: false, - disablePredictiveText: false, - importDataAttributes: true, - shiftPositions: true - }, - definitions: { - 9: { - validator: "[0-9\uff11-\uff19]", - definitionSymbol: "*" - }, - a: { - validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - definitionSymbol: "*" - }, - "*": { - validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]" - } - }, - aliases: {}, - masksCache: {}, - mask: function(elems) { - var that = this; - function importAttributeOptions(npt, opts, userOptions, dataAttribute) { - if (opts.importDataAttributes === true) { - var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p; - var importOption = function(option, optionData) { - optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + "-" + option); - if (optionData !== null) { - if (typeof optionData === "string") { - if (option.indexOf("on") === 0) optionData = window[optionData]; else if (optionData === "false") optionData = false; else if (optionData === "true") optionData = true; - } - userOptions[option] = optionData; - } - }; - if (attrOptions && attrOptions !== "") { - attrOptions = attrOptions.replace(/'/g, '"'); - dataoptions = JSON.parse("{" + attrOptions + "}"); - } - if (dataoptions) { - optionData = undefined; - for (p in dataoptions) { - if (p.toLowerCase() === "alias") { - optionData = dataoptions[p]; - break; - } - } - } - importOption("alias", optionData); - if (userOptions.alias) { - resolveAlias(userOptions.alias, userOptions, opts); - } - for (option in opts) { - if (dataoptions) { - optionData = undefined; - for (p in dataoptions) { - if (p.toLowerCase() === option.toLowerCase()) { - optionData = dataoptions[p]; - break; - } - } - } - importOption(option, optionData); - } - } - $.extend(true, opts, userOptions); - if (npt.dir === "rtl" || opts.rightAlign) { - npt.style.textAlign = "right"; - } - if (npt.dir === "rtl" || opts.numericInput) { - npt.dir = "ltr"; - npt.removeAttribute("dir"); - opts.isRTL = true; - } - return Object.keys(userOptions).length; - } - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - var scopedOpts = $.extend(true, {}, that.opts); - if (importAttributeOptions(el, scopedOpts, $.extend(true, {}, that.userOptions), that.dataAttribute)) { - var maskset = generateMaskSet(scopedOpts, that.noMasksCache); - if (maskset !== undefined) { - if (el.inputmask !== undefined) { - el.inputmask.opts.autoUnmask = true; - el.inputmask.remove(); - } - el.inputmask = new Inputmask(undefined, undefined, true); - el.inputmask.opts = scopedOpts; - el.inputmask.noMasksCache = that.noMasksCache; - el.inputmask.userOptions = $.extend(true, {}, that.userOptions); - el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput; - el.inputmask.el = el; - el.inputmask.maskset = maskset; - $.data(el, "_inputmask_opts", scopedOpts); - maskScope.call(el.inputmask, { - action: "mask" - }); - } - } - }); - return elems && elems[0] ? elems[0].inputmask || this : this; - }, - option: function(options, noremask) { - if (typeof options === "string") { - return this.opts[options]; - } else if (typeof options === "object") { - $.extend(this.userOptions, options); - if (this.el && noremask !== true) { - this.mask(this.el); - } - return this; - } - }, - unmaskedvalue: function(value) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "unmaskedvalue", - value: value - }); - }, - remove: function() { - return maskScope.call(this, { - action: "remove" - }); - }, - getemptymask: function() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "getemptymask" - }); - }, - hasMaskedValue: function() { - return !this.opts.autoUnmask; - }, - isComplete: function() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "isComplete" - }); - }, - getmetadata: function() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "getmetadata" - }); - }, - isValid: function(value) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "isValid", - value: value - }); - }, - format: function(value, metadata) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "format", - value: value, - metadata: metadata - }); - }, - setValue: function(value) { - if (this.el) { - $(this.el).trigger("setvalue", [ value ]); - } - }, - analyseMask: function(mask, regexMask, opts) { - var tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?(?:\|[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, regexTokenizer = /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, escaped = false, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, groupToken; - function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) { - this.matches = []; - this.openGroup = isGroup || false; - this.alternatorGroup = false; - this.isGroup = isGroup || false; - this.isOptional = isOptional || false; - this.isQuantifier = isQuantifier || false; - this.isAlternator = isAlternator || false; - this.quantifier = { - min: 1, - max: 1 - }; - } - function insertTestDefinition(mtoken, element, position) { - position = position !== undefined ? position : mtoken.matches.length; - var prevMatch = mtoken.matches[position - 1]; - if (regexMask) { - if (element.indexOf("[") === 0 || escaped && /\\d|\\s|\\w]/i.test(element) || element === ".") { - mtoken.matches.splice(position++, 0, { - fn: new RegExp(element, opts.casing ? "i" : ""), - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== element, - casing: null, - def: element, - placeholder: undefined, - nativeDef: element - }); - } else { - if (escaped) element = element[element.length - 1]; - $.each(element.split(""), function(ndx, lmnt) { - prevMatch = mtoken.matches[position - 1]; - mtoken.matches.splice(position++, 0, { - fn: null, - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== lmnt && prevMatch.fn !== null, - casing: null, - def: opts.staticDefinitionSymbol || lmnt, - placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined, - nativeDef: (escaped ? "'" : "") + lmnt - }); - }); - } - escaped = false; - } else { - var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element]; - if (maskdef && !escaped) { - mtoken.matches.splice(position++, 0, { - fn: maskdef.validator ? typeof maskdef.validator == "string" ? new RegExp(maskdef.validator, opts.casing ? "i" : "") : new function() { - this.test = maskdef.validator; - }() : new RegExp("."), - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== (maskdef.definitionSymbol || element), - casing: maskdef.casing, - def: maskdef.definitionSymbol || element, - placeholder: maskdef.placeholder, - nativeDef: element - }); - } else { - mtoken.matches.splice(position++, 0, { - fn: null, - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== element && prevMatch.fn !== null, - casing: null, - def: opts.staticDefinitionSymbol || element, - placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined, - nativeDef: (escaped ? "'" : "") + element - }); - escaped = false; - } - } - } - function verifyGroupMarker(maskToken) { - if (maskToken && maskToken.matches) { - $.each(maskToken.matches, function(ndx, token) { - var nextToken = maskToken.matches[ndx + 1]; - if ((nextToken === undefined || (nextToken.matches === undefined || nextToken.isQuantifier === false)) && token && token.isGroup) { - token.isGroup = false; - if (!regexMask) { - insertTestDefinition(token, opts.groupmarker[0], 0); - if (token.openGroup !== true) { - insertTestDefinition(token, opts.groupmarker[1]); - } - } - } - verifyGroupMarker(token); - }); - } - } - function defaultCase() { - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - insertTestDefinition(currentOpeningToken, m); - if (currentOpeningToken.isAlternator) { - alternator = openenings.pop(); - for (var mndx = 0; mndx < alternator.matches.length; mndx++) { - if (alternator.matches[mndx].isGroup) alternator.matches[mndx].isGroup = false; - } - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(alternator); - } else { - currentToken.matches.push(alternator); - } - } - } else { - insertTestDefinition(currentToken, m); - } - } - function reverseTokens(maskToken) { - function reverseStatic(st) { - if (st === opts.optionalmarker[0]) st = opts.optionalmarker[1]; else if (st === opts.optionalmarker[1]) st = opts.optionalmarker[0]; else if (st === opts.groupmarker[0]) st = opts.groupmarker[1]; else if (st === opts.groupmarker[1]) st = opts.groupmarker[0]; - return st; - } - maskToken.matches = maskToken.matches.reverse(); - for (var match in maskToken.matches) { - if (maskToken.matches.hasOwnProperty(match)) { - var intMatch = parseInt(match); - if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) { - var qt = maskToken.matches[match]; - maskToken.matches.splice(match, 1); - maskToken.matches.splice(intMatch + 1, 0, qt); - } - if (maskToken.matches[match].matches !== undefined) { - maskToken.matches[match] = reverseTokens(maskToken.matches[match]); - } else { - maskToken.matches[match] = reverseStatic(maskToken.matches[match]); - } - } - } - return maskToken; - } - function groupify(matches) { - var groupToken = new MaskToken(true); - groupToken.openGroup = false; - groupToken.matches = matches; - return groupToken; - } - if (regexMask) { - opts.optionalmarker[0] = undefined; - opts.optionalmarker[1] = undefined; - } - while (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask)) { - m = match[0]; - if (regexMask) { - switch (m.charAt(0)) { - case "?": - m = "{0,1}"; - break; - - case "+": - case "*": - m = "{" + m + "}"; - break; - } - } - if (escaped) { - defaultCase(); - continue; - } - switch (m.charAt(0)) { - case "(?=": - break; - - case "(?!": - break; - - case "(?<=": - break; - - case "(? 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(openingToken); - if (currentOpeningToken.isAlternator) { - alternator = openenings.pop(); - for (var mndx = 0; mndx < alternator.matches.length; mndx++) { - alternator.matches[mndx].isGroup = false; - alternator.matches[mndx].alternatorGroup = false; - } - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(alternator); - } else { - currentToken.matches.push(alternator); - } - } - } else { - currentToken.matches.push(openingToken); - } - } else defaultCase(); - break; - - case opts.optionalmarker[0]: - openenings.push(new MaskToken(false, true)); - break; - - case opts.groupmarker[0]: - openenings.push(new MaskToken(true)); - break; - - case opts.quantifiermarker[0]: - var quantifier = new MaskToken(false, false, true); - m = m.replace(/[{}]/g, ""); - var mqj = m.split("|"), mq = mqj[0].split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); - if (mq0 === "*" || mq0 === "+") { - mq0 = mq1 === "*" ? 0 : 1; - } - quantifier.quantifier = { - min: mq0, - max: mq1, - jit: mqj[1] - }; - var matches = openenings.length > 0 ? openenings[openenings.length - 1].matches : currentToken.matches; - match = matches.pop(); - if (match.isAlternator) { - matches.push(match); - matches = match.matches; - var groupToken = new MaskToken(true); - var tmpMatch = matches.pop(); - matches.push(groupToken); - matches = groupToken.matches; - match = tmpMatch; - } - if (!match.isGroup) { - match = groupify([ match ]); - } - matches.push(match); - matches.push(quantifier); - break; - - case opts.alternatormarker: - var groupQuantifier = function(matches) { - var lastMatch = matches.pop(); - if (lastMatch.isQuantifier) { - lastMatch = groupify([ matches.pop(), lastMatch ]); - } - return lastMatch; - }; - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1]; - if (currentOpeningToken.openGroup && (subToken.matches === undefined || subToken.isGroup === false && subToken.isAlternator === false)) { - lastMatch = openenings.pop(); - } else { - lastMatch = groupQuantifier(currentOpeningToken.matches); - } - } else { - lastMatch = groupQuantifier(currentToken.matches); - } - if (lastMatch.isAlternator) { - openenings.push(lastMatch); - } else { - if (lastMatch.alternatorGroup) { - alternator = openenings.pop(); - lastMatch.alternatorGroup = false; - } else { - alternator = new MaskToken(false, false, false, true); - } - alternator.matches.push(lastMatch); - openenings.push(alternator); - if (lastMatch.openGroup) { - lastMatch.openGroup = false; - var alternatorGroup = new MaskToken(true); - alternatorGroup.alternatorGroup = true; - openenings.push(alternatorGroup); - } - } - break; - - default: - defaultCase(); - } - } - while (openenings.length > 0) { - openingToken = openenings.pop(); - currentToken.matches.push(openingToken); - } - if (currentToken.matches.length > 0) { - verifyGroupMarker(currentToken); - maskTokens.push(currentToken); - } - if (opts.numericInput || opts.isRTL) { - reverseTokens(maskTokens[0]); - } - return maskTokens; - }, - positionColorMask: function(input, template) { - input.style.left = template.offsetLeft + "px"; - } - }; - Inputmask.extendDefaults = function(options) { - $.extend(true, Inputmask.prototype.defaults, options); - }; - Inputmask.extendDefinitions = function(definition) { - $.extend(true, Inputmask.prototype.definitions, definition); - }; - Inputmask.extendAliases = function(alias) { - $.extend(true, Inputmask.prototype.aliases, alias); - }; - Inputmask.format = function(value, options, metadata) { - return Inputmask(options).format(value, metadata); - }; - Inputmask.unmask = function(value, options) { - return Inputmask(options).unmaskedvalue(value); - }; - Inputmask.isValid = function(value, options) { - return Inputmask(options).isValid(value); - }; - Inputmask.remove = function(elems) { - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - if (el.inputmask) el.inputmask.remove(); - }); - }; - Inputmask.setValue = function(elems, value) { - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - if (el.inputmask) el.inputmask.setValue(value); else $(el).trigger("setvalue", [ value ]); - }); - }; - Inputmask.escapeRegex = function(str) { - var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ]; - return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1"); - }; - Inputmask.keyCode = { - BACKSPACE: 8, - BACKSPACE_SAFARI: 127, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38, - X: 88, - CONTROL: 17 - }; - Inputmask.dependencyLib = $; - function resolveAlias(aliasStr, options, opts) { - var aliasDefinition = Inputmask.prototype.aliases[aliasStr]; - if (aliasDefinition) { - if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); - $.extend(true, opts, aliasDefinition); - $.extend(true, opts, options); - return true; - } else if (opts.mask === null) { - opts.mask = aliasStr; - } - return false; - } - function generateMaskSet(opts, nocache) { - function generateMask(mask, metadata, opts) { - var regexMask = false; - if (mask === null || mask === "") { - regexMask = opts.regex !== null; - if (regexMask) { - mask = opts.regex; - mask = mask.replace(/^(\^)(.*)(\$)$/, "$2"); - } else { - regexMask = true; - mask = ".*"; - } - } - if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) { - opts.placeholder = ""; - } - if (opts.repeat > 0 || opts.repeat === "*" || opts.repeat === "+") { - var repeatStart = opts.repeat === "*" ? 0 : opts.repeat === "+" ? 1 : opts.repeat; - mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + "," + opts.repeat + opts.quantifiermarker[1]; - } - var masksetDefinition, maskdefKey = regexMask ? "regex_" + opts.regex : opts.numericInput ? mask.split("").reverse().join("") : mask; - if (Inputmask.prototype.masksCache[maskdefKey] === undefined || nocache === true) { - masksetDefinition = { - mask: mask, - maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts), - validPositions: {}, - _buffer: undefined, - buffer: undefined, - tests: {}, - excludes: {}, - metadata: metadata, - maskLength: undefined, - jitOffset: {} - }; - if (nocache !== true) { - Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition; - masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]); - } - } else masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]); - return masksetDefinition; - } - var ms; - if ($.isFunction(opts.mask)) { - opts.mask = opts.mask(opts); - } - if ($.isArray(opts.mask)) { - if (opts.mask.length > 1) { - if (opts.keepStatic === null) { - opts.keepStatic = "auto"; - for (var i = 0; i < opts.mask.length; i++) { - if (opts.mask[i].charAt(0) !== opts.mask[0].charAt(0)) { - opts.keepStatic = true; - break; - } - } - } - var altMask = opts.groupmarker[0]; - $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) { - if (altMask.length > 1) { - altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0]; - } - if (msk.mask !== undefined && !$.isFunction(msk.mask)) { - altMask += msk.mask; - } else { - altMask += msk; - } - }); - altMask += opts.groupmarker[1]; - return generateMask(altMask, opts.mask, opts); - } else opts.mask = opts.mask.pop(); - } - if (opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask)) { - ms = generateMask(opts.mask.mask, opts.mask, opts); - } else { - ms = generateMask(opts.mask, opts.mask, opts); - } - return ms; - } - function isInputEventSupported(eventName) { - var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el; - if (!isSupported) { - el.setAttribute(evName, "return;"); - isSupported = typeof el[evName] === "function"; - } - el = null; - return isSupported; - } - function maskScope(actionObj, maskset, opts) { - maskset = maskset || this.maskset; - opts = opts || this.opts; - var inputmask = this, el = this.el, isRTL = this.isRTL, undoValue, $el, skipKeyPressEvent = false, skipInputEvent = false, ignorable = false, maxLength, mouseEnter = false, colorMask, originalPlaceholder; - var getMaskTemplate = function(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) { - var greedy = opts.greedy; - if (clearOptionalTail) opts.greedy = false; - minimalPos = minimalPos || 0; - var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, lvp = getLastValidPosition(); - do { - if (baseOnInput === true && getMaskSet().validPositions[pos]) { - testPos = clearOptionalTail && getMaskSet().validPositions[pos].match.optionality === true && getMaskSet().validPositions[pos + 1] === undefined && (getMaskSet().validPositions[pos].generatedInput === true || getMaskSet().validPositions[pos].input == opts.skipOptionalPartCharacter && pos > 0) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : getMaskSet().validPositions[pos]; - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - maskTemplate.push(includeMode === true ? testPos.input : includeMode === false ? test.nativeDef : getPlaceholder(pos, test)); - } else { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - var jitMasking = noJit === true ? false : opts.jitMasking !== false ? opts.jitMasking : test.jit; - if (jitMasking === false || jitMasking === undefined || typeof jitMasking === "number" && isFinite(jitMasking) && jitMasking > pos) { - maskTemplate.push(includeMode === false ? test.nativeDef : getPlaceholder(pos, test)); - } - } - if (opts.keepStatic === "auto") { - if (test.newBlockMarker && test.fn !== null) { - opts.keepStatic = pos - 1; - } - } - pos++; - } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== "") || minimalPos > pos); - if (maskTemplate[maskTemplate.length - 1] === "") { - maskTemplate.pop(); - } - if (includeMode !== false || getMaskSet().maskLength === undefined) getMaskSet().maskLength = pos - 1; - opts.greedy = greedy; - return maskTemplate; - }; - function getMaskSet() { - return maskset; - } - function resetMaskSet(soft) { - var maskset = getMaskSet(); - maskset.buffer = undefined; - if (soft !== true) { - maskset.validPositions = {}; - maskset.p = 0; - } - } - function getLastValidPosition(closestTo, strict, validPositions) { - var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions; - if (closestTo === undefined) closestTo = -1; - for (var posNdx in valids) { - var psNdx = parseInt(posNdx); - if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) { - if (psNdx <= closestTo) before = psNdx; - if (psNdx >= closestTo) after = psNdx; - } - } - return before === -1 || before == closestTo ? after : after == -1 ? before : closestTo - before < after - closestTo ? before : after; - } - function getDecisionTaker(tst) { - var decisionTaker = tst.locator[tst.alternation]; - if (typeof decisionTaker == "string" && decisionTaker.length > 0) { - decisionTaker = decisionTaker.split(",")[0]; - } - return decisionTaker !== undefined ? decisionTaker.toString() : ""; - } - function getLocator(tst, align) { - var locator = (tst.alternation != undefined ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(""); - if (locator !== "") while (locator.length < align) locator += "0"; - return locator; - } - function determineTestTemplate(pos, tests) { - pos = pos > 0 ? pos - 1 : 0; - var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch; - for (var ndx = 0; ndx < tests.length; ndx++) { - var tst = tests[ndx]; - tstLocator = getLocator(tst, targetLocator.length); - var distance = Math.abs(tstLocator - targetLocator); - if (closest === undefined || tstLocator !== "" && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && bestMatch.match.newBlockMarker === "master" && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) { - closest = distance; - bestMatch = tst; - } - } - return bestMatch; - } - function getTestTemplate(pos, ndxIntlzr, tstPs) { - return getMaskSet().validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs)); - } - function getTest(pos, tests) { - if (getMaskSet().validPositions[pos]) { - return getMaskSet().validPositions[pos]; - } - return (tests || getTests(pos))[0]; - } - function positionCanMatchDefinition(pos, def) { - var valid = false, tests = getTests(pos); - for (var tndx = 0; tndx < tests.length; tndx++) { - if (tests[tndx].match && tests[tndx].match.def === def) { - valid = true; - break; - } - } - return valid; - } - function getTests(pos, ndxIntlzr, tstPs) { - var maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = false, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : ""; - function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) { - function handleMatch(match, loopNdx, quantifierRecurse) { - function isFirstMatch(latestMatch, tokenGroup) { - var firstMatch = $.inArray(latestMatch, tokenGroup.matches) === 0; - if (!firstMatch) { - $.each(tokenGroup.matches, function(ndx, match) { - if (match.isQuantifier === true) firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]); else if (match.hasOwnProperty("matches")) firstMatch = isFirstMatch(latestMatch, match); - if (firstMatch) return false; - }); - } - return firstMatch; - } - function resolveNdxInitializer(pos, alternateNdx, targetAlternation) { - var bestMatch, indexPos; - if (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) { - $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) { - if (lmnt.mloc[alternateNdx]) { - bestMatch = lmnt; - return false; - } - var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1; - if ((indexPos === undefined || ndxPos < indexPos) && ndxPos !== -1) { - bestMatch = lmnt; - indexPos = ndxPos; - } - }); - } - if (bestMatch) { - var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation]; - var locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator; - return locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1); - } else { - return targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined; - } - } - function isSubsetOf(source, target) { - function expand(pattern) { - var expanded = [], start, end; - for (var i = 0, l = pattern.length; i < l; i++) { - if (pattern.charAt(i) === "-") { - end = pattern.charCodeAt(i + 1); - while (++start < end) expanded.push(String.fromCharCode(start)); - } else { - start = pattern.charCodeAt(i); - expanded.push(pattern.charAt(i)); - } - } - return expanded.join(""); - } - if (opts.regex && source.match.fn !== null && target.match.fn !== null) { - return expand(target.match.def.replace(/[\[\]]/g, "")).indexOf(expand(source.match.def.replace(/[\[\]]/g, ""))) !== -1; - } - return source.match.def === target.match.nativeDef; - } - function staticCanMatchDefinition(source, target) { - var sloc = source.locator.slice(source.alternation).join(""), tloc = target.locator.slice(target.alternation).join(""), canMatch = sloc == tloc; - canMatch = canMatch && source.match.fn === null && target.match.fn !== null ? target.match.fn.test(source.match.def, getMaskSet(), pos, false, opts, false) : false; - return canMatch; - } - function setMergeLocators(targetMatch, altMatch) { - if (altMatch === undefined || targetMatch.alternation === altMatch.alternation && targetMatch.locator[targetMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) { - targetMatch.mloc = targetMatch.mloc || {}; - var locNdx = targetMatch.locator[targetMatch.alternation]; - if (locNdx === undefined) targetMatch.alternation = undefined; else { - if (typeof locNdx === "string") locNdx = locNdx.split(",")[0]; - if (targetMatch.mloc[locNdx] === undefined) targetMatch.mloc[locNdx] = targetMatch.locator.slice(); - if (altMatch !== undefined) { - for (var ndx in altMatch.mloc) { - if (typeof ndx === "string") ndx = ndx.split(",")[0]; - if (targetMatch.mloc[ndx] === undefined) targetMatch.mloc[ndx] = altMatch.mloc[ndx]; - } - targetMatch.locator[targetMatch.alternation] = Object.keys(targetMatch.mloc).join(","); - } - return true; - } - } - return false; - } - if (testPos > 500 && quantifierRecurse !== undefined) { - throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask; - } - if (testPos === pos && match.matches === undefined) { - matches.push({ - match: match, - locator: loopNdx.reverse(), - cd: cacheDependency, - mloc: {} - }); - return true; - } else if (match.matches !== undefined) { - if (match.isGroup && quantifierRecurse !== match) { - match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse); - if (match) return true; - } else if (match.isOptional) { - var optionalToken = match; - match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse); - if (match) { - $.each(matches, function(ndx, mtch) { - mtch.match.optionality = true; - }); - latestMatch = matches[matches.length - 1].match; - if (quantifierRecurse === undefined && isFirstMatch(latestMatch, optionalToken)) { - insertStop = true; - testPos = pos; - } else return true; - } - } else if (match.isAlternator) { - var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length; - var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1; - if (altIndex === -1 || typeof altIndex === "string") { - var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx; - if (typeof altIndex == "string") { - altIndexArr = altIndex.split(","); - } else { - for (amndx = 0; amndx < alternateToken.matches.length; amndx++) { - altIndexArr.push(amndx.toString()); - } - } - if (getMaskSet().excludes[pos]) { - var altIndexArrClone = altIndexArr.slice(); - for (var i = 0, el = getMaskSet().excludes[pos].length; i < el; i++) { - altIndexArr.splice(altIndexArr.indexOf(getMaskSet().excludes[pos][i].toString()), 1); - } - if (altIndexArr.length === 0) { - getMaskSet().excludes[pos] = undefined; - altIndexArr = altIndexArrClone; - } - } - if (opts.keepStatic === true || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) altIndexArr = altIndexArr.slice(0, 1); - var unMatchedAlternation = false; - for (var ndx = 0; ndx < altIndexArr.length; ndx++) { - amndx = parseInt(altIndexArr[ndx]); - matches = []; - ndxInitializer = typeof altIndex === "string" ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice() : ndxInitializerClone.slice(); - if (alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse)) match = true; else if (ndx === 0) { - unMatchedAlternation = true; - } - maltMatches = matches.slice(); - testPos = currentPos; - matches = []; - for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) { - var altMatch = maltMatches[ndx1], dropMatch = false; - altMatch.match.jit = altMatch.match.jit || unMatchedAlternation; - altMatch.alternation = altMatch.alternation || loopNdxCnt; - setMergeLocators(altMatch); - for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) { - var altMatch2 = malternateMatches[ndx2]; - if (typeof altIndex !== "string" || altMatch.alternation !== undefined && $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) { - if (altMatch.match.nativeDef === altMatch2.match.nativeDef) { - dropMatch = true; - setMergeLocators(altMatch2, altMatch); - break; - } else if (isSubsetOf(altMatch, altMatch2)) { - if (setMergeLocators(altMatch, altMatch2)) { - dropMatch = true; - malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch); - } - break; - } else if (isSubsetOf(altMatch2, altMatch)) { - setMergeLocators(altMatch2, altMatch); - break; - } else if (staticCanMatchDefinition(altMatch, altMatch2)) { - if (setMergeLocators(altMatch, altMatch2)) { - dropMatch = true; - malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch); - } - break; - } - } - } - if (!dropMatch) { - malternateMatches.push(altMatch); - } - } - } - matches = currentMatches.concat(malternateMatches); - testPos = pos; - insertStop = matches.length > 0; - match = malternateMatches.length > 0; - ndxInitializer = ndxInitializerClone.slice(); - } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse); - if (match) return true; - } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) { - var qt = match; - for (var qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) { - var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1]; - match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup); - if (match) { - latestMatch = matches[matches.length - 1].match; - latestMatch.optionalQuantifier = qndx >= qt.quantifier.min; - latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit; - if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) { - insertStop = true; - testPos = pos; - break; - } - if (latestMatch.jit) { - getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch); - } - return true; - } - } - } else { - match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse); - if (match) return true; - } - } else { - testPos++; - } - } - for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) { - if (maskToken.matches[tndx].isQuantifier !== true) { - var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse); - if (match && testPos === pos) { - return match; - } else if (testPos > pos) { - break; - } - } - } - } - function mergeLocators(pos, tests) { - var locator = []; - if (!$.isArray(tests)) tests = [ tests ]; - if (tests.length > 0) { - if (tests[0].alternation === undefined) { - locator = determineTestTemplate(pos, tests.slice()).locator.slice(); - if (locator.length === 0) locator = tests[0].locator.slice(); - } else { - $.each(tests, function(ndx, tst) { - if (tst.def !== "") { - if (locator.length === 0) locator = tst.locator.slice(); else { - for (var i = 0; i < locator.length; i++) { - if (tst.locator[i] && locator[i].toString().indexOf(tst.locator[i]) === -1) { - locator[i] += "," + tst.locator[i]; - } - } - } - } - }); - } - } - return locator; - } - if (pos > -1) { - if (ndxIntlzr === undefined) { - var previousPos = pos - 1, test; - while ((test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1) { - previousPos--; - } - if (test !== undefined && previousPos > -1) { - ndxInitializer = mergeLocators(previousPos, test); - cacheDependency = ndxInitializer.join(""); - testPos = previousPos; - } - } - if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) { - return getMaskSet().tests[pos]; - } - for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) { - var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]); - if (match && testPos === pos || testPos > pos) { - break; - } - } - } - if (matches.length === 0 || insertStop) { - matches.push({ - match: { - fn: null, - optionality: false, - casing: null, - def: "", - placeholder: "" - }, - locator: [], - mloc: {}, - cd: cacheDependency - }); - } - if (ndxIntlzr !== undefined && getMaskSet().tests[pos]) { - return $.extend(true, [], matches); - } - getMaskSet().tests[pos] = $.extend(true, [], matches); - return getMaskSet().tests[pos]; - } - function getBufferTemplate() { - if (getMaskSet()._buffer === undefined) { - getMaskSet()._buffer = getMaskTemplate(false, 1); - if (getMaskSet().buffer === undefined) getMaskSet().buffer = getMaskSet()._buffer.slice(); - } - return getMaskSet()._buffer; - } - function getBuffer(noCache) { - if (getMaskSet().buffer === undefined || noCache === true) { - getMaskSet().buffer = getMaskTemplate(true, getLastValidPosition(), true); - if (getMaskSet()._buffer === undefined) getMaskSet()._buffer = getMaskSet().buffer.slice(); - } - return getMaskSet().buffer; - } - function refreshFromBuffer(start, end, buffer) { - var i, p; - if (start === true) { - resetMaskSet(); - start = 0; - end = buffer.length; - } else { - for (i = start; i < end; i++) { - delete getMaskSet().validPositions[i]; - } - } - p = start; - for (i = start; i < end; i++) { - resetMaskSet(true); - if (buffer[i] !== opts.skipOptionalPartCharacter) { - var valResult = isValid(p, buffer[i], true, true); - if (valResult !== false) { - resetMaskSet(true); - p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1; - } - } - } - } - function casing(elem, test, pos) { - switch (opts.casing || test.casing) { - case "upper": - elem = elem.toUpperCase(); - break; - - case "lower": - elem = elem.toLowerCase(); - break; - - case "title": - var posBefore = getMaskSet().validPositions[pos - 1]; - if (pos === 0 || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE)) { - elem = elem.toUpperCase(); - } else { - elem = elem.toLowerCase(); - } - break; - - default: - if ($.isFunction(opts.casing)) { - var args = Array.prototype.slice.call(arguments); - args.push(getMaskSet().validPositions); - elem = opts.casing.apply(this, args); - } - } - return elem; - } - function checkAlternationMatch(altArr1, altArr2, na) { - var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = false, naArr = na !== undefined ? na.split(",") : [], naNdx; - for (var i = 0; i < naArr.length; i++) { - if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) { - altArr1.splice(naNdx, 1); - } - } - for (var alndx = 0; alndx < altArr1.length; alndx++) { - if ($.inArray(altArr1[alndx], altArrC) !== -1) { - isMatch = true; - break; - } - } - return isMatch; - } - function alternate(pos, c, strict, fromSetValid, rAltPos) { - var validPsClone = $.extend(true, {}, getMaskSet().validPositions), lastAlt, alternation, isValidRslt = false, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = rAltPos !== undefined ? rAltPos : getLastValidPosition(); - if (lAltPos === -1 && rAltPos === undefined) { - lastAlt = 0; - prevAltPos = getTest(lastAlt); - alternation = prevAltPos.alternation; - } else { - for (;lAltPos >= 0; lAltPos--) { - altPos = getMaskSet().validPositions[lAltPos]; - if (altPos && altPos.alternation !== undefined) { - if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) { - break; - } - lastAlt = lAltPos; - alternation = getMaskSet().validPositions[lastAlt].alternation; - prevAltPos = altPos; - } - } - } - if (alternation !== undefined) { - decisionPos = parseInt(lastAlt); - getMaskSet().excludes[decisionPos] = getMaskSet().excludes[decisionPos] || []; - if (pos !== true) { - getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos)); - } - var validInputsClone = [], staticInputsBeforePos = 0; - for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) { - validPos = getMaskSet().validPositions[i]; - if (validPos && validPos.generatedInput !== true) { - validInputsClone.push(validPos.input); - } else if (i < pos) staticInputsBeforePos++; - delete getMaskSet().validPositions[i]; - } - while (getMaskSet().excludes[decisionPos] && getMaskSet().excludes[decisionPos].length < 10) { - var posOffset = staticInputsBeforePos * -1, validInputs = validInputsClone.slice(); - getMaskSet().tests[decisionPos] = undefined; - resetMaskSet(true); - isValidRslt = true; - while (validInputs.length > 0) { - var input = validInputs.shift(); - if (!(isValidRslt = isValid(getLastValidPosition(undefined, true) + 1, input, false, fromSetValid, true))) { - break; - } - } - if (isValidRslt && c !== undefined) { - var targetLvp = getLastValidPosition(pos) + 1; - for (i = decisionPos; i < getLastValidPosition() + 1; i++) { - validPos = getMaskSet().validPositions[i]; - if ((validPos === undefined || validPos.match.fn == null) && i < pos + posOffset) { - posOffset++; - } - } - pos = pos + posOffset; - isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid, true); - } - if (!isValidRslt) { - resetMaskSet(); - prevAltPos = getTest(decisionPos); - getMaskSet().validPositions = $.extend(true, {}, validPsClone); - if (getMaskSet().excludes[decisionPos]) { - var decisionTaker = getDecisionTaker(prevAltPos); - if (getMaskSet().excludes[decisionPos].indexOf(decisionTaker) !== -1) { - isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1); - break; - } - getMaskSet().excludes[decisionPos].push(decisionTaker); - for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) delete getMaskSet().validPositions[i]; - } else { - isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1); - break; - } - } else break; - } - } - getMaskSet().excludes[decisionPos] = undefined; - return isValidRslt; - } - function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) { - function isSelection(posObj) { - return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1; - } - strict = strict === true; - var maskPos = pos; - if (pos.begin !== undefined) { - maskPos = isRTL ? pos.end : pos.begin; - } - function _isValid(position, c, strict) { - var rslt = false; - $.each(getTests(position), function(ndx, tst) { - var test = tst.match; - getBuffer(true); - rslt = test.fn != null ? test.fn.test(c, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && test.def !== "" ? { - c: getPlaceholder(position, test, true) || test.def, - pos: position - } : false; - if (rslt !== false) { - var elem = rslt.c !== undefined ? rslt.c : c, validatedPos = position; - elem = elem === opts.skipOptionalPartCharacter && test.fn === null ? getPlaceholder(position, test, true) || test.def : elem; - if (rslt.remove !== undefined) { - if (!$.isArray(rslt.remove)) rslt.remove = [ rslt.remove ]; - $.each(rslt.remove.sort(function(a, b) { - return b - a; - }), function(ndx, lmnt) { - revalidateMask({ - begin: lmnt, - end: lmnt + 1 - }); - }); - } - if (rslt.insert !== undefined) { - if (!$.isArray(rslt.insert)) rslt.insert = [ rslt.insert ]; - $.each(rslt.insert.sort(function(a, b) { - return a - b; - }), function(ndx, lmnt) { - isValid(lmnt.pos, lmnt.c, true, fromSetValid); - }); - } - if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) { - validatedPos = rslt.pos; - } - if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) { - return false; - } - if (!revalidateMask(pos, $.extend({}, tst, { - input: casing(elem, test, validatedPos) - }), fromSetValid, validatedPos)) { - rslt = false; - } - return false; - } - }); - return rslt; - } - var result = true, positionsClone = $.extend(true, {}, getMaskSet().validPositions); - if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) { - result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet()); - } - if (result === true) { - trackbackPositions(undefined, maskPos, true); - if (maxLength === undefined || maskPos < maxLength) { - result = _isValid(maskPos, c, strict); - if ((!strict || fromSetValid === true) && result === false && validateOnly !== true) { - var currentPosValid = getMaskSet().validPositions[maskPos]; - if (currentPosValid && currentPosValid.match.fn === null && (currentPosValid.match.def === c || c === opts.skipOptionalPartCharacter)) { - result = { - caret: seekNext(maskPos) - }; - } else { - if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) { - if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) { - result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict); - if (result !== false) result.caret = maskPos; - } else for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) { - result = _isValid(nPos, c, strict); - if (result !== false) { - result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result; - maskPos = nPos; - break; - } - } - } - } - } - } - if (result === false && opts.keepStatic !== false && (opts.regex == null || isComplete(getBuffer())) && !strict && fromAlternate !== true) { - result = alternate(maskPos, c, strict, fromSetValid); - } - if (result === true) { - result = { - pos: maskPos - }; - } - } - if ($.isFunction(opts.postValidation) && result !== false && !strict && fromSetValid !== true && validateOnly !== true) { - var postResult = opts.postValidation(getBuffer(true), pos.begin !== undefined ? isRTL ? pos.end : pos.begin : pos, result, opts); - if (postResult !== undefined) { - if (postResult.refreshFromBuffer && postResult.buffer) { - var refresh = postResult.refreshFromBuffer; - refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, postResult.buffer); - } - result = postResult === true ? result : postResult; - } - } - if (result && result.pos === undefined) { - result.pos = maskPos; - } - if (result === false || validateOnly === true) { - resetMaskSet(true); - getMaskSet().validPositions = $.extend(true, {}, positionsClone); - } - return result; - } - function trackbackPositions(originalPos, newPos, fillOnly) { - var result; - if (originalPos === undefined) { - for (originalPos = newPos - 1; originalPos > 0; originalPos--) { - if (getMaskSet().validPositions[originalPos]) break; - } - } - for (var ps = originalPos; ps < newPos; ps++) { - if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, true)) { - var vp = ps == 0 ? getTest(ps) : getMaskSet().validPositions[ps - 1]; - if (vp) { - var tests = getTests(ps).slice(); - if (tests[tests.length - 1].match.def === "") tests.pop(); - var bestMatch = determineTestTemplate(ps, tests); - bestMatch = $.extend({}, bestMatch, { - input: getPlaceholder(ps, bestMatch.match, true) || bestMatch.match.def - }); - bestMatch.generatedInput = true; - revalidateMask(ps, bestMatch, true); - if (fillOnly !== true) { - var cvpInput = getMaskSet().validPositions[newPos].input; - getMaskSet().validPositions[newPos] = undefined; - result = isValid(newPos, cvpInput, true, true); - } - } - } - } - return result; - } - function revalidateMask(pos, validTest, fromSetValid, validatedPos) { - function IsEnclosedStatic(pos, valids, selection) { - var posMatch = valids[pos]; - if (posMatch !== undefined && (posMatch.match.fn === null && posMatch.match.optionality !== true || posMatch.input === opts.radixPoint)) { - var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && valids[pos - 1].match.fn === null && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && valids[pos + 1].match.fn === null && valids[pos + 1] : valids[pos + 1]; - return prevMatch && nextMatch; - } - return false; - } - var begin = pos.begin !== undefined ? pos.begin : pos, end = pos.end !== undefined ? pos.end : pos; - if (pos.begin > pos.end) { - begin = pos.end; - end = pos.begin; - } - validatedPos = validatedPos !== undefined ? validatedPos : begin; - if (begin !== end || opts.insertMode && getMaskSet().validPositions[validatedPos] !== undefined && fromSetValid === undefined) { - var positionsClone = $.extend(true, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, true), i; - getMaskSet().p = begin; - for (i = lvp; i >= begin; i--) { - if (getMaskSet().validPositions[i] && getMaskSet().validPositions[i].match.nativeDef === "+") { - opts.isNegative = false; - } - delete getMaskSet().validPositions[i]; - } - var valid = true, j = validatedPos, vps = getMaskSet().validPositions, needsValidation = false, posMatch = j, i = j; - if (validTest) { - getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest); - posMatch++; - j++; - if (begin < end) i++; - } - for (;i <= lvp; i++) { - var t = positionsClone[i]; - if (t !== undefined && (i >= end || i >= begin && t.generatedInput !== true && IsEnclosedStatic(i, positionsClone, { - begin: begin, - end: end - }))) { - while (getTest(posMatch).match.def !== "") { - if (needsValidation === false && positionsClone[posMatch] && positionsClone[posMatch].match.nativeDef === t.match.nativeDef) { - getMaskSet().validPositions[posMatch] = $.extend(true, {}, positionsClone[posMatch]); - getMaskSet().validPositions[posMatch].input = t.input; - trackbackPositions(undefined, posMatch, true); - j = posMatch + 1; - valid = true; - } else if (opts.shiftPositions && positionCanMatchDefinition(posMatch, t.match.def)) { - var result = isValid(posMatch, t.input, true, true); - valid = result !== false; - j = result.caret || result.insert ? getLastValidPosition() : posMatch + 1; - needsValidation = true; - } else { - valid = t.generatedInput === true || t.input === opts.radixPoint && opts.numericInput === true; - } - if (valid) break; - if (!valid && posMatch > end && isMask(posMatch, true) && (t.match.fn !== null || posMatch > getMaskSet().maskLength)) { - break; - } - posMatch++; - } - if (getTest(posMatch).match.def == "") valid = false; - posMatch = j; - } - if (!valid) break; - } - if (!valid) { - getMaskSet().validPositions = $.extend(true, {}, positionsClone); - resetMaskSet(true); - return false; - } - } else if (validTest) { - getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest); - } - resetMaskSet(true); - return true; - } - function isMask(pos, strict) { - var test = getTestTemplate(pos).match; - if (test.def === "") test = getTest(pos).match; - if (test.fn != null) { - return test.fn; - } - if (strict !== true && pos > -1) { - var tests = getTests(pos); - return tests.length > 1 + (tests[tests.length - 1].match.def === "" ? 1 : 0); - } - return false; - } - function seekNext(pos, newBlock) { - var position = pos + 1; - while (getTest(position).match.def !== "" && (newBlock === true && (getTest(position).match.newBlockMarker !== true || !isMask(position)) || newBlock !== true && !isMask(position))) { - position++; - } - return position; - } - function seekPrevious(pos, newBlock) { - var position = pos, tests; - if (position <= 0) return 0; - while (--position > 0 && (newBlock === true && getTest(position).match.newBlockMarker !== true || newBlock !== true && !isMask(position) && (tests = getTests(position), - tests.length < 2 || tests.length === 2 && tests[1].match.def === ""))) {} - return position; - } - function writeBuffer(input, buffer, caretPos, event, triggerEvents) { - if (event && $.isFunction(opts.onBeforeWrite)) { - var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts); - if (result) { - if (result.refreshFromBuffer) { - var refresh = result.refreshFromBuffer; - refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, result.buffer || buffer); - buffer = getBuffer(true); - } - if (caretPos !== undefined) caretPos = result.caret !== undefined ? result.caret : caretPos; - } - } - if (input !== undefined) { - input.inputmask._valueSet(buffer.join("")); - if (caretPos !== undefined && (event === undefined || event.type !== "blur")) { - caret(input, caretPos); - } else renderColorMask(input, caretPos, buffer.length === 0); - if (triggerEvents === true) { - var $input = $(input), nptVal = input.inputmask._valueGet(); - skipInputEvent = true; - $input.trigger("input"); - setTimeout(function() { - if (nptVal === getBufferTemplate().join("")) { - $input.trigger("cleared"); - } else if (isComplete(buffer) === true) { - $input.trigger("complete"); - } - }, 0); - } - } - } - function getPlaceholder(pos, test, returnPL) { - test = test || getTest(pos).match; - if (test.placeholder !== undefined || returnPL === true) { - return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder; - } else if (test.fn === null) { - if (pos > -1 && getMaskSet().validPositions[pos] === undefined) { - var tests = getTests(pos), staticAlternations = [], prevTest; - if (tests.length > 1 + (tests[tests.length - 1].match.def === "" ? 1 : 0)) { - for (var i = 0; i < tests.length; i++) { - if (tests[i].match.optionality !== true && tests[i].match.optionalQuantifier !== true && (tests[i].match.fn === null || (prevTest === undefined || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, true, opts) !== false))) { - staticAlternations.push(tests[i]); - if (tests[i].match.fn === null) prevTest = tests[i]; - if (staticAlternations.length > 1) { - if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) { - return opts.placeholder.charAt(pos % opts.placeholder.length); - } - } - } - } - } - } - return test.def; - } - return opts.placeholder.charAt(pos % opts.placeholder.length); - } - function HandleNativePlaceholder(npt, value) { - if (ie) { - if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || npt.placeholder === "")) { - var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet(); - if (nptValue !== value) { - var lvp = getLastValidPosition(); - if (lvp === -1 && nptValue === getBufferTemplate().join("")) { - buffer = []; - } else if (lvp !== -1) { - clearOptionalTail(buffer); - } - writeBuffer(npt, buffer); - } - } - } else if (npt.placeholder !== value) { - npt.placeholder = value; - if (npt.placeholder === "") npt.removeAttribute("placeholder"); - } - } - var EventRuler = { - on: function(input, eventName, eventHandler) { - var ev = function(e) { - var that = this; - if (that.inputmask === undefined && this.nodeName !== "FORM") { - var imOpts = $.data(that, "_inputmask_opts"); - if (imOpts) new Inputmask(imOpts).mask(that); else EventRuler.off(that); - } else if (e.type !== "setvalue" && this.nodeName !== "FORM" && (that.disabled || that.readOnly && !(e.type === "keydown" && (e.ctrlKey && e.keyCode === 67) || opts.tabThrough === false && e.keyCode === Inputmask.keyCode.TAB))) { - e.preventDefault(); - } else { - switch (e.type) { - case "input": - if (skipInputEvent === true) { - skipInputEvent = false; - return e.preventDefault(); - } - if (mobile) { - var args = arguments; - setTimeout(function() { - eventHandler.apply(that, args); - caret(that, that.inputmask.caretPos, undefined, true); - }, 0); - return false; - } - break; - - case "keydown": - skipKeyPressEvent = false; - skipInputEvent = false; - break; - - case "keypress": - if (skipKeyPressEvent === true) { - return e.preventDefault(); - } - skipKeyPressEvent = true; - break; - - case "click": - if (iemobile || iphone) { - var args = arguments; - setTimeout(function() { - eventHandler.apply(that, args); - }, 0); - return false; - } - break; - } - var returnVal = eventHandler.apply(that, arguments); - if (returnVal === false) { - e.preventDefault(); - e.stopPropagation(); - } - return returnVal; - } - }; - input.inputmask.events[eventName] = input.inputmask.events[eventName] || []; - input.inputmask.events[eventName].push(ev); - if ($.inArray(eventName, [ "submit", "reset" ]) !== -1) { - if (input.form !== null) $(input.form).on(eventName, ev); - } else { - $(input).on(eventName, ev); - } - }, - off: function(input, event) { - if (input.inputmask && input.inputmask.events) { - var events; - if (event) { - events = []; - events[event] = input.inputmask.events[event]; - } else { - events = input.inputmask.events; - } - $.each(events, function(eventName, evArr) { - while (evArr.length > 0) { - var ev = evArr.pop(); - if ($.inArray(eventName, [ "submit", "reset" ]) !== -1) { - if (input.form !== null) $(input.form).off(eventName, ev); - } else { - $(input).off(eventName, ev); - } - } - delete input.inputmask.events[eventName]; - }); - } - } - }; - var EventHandlers = { - keydownEvent: function(e) { - var input = this, $input = $(input), k = e.keyCode, pos = caret(input); - if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) { - e.preventDefault(); - handleRemove(input, k, pos); - writeBuffer(input, getBuffer(true), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join("")); - } else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) { - e.preventDefault(); - var caretPos = seekNext(getLastValidPosition()); - caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, true); - } else if (k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP) { - e.preventDefault(); - caret(input, 0, e.shiftKey ? pos.begin : 0, true); - } else if ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || k === 90 && e.ctrlKey) && e.altKey !== true) { - checkVal(input, true, false, undoValue.split("")); - $input.trigger("click"); - } else if (k === Inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { - opts.insertMode = !opts.insertMode; - input.setAttribute("im-insert", opts.insertMode); - } else if (opts.tabThrough === true && k === Inputmask.keyCode.TAB) { - if (e.shiftKey === true) { - if (getTest(pos.begin).match.fn === null) { - pos.begin = seekNext(pos.begin); - } - pos.end = seekPrevious(pos.begin, true); - pos.begin = seekPrevious(pos.end, true); - } else { - pos.begin = seekNext(pos.begin, true); - pos.end = seekNext(pos.begin, true); - if (pos.end < getMaskSet().maskLength) pos.end--; - } - if (pos.begin < getMaskSet().maskLength) { - e.preventDefault(); - caret(input, pos.begin, pos.end); - } - } - opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts); - ignorable = $.inArray(k, opts.ignorables) !== -1; - }, - keypressEvent: function(e, checkval, writeOut, strict, ndx) { - var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode; - if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) { - if (k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("")) { - undoValue = getBuffer().join(""); - setTimeout(function() { - $input.trigger("change"); - }, 0); - } - return true; - } else { - if (k) { - if (k === 46 && e.shiftKey === false && opts.radixPoint !== "") k = opts.radixPoint.charCodeAt(0); - var pos = checkval ? { - begin: ndx, - end: ndx - } : caret(input), forwardPosition, c = String.fromCharCode(k), offset = 0; - if (opts._radixDance && opts.numericInput) { - var caretPos = getBuffer().indexOf(opts.radixPoint.charAt(0)) + 1; - if (pos.begin <= caretPos) { - if (k === opts.radixPoint.charCodeAt(0)) offset = 1; - pos.begin -= 1; - pos.end -= 1; - } - } - getMaskSet().writeOutBuffer = true; - var valResult = isValid(pos, c, strict); - if (valResult !== false) { - resetMaskSet(true); - forwardPosition = valResult.caret !== undefined ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos); - getMaskSet().p = forwardPosition; - } - forwardPosition = (opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition) + offset; - if (writeOut !== false) { - setTimeout(function() { - opts.onKeyValidation.call(input, k, valResult, opts); - }, 0); - if (getMaskSet().writeOutBuffer && valResult !== false) { - var buffer = getBuffer(); - writeBuffer(input, buffer, forwardPosition, e, checkval !== true); - } - } - e.preventDefault(); - if (checkval) { - if (valResult !== false) valResult.forwardPosition = forwardPosition; - return valResult; - } - } - } - }, - pasteEvent: function(e) { - var input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(true), caretPos = caret(input), tempValue; - if (isRTL) { - tempValue = caretPos.end; - caretPos.end = caretPos.begin; - caretPos.begin = tempValue; - } - var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length); - if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("")) valueBeforeCaret = ""; - if (valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("")) valueAfterCaret = ""; - if (window.clipboardData && window.clipboardData.getData) { - inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret; - } else if (ev.clipboardData && ev.clipboardData.getData) { - inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret; - } else return true; - var pasteValue = inputValue; - if ($.isFunction(opts.onBeforePaste)) { - pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts); - if (pasteValue === false) { - return e.preventDefault(); - } - if (!pasteValue) { - pasteValue = inputValue; - } - } - checkVal(input, false, false, pasteValue.toString().split("")); - writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join("")); - return e.preventDefault(); - }, - inputFallBackEvent: function(e) { - function radixPointHandler(input, inputValue, caretPos) { - if (inputValue.charAt(caretPos.begin - 1) === "." && opts.radixPoint !== "") { - inputValue = inputValue.split(""); - inputValue[caretPos.begin - 1] = opts.radixPoint.charAt(0); - inputValue = inputValue.join(""); - } - return inputValue; - } - function ieMobileHandler(input, inputValue, caretPos) { - if (iemobile) { - var inputChar = inputValue.replace(getBuffer().join(""), ""); - if (inputChar.length === 1) { - var iv = inputValue.split(""); - iv.splice(caretPos.begin, 0, inputChar); - inputValue = iv.join(""); - } - } - return inputValue; - } - var input = this, inputValue = input.inputmask._valueGet(); - if (getBuffer().join("") !== inputValue) { - var caretPos = caret(input); - inputValue = radixPointHandler(input, inputValue, caretPos); - inputValue = ieMobileHandler(input, inputValue, caretPos); - if (getBuffer().join("") !== inputValue) { - var buffer = getBuffer().join(""), offset = !opts.numericInput && inputValue.length > buffer.length ? -1 : 0, frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin + offset), backBufferPart = buffer.substr(caretPos.begin + offset); - var selection = caretPos, entries = "", isEntry = false; - if (frontPart !== frontBufferPart) { - var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i; - for (i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) ; - if (isEntry) { - selection.begin = i - offset; - entries += frontPart.slice(i, selection.end); - } - } - if (backPart !== backBufferPart) { - if (backPart.length > backBufferPart.length) { - entries += backPart.slice(0, 1); - } else { - if (backPart.length < backBufferPart.length) { - selection.end += backBufferPart.length - backPart.length; - if (!isEntry && opts.radixPoint !== "" && backPart === "" && frontPart.charAt(selection.begin + offset - 1) === opts.radixPoint) { - selection.begin--; - entries = opts.radixPoint; - } - } - } - } - writeBuffer(input, getBuffer(), { - begin: selection.begin + offset, - end: selection.end + offset - }); - if (entries.length > 0) { - $.each(entries.split(""), function(ndx, entry) { - var keypress = new $.Event("keypress"); - keypress.which = entry.charCodeAt(0); - ignorable = false; - EventHandlers.keypressEvent.call(input, keypress); - }); - } else { - if (selection.begin === selection.end - 1) { - selection.begin = seekPrevious(selection.begin + 1); - if (selection.begin === selection.end - 1) { - caret(input, selection.begin); - } else { - caret(input, selection.begin, selection.end); - } - } - var keydown = new $.Event("keydown"); - keydown.keyCode = opts.numericInput ? Inputmask.keyCode.BACKSPACE : Inputmask.keyCode.DELETE; - EventHandlers.keydownEvent.call(input, keydown); - } - e.preventDefault(); - } - } - }, - beforeInputEvent: function(e) { - if (e.cancelable) { - var input = this; - switch (e.inputType) { - case "insertText": - $.each(e.data.split(""), function(ndx, entry) { - var keypress = new $.Event("keypress"); - keypress.which = entry.charCodeAt(0); - ignorable = false; - EventHandlers.keypressEvent.call(input, keypress); - }); - return e.preventDefault(); - - case "deleteContentBackward": - var keydown = new $.Event("keydown"); - keydown.keyCode = Inputmask.keyCode.BACKSPACE; - EventHandlers.keydownEvent.call(input, keydown); - return e.preventDefault(); - - case "deleteContentForward": - var keydown = new $.Event("keydown"); - keydown.keyCode = Inputmask.keyCode.DELETE; - EventHandlers.keydownEvent.call(input, keydown); - return e.preventDefault(); - } - } - }, - setValueEvent: function(e) { - this.inputmask.refreshValue = false; - var input = this, value = e && e.detail ? e.detail[0] : arguments[1], value = value || input.inputmask._valueGet(true); - if ($.isFunction(opts.onBeforeMask)) value = opts.onBeforeMask.call(inputmask, value, opts) || value; - value = value.toString().split(""); - checkVal(input, true, false, value); - undoValue = getBuffer().join(""); - if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("")) { - input.inputmask._valueSet(""); - } - }, - focusEvent: function(e) { - var input = this, nptValue = input.inputmask._valueGet(); - if (opts.showMaskOnFocus) { - if (nptValue !== getBuffer().join("")) { - writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())); - } else if (mouseEnter === false) { - caret(input, seekNext(getLastValidPosition())); - } - } - if (opts.positionCaretOnTab === true && mouseEnter === false) { - EventHandlers.clickEvent.apply(input, [ e, true ]); - } - undoValue = getBuffer().join(""); - }, - mouseleaveEvent: function(e) { - var input = this; - mouseEnter = false; - if (opts.clearMaskOnLostFocus && document.activeElement !== input) { - HandleNativePlaceholder(input, originalPlaceholder); - } - }, - clickEvent: function(e, tabbed) { - function doRadixFocus(clickPos) { - if (opts.radixPoint !== "") { - var vps = getMaskSet().validPositions; - if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) { - if (clickPos < seekNext(-1)) return true; - var radixPos = $.inArray(opts.radixPoint, getBuffer()); - if (radixPos !== -1) { - for (var vp in vps) { - if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) { - return false; - } - } - return true; - } - } - } - return false; - } - var input = this; - setTimeout(function() { - if (document.activeElement === input) { - var selectedCaret = caret(input); - if (tabbed) { - if (isRTL) { - selectedCaret.end = selectedCaret.begin; - } else { - selectedCaret.begin = selectedCaret.end; - } - } - if (selectedCaret.begin === selectedCaret.end) { - switch (opts.positionCaretOnClick) { - case "none": - break; - - case "select": - caret(input, 0, getBuffer().length); - break; - - case "ignore": - caret(input, seekNext(getLastValidPosition())); - break; - - case "radixFocus": - if (doRadixFocus(selectedCaret.begin)) { - var radixPos = getBuffer().join("").indexOf(opts.radixPoint); - caret(input, opts.numericInput ? seekNext(radixPos) : radixPos); - break; - } - - default: - var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, true), lastPosition = seekNext(lvclickPosition); - if (clickPosition < lastPosition) { - caret(input, !isMask(clickPosition, true) && !isMask(clickPosition - 1, true) ? seekNext(clickPosition) : clickPosition); - } else { - var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match); - if (placeholder !== "" && getBuffer()[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) { - var newPos = seekNext(lastPosition); - if (clickPosition >= newPos || clickPosition === lastPosition) { - lastPosition = newPos; - } - } - caret(input, lastPosition); - } - break; - } - } - } - }, 0); - }, - cutEvent: function(e) { - var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e; - var clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end); - clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clipData.join("")); - if (document.execCommand) document.execCommand("copy"); - handleRemove(input, Inputmask.keyCode.DELETE, pos); - writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")); - }, - blurEvent: function(e) { - var $input = $(this), input = this; - if (input.inputmask) { - HandleNativePlaceholder(input, originalPlaceholder); - var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice(); - if (nptValue !== "" || colorMask !== undefined) { - if (opts.clearMaskOnLostFocus) { - if (getLastValidPosition() === -1 && nptValue === getBufferTemplate().join("")) { - buffer = []; - } else { - clearOptionalTail(buffer); - } - } - if (isComplete(buffer) === false) { - setTimeout(function() { - $input.trigger("incomplete"); - }, 0); - if (opts.clearIncomplete) { - resetMaskSet(); - if (opts.clearMaskOnLostFocus) { - buffer = []; - } else { - buffer = getBufferTemplate().slice(); - } - } - } - writeBuffer(input, buffer, undefined, e); - } - if (undoValue !== getBuffer().join("")) { - undoValue = buffer.join(""); - $input.trigger("change"); - } - } - }, - mouseenterEvent: function(e) { - var input = this; - mouseEnter = true; - if (document.activeElement !== input && opts.showMaskOnHover) { - HandleNativePlaceholder(input, (isRTL ? getBuffer().slice().reverse() : getBuffer()).join("")); - } - }, - submitEvent: function(e) { - if (undoValue !== getBuffer().join("")) { - $el.trigger("change"); - } - if (opts.clearMaskOnLostFocus && getLastValidPosition() === -1 && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("")) { - el.inputmask._valueSet(""); - } - if (opts.clearIncomplete && isComplete(getBuffer()) === false) { - el.inputmask._valueSet(""); - } - if (opts.removeMaskOnSubmit) { - el.inputmask._valueSet(el.inputmask.unmaskedvalue(), true); - setTimeout(function() { - writeBuffer(el, getBuffer()); - }, 0); - } - }, - resetEvent: function(e) { - el.inputmask.refreshValue = true; - setTimeout(function() { - $el.trigger("setvalue"); - }, 0); - } - }; - function checkVal(input, writeOut, strict, nptvl, initiatingEvent) { - var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = "", initialNdx = -1, result = undefined; - function isTemplateMatch(ndx, charCodes) { - var charCodeNdx = getMaskTemplate(true, 0, false).slice(ndx, seekNext(ndx)).join("").replace(/'/g, "").indexOf(charCodes); - return charCodeNdx !== -1 && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || getTest(ndx).match.fn === null && getTest(ndx).match.nativeDef === "'" + charCodes.charAt(0) || getTest(ndx).match.nativeDef === " " && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || getTest(ndx + 1).match.fn === null && getTest(ndx + 1).match.nativeDef === "'" + charCodes.charAt(0))); - } - resetMaskSet(); - if (!strict && opts.autoUnmask !== true) { - var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g")); - if (matches && matches.length > 0) { - inputValue.splice(0, matches.length * staticInput.length); - initialNdx = seekNext(initialNdx); - } - } else { - initialNdx = seekNext(initialNdx); - } - if (initialNdx === -1) { - getMaskSet().p = seekNext(initialNdx); - initialNdx = 0; - } else getMaskSet().p = initialNdx; - inputmask.caretPos = { - begin: initialNdx - }; - $.each(inputValue, function(ndx, charCode) { - if (charCode !== undefined) { - if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, true) && isValid(ndx, inputValue[ndx], true, undefined, undefined, true) === false) { - getMaskSet().p++; - } else { - var keypress = new $.Event("_checkval"); - keypress.which = charCode.charCodeAt(0); - charCodes += charCode; - var lvp = getLastValidPosition(undefined, true); - if (!isTemplateMatch(initialNdx, charCodes)) { - result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, inputmask.caretPos.begin); - if (result) { - initialNdx = inputmask.caretPos.begin + 1; - charCodes = ""; - } - } else { - result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, lvp + 1); - } - if (result) { - writeBuffer(undefined, getBuffer(), result.forwardPosition, keypress, false); - inputmask.caretPos = { - begin: result.forwardPosition, - end: result.forwardPosition - }; - } - } - } - }); - if (writeOut) writeBuffer(input, getBuffer(), result ? result.forwardPosition : undefined, initiatingEvent || new $.Event("checkval"), initiatingEvent && initiatingEvent.type === "input"); - } - function unmaskedvalue(input) { - if (input) { - if (input.inputmask === undefined) { - return input.value; - } - if (input.inputmask && input.inputmask.refreshValue) { - EventHandlers.setValueEvent.call(input); - } - } - var umValue = [], vps = getMaskSet().validPositions; - for (var pndx in vps) { - if (vps[pndx].match && vps[pndx].match.fn != null) { - umValue.push(vps[pndx].input); - } - } - var unmaskedValue = umValue.length === 0 ? "" : (isRTL ? umValue.reverse() : umValue).join(""); - if ($.isFunction(opts.onUnMask)) { - var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(""); - unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts); - } - return unmaskedValue; - } - function caret(input, begin, end, notranslate) { - function translatePosition(pos) { - if (isRTL && typeof pos === "number" && (!opts.greedy || opts.placeholder !== "") && el) { - pos = el.inputmask._valueGet().length - pos; - } - return pos; - } - var range; - if (begin !== undefined) { - if ($.isArray(begin)) { - end = isRTL ? begin[0] : begin[1]; - begin = isRTL ? begin[1] : begin[0]; - } - if (begin.begin !== undefined) { - end = isRTL ? begin.begin : begin.end; - begin = isRTL ? begin.end : begin.begin; - } - if (typeof begin === "number") { - begin = notranslate ? begin : translatePosition(begin); - end = notranslate ? end : translatePosition(end); - end = typeof end == "number" ? end : begin; - var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; - input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0; - input.inputmask.caretPos = { - begin: begin, - end: end - }; - if (input === document.activeElement) { - if ("selectionStart" in input) { - input.selectionStart = begin; - input.selectionEnd = end; - } else if (window.getSelection) { - range = document.createRange(); - if (input.firstChild === undefined || input.firstChild === null) { - var textNode = document.createTextNode(""); - input.appendChild(textNode); - } - range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length); - range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length); - range.collapse(true); - var sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } else if (input.createTextRange) { - range = input.createTextRange(); - range.collapse(true); - range.moveEnd("character", end); - range.moveStart("character", begin); - range.select(); - } - renderColorMask(input, { - begin: begin, - end: end - }); - } - } - } else { - if ("selectionStart" in input) { - begin = input.selectionStart; - end = input.selectionEnd; - } else if (window.getSelection) { - range = window.getSelection().getRangeAt(0); - if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) { - begin = range.startOffset; - end = range.endOffset; - } - } else if (document.selection && document.selection.createRange) { - range = document.selection.createRange(); - begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length); - end = begin + range.text.length; - } - return { - begin: notranslate ? begin : translatePosition(begin), - end: notranslate ? end : translatePosition(end) - }; - } - } - function determineLastRequiredPosition(returnDefinition) { - var buffer = getMaskTemplate(true, getLastValidPosition(), true, true), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, testPos; - for (pos = lvp + 1; pos < buffer.length; pos++) { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - ndxIntlzr = testPos.locator.slice(); - positions[pos] = $.extend(true, {}, testPos); - } - var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined; - for (pos = bl - 1; pos > lvp; pos--) { - testPos = positions[pos]; - if ((testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.fn != null || testPos.match.fn === null && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && getTests(pos)[0].def !== "")) && buffer[pos] === getPlaceholder(pos, testPos.match)) { - bl--; - } else break; - } - return returnDefinition ? { - l: bl, - def: positions[bl] ? positions[bl].match : undefined - } : bl; - } - function clearOptionalTail(buffer) { - buffer.length = 0; - var template = getMaskTemplate(true, 0, true, undefined, true), lmnt, validPos; - while (lmnt = template.shift(), lmnt !== undefined) buffer.push(lmnt); - return buffer; - } - function isComplete(buffer) { - if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts); - if (opts.repeat === "*") return undefined; - var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp.l); - if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) { - complete = true; - for (var i = 0; i <= aml; i++) { - var test = getTestTemplate(i).match; - if (test.fn !== null && getMaskSet().validPositions[i] === undefined && test.optionality !== true && test.optionalQuantifier !== true || test.fn === null && buffer[i] !== getPlaceholder(i, test)) { - complete = false; - break; - } - } - } - return complete; - } - function handleRemove(input, k, pos, strict, fromIsValid) { - if (opts.numericInput || isRTL) { - if (k === Inputmask.keyCode.BACKSPACE) { - k = Inputmask.keyCode.DELETE; - } else if (k === Inputmask.keyCode.DELETE) { - k = Inputmask.keyCode.BACKSPACE; - } - if (isRTL) { - var pend = pos.end; - pos.end = pos.begin; - pos.begin = pend; - } - } - if (k === Inputmask.keyCode.BACKSPACE && pos.end - pos.begin < 1) { - pos.begin = seekPrevious(pos.begin); - if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) { - pos.begin--; - } - } else if (k === Inputmask.keyCode.DELETE && pos.begin === pos.end) { - pos.end = isMask(pos.end, true) && (getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint) ? pos.end + 1 : seekNext(pos.end) + 1; - if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) { - pos.end++; - } - } - revalidateMask(pos); - if (strict !== true && opts.keepStatic !== false || opts.regex !== null) { - var result = alternate(true); - if (result) { - var newPos = result.caret !== undefined ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, true); - if (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) { - pos.begin == newPos; - } - } - } - var lvp = getLastValidPosition(pos.begin, true); - if (lvp < pos.begin || pos.begin === -1) { - getMaskSet().p = seekNext(lvp); - } else if (strict !== true) { - getMaskSet().p = pos.begin; - if (fromIsValid !== true) { - while (getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined) { - getMaskSet().p++; - } - } - } - } - function initializeColorMask(input) { - var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null); - function findCaretPos(clientx) { - var e = document.createElement("span"), caretPos; - for (var style in computedStyle) { - if (isNaN(style) && style.indexOf("font") !== -1) { - e.style[style] = computedStyle[style]; - } - } - e.style.textTransform = computedStyle.textTransform; - e.style.letterSpacing = computedStyle.letterSpacing; - e.style.position = "absolute"; - e.style.height = "auto"; - e.style.width = "auto"; - e.style.visibility = "hidden"; - e.style.whiteSpace = "nowrap"; - document.body.appendChild(e); - var inputText = input.inputmask._valueGet(), previousWidth = 0, itl; - for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) { - e.innerHTML += inputText.charAt(caretPos) || "_"; - if (e.offsetWidth >= clientx) { - var offset1 = clientx - previousWidth; - var offset2 = e.offsetWidth - clientx; - e.innerHTML = inputText.charAt(caretPos); - offset1 -= e.offsetWidth / 3; - caretPos = offset1 < offset2 ? caretPos - 1 : caretPos; - break; - } - previousWidth = e.offsetWidth; - } - document.body.removeChild(e); - return caretPos; - } - var template = document.createElement("div"); - template.style.width = computedStyle.width; - template.style.textAlign = computedStyle.textAlign; - colorMask = document.createElement("div"); - input.inputmask.colorMask = colorMask; - colorMask.className = "im-colormask"; - input.parentNode.insertBefore(colorMask, input); - input.parentNode.removeChild(input); - colorMask.appendChild(input); - colorMask.appendChild(template); - input.style.left = template.offsetLeft + "px"; - $(colorMask).on("mouseleave", function(e) { - return EventHandlers.mouseleaveEvent.call(input, [ e ]); - }); - $(colorMask).on("mouseenter", function(e) { - return EventHandlers.mouseenterEvent.call(input, [ e ]); - }); - $(colorMask).on("click", function(e) { - caret(input, findCaretPos(e.clientX)); - return EventHandlers.clickEvent.call(input, [ e ]); - }); - } - function renderColorMask(input, caretPos, clear) { - var maskTemplate = [], isStatic = false, test, testPos, ndxIntlzr, pos = 0; - function setEntry(entry) { - if (entry === undefined) entry = ""; - if (!isStatic && (test.fn === null || testPos.input === undefined)) { - isStatic = true; - maskTemplate.push("" + entry); - } else if (isStatic && (test.fn !== null && testPos.input !== undefined || test.def === "")) { - isStatic = false; - var mtl = maskTemplate.length; - maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + ""; - maskTemplate.push(entry); - } else maskTemplate.push(entry); - } - function setCaret() { - if (document.activeElement === input) { - maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end || caretPos.end > getMaskSet().maskLength ? '' : ''); - maskTemplate.splice(caretPos.end + 1, 0, ""); - } - } - if (colorMask !== undefined) { - var buffer = getBuffer(); - if (caretPos === undefined) { - caretPos = caret(input); - } else if (caretPos.begin === undefined) { - caretPos = { - begin: caretPos, - end: caretPos - }; - } - if (clear !== true) { - var lvp = getLastValidPosition(); - do { - if (getMaskSet().validPositions[pos]) { - testPos = getMaskSet().validPositions[pos]; - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - setEntry(buffer[pos]); - } else { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - if (opts.jitMasking === false || pos < lvp || typeof opts.jitMasking === "number" && isFinite(opts.jitMasking) && opts.jitMasking > pos) { - setEntry(getPlaceholder(pos, test)); - } else isStatic = false; - } - pos++; - } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== "") || lvp > pos || isStatic); - if (isStatic) setEntry(); - setCaret(); - } - var template = colorMask.getElementsByTagName("div")[0]; - template.innerHTML = maskTemplate.join(""); - input.inputmask.positionColorMask(input, template); - } - } - function mask(elem) { - function isElementTypeSupported(input, opts) { - function patchValueProperty(npt) { - var valueGet; - var valueSet; - function patchValhook(type) { - if ($.valHooks && ($.valHooks[type] === undefined || $.valHooks[type].inputmaskpatch !== true)) { - var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) { - return elem.value; - }; - var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) { - elem.value = value; - return elem; - }; - $.valHooks[type] = { - get: function(elem) { - if (elem.inputmask) { - if (elem.inputmask.opts.autoUnmask) { - return elem.inputmask.unmaskedvalue(); - } else { - var result = valhookGet(elem); - return getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) !== -1 || opts.nullable !== true ? result : ""; - } - } else return valhookGet(elem); - }, - set: function(elem, value) { - var $elem = $(elem), result; - result = valhookSet(elem, value); - if (elem.inputmask) { - $elem.trigger("setvalue", [ value ]); - } - return result; - }, - inputmaskpatch: true - }; - } - } - function getter() { - if (this.inputmask) { - return this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : getLastValidPosition() !== -1 || opts.nullable !== true ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : ""; - } else return valueGet.call(this); - } - function setter(value) { - valueSet.call(this, value); - if (this.inputmask) { - $(this).trigger("setvalue", [ value ]); - } - } - function installNativeValueSetFallback(npt) { - EventRuler.on(npt, "mouseenter", function(event) { - var $input = $(this), input = this, value = input.inputmask._valueGet(); - if (value !== getBuffer().join("")) { - $input.trigger("setvalue"); - } - }); - } - if (!npt.inputmask.__valueGet) { - if (opts.noValuePatching !== true) { - if (Object.getOwnPropertyDescriptor) { - if (typeof Object.getPrototypeOf !== "function") { - Object.getPrototypeOf = typeof "test".__proto__ === "object" ? function(object) { - return object.__proto__; - } : function(object) { - return object.constructor.prototype; - }; - } - var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : undefined; - if (valueProperty && valueProperty.get && valueProperty.set) { - valueGet = valueProperty.get; - valueSet = valueProperty.set; - Object.defineProperty(npt, "value", { - get: getter, - set: setter, - configurable: true - }); - } else if (npt.tagName !== "INPUT") { - valueGet = function() { - return this.textContent; - }; - valueSet = function(value) { - this.textContent = value; - }; - Object.defineProperty(npt, "value", { - get: getter, - set: setter, - configurable: true - }); - } - } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) { - valueGet = npt.__lookupGetter__("value"); - valueSet = npt.__lookupSetter__("value"); - npt.__defineGetter__("value", getter); - npt.__defineSetter__("value", setter); - } - npt.inputmask.__valueGet = valueGet; - npt.inputmask.__valueSet = valueSet; - } - npt.inputmask._valueGet = function(overruleRTL) { - return isRTL && overruleRTL !== true ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el); - }; - npt.inputmask._valueSet = function(value, overruleRTL) { - valueSet.call(this.el, value === null || value === undefined ? "" : overruleRTL !== true && isRTL ? value.split("").reverse().join("") : value); - }; - if (valueGet === undefined) { - valueGet = function() { - return this.value; - }; - valueSet = function(value) { - this.value = value; - }; - patchValhook(npt.type); - installNativeValueSetFallback(npt); - } - } - } - var elementType = input.getAttribute("type"); - var isSupported = input.tagName === "INPUT" && $.inArray(elementType, opts.supportsInputType) !== -1 || input.isContentEditable || input.tagName === "TEXTAREA"; - if (!isSupported) { - if (input.tagName === "INPUT") { - var el = document.createElement("input"); - el.setAttribute("type", elementType); - isSupported = el.type === "text"; - el = null; - } else isSupported = "partial"; - } - if (isSupported !== false) { - patchValueProperty(input); - } else input.inputmask = undefined; - return isSupported; - } - EventRuler.off(elem); - var isSupported = isElementTypeSupported(elem, opts); - if (isSupported !== false) { - el = elem; - $el = $(el); - originalPlaceholder = el.placeholder; - maxLength = el !== undefined ? el.maxLength : undefined; - if (maxLength === -1) maxLength = undefined; - if (opts.colorMask === true) { - initializeColorMask(el); - } - if (mobile) { - if ("inputMode" in el) { - el.inputmode = opts.inputmode; - el.setAttribute("inputmode", opts.inputmode); - } - if (opts.disablePredictiveText === true) { - if ("autocorrect" in el) { - el.autocorrect = false; - } else { - if (opts.colorMask !== true) { - initializeColorMask(el); - } - el.type = "password"; - } - } - } - if (isSupported === true) { - el.setAttribute("im-insert", opts.insertMode); - EventRuler.on(el, "submit", EventHandlers.submitEvent); - EventRuler.on(el, "reset", EventHandlers.resetEvent); - EventRuler.on(el, "blur", EventHandlers.blurEvent); - EventRuler.on(el, "focus", EventHandlers.focusEvent); - if (opts.colorMask !== true) { - EventRuler.on(el, "click", EventHandlers.clickEvent); - EventRuler.on(el, "mouseleave", EventHandlers.mouseleaveEvent); - EventRuler.on(el, "mouseenter", EventHandlers.mouseenterEvent); - } - EventRuler.on(el, "paste", EventHandlers.pasteEvent); - EventRuler.on(el, "cut", EventHandlers.cutEvent); - EventRuler.on(el, "complete", opts.oncomplete); - EventRuler.on(el, "incomplete", opts.onincomplete); - EventRuler.on(el, "cleared", opts.oncleared); - if (!mobile && opts.inputEventOnly !== true) { - EventRuler.on(el, "keydown", EventHandlers.keydownEvent); - EventRuler.on(el, "keypress", EventHandlers.keypressEvent); - } else { - el.removeAttribute("maxLength"); - } - EventRuler.on(el, "input", EventHandlers.inputFallBackEvent); - EventRuler.on(el, "beforeinput", EventHandlers.beforeInputEvent); - } - EventRuler.on(el, "setvalue", EventHandlers.setValueEvent); - undoValue = getBufferTemplate().join(""); - if (el.inputmask._valueGet(true) !== "" || opts.clearMaskOnLostFocus === false || document.activeElement === el) { - var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(true), opts) || el.inputmask._valueGet(true) : el.inputmask._valueGet(true); - if (initialValue !== "") checkVal(el, true, false, initialValue.split("")); - var buffer = getBuffer().slice(); - undoValue = buffer.join(""); - if (isComplete(buffer) === false) { - if (opts.clearIncomplete) { - resetMaskSet(); - } - } - if (opts.clearMaskOnLostFocus && document.activeElement !== el) { - if (getLastValidPosition() === -1) { - buffer = []; - } else { - clearOptionalTail(buffer); - } - } - if (opts.clearMaskOnLostFocus === false || opts.showMaskOnFocus && document.activeElement === el || el.inputmask._valueGet(true) !== "") writeBuffer(el, buffer); - if (document.activeElement === el) { - caret(el, seekNext(getLastValidPosition())); - } - } - } - } - var valueBuffer; - if (actionObj !== undefined) { - switch (actionObj.action) { - case "isComplete": - el = actionObj.el; - return isComplete(getBuffer()); - - case "unmaskedvalue": - if (el === undefined || actionObj.value !== undefined) { - valueBuffer = actionObj.value; - valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(""); - checkVal.call(this, undefined, false, false, valueBuffer); - if ($.isFunction(opts.onBeforeWrite)) opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts); - } - return unmaskedvalue(el); - - case "mask": - mask(el); - break; - - case "format": - valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(""); - checkVal.call(this, undefined, true, false, valueBuffer); - if (actionObj.metadata) { - return { - value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""), - metadata: maskScope.call(this, { - action: "getmetadata" - }, maskset, opts) - }; - } - return isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""); - - case "isValid": - if (actionObj.value) { - valueBuffer = actionObj.value.split(""); - checkVal.call(this, undefined, true, true, valueBuffer); - } else { - actionObj.value = getBuffer().join(""); - } - var buffer = getBuffer(); - var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; - for (;lmib > rl; lmib--) { - if (isMask(lmib)) break; - } - buffer.splice(rl, lmib + 1 - rl); - return isComplete(buffer) && actionObj.value === getBuffer().join(""); - - case "getemptymask": - return getBufferTemplate().join(""); - - case "remove": - if (el && el.inputmask) { - $.data(el, "_inputmask_opts", null); - $el = $(el); - el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(true)); - EventRuler.off(el); - if (el.inputmask.colorMask) { - colorMask = el.inputmask.colorMask; - colorMask.removeChild(el); - colorMask.parentNode.insertBefore(el, colorMask); - colorMask.parentNode.removeChild(colorMask); - } - var valueProperty; - if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) { - valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"); - if (valueProperty) { - if (el.inputmask.__valueGet) { - Object.defineProperty(el, "value", { - get: el.inputmask.__valueGet, - set: el.inputmask.__valueSet, - configurable: true - }); - } - } - } else if (document.__lookupGetter__ && el.__lookupGetter__("value")) { - if (el.inputmask.__valueGet) { - el.__defineGetter__("value", el.inputmask.__valueGet); - el.__defineSetter__("value", el.inputmask.__valueSet); - } - } - el.inputmask = undefined; - } - return el; - break; - - case "getmetadata": - if ($.isArray(maskset.metadata)) { - var maskTarget = getMaskTemplate(true, 0, false).join(""); - $.each(maskset.metadata, function(ndx, mtdt) { - if (mtdt.mask === maskTarget) { - maskTarget = mtdt; - return false; - } - }); - return maskTarget; - } - return maskset.metadata; - } - } - } - return Inputmask; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.numeric.extensions.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.numeric.extensions.js deleted file mode 100644 index 59945e3..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/inputmask.numeric.extensions.js +++ /dev/null @@ -1,553 +0,0 @@ -/*! -* inputmask.numeric.extensions.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "./inputmask" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("./inputmask")); - } else { - factory(window.Inputmask); - } -})(function(Inputmask) { - var $ = Inputmask.dependencyLib; - function autoEscape(txt, opts) { - var escapedTxt = ""; - for (var i = 0; i < txt.length; i++) { - if (Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i)) { - escapedTxt += "\\" + txt.charAt(i); - } else escapedTxt += txt.charAt(i); - } - return escapedTxt; - } - function alignDigits(buffer, digits, opts) { - if (digits > 0) { - var radixPosition = $.inArray(opts.radixPoint, buffer); - if (radixPosition === -1) { - buffer.push(opts.radixPoint); - radixPosition = buffer.length - 1; - } - for (var i = 1; i <= digits; i++) { - buffer[radixPosition + i] = buffer[radixPosition + i] || "0"; - } - } - return buffer; - } - Inputmask.extendAliases({ - numeric: { - mask: function(opts) { - if (opts.repeat !== 0 && isNaN(opts.integerDigits)) { - opts.integerDigits = opts.repeat; - } - opts.repeat = 0; - if (opts.groupSeparator === opts.radixPoint && opts.digits && opts.digits !== "0") { - if (opts.radixPoint === ".") { - opts.groupSeparator = ","; - } else if (opts.radixPoint === ",") { - opts.groupSeparator = "."; - } else opts.groupSeparator = ""; - } - if (opts.groupSeparator === " ") { - opts.skipOptionalPartCharacter = undefined; - } - opts.autoGroup = opts.autoGroup && opts.groupSeparator !== ""; - if (opts.autoGroup) { - if (typeof opts.groupSize == "string" && isFinite(opts.groupSize)) opts.groupSize = parseInt(opts.groupSize); - if (isFinite(opts.integerDigits)) { - var seps = Math.floor(opts.integerDigits / opts.groupSize); - var mod = opts.integerDigits % opts.groupSize; - opts.integerDigits = parseInt(opts.integerDigits) + (mod === 0 ? seps - 1 : seps); - if (opts.integerDigits < 1) { - opts.integerDigits = "*"; - } - } - } - if (opts.placeholder.length > 1) { - opts.placeholder = opts.placeholder.charAt(0); - } - if (opts.positionCaretOnClick === "radixFocus" && (opts.placeholder === "" && opts.integerOptional === false)) { - opts.positionCaretOnClick = "lvp"; - } - opts.definitions[";"] = opts.definitions["~"]; - opts.definitions[";"].definitionSymbol = "~"; - if (opts.numericInput === true) { - opts.positionCaretOnClick = opts.positionCaretOnClick === "radixFocus" ? "lvp" : opts.positionCaretOnClick; - opts.digitsOptional = false; - if (isNaN(opts.digits)) opts.digits = 2; - opts.decimalProtect = false; - } - var mask = "[+]"; - mask += autoEscape(opts.prefix, opts); - if (opts.integerOptional === true) { - mask += "~{1," + opts.integerDigits + "}"; - } else mask += "~{" + opts.integerDigits + "}"; - if (opts.digits !== undefined) { - var radixDef = opts.decimalProtect ? ":" : opts.radixPoint; - var dq = opts.digits.toString().split(","); - if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) { - mask += radixDef + ";{" + opts.digits + "}"; - } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) { - if (opts.digitsOptional) { - mask += "[" + radixDef + ";{1," + opts.digits + "}]"; - } else mask += radixDef + ";{" + opts.digits + "}"; - } - } - mask += autoEscape(opts.suffix, opts); - mask += "[-]"; - opts.greedy = false; - return mask; - }, - placeholder: "", - greedy: false, - digits: "*", - digitsOptional: true, - enforceDigitsOnBlur: false, - radixPoint: ".", - positionCaretOnClick: "radixFocus", - groupSize: 3, - groupSeparator: "", - autoGroup: false, - allowMinus: true, - negationSymbol: { - front: "-", - back: "" - }, - integerDigits: "+", - integerOptional: true, - prefix: "", - suffix: "", - rightAlign: true, - decimalProtect: true, - min: null, - max: null, - step: 1, - insertMode: true, - autoUnmask: false, - unmaskAsNumber: false, - inputType: "text", - inputmode: "numeric", - preValidation: function(buffer, pos, c, isSelection, opts, maskset) { - if (c === "-" || c === opts.negationSymbol.front) { - if (opts.allowMinus !== true) return false; - opts.isNegative = opts.isNegative === undefined ? true : !opts.isNegative; - if (buffer.join("") === "") return true; - return { - caret: maskset.validPositions[pos] ? pos : undefined, - dopost: true - }; - } - if (isSelection === false && c === opts.radixPoint && (opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) { - var radixPos = $.inArray(opts.radixPoint, buffer); - if (radixPos !== -1 && maskset.validPositions[radixPos] !== undefined) { - if (opts.numericInput === true) { - return pos === radixPos; - } - return { - caret: radixPos + 1 - }; - } - } - return true; - }, - postValidation: function(buffer, pos, currentResult, opts) { - function buildPostMask(buffer, opts) { - var postMask = ""; - postMask += "(" + opts.groupSeparator + "*{" + opts.groupSize + "}){*}"; - if (opts.radixPoint !== "") { - var radixSplit = buffer.join("").split(opts.radixPoint); - if (radixSplit[1]) { - postMask += opts.radixPoint + "*{" + radixSplit[1].match(/^\d*\??\d*/)[0].length + "}"; - } - } - return postMask; - } - var suffix = opts.suffix.split(""), prefix = opts.prefix.split(""); - if (currentResult.pos === undefined && currentResult.caret !== undefined && currentResult.dopost !== true) return currentResult; - var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos; - var maskedValue = buffer.slice(); - if (opts.numericInput) { - caretPos = maskedValue.length - caretPos - 1; - maskedValue = maskedValue.reverse(); - } - var charAtPos = maskedValue[caretPos]; - if (charAtPos === opts.groupSeparator) { - caretPos += 1; - charAtPos = maskedValue[caretPos]; - } - if (caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult; - if (charAtPos !== undefined) { - if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) { - maskedValue[caretPos] = "?"; - if (opts.prefix.length > 0 && caretPos >= (opts.isNegative === false ? 1 : 0) && caretPos < opts.prefix.length - 1 + (opts.isNegative === false ? 1 : 0)) { - prefix[caretPos - (opts.isNegative === false ? 1 : 0)] = "?"; - } else if (opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0)) { - suffix[caretPos - (maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0))] = "?"; - } - } - } - prefix = prefix.join(""); - suffix = suffix.join(""); - var processValue = maskedValue.join("").replace(prefix, ""); - processValue = processValue.replace(suffix, ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - if (isNaN(opts.placeholder)) { - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), "g"), ""); - } - if (processValue.length > 1 && processValue.indexOf(opts.radixPoint) !== 1) { - if (charAtPos === "0") { - processValue = processValue.replace(/^\?/g, ""); - } - processValue = processValue.replace(/^0/g, ""); - } - if (processValue.charAt(0) === opts.radixPoint && opts.radixPoint !== "" && opts.numericInput !== true) { - processValue = "0" + processValue; - } - if (processValue !== "") { - processValue = processValue.split(""); - if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === "blur") && isFinite(opts.digits)) { - var radixPosition = $.inArray(opts.radixPoint, processValue); - var rpb = $.inArray(opts.radixPoint, maskedValue); - if (radixPosition === -1) { - processValue.push(opts.radixPoint); - radixPosition = processValue.length - 1; - } - for (var i = 1; i <= opts.digits; i++) { - if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === "blur") && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) { - processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0); - } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) { - processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]; - } - } - } - if (opts.autoGroup === true && opts.groupSeparator !== "" && (charAtPos !== opts.radixPoint || currentResult.pos !== undefined || currentResult.dopost)) { - var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint; - processValue = Inputmask(buildPostMask(processValue, opts), { - numericInput: true, - jitMasking: true, - definitions: { - "*": { - validator: "[0-9?]", - cardinality: 1 - } - } - }).format(processValue.join("")); - if (addRadix) processValue += opts.radixPoint; - if (processValue.charAt(0) === opts.groupSeparator) { - processValue.substr(1); - } - } else processValue = processValue.join(""); - } - if (opts.isNegative && currentResult.event === "blur") { - opts.isNegative = processValue !== "0"; - } - processValue = prefix + processValue; - processValue += suffix; - if (opts.isNegative) { - processValue = opts.negationSymbol.front + processValue; - processValue += opts.negationSymbol.back; - } - processValue = processValue.split(""); - if (charAtPos !== undefined) { - if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) { - caretPos = $.inArray("?", processValue); - if (caretPos > -1) { - processValue[caretPos] = charAtPos; - } else caretPos = currentResult.caret || 0; - } else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) { - var newCaretPos = $.inArray(charAtPos, processValue); - if (newCaretPos !== -1) caretPos = newCaretPos; - } - } - if (opts.numericInput) { - caretPos = processValue.length - caretPos - 1; - processValue = processValue.reverse(); - } - var rslt = { - caret: (charAtPos === undefined || currentResult.pos !== undefined) && caretPos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos, - buffer: processValue, - refreshFromBuffer: currentResult.dopost || buffer.join("") !== processValue.join("") - }; - return rslt.refreshFromBuffer ? rslt : currentResult; - }, - onBeforeWrite: function(e, buffer, caretPos, opts) { - function parseMinMaxOptions(opts) { - if (opts.parseMinMaxOptions === undefined) { - if (opts.min !== null) { - opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.radixPoint === ",") opts.min = opts.min.replace(opts.radixPoint, "."); - opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN; - if (isNaN(opts.min)) opts.min = Number.MIN_VALUE; - } - if (opts.max !== null) { - opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.radixPoint === ",") opts.max = opts.max.replace(opts.radixPoint, "."); - opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN; - if (isNaN(opts.max)) opts.max = Number.MAX_VALUE; - } - opts.parseMinMaxOptions = "done"; - } - } - if (e) { - switch (e.type) { - case "keydown": - return opts.postValidation(buffer, caretPos, { - caret: caretPos, - dopost: true - }, opts); - - case "blur": - case "checkval": - var unmasked; - parseMinMaxOptions(opts); - if (opts.min !== null || opts.max !== null) { - unmasked = opts.onUnMask(buffer.join(""), undefined, $.extend({}, opts, { - unmaskAsNumber: true - })); - if (opts.min !== null && unmasked < opts.min) { - opts.isNegative = opts.min < 0; - return opts.postValidation(opts.min.toString().replace(".", opts.radixPoint).split(""), caretPos, { - caret: caretPos, - dopost: true, - placeholder: "0" - }, opts); - } else if (opts.max !== null && unmasked > opts.max) { - opts.isNegative = opts.max < 0; - return opts.postValidation(opts.max.toString().replace(".", opts.radixPoint).split(""), caretPos, { - caret: caretPos, - dopost: true, - placeholder: "0" - }, opts); - } - } - return opts.postValidation(buffer, caretPos, { - caret: caretPos, - placeholder: "0", - event: "blur" - }, opts); - - case "_checkval": - return { - caret: caretPos - }; - - default: - break; - } - } - }, - regex: { - integerPart: function(opts, emptyCheck) { - return emptyCheck ? new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?") : new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+"); - }, - integerNPart: function(opts) { - return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+"); - } - }, - definitions: { - "~": { - validator: function(chrs, maskset, pos, strict, opts, isSelection) { - var isValid, l; - if (chrs === "k" || chrs === "m") { - isValid = { - insert: [], - c: 0 - }; - for (var i = 0, l = chrs === "k" ? 2 : 5; i < l; i++) { - isValid.insert.push({ - pos: pos + i, - c: 0 - }); - } - isValid.pos = pos + l; - return isValid; - } - isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs); - if (isValid === true) { - if (opts.numericInput !== true && maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].match.def === "~" && !isSelection) { - var processValue = maskset.buffer.join(""); - processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - var pvRadixSplit = processValue.split(opts.radixPoint); - if (pvRadixSplit.length > 1) { - pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0)); - } - if (pvRadixSplit[0] === "0") { - pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0)); - } - processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || ""; - var bufferTemplate = maskset._buffer.join(""); - if (processValue === opts.radixPoint) { - processValue = bufferTemplate; - } - while (processValue.match(Inputmask.escapeRegex(bufferTemplate) + "$") === null) { - bufferTemplate = bufferTemplate.slice(1); - } - processValue = processValue.replace(bufferTemplate, ""); - processValue = processValue.split(""); - if (processValue[pos] === undefined) { - isValid = { - pos: pos, - remove: pos - }; - } else { - isValid = { - pos: pos - }; - } - } - } else if (!strict && chrs === opts.radixPoint && maskset.validPositions[pos - 1] === undefined) { - isValid = { - insert: { - pos: pos, - c: 0 - }, - pos: pos + 1 - }; - } - return isValid; - }, - cardinality: 1 - }, - "+": { - validator: function(chrs, maskset, pos, strict, opts) { - return opts.allowMinus && (chrs === "-" || chrs === opts.negationSymbol.front); - }, - cardinality: 1, - placeholder: "" - }, - "-": { - validator: function(chrs, maskset, pos, strict, opts) { - return opts.allowMinus && chrs === opts.negationSymbol.back; - }, - cardinality: 1, - placeholder: "" - }, - ":": { - validator: function(chrs, maskset, pos, strict, opts) { - var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]"; - var isValid = new RegExp(radix).test(chrs); - if (isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint) { - isValid = { - caret: pos + 1 - }; - } - return isValid; - }, - cardinality: 1, - placeholder: function(opts) { - return opts.radixPoint; - } - } - }, - onUnMask: function(maskedValue, unmaskedValue, opts) { - if (unmaskedValue === "" && opts.nullable === true) { - return unmaskedValue; - } - var processValue = maskedValue.replace(opts.prefix, ""); - processValue = processValue.replace(opts.suffix, ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.placeholder.charAt(0) !== "") { - processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), "g"), "0"); - } - if (opts.unmaskAsNumber) { - if (opts.radixPoint !== "" && processValue.indexOf(opts.radixPoint) !== -1) processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), "."); - processValue = processValue.replace(new RegExp("^" + Inputmask.escapeRegex(opts.negationSymbol.front)), "-"); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - return Number(processValue); - } - return processValue; - }, - isComplete: function(buffer, opts) { - var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(""); - maskedValue = maskedValue.replace(new RegExp("^" + Inputmask.escapeRegex(opts.negationSymbol.front)), "-"); - maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - maskedValue = maskedValue.replace(opts.prefix, ""); - maskedValue = maskedValue.replace(opts.suffix, ""); - maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + "([0-9]{3})", "g"), "$1"); - if (opts.radixPoint === ",") maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."); - return isFinite(maskedValue); - }, - onBeforeMask: function(initialValue, opts) { - opts.isNegative = undefined; - var radixPoint = opts.radixPoint || ","; - if ((typeof initialValue == "number" || opts.inputType === "number") && radixPoint !== "") { - initialValue = initialValue.toString().replace(".", radixPoint); - } - var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\-0-9]/g, ""), decimalPart = valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, "") : ""; - initialValue = integerPart + (decimalPart !== "" ? radixPoint + decimalPart : decimalPart); - var digits = 0; - if (radixPoint !== "") { - digits = decimalPart.length; - if (decimalPart !== "") { - var digitsFactor = Math.pow(10, digits || 1); - if (isFinite(opts.digits)) { - digits = parseInt(opts.digits); - digitsFactor = Math.pow(10, digits); - } - initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), "."); - if (isFinite(initialValue)) initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor; - initialValue = initialValue.toString().replace(".", radixPoint); - } - } - if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) { - initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint))); - } - return alignDigits(initialValue.toString().split(""), digits, opts).join(""); - }, - onKeyDown: function(e, buffer, caretPos, opts) { - var $input = $(this); - if (e.ctrlKey) { - switch (e.keyCode) { - case Inputmask.keyCode.UP: - $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)); - $input.trigger("setvalue"); - break; - - case Inputmask.keyCode.DOWN: - $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)); - $input.trigger("setvalue"); - break; - } - } - } - }, - currency: { - prefix: "$ ", - groupSeparator: ",", - alias: "numeric", - placeholder: "0", - autoGroup: true, - digits: 2, - digitsOptional: false, - clearMaskOnLostFocus: false - }, - decimal: { - alias: "numeric" - }, - integer: { - alias: "numeric", - digits: 0, - radixPoint: "" - }, - percentage: { - alias: "numeric", - digits: 2, - digitsOptional: true, - radixPoint: ".", - placeholder: "0", - autoGroup: false, - min: 0, - max: 100, - suffix: " %", - allowMinus: false - } - }); - return Inputmask; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/jquery.inputmask.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/jquery.inputmask.js deleted file mode 100644 index bae8cce..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/inputmask/jquery.inputmask.js +++ /dev/null @@ -1,97 +0,0 @@ -/*! -* jquery.inputmask.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery", "./inputmask" ], factory); - } else if (typeof exports === "object") { - module.exports = factory(require("jquery"), require("./inputmask")); - } else { - factory(jQuery, window.Inputmask); - } -})(function($, Inputmask) { - if ($.fn.inputmask === undefined) { - $.fn.inputmask = function(fn, options) { - var nptmask, input = this[0]; - if (options === undefined) options = {}; - if (typeof fn === "string") { - switch (fn) { - case "unmaskedvalue": - return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val(); - - case "remove": - return this.each(function() { - if (this.inputmask) this.inputmask.remove(); - }); - - case "getemptymask": - return input && input.inputmask ? input.inputmask.getemptymask() : ""; - - case "hasMaskedValue": - return input && input.inputmask ? input.inputmask.hasMaskedValue() : false; - - case "isComplete": - return input && input.inputmask ? input.inputmask.isComplete() : true; - - case "getmetadata": - return input && input.inputmask ? input.inputmask.getmetadata() : undefined; - - case "setvalue": - Inputmask.setValue(input, options); - break; - - case "option": - if (typeof options === "string") { - if (input && input.inputmask !== undefined) { - return input.inputmask.option(options); - } - } else { - return this.each(function() { - if (this.inputmask !== undefined) { - return this.inputmask.option(options); - } - }); - } - break; - - default: - options.alias = fn; - nptmask = new Inputmask(options); - return this.each(function() { - nptmask.mask(this); - }); - } - } else if (Array.isArray(fn)) { - options.alias = fn; - nptmask = new Inputmask(options); - return this.each(function() { - nptmask.mask(this); - }); - } else if (typeof fn == "object") { - nptmask = new Inputmask(fn); - if (fn.mask === undefined && fn.alias === undefined) { - return this.each(function() { - if (this.inputmask !== undefined) { - return this.inputmask.option(fn); - } else nptmask.mask(this); - }); - } else { - return this.each(function() { - nptmask.mask(this); - }); - } - } else if (fn === undefined) { - return this.each(function() { - nptmask = new Inputmask(options); - nptmask.mask(this); - }); - } - }; - } - return $.fn.inputmask; -}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/jquery.inputmask.bundle.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/jquery.inputmask.bundle.js deleted file mode 100644 index 19c80f1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/jquery.inputmask.bundle.js +++ /dev/null @@ -1,3867 +0,0 @@ -/*! -* jquery.inputmask.bundle.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(modules) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - module.l = true; - return module.exports; - } - __webpack_require__.m = modules; - __webpack_require__.c = installedModules; - __webpack_require__.d = function(exports, name, getter) { - if (!__webpack_require__.o(exports, name)) { - Object.defineProperty(exports, name, { - enumerable: true, - get: getter - }); - } - }; - __webpack_require__.r = function(exports) { - if (typeof Symbol !== "undefined" && Symbol.toStringTag) { - Object.defineProperty(exports, Symbol.toStringTag, { - value: "Module" - }); - } - Object.defineProperty(exports, "__esModule", { - value: true - }); - }; - __webpack_require__.t = function(value, mode) { - if (mode & 1) value = __webpack_require__(value); - if (mode & 8) return value; - if (mode & 4 && typeof value === "object" && value && value.__esModule) return value; - var ns = Object.create(null); - __webpack_require__.r(ns); - Object.defineProperty(ns, "default", { - enumerable: true, - value: value - }); - if (mode & 2 && typeof value != "string") for (var key in value) __webpack_require__.d(ns, key, function(key) { - return value[key]; - }.bind(null, key)); - return ns; - }; - __webpack_require__.n = function(module) { - var getter = module && module.__esModule ? function getDefault() { - return module["default"]; - } : function getModuleExports() { - return module; - }; - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 0); -})([ function(module, exports, __webpack_require__) { - "use strict"; - __webpack_require__(1); - __webpack_require__(6); - __webpack_require__(7); - var _inputmask = __webpack_require__(2); - var _inputmask2 = _interopRequireDefault(_inputmask); - var _inputmask3 = __webpack_require__(3); - var _inputmask4 = _interopRequireDefault(_inputmask3); - var _jquery = __webpack_require__(4); - var _jquery2 = _interopRequireDefault(_jquery); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - if (_inputmask4.default === _jquery2.default) { - __webpack_require__(8); - } - window.Inputmask = _inputmask2.default; -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2) ], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, - __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function(Inputmask) { - Inputmask.extendDefinitions({ - A: { - validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - casing: "upper" - }, - "&": { - validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - casing: "upper" - }, - "#": { - validator: "[0-9A-Fa-f]", - casing: "upper" - } - }); - Inputmask.extendAliases({ - cssunit: { - regex: "[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)" - }, - url: { - regex: "(https?|ftp)//.*", - autoUnmask: false - }, - ip: { - mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", - definitions: { - i: { - validator: function validator(chrs, maskset, pos, strict, opts) { - if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") { - chrs = maskset.buffer[pos - 1] + chrs; - if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") { - chrs = maskset.buffer[pos - 2] + chrs; - } else chrs = "0" + chrs; - } else chrs = "00" + chrs; - return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); - } - } - }, - onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) { - return maskedValue; - }, - inputmode: "numeric" - }, - email: { - mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]", - greedy: false, - casing: "lower", - onBeforePaste: function onBeforePaste(pastedValue, opts) { - pastedValue = pastedValue.toLowerCase(); - return pastedValue.replace("mailto:", ""); - }, - definitions: { - "*": { - validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]" - }, - "-": { - validator: "[0-9A-Za-z-]" - } - }, - onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) { - return maskedValue; - }, - inputmode: "email" - }, - mac: { - mask: "##:##:##:##:##:##" - }, - vin: { - mask: "V{13}9{4}", - definitions: { - V: { - validator: "[A-HJ-NPR-Za-hj-npr-z\\d]", - casing: "upper" - } - }, - clearIncomplete: true, - autoUnmask: true - } - }); - return Inputmask; - }); -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(3), __webpack_require__(5) ], - __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function($, window, undefined) { - var document = window.document, ua = navigator.userAgent, ie = ua.indexOf("MSIE ") > 0 || ua.indexOf("Trident/") > 0, mobile = isInputEventSupported("touchstart"), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile; - function Inputmask(alias, options, internal) { - if (!(this instanceof Inputmask)) { - return new Inputmask(alias, options, internal); - } - this.el = undefined; - this.events = {}; - this.maskset = undefined; - this.refreshValue = false; - if (internal !== true) { - if ($.isPlainObject(alias)) { - options = alias; - } else { - options = options || {}; - if (alias) options.alias = alias; - } - this.opts = $.extend(true, {}, this.defaults, options); - this.noMasksCache = options && options.definitions !== undefined; - this.userOptions = options || {}; - this.isRTL = this.opts.numericInput; - resolveAlias(this.opts.alias, options, this.opts); - } - } - Inputmask.prototype = { - dataAttribute: "data-inputmask", - defaults: { - placeholder: "_", - optionalmarker: [ "[", "]" ], - quantifiermarker: [ "{", "}" ], - groupmarker: [ "(", ")" ], - alternatormarker: "|", - escapeChar: "\\", - mask: null, - regex: null, - oncomplete: $.noop, - onincomplete: $.noop, - oncleared: $.noop, - repeat: 0, - greedy: false, - autoUnmask: false, - removeMaskOnSubmit: false, - clearMaskOnLostFocus: true, - insertMode: true, - clearIncomplete: false, - alias: null, - onKeyDown: $.noop, - onBeforeMask: null, - onBeforePaste: function onBeforePaste(pastedValue, opts) { - return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue; - }, - onBeforeWrite: null, - onUnMask: null, - showMaskOnFocus: true, - showMaskOnHover: true, - onKeyValidation: $.noop, - skipOptionalPartCharacter: " ", - numericInput: false, - rightAlign: false, - undoOnEscape: true, - radixPoint: "", - _radixDance: false, - groupSeparator: "", - keepStatic: null, - positionCaretOnTab: true, - tabThrough: false, - supportsInputType: [ "text", "tel", "url", "password", "search" ], - ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ], - isComplete: null, - preValidation: null, - postValidation: null, - staticDefinitionSymbol: undefined, - jitMasking: false, - nullable: true, - inputEventOnly: false, - noValuePatching: false, - positionCaretOnClick: "lvp", - casing: null, - inputmode: "verbatim", - colorMask: false, - disablePredictiveText: false, - importDataAttributes: true, - shiftPositions: true - }, - definitions: { - 9: { - validator: "[0-9\uff11-\uff19]", - definitionSymbol: "*" - }, - a: { - validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]", - definitionSymbol: "*" - }, - "*": { - validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]" - } - }, - aliases: {}, - masksCache: {}, - mask: function mask(elems) { - var that = this; - function importAttributeOptions(npt, opts, userOptions, dataAttribute) { - if (opts.importDataAttributes === true) { - var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p; - var importOption = function importOption(option, optionData) { - optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + "-" + option); - if (optionData !== null) { - if (typeof optionData === "string") { - if (option.indexOf("on") === 0) optionData = window[optionData]; else if (optionData === "false") optionData = false; else if (optionData === "true") optionData = true; - } - userOptions[option] = optionData; - } - }; - if (attrOptions && attrOptions !== "") { - attrOptions = attrOptions.replace(/'/g, '"'); - dataoptions = JSON.parse("{" + attrOptions + "}"); - } - if (dataoptions) { - optionData = undefined; - for (p in dataoptions) { - if (p.toLowerCase() === "alias") { - optionData = dataoptions[p]; - break; - } - } - } - importOption("alias", optionData); - if (userOptions.alias) { - resolveAlias(userOptions.alias, userOptions, opts); - } - for (option in opts) { - if (dataoptions) { - optionData = undefined; - for (p in dataoptions) { - if (p.toLowerCase() === option.toLowerCase()) { - optionData = dataoptions[p]; - break; - } - } - } - importOption(option, optionData); - } - } - $.extend(true, opts, userOptions); - if (npt.dir === "rtl" || opts.rightAlign) { - npt.style.textAlign = "right"; - } - if (npt.dir === "rtl" || opts.numericInput) { - npt.dir = "ltr"; - npt.removeAttribute("dir"); - opts.isRTL = true; - } - return Object.keys(userOptions).length; - } - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - var scopedOpts = $.extend(true, {}, that.opts); - if (importAttributeOptions(el, scopedOpts, $.extend(true, {}, that.userOptions), that.dataAttribute)) { - var maskset = generateMaskSet(scopedOpts, that.noMasksCache); - if (maskset !== undefined) { - if (el.inputmask !== undefined) { - el.inputmask.opts.autoUnmask = true; - el.inputmask.remove(); - } - el.inputmask = new Inputmask(undefined, undefined, true); - el.inputmask.opts = scopedOpts; - el.inputmask.noMasksCache = that.noMasksCache; - el.inputmask.userOptions = $.extend(true, {}, that.userOptions); - el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput; - el.inputmask.el = el; - el.inputmask.maskset = maskset; - $.data(el, "_inputmask_opts", scopedOpts); - maskScope.call(el.inputmask, { - action: "mask" - }); - } - } - }); - return elems && elems[0] ? elems[0].inputmask || this : this; - }, - option: function option(options, noremask) { - if (typeof options === "string") { - return this.opts[options]; - } else if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") { - $.extend(this.userOptions, options); - if (this.el && noremask !== true) { - this.mask(this.el); - } - return this; - } - }, - unmaskedvalue: function unmaskedvalue(value) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "unmaskedvalue", - value: value - }); - }, - remove: function remove() { - return maskScope.call(this, { - action: "remove" - }); - }, - getemptymask: function getemptymask() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "getemptymask" - }); - }, - hasMaskedValue: function hasMaskedValue() { - return !this.opts.autoUnmask; - }, - isComplete: function isComplete() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "isComplete" - }); - }, - getmetadata: function getmetadata() { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "getmetadata" - }); - }, - isValid: function isValid(value) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "isValid", - value: value - }); - }, - format: function format(value, metadata) { - this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache); - return maskScope.call(this, { - action: "format", - value: value, - metadata: metadata - }); - }, - setValue: function setValue(value) { - if (this.el) { - $(this.el).trigger("setvalue", [ value ]); - } - }, - analyseMask: function analyseMask(mask, regexMask, opts) { - var tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?(?:\|[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, regexTokenizer = /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, escaped = false, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, groupToken; - function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) { - this.matches = []; - this.openGroup = isGroup || false; - this.alternatorGroup = false; - this.isGroup = isGroup || false; - this.isOptional = isOptional || false; - this.isQuantifier = isQuantifier || false; - this.isAlternator = isAlternator || false; - this.quantifier = { - min: 1, - max: 1 - }; - } - function insertTestDefinition(mtoken, element, position) { - position = position !== undefined ? position : mtoken.matches.length; - var prevMatch = mtoken.matches[position - 1]; - if (regexMask) { - if (element.indexOf("[") === 0 || escaped && /\\d|\\s|\\w]/i.test(element) || element === ".") { - mtoken.matches.splice(position++, 0, { - fn: new RegExp(element, opts.casing ? "i" : ""), - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== element, - casing: null, - def: element, - placeholder: undefined, - nativeDef: element - }); - } else { - if (escaped) element = element[element.length - 1]; - $.each(element.split(""), function(ndx, lmnt) { - prevMatch = mtoken.matches[position - 1]; - mtoken.matches.splice(position++, 0, { - fn: null, - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== lmnt && prevMatch.fn !== null, - casing: null, - def: opts.staticDefinitionSymbol || lmnt, - placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined, - nativeDef: (escaped ? "'" : "") + lmnt - }); - }); - } - escaped = false; - } else { - var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element]; - if (maskdef && !escaped) { - mtoken.matches.splice(position++, 0, { - fn: maskdef.validator ? typeof maskdef.validator == "string" ? new RegExp(maskdef.validator, opts.casing ? "i" : "") : new function() { - this.test = maskdef.validator; - }() : new RegExp("."), - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== (maskdef.definitionSymbol || element), - casing: maskdef.casing, - def: maskdef.definitionSymbol || element, - placeholder: maskdef.placeholder, - nativeDef: element - }); - } else { - mtoken.matches.splice(position++, 0, { - fn: null, - optionality: false, - newBlockMarker: prevMatch === undefined ? "master" : prevMatch.def !== element && prevMatch.fn !== null, - casing: null, - def: opts.staticDefinitionSymbol || element, - placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined, - nativeDef: (escaped ? "'" : "") + element - }); - escaped = false; - } - } - } - function verifyGroupMarker(maskToken) { - if (maskToken && maskToken.matches) { - $.each(maskToken.matches, function(ndx, token) { - var nextToken = maskToken.matches[ndx + 1]; - if ((nextToken === undefined || nextToken.matches === undefined || nextToken.isQuantifier === false) && token && token.isGroup) { - token.isGroup = false; - if (!regexMask) { - insertTestDefinition(token, opts.groupmarker[0], 0); - if (token.openGroup !== true) { - insertTestDefinition(token, opts.groupmarker[1]); - } - } - } - verifyGroupMarker(token); - }); - } - } - function defaultCase() { - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - insertTestDefinition(currentOpeningToken, m); - if (currentOpeningToken.isAlternator) { - alternator = openenings.pop(); - for (var mndx = 0; mndx < alternator.matches.length; mndx++) { - if (alternator.matches[mndx].isGroup) alternator.matches[mndx].isGroup = false; - } - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(alternator); - } else { - currentToken.matches.push(alternator); - } - } - } else { - insertTestDefinition(currentToken, m); - } - } - function reverseTokens(maskToken) { - function reverseStatic(st) { - if (st === opts.optionalmarker[0]) st = opts.optionalmarker[1]; else if (st === opts.optionalmarker[1]) st = opts.optionalmarker[0]; else if (st === opts.groupmarker[0]) st = opts.groupmarker[1]; else if (st === opts.groupmarker[1]) st = opts.groupmarker[0]; - return st; - } - maskToken.matches = maskToken.matches.reverse(); - for (var match in maskToken.matches) { - if (maskToken.matches.hasOwnProperty(match)) { - var intMatch = parseInt(match); - if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) { - var qt = maskToken.matches[match]; - maskToken.matches.splice(match, 1); - maskToken.matches.splice(intMatch + 1, 0, qt); - } - if (maskToken.matches[match].matches !== undefined) { - maskToken.matches[match] = reverseTokens(maskToken.matches[match]); - } else { - maskToken.matches[match] = reverseStatic(maskToken.matches[match]); - } - } - } - return maskToken; - } - function groupify(matches) { - var groupToken = new MaskToken(true); - groupToken.openGroup = false; - groupToken.matches = matches; - return groupToken; - } - if (regexMask) { - opts.optionalmarker[0] = undefined; - opts.optionalmarker[1] = undefined; - } - while (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask)) { - m = match[0]; - if (regexMask) { - switch (m.charAt(0)) { - case "?": - m = "{0,1}"; - break; - - case "+": - case "*": - m = "{" + m + "}"; - break; - } - } - if (escaped) { - defaultCase(); - continue; - } - switch (m.charAt(0)) { - case "(?=": - break; - - case "(?!": - break; - - case "(?<=": - break; - - case "(? 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(openingToken); - if (currentOpeningToken.isAlternator) { - alternator = openenings.pop(); - for (var mndx = 0; mndx < alternator.matches.length; mndx++) { - alternator.matches[mndx].isGroup = false; - alternator.matches[mndx].alternatorGroup = false; - } - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - currentOpeningToken.matches.push(alternator); - } else { - currentToken.matches.push(alternator); - } - } - } else { - currentToken.matches.push(openingToken); - } - } else defaultCase(); - break; - - case opts.optionalmarker[0]: - openenings.push(new MaskToken(false, true)); - break; - - case opts.groupmarker[0]: - openenings.push(new MaskToken(true)); - break; - - case opts.quantifiermarker[0]: - var quantifier = new MaskToken(false, false, true); - m = m.replace(/[{}]/g, ""); - var mqj = m.split("|"), mq = mqj[0].split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]); - if (mq0 === "*" || mq0 === "+") { - mq0 = mq1 === "*" ? 0 : 1; - } - quantifier.quantifier = { - min: mq0, - max: mq1, - jit: mqj[1] - }; - var matches = openenings.length > 0 ? openenings[openenings.length - 1].matches : currentToken.matches; - match = matches.pop(); - if (match.isAlternator) { - matches.push(match); - matches = match.matches; - var groupToken = new MaskToken(true); - var tmpMatch = matches.pop(); - matches.push(groupToken); - matches = groupToken.matches; - match = tmpMatch; - } - if (!match.isGroup) { - match = groupify([ match ]); - } - matches.push(match); - matches.push(quantifier); - break; - - case opts.alternatormarker: - var groupQuantifier = function groupQuantifier(matches) { - var lastMatch = matches.pop(); - if (lastMatch.isQuantifier) { - lastMatch = groupify([ matches.pop(), lastMatch ]); - } - return lastMatch; - }; - if (openenings.length > 0) { - currentOpeningToken = openenings[openenings.length - 1]; - var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1]; - if (currentOpeningToken.openGroup && (subToken.matches === undefined || subToken.isGroup === false && subToken.isAlternator === false)) { - lastMatch = openenings.pop(); - } else { - lastMatch = groupQuantifier(currentOpeningToken.matches); - } - } else { - lastMatch = groupQuantifier(currentToken.matches); - } - if (lastMatch.isAlternator) { - openenings.push(lastMatch); - } else { - if (lastMatch.alternatorGroup) { - alternator = openenings.pop(); - lastMatch.alternatorGroup = false; - } else { - alternator = new MaskToken(false, false, false, true); - } - alternator.matches.push(lastMatch); - openenings.push(alternator); - if (lastMatch.openGroup) { - lastMatch.openGroup = false; - var alternatorGroup = new MaskToken(true); - alternatorGroup.alternatorGroup = true; - openenings.push(alternatorGroup); - } - } - break; - - default: - defaultCase(); - } - } - while (openenings.length > 0) { - openingToken = openenings.pop(); - currentToken.matches.push(openingToken); - } - if (currentToken.matches.length > 0) { - verifyGroupMarker(currentToken); - maskTokens.push(currentToken); - } - if (opts.numericInput || opts.isRTL) { - reverseTokens(maskTokens[0]); - } - return maskTokens; - }, - positionColorMask: function positionColorMask(input, template) { - input.style.left = template.offsetLeft + "px"; - } - }; - Inputmask.extendDefaults = function(options) { - $.extend(true, Inputmask.prototype.defaults, options); - }; - Inputmask.extendDefinitions = function(definition) { - $.extend(true, Inputmask.prototype.definitions, definition); - }; - Inputmask.extendAliases = function(alias) { - $.extend(true, Inputmask.prototype.aliases, alias); - }; - Inputmask.format = function(value, options, metadata) { - return Inputmask(options).format(value, metadata); - }; - Inputmask.unmask = function(value, options) { - return Inputmask(options).unmaskedvalue(value); - }; - Inputmask.isValid = function(value, options) { - return Inputmask(options).isValid(value); - }; - Inputmask.remove = function(elems) { - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - if (el.inputmask) el.inputmask.remove(); - }); - }; - Inputmask.setValue = function(elems, value) { - if (typeof elems === "string") { - elems = document.getElementById(elems) || document.querySelectorAll(elems); - } - elems = elems.nodeName ? [ elems ] : elems; - $.each(elems, function(ndx, el) { - if (el.inputmask) el.inputmask.setValue(value); else $(el).trigger("setvalue", [ value ]); - }); - }; - Inputmask.escapeRegex = function(str) { - var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ]; - return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1"); - }; - Inputmask.keyCode = { - BACKSPACE: 8, - BACKSPACE_SAFARI: 127, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38, - X: 88, - CONTROL: 17 - }; - Inputmask.dependencyLib = $; - function resolveAlias(aliasStr, options, opts) { - var aliasDefinition = Inputmask.prototype.aliases[aliasStr]; - if (aliasDefinition) { - if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); - $.extend(true, opts, aliasDefinition); - $.extend(true, opts, options); - return true; - } else if (opts.mask === null) { - opts.mask = aliasStr; - } - return false; - } - function generateMaskSet(opts, nocache) { - function generateMask(mask, metadata, opts) { - var regexMask = false; - if (mask === null || mask === "") { - regexMask = opts.regex !== null; - if (regexMask) { - mask = opts.regex; - mask = mask.replace(/^(\^)(.*)(\$)$/, "$2"); - } else { - regexMask = true; - mask = ".*"; - } - } - if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) { - opts.placeholder = ""; - } - if (opts.repeat > 0 || opts.repeat === "*" || opts.repeat === "+") { - var repeatStart = opts.repeat === "*" ? 0 : opts.repeat === "+" ? 1 : opts.repeat; - mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + "," + opts.repeat + opts.quantifiermarker[1]; - } - var masksetDefinition, maskdefKey = regexMask ? "regex_" + opts.regex : opts.numericInput ? mask.split("").reverse().join("") : mask; - if (Inputmask.prototype.masksCache[maskdefKey] === undefined || nocache === true) { - masksetDefinition = { - mask: mask, - maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts), - validPositions: {}, - _buffer: undefined, - buffer: undefined, - tests: {}, - excludes: {}, - metadata: metadata, - maskLength: undefined, - jitOffset: {} - }; - if (nocache !== true) { - Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition; - masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]); - } - } else masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]); - return masksetDefinition; - } - var ms; - if ($.isFunction(opts.mask)) { - opts.mask = opts.mask(opts); - } - if ($.isArray(opts.mask)) { - if (opts.mask.length > 1) { - if (opts.keepStatic === null) { - opts.keepStatic = "auto"; - for (var i = 0; i < opts.mask.length; i++) { - if (opts.mask[i].charAt(0) !== opts.mask[0].charAt(0)) { - opts.keepStatic = true; - break; - } - } - } - var altMask = opts.groupmarker[0]; - $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) { - if (altMask.length > 1) { - altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0]; - } - if (msk.mask !== undefined && !$.isFunction(msk.mask)) { - altMask += msk.mask; - } else { - altMask += msk; - } - }); - altMask += opts.groupmarker[1]; - return generateMask(altMask, opts.mask, opts); - } else opts.mask = opts.mask.pop(); - } - if (opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask)) { - ms = generateMask(opts.mask.mask, opts.mask, opts); - } else { - ms = generateMask(opts.mask, opts.mask, opts); - } - return ms; - } - function isInputEventSupported(eventName) { - var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el; - if (!isSupported) { - el.setAttribute(evName, "return;"); - isSupported = typeof el[evName] === "function"; - } - el = null; - return isSupported; - } - function maskScope(actionObj, maskset, opts) { - maskset = maskset || this.maskset; - opts = opts || this.opts; - var inputmask = this, el = this.el, isRTL = this.isRTL, undoValue, $el, skipKeyPressEvent = false, skipInputEvent = false, ignorable = false, maxLength, mouseEnter = false, colorMask, originalPlaceholder; - var getMaskTemplate = function getMaskTemplate(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) { - var greedy = opts.greedy; - if (clearOptionalTail) opts.greedy = false; - minimalPos = minimalPos || 0; - var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, lvp = getLastValidPosition(); - do { - if (baseOnInput === true && getMaskSet().validPositions[pos]) { - testPos = clearOptionalTail && getMaskSet().validPositions[pos].match.optionality === true && getMaskSet().validPositions[pos + 1] === undefined && (getMaskSet().validPositions[pos].generatedInput === true || getMaskSet().validPositions[pos].input == opts.skipOptionalPartCharacter && pos > 0) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : getMaskSet().validPositions[pos]; - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - maskTemplate.push(includeMode === true ? testPos.input : includeMode === false ? test.nativeDef : getPlaceholder(pos, test)); - } else { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - var jitMasking = noJit === true ? false : opts.jitMasking !== false ? opts.jitMasking : test.jit; - if (jitMasking === false || jitMasking === undefined || typeof jitMasking === "number" && isFinite(jitMasking) && jitMasking > pos) { - maskTemplate.push(includeMode === false ? test.nativeDef : getPlaceholder(pos, test)); - } - } - if (opts.keepStatic === "auto") { - if (test.newBlockMarker && test.fn !== null) { - opts.keepStatic = pos - 1; - } - } - pos++; - } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== "") || minimalPos > pos); - if (maskTemplate[maskTemplate.length - 1] === "") { - maskTemplate.pop(); - } - if (includeMode !== false || getMaskSet().maskLength === undefined) getMaskSet().maskLength = pos - 1; - opts.greedy = greedy; - return maskTemplate; - }; - function getMaskSet() { - return maskset; - } - function resetMaskSet(soft) { - var maskset = getMaskSet(); - maskset.buffer = undefined; - if (soft !== true) { - maskset.validPositions = {}; - maskset.p = 0; - } - } - function getLastValidPosition(closestTo, strict, validPositions) { - var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions; - if (closestTo === undefined) closestTo = -1; - for (var posNdx in valids) { - var psNdx = parseInt(posNdx); - if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) { - if (psNdx <= closestTo) before = psNdx; - if (psNdx >= closestTo) after = psNdx; - } - } - return before === -1 || before == closestTo ? after : after == -1 ? before : closestTo - before < after - closestTo ? before : after; - } - function getDecisionTaker(tst) { - var decisionTaker = tst.locator[tst.alternation]; - if (typeof decisionTaker == "string" && decisionTaker.length > 0) { - decisionTaker = decisionTaker.split(",")[0]; - } - return decisionTaker !== undefined ? decisionTaker.toString() : ""; - } - function getLocator(tst, align) { - var locator = (tst.alternation != undefined ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(""); - if (locator !== "") while (locator.length < align) { - locator += "0"; - } - return locator; - } - function determineTestTemplate(pos, tests) { - pos = pos > 0 ? pos - 1 : 0; - var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch; - for (var ndx = 0; ndx < tests.length; ndx++) { - var tst = tests[ndx]; - tstLocator = getLocator(tst, targetLocator.length); - var distance = Math.abs(tstLocator - targetLocator); - if (closest === undefined || tstLocator !== "" && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && bestMatch.match.newBlockMarker === "master" && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) { - closest = distance; - bestMatch = tst; - } - } - return bestMatch; - } - function getTestTemplate(pos, ndxIntlzr, tstPs) { - return getMaskSet().validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs)); - } - function getTest(pos, tests) { - if (getMaskSet().validPositions[pos]) { - return getMaskSet().validPositions[pos]; - } - return (tests || getTests(pos))[0]; - } - function positionCanMatchDefinition(pos, def) { - var valid = false, tests = getTests(pos); - for (var tndx = 0; tndx < tests.length; tndx++) { - if (tests[tndx].match && tests[tndx].match.def === def) { - valid = true; - break; - } - } - return valid; - } - function getTests(pos, ndxIntlzr, tstPs) { - var maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = false, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : ""; - function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) { - function handleMatch(match, loopNdx, quantifierRecurse) { - function isFirstMatch(latestMatch, tokenGroup) { - var firstMatch = $.inArray(latestMatch, tokenGroup.matches) === 0; - if (!firstMatch) { - $.each(tokenGroup.matches, function(ndx, match) { - if (match.isQuantifier === true) firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]); else if (match.hasOwnProperty("matches")) firstMatch = isFirstMatch(latestMatch, match); - if (firstMatch) return false; - }); - } - return firstMatch; - } - function resolveNdxInitializer(pos, alternateNdx, targetAlternation) { - var bestMatch, indexPos; - if (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) { - $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) { - if (lmnt.mloc[alternateNdx]) { - bestMatch = lmnt; - return false; - } - var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1; - if ((indexPos === undefined || ndxPos < indexPos) && ndxPos !== -1) { - bestMatch = lmnt; - indexPos = ndxPos; - } - }); - } - if (bestMatch) { - var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation]; - var locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator; - return locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1); - } else { - return targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined; - } - } - function isSubsetOf(source, target) { - function expand(pattern) { - var expanded = [], start, end; - for (var i = 0, l = pattern.length; i < l; i++) { - if (pattern.charAt(i) === "-") { - end = pattern.charCodeAt(i + 1); - while (++start < end) { - expanded.push(String.fromCharCode(start)); - } - } else { - start = pattern.charCodeAt(i); - expanded.push(pattern.charAt(i)); - } - } - return expanded.join(""); - } - if (opts.regex && source.match.fn !== null && target.match.fn !== null) { - return expand(target.match.def.replace(/[\[\]]/g, "")).indexOf(expand(source.match.def.replace(/[\[\]]/g, ""))) !== -1; - } - return source.match.def === target.match.nativeDef; - } - function staticCanMatchDefinition(source, target) { - var sloc = source.locator.slice(source.alternation).join(""), tloc = target.locator.slice(target.alternation).join(""), canMatch = sloc == tloc; - canMatch = canMatch && source.match.fn === null && target.match.fn !== null ? target.match.fn.test(source.match.def, getMaskSet(), pos, false, opts, false) : false; - return canMatch; - } - function setMergeLocators(targetMatch, altMatch) { - if (altMatch === undefined || targetMatch.alternation === altMatch.alternation && targetMatch.locator[targetMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) { - targetMatch.mloc = targetMatch.mloc || {}; - var locNdx = targetMatch.locator[targetMatch.alternation]; - if (locNdx === undefined) targetMatch.alternation = undefined; else { - if (typeof locNdx === "string") locNdx = locNdx.split(",")[0]; - if (targetMatch.mloc[locNdx] === undefined) targetMatch.mloc[locNdx] = targetMatch.locator.slice(); - if (altMatch !== undefined) { - for (var ndx in altMatch.mloc) { - if (typeof ndx === "string") ndx = ndx.split(",")[0]; - if (targetMatch.mloc[ndx] === undefined) targetMatch.mloc[ndx] = altMatch.mloc[ndx]; - } - targetMatch.locator[targetMatch.alternation] = Object.keys(targetMatch.mloc).join(","); - } - return true; - } - } - return false; - } - if (testPos > 500 && quantifierRecurse !== undefined) { - throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask; - } - if (testPos === pos && match.matches === undefined) { - matches.push({ - match: match, - locator: loopNdx.reverse(), - cd: cacheDependency, - mloc: {} - }); - return true; - } else if (match.matches !== undefined) { - if (match.isGroup && quantifierRecurse !== match) { - match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse); - if (match) return true; - } else if (match.isOptional) { - var optionalToken = match; - match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse); - if (match) { - $.each(matches, function(ndx, mtch) { - mtch.match.optionality = true; - }); - latestMatch = matches[matches.length - 1].match; - if (quantifierRecurse === undefined && isFirstMatch(latestMatch, optionalToken)) { - insertStop = true; - testPos = pos; - } else return true; - } - } else if (match.isAlternator) { - var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length; - var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1; - if (altIndex === -1 || typeof altIndex === "string") { - var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx; - if (typeof altIndex == "string") { - altIndexArr = altIndex.split(","); - } else { - for (amndx = 0; amndx < alternateToken.matches.length; amndx++) { - altIndexArr.push(amndx.toString()); - } - } - if (getMaskSet().excludes[pos]) { - var altIndexArrClone = altIndexArr.slice(); - for (var i = 0, el = getMaskSet().excludes[pos].length; i < el; i++) { - altIndexArr.splice(altIndexArr.indexOf(getMaskSet().excludes[pos][i].toString()), 1); - } - if (altIndexArr.length === 0) { - getMaskSet().excludes[pos] = undefined; - altIndexArr = altIndexArrClone; - } - } - if (opts.keepStatic === true || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) altIndexArr = altIndexArr.slice(0, 1); - var unMatchedAlternation = false; - for (var ndx = 0; ndx < altIndexArr.length; ndx++) { - amndx = parseInt(altIndexArr[ndx]); - matches = []; - ndxInitializer = typeof altIndex === "string" ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice() : ndxInitializerClone.slice(); - if (alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse)) match = true; else if (ndx === 0) { - unMatchedAlternation = true; - } - maltMatches = matches.slice(); - testPos = currentPos; - matches = []; - for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) { - var altMatch = maltMatches[ndx1], dropMatch = false; - altMatch.match.jit = altMatch.match.jit || unMatchedAlternation; - altMatch.alternation = altMatch.alternation || loopNdxCnt; - setMergeLocators(altMatch); - for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) { - var altMatch2 = malternateMatches[ndx2]; - if (typeof altIndex !== "string" || altMatch.alternation !== undefined && $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) { - if (altMatch.match.nativeDef === altMatch2.match.nativeDef) { - dropMatch = true; - setMergeLocators(altMatch2, altMatch); - break; - } else if (isSubsetOf(altMatch, altMatch2)) { - if (setMergeLocators(altMatch, altMatch2)) { - dropMatch = true; - malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch); - } - break; - } else if (isSubsetOf(altMatch2, altMatch)) { - setMergeLocators(altMatch2, altMatch); - break; - } else if (staticCanMatchDefinition(altMatch, altMatch2)) { - if (setMergeLocators(altMatch, altMatch2)) { - dropMatch = true; - malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch); - } - break; - } - } - } - if (!dropMatch) { - malternateMatches.push(altMatch); - } - } - } - matches = currentMatches.concat(malternateMatches); - testPos = pos; - insertStop = matches.length > 0; - match = malternateMatches.length > 0; - ndxInitializer = ndxInitializerClone.slice(); - } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse); - if (match) return true; - } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) { - var qt = match; - for (var qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) { - var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1]; - match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup); - if (match) { - latestMatch = matches[matches.length - 1].match; - latestMatch.optionalQuantifier = qndx >= qt.quantifier.min; - latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit; - if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) { - insertStop = true; - testPos = pos; - break; - } - if (latestMatch.jit) { - getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch); - } - return true; - } - } - } else { - match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse); - if (match) return true; - } - } else { - testPos++; - } - } - for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) { - if (maskToken.matches[tndx].isQuantifier !== true) { - var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse); - if (match && testPos === pos) { - return match; - } else if (testPos > pos) { - break; - } - } - } - } - function mergeLocators(pos, tests) { - var locator = []; - if (!$.isArray(tests)) tests = [ tests ]; - if (tests.length > 0) { - if (tests[0].alternation === undefined) { - locator = determineTestTemplate(pos, tests.slice()).locator.slice(); - if (locator.length === 0) locator = tests[0].locator.slice(); - } else { - $.each(tests, function(ndx, tst) { - if (tst.def !== "") { - if (locator.length === 0) locator = tst.locator.slice(); else { - for (var i = 0; i < locator.length; i++) { - if (tst.locator[i] && locator[i].toString().indexOf(tst.locator[i]) === -1) { - locator[i] += "," + tst.locator[i]; - } - } - } - } - }); - } - } - return locator; - } - if (pos > -1) { - if (ndxIntlzr === undefined) { - var previousPos = pos - 1, test; - while ((test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1) { - previousPos--; - } - if (test !== undefined && previousPos > -1) { - ndxInitializer = mergeLocators(previousPos, test); - cacheDependency = ndxInitializer.join(""); - testPos = previousPos; - } - } - if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) { - return getMaskSet().tests[pos]; - } - for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) { - var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]); - if (match && testPos === pos || testPos > pos) { - break; - } - } - } - if (matches.length === 0 || insertStop) { - matches.push({ - match: { - fn: null, - optionality: false, - casing: null, - def: "", - placeholder: "" - }, - locator: [], - mloc: {}, - cd: cacheDependency - }); - } - if (ndxIntlzr !== undefined && getMaskSet().tests[pos]) { - return $.extend(true, [], matches); - } - getMaskSet().tests[pos] = $.extend(true, [], matches); - return getMaskSet().tests[pos]; - } - function getBufferTemplate() { - if (getMaskSet()._buffer === undefined) { - getMaskSet()._buffer = getMaskTemplate(false, 1); - if (getMaskSet().buffer === undefined) getMaskSet().buffer = getMaskSet()._buffer.slice(); - } - return getMaskSet()._buffer; - } - function getBuffer(noCache) { - if (getMaskSet().buffer === undefined || noCache === true) { - getMaskSet().buffer = getMaskTemplate(true, getLastValidPosition(), true); - if (getMaskSet()._buffer === undefined) getMaskSet()._buffer = getMaskSet().buffer.slice(); - } - return getMaskSet().buffer; - } - function refreshFromBuffer(start, end, buffer) { - var i, p; - if (start === true) { - resetMaskSet(); - start = 0; - end = buffer.length; - } else { - for (i = start; i < end; i++) { - delete getMaskSet().validPositions[i]; - } - } - p = start; - for (i = start; i < end; i++) { - resetMaskSet(true); - if (buffer[i] !== opts.skipOptionalPartCharacter) { - var valResult = isValid(p, buffer[i], true, true); - if (valResult !== false) { - resetMaskSet(true); - p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1; - } - } - } - } - function casing(elem, test, pos) { - switch (opts.casing || test.casing) { - case "upper": - elem = elem.toUpperCase(); - break; - - case "lower": - elem = elem.toLowerCase(); - break; - - case "title": - var posBefore = getMaskSet().validPositions[pos - 1]; - if (pos === 0 || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE)) { - elem = elem.toUpperCase(); - } else { - elem = elem.toLowerCase(); - } - break; - - default: - if ($.isFunction(opts.casing)) { - var args = Array.prototype.slice.call(arguments); - args.push(getMaskSet().validPositions); - elem = opts.casing.apply(this, args); - } - } - return elem; - } - function checkAlternationMatch(altArr1, altArr2, na) { - var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = false, naArr = na !== undefined ? na.split(",") : [], naNdx; - for (var i = 0; i < naArr.length; i++) { - if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) { - altArr1.splice(naNdx, 1); - } - } - for (var alndx = 0; alndx < altArr1.length; alndx++) { - if ($.inArray(altArr1[alndx], altArrC) !== -1) { - isMatch = true; - break; - } - } - return isMatch; - } - function alternate(pos, c, strict, fromSetValid, rAltPos) { - var validPsClone = $.extend(true, {}, getMaskSet().validPositions), lastAlt, alternation, isValidRslt = false, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = rAltPos !== undefined ? rAltPos : getLastValidPosition(); - if (lAltPos === -1 && rAltPos === undefined) { - lastAlt = 0; - prevAltPos = getTest(lastAlt); - alternation = prevAltPos.alternation; - } else { - for (;lAltPos >= 0; lAltPos--) { - altPos = getMaskSet().validPositions[lAltPos]; - if (altPos && altPos.alternation !== undefined) { - if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) { - break; - } - lastAlt = lAltPos; - alternation = getMaskSet().validPositions[lastAlt].alternation; - prevAltPos = altPos; - } - } - } - if (alternation !== undefined) { - decisionPos = parseInt(lastAlt); - getMaskSet().excludes[decisionPos] = getMaskSet().excludes[decisionPos] || []; - if (pos !== true) { - getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos)); - } - var validInputsClone = [], staticInputsBeforePos = 0; - for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) { - validPos = getMaskSet().validPositions[i]; - if (validPos && validPos.generatedInput !== true) { - validInputsClone.push(validPos.input); - } else if (i < pos) staticInputsBeforePos++; - delete getMaskSet().validPositions[i]; - } - while (getMaskSet().excludes[decisionPos] && getMaskSet().excludes[decisionPos].length < 10) { - var posOffset = staticInputsBeforePos * -1, validInputs = validInputsClone.slice(); - getMaskSet().tests[decisionPos] = undefined; - resetMaskSet(true); - isValidRslt = true; - while (validInputs.length > 0) { - var input = validInputs.shift(); - if (!(isValidRslt = isValid(getLastValidPosition(undefined, true) + 1, input, false, fromSetValid, true))) { - break; - } - } - if (isValidRslt && c !== undefined) { - var targetLvp = getLastValidPosition(pos) + 1; - for (i = decisionPos; i < getLastValidPosition() + 1; i++) { - validPos = getMaskSet().validPositions[i]; - if ((validPos === undefined || validPos.match.fn == null) && i < pos + posOffset) { - posOffset++; - } - } - pos = pos + posOffset; - isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid, true); - } - if (!isValidRslt) { - resetMaskSet(); - prevAltPos = getTest(decisionPos); - getMaskSet().validPositions = $.extend(true, {}, validPsClone); - if (getMaskSet().excludes[decisionPos]) { - var decisionTaker = getDecisionTaker(prevAltPos); - if (getMaskSet().excludes[decisionPos].indexOf(decisionTaker) !== -1) { - isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1); - break; - } - getMaskSet().excludes[decisionPos].push(decisionTaker); - for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) { - delete getMaskSet().validPositions[i]; - } - } else { - isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1); - break; - } - } else break; - } - } - getMaskSet().excludes[decisionPos] = undefined; - return isValidRslt; - } - function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) { - function isSelection(posObj) { - return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1; - } - strict = strict === true; - var maskPos = pos; - if (pos.begin !== undefined) { - maskPos = isRTL ? pos.end : pos.begin; - } - function _isValid(position, c, strict) { - var rslt = false; - $.each(getTests(position), function(ndx, tst) { - var test = tst.match; - getBuffer(true); - rslt = test.fn != null ? test.fn.test(c, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && test.def !== "" ? { - c: getPlaceholder(position, test, true) || test.def, - pos: position - } : false; - if (rslt !== false) { - var elem = rslt.c !== undefined ? rslt.c : c, validatedPos = position; - elem = elem === opts.skipOptionalPartCharacter && test.fn === null ? getPlaceholder(position, test, true) || test.def : elem; - if (rslt.remove !== undefined) { - if (!$.isArray(rslt.remove)) rslt.remove = [ rslt.remove ]; - $.each(rslt.remove.sort(function(a, b) { - return b - a; - }), function(ndx, lmnt) { - revalidateMask({ - begin: lmnt, - end: lmnt + 1 - }); - }); - } - if (rslt.insert !== undefined) { - if (!$.isArray(rslt.insert)) rslt.insert = [ rslt.insert ]; - $.each(rslt.insert.sort(function(a, b) { - return a - b; - }), function(ndx, lmnt) { - isValid(lmnt.pos, lmnt.c, true, fromSetValid); - }); - } - if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) { - validatedPos = rslt.pos; - } - if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) { - return false; - } - if (!revalidateMask(pos, $.extend({}, tst, { - input: casing(elem, test, validatedPos) - }), fromSetValid, validatedPos)) { - rslt = false; - } - return false; - } - }); - return rslt; - } - var result = true, positionsClone = $.extend(true, {}, getMaskSet().validPositions); - if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) { - result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet()); - } - if (result === true) { - trackbackPositions(undefined, maskPos, true); - if (maxLength === undefined || maskPos < maxLength) { - result = _isValid(maskPos, c, strict); - if ((!strict || fromSetValid === true) && result === false && validateOnly !== true) { - var currentPosValid = getMaskSet().validPositions[maskPos]; - if (currentPosValid && currentPosValid.match.fn === null && (currentPosValid.match.def === c || c === opts.skipOptionalPartCharacter)) { - result = { - caret: seekNext(maskPos) - }; - } else { - if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) { - if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) { - result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict); - if (result !== false) result.caret = maskPos; - } else for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) { - result = _isValid(nPos, c, strict); - if (result !== false) { - result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result; - maskPos = nPos; - break; - } - } - } - } - } - } - if (result === false && opts.keepStatic !== false && (opts.regex == null || isComplete(getBuffer())) && !strict && fromAlternate !== true) { - result = alternate(maskPos, c, strict, fromSetValid); - } - if (result === true) { - result = { - pos: maskPos - }; - } - } - if ($.isFunction(opts.postValidation) && result !== false && !strict && fromSetValid !== true && validateOnly !== true) { - var postResult = opts.postValidation(getBuffer(true), pos.begin !== undefined ? isRTL ? pos.end : pos.begin : pos, result, opts); - if (postResult !== undefined) { - if (postResult.refreshFromBuffer && postResult.buffer) { - var refresh = postResult.refreshFromBuffer; - refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, postResult.buffer); - } - result = postResult === true ? result : postResult; - } - } - if (result && result.pos === undefined) { - result.pos = maskPos; - } - if (result === false || validateOnly === true) { - resetMaskSet(true); - getMaskSet().validPositions = $.extend(true, {}, positionsClone); - } - return result; - } - function trackbackPositions(originalPos, newPos, fillOnly) { - var result; - if (originalPos === undefined) { - for (originalPos = newPos - 1; originalPos > 0; originalPos--) { - if (getMaskSet().validPositions[originalPos]) break; - } - } - for (var ps = originalPos; ps < newPos; ps++) { - if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, true)) { - var vp = ps == 0 ? getTest(ps) : getMaskSet().validPositions[ps - 1]; - if (vp) { - var tests = getTests(ps).slice(); - if (tests[tests.length - 1].match.def === "") tests.pop(); - var bestMatch = determineTestTemplate(ps, tests); - bestMatch = $.extend({}, bestMatch, { - input: getPlaceholder(ps, bestMatch.match, true) || bestMatch.match.def - }); - bestMatch.generatedInput = true; - revalidateMask(ps, bestMatch, true); - if (fillOnly !== true) { - var cvpInput = getMaskSet().validPositions[newPos].input; - getMaskSet().validPositions[newPos] = undefined; - result = isValid(newPos, cvpInput, true, true); - } - } - } - } - return result; - } - function revalidateMask(pos, validTest, fromSetValid, validatedPos) { - function IsEnclosedStatic(pos, valids, selection) { - var posMatch = valids[pos]; - if (posMatch !== undefined && (posMatch.match.fn === null && posMatch.match.optionality !== true || posMatch.input === opts.radixPoint)) { - var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && valids[pos - 1].match.fn === null && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && valids[pos + 1].match.fn === null && valids[pos + 1] : valids[pos + 1]; - return prevMatch && nextMatch; - } - return false; - } - var begin = pos.begin !== undefined ? pos.begin : pos, end = pos.end !== undefined ? pos.end : pos; - if (pos.begin > pos.end) { - begin = pos.end; - end = pos.begin; - } - validatedPos = validatedPos !== undefined ? validatedPos : begin; - if (begin !== end || opts.insertMode && getMaskSet().validPositions[validatedPos] !== undefined && fromSetValid === undefined) { - var positionsClone = $.extend(true, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, true), i; - getMaskSet().p = begin; - for (i = lvp; i >= begin; i--) { - if (getMaskSet().validPositions[i] && getMaskSet().validPositions[i].match.nativeDef === "+") { - opts.isNegative = false; - } - delete getMaskSet().validPositions[i]; - } - var valid = true, j = validatedPos, vps = getMaskSet().validPositions, needsValidation = false, posMatch = j, i = j; - if (validTest) { - getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest); - posMatch++; - j++; - if (begin < end) i++; - } - for (;i <= lvp; i++) { - var t = positionsClone[i]; - if (t !== undefined && (i >= end || i >= begin && t.generatedInput !== true && IsEnclosedStatic(i, positionsClone, { - begin: begin, - end: end - }))) { - while (getTest(posMatch).match.def !== "") { - if (needsValidation === false && positionsClone[posMatch] && positionsClone[posMatch].match.nativeDef === t.match.nativeDef) { - getMaskSet().validPositions[posMatch] = $.extend(true, {}, positionsClone[posMatch]); - getMaskSet().validPositions[posMatch].input = t.input; - trackbackPositions(undefined, posMatch, true); - j = posMatch + 1; - valid = true; - } else if (opts.shiftPositions && positionCanMatchDefinition(posMatch, t.match.def)) { - var result = isValid(posMatch, t.input, true, true); - valid = result !== false; - j = result.caret || result.insert ? getLastValidPosition() : posMatch + 1; - needsValidation = true; - } else { - valid = t.generatedInput === true || t.input === opts.radixPoint && opts.numericInput === true; - } - if (valid) break; - if (!valid && posMatch > end && isMask(posMatch, true) && (t.match.fn !== null || posMatch > getMaskSet().maskLength)) { - break; - } - posMatch++; - } - if (getTest(posMatch).match.def == "") valid = false; - posMatch = j; - } - if (!valid) break; - } - if (!valid) { - getMaskSet().validPositions = $.extend(true, {}, positionsClone); - resetMaskSet(true); - return false; - } - } else if (validTest) { - getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest); - } - resetMaskSet(true); - return true; - } - function isMask(pos, strict) { - var test = getTestTemplate(pos).match; - if (test.def === "") test = getTest(pos).match; - if (test.fn != null) { - return test.fn; - } - if (strict !== true && pos > -1) { - var tests = getTests(pos); - return tests.length > 1 + (tests[tests.length - 1].match.def === "" ? 1 : 0); - } - return false; - } - function seekNext(pos, newBlock) { - var position = pos + 1; - while (getTest(position).match.def !== "" && (newBlock === true && (getTest(position).match.newBlockMarker !== true || !isMask(position)) || newBlock !== true && !isMask(position))) { - position++; - } - return position; - } - function seekPrevious(pos, newBlock) { - var position = pos, tests; - if (position <= 0) return 0; - while (--position > 0 && (newBlock === true && getTest(position).match.newBlockMarker !== true || newBlock !== true && !isMask(position) && (tests = getTests(position), - tests.length < 2 || tests.length === 2 && tests[1].match.def === ""))) {} - return position; - } - function writeBuffer(input, buffer, caretPos, event, triggerEvents) { - if (event && $.isFunction(opts.onBeforeWrite)) { - var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts); - if (result) { - if (result.refreshFromBuffer) { - var refresh = result.refreshFromBuffer; - refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, result.buffer || buffer); - buffer = getBuffer(true); - } - if (caretPos !== undefined) caretPos = result.caret !== undefined ? result.caret : caretPos; - } - } - if (input !== undefined) { - input.inputmask._valueSet(buffer.join("")); - if (caretPos !== undefined && (event === undefined || event.type !== "blur")) { - caret(input, caretPos); - } else renderColorMask(input, caretPos, buffer.length === 0); - if (triggerEvents === true) { - var $input = $(input), nptVal = input.inputmask._valueGet(); - skipInputEvent = true; - $input.trigger("input"); - setTimeout(function() { - if (nptVal === getBufferTemplate().join("")) { - $input.trigger("cleared"); - } else if (isComplete(buffer) === true) { - $input.trigger("complete"); - } - }, 0); - } - } - } - function getPlaceholder(pos, test, returnPL) { - test = test || getTest(pos).match; - if (test.placeholder !== undefined || returnPL === true) { - return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder; - } else if (test.fn === null) { - if (pos > -1 && getMaskSet().validPositions[pos] === undefined) { - var tests = getTests(pos), staticAlternations = [], prevTest; - if (tests.length > 1 + (tests[tests.length - 1].match.def === "" ? 1 : 0)) { - for (var i = 0; i < tests.length; i++) { - if (tests[i].match.optionality !== true && tests[i].match.optionalQuantifier !== true && (tests[i].match.fn === null || prevTest === undefined || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, true, opts) !== false)) { - staticAlternations.push(tests[i]); - if (tests[i].match.fn === null) prevTest = tests[i]; - if (staticAlternations.length > 1) { - if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) { - return opts.placeholder.charAt(pos % opts.placeholder.length); - } - } - } - } - } - } - return test.def; - } - return opts.placeholder.charAt(pos % opts.placeholder.length); - } - function HandleNativePlaceholder(npt, value) { - if (ie) { - if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || npt.placeholder === "")) { - var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet(); - if (nptValue !== value) { - var lvp = getLastValidPosition(); - if (lvp === -1 && nptValue === getBufferTemplate().join("")) { - buffer = []; - } else if (lvp !== -1) { - clearOptionalTail(buffer); - } - writeBuffer(npt, buffer); - } - } - } else if (npt.placeholder !== value) { - npt.placeholder = value; - if (npt.placeholder === "") npt.removeAttribute("placeholder"); - } - } - var EventRuler = { - on: function on(input, eventName, eventHandler) { - var ev = function ev(e) { - var that = this; - if (that.inputmask === undefined && this.nodeName !== "FORM") { - var imOpts = $.data(that, "_inputmask_opts"); - if (imOpts) new Inputmask(imOpts).mask(that); else EventRuler.off(that); - } else if (e.type !== "setvalue" && this.nodeName !== "FORM" && (that.disabled || that.readOnly && !(e.type === "keydown" && e.ctrlKey && e.keyCode === 67 || opts.tabThrough === false && e.keyCode === Inputmask.keyCode.TAB))) { - e.preventDefault(); - } else { - switch (e.type) { - case "input": - if (skipInputEvent === true) { - skipInputEvent = false; - return e.preventDefault(); - } - if (mobile) { - var args = arguments; - setTimeout(function() { - eventHandler.apply(that, args); - caret(that, that.inputmask.caretPos, undefined, true); - }, 0); - return false; - } - break; - - case "keydown": - skipKeyPressEvent = false; - skipInputEvent = false; - break; - - case "keypress": - if (skipKeyPressEvent === true) { - return e.preventDefault(); - } - skipKeyPressEvent = true; - break; - - case "click": - if (iemobile || iphone) { - var args = arguments; - setTimeout(function() { - eventHandler.apply(that, args); - }, 0); - return false; - } - break; - } - var returnVal = eventHandler.apply(that, arguments); - if (returnVal === false) { - e.preventDefault(); - e.stopPropagation(); - } - return returnVal; - } - }; - input.inputmask.events[eventName] = input.inputmask.events[eventName] || []; - input.inputmask.events[eventName].push(ev); - if ($.inArray(eventName, [ "submit", "reset" ]) !== -1) { - if (input.form !== null) $(input.form).on(eventName, ev); - } else { - $(input).on(eventName, ev); - } - }, - off: function off(input, event) { - if (input.inputmask && input.inputmask.events) { - var events; - if (event) { - events = []; - events[event] = input.inputmask.events[event]; - } else { - events = input.inputmask.events; - } - $.each(events, function(eventName, evArr) { - while (evArr.length > 0) { - var ev = evArr.pop(); - if ($.inArray(eventName, [ "submit", "reset" ]) !== -1) { - if (input.form !== null) $(input.form).off(eventName, ev); - } else { - $(input).off(eventName, ev); - } - } - delete input.inputmask.events[eventName]; - }); - } - } - }; - var EventHandlers = { - keydownEvent: function keydownEvent(e) { - var input = this, $input = $(input), k = e.keyCode, pos = caret(input); - if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) { - e.preventDefault(); - handleRemove(input, k, pos); - writeBuffer(input, getBuffer(true), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join("")); - } else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) { - e.preventDefault(); - var caretPos = seekNext(getLastValidPosition()); - caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, true); - } else if (k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP) { - e.preventDefault(); - caret(input, 0, e.shiftKey ? pos.begin : 0, true); - } else if ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || k === 90 && e.ctrlKey) && e.altKey !== true) { - checkVal(input, true, false, undoValue.split("")); - $input.trigger("click"); - } else if (k === Inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { - opts.insertMode = !opts.insertMode; - input.setAttribute("im-insert", opts.insertMode); - } else if (opts.tabThrough === true && k === Inputmask.keyCode.TAB) { - if (e.shiftKey === true) { - if (getTest(pos.begin).match.fn === null) { - pos.begin = seekNext(pos.begin); - } - pos.end = seekPrevious(pos.begin, true); - pos.begin = seekPrevious(pos.end, true); - } else { - pos.begin = seekNext(pos.begin, true); - pos.end = seekNext(pos.begin, true); - if (pos.end < getMaskSet().maskLength) pos.end--; - } - if (pos.begin < getMaskSet().maskLength) { - e.preventDefault(); - caret(input, pos.begin, pos.end); - } - } - opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts); - ignorable = $.inArray(k, opts.ignorables) !== -1; - }, - keypressEvent: function keypressEvent(e, checkval, writeOut, strict, ndx) { - var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode; - if (checkval !== true && !(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) { - if (k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("")) { - undoValue = getBuffer().join(""); - setTimeout(function() { - $input.trigger("change"); - }, 0); - } - return true; - } else { - if (k) { - if (k === 46 && e.shiftKey === false && opts.radixPoint !== "") k = opts.radixPoint.charCodeAt(0); - var pos = checkval ? { - begin: ndx, - end: ndx - } : caret(input), forwardPosition, c = String.fromCharCode(k), offset = 0; - if (opts._radixDance && opts.numericInput) { - var caretPos = getBuffer().indexOf(opts.radixPoint.charAt(0)) + 1; - if (pos.begin <= caretPos) { - if (k === opts.radixPoint.charCodeAt(0)) offset = 1; - pos.begin -= 1; - pos.end -= 1; - } - } - getMaskSet().writeOutBuffer = true; - var valResult = isValid(pos, c, strict); - if (valResult !== false) { - resetMaskSet(true); - forwardPosition = valResult.caret !== undefined ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos); - getMaskSet().p = forwardPosition; - } - forwardPosition = (opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition) + offset; - if (writeOut !== false) { - setTimeout(function() { - opts.onKeyValidation.call(input, k, valResult, opts); - }, 0); - if (getMaskSet().writeOutBuffer && valResult !== false) { - var buffer = getBuffer(); - writeBuffer(input, buffer, forwardPosition, e, checkval !== true); - } - } - e.preventDefault(); - if (checkval) { - if (valResult !== false) valResult.forwardPosition = forwardPosition; - return valResult; - } - } - } - }, - pasteEvent: function pasteEvent(e) { - var input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(true), caretPos = caret(input), tempValue; - if (isRTL) { - tempValue = caretPos.end; - caretPos.end = caretPos.begin; - caretPos.begin = tempValue; - } - var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length); - if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("")) valueBeforeCaret = ""; - if (valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("")) valueAfterCaret = ""; - if (window.clipboardData && window.clipboardData.getData) { - inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret; - } else if (ev.clipboardData && ev.clipboardData.getData) { - inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret; - } else return true; - var pasteValue = inputValue; - if ($.isFunction(opts.onBeforePaste)) { - pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts); - if (pasteValue === false) { - return e.preventDefault(); - } - if (!pasteValue) { - pasteValue = inputValue; - } - } - checkVal(input, false, false, pasteValue.toString().split("")); - writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join("")); - return e.preventDefault(); - }, - inputFallBackEvent: function inputFallBackEvent(e) { - function radixPointHandler(input, inputValue, caretPos) { - if (inputValue.charAt(caretPos.begin - 1) === "." && opts.radixPoint !== "") { - inputValue = inputValue.split(""); - inputValue[caretPos.begin - 1] = opts.radixPoint.charAt(0); - inputValue = inputValue.join(""); - } - return inputValue; - } - function ieMobileHandler(input, inputValue, caretPos) { - if (iemobile) { - var inputChar = inputValue.replace(getBuffer().join(""), ""); - if (inputChar.length === 1) { - var iv = inputValue.split(""); - iv.splice(caretPos.begin, 0, inputChar); - inputValue = iv.join(""); - } - } - return inputValue; - } - var input = this, inputValue = input.inputmask._valueGet(); - if (getBuffer().join("") !== inputValue) { - var caretPos = caret(input); - inputValue = radixPointHandler(input, inputValue, caretPos); - inputValue = ieMobileHandler(input, inputValue, caretPos); - if (getBuffer().join("") !== inputValue) { - var buffer = getBuffer().join(""), offset = !opts.numericInput && inputValue.length > buffer.length ? -1 : 0, frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin + offset), backBufferPart = buffer.substr(caretPos.begin + offset); - var selection = caretPos, entries = "", isEntry = false; - if (frontPart !== frontBufferPart) { - var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i; - for (i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) {} - if (isEntry) { - selection.begin = i - offset; - entries += frontPart.slice(i, selection.end); - } - } - if (backPart !== backBufferPart) { - if (backPart.length > backBufferPart.length) { - entries += backPart.slice(0, 1); - } else { - if (backPart.length < backBufferPart.length) { - selection.end += backBufferPart.length - backPart.length; - if (!isEntry && opts.radixPoint !== "" && backPart === "" && frontPart.charAt(selection.begin + offset - 1) === opts.radixPoint) { - selection.begin--; - entries = opts.radixPoint; - } - } - } - } - writeBuffer(input, getBuffer(), { - begin: selection.begin + offset, - end: selection.end + offset - }); - if (entries.length > 0) { - $.each(entries.split(""), function(ndx, entry) { - var keypress = new $.Event("keypress"); - keypress.which = entry.charCodeAt(0); - ignorable = false; - EventHandlers.keypressEvent.call(input, keypress); - }); - } else { - if (selection.begin === selection.end - 1) { - selection.begin = seekPrevious(selection.begin + 1); - if (selection.begin === selection.end - 1) { - caret(input, selection.begin); - } else { - caret(input, selection.begin, selection.end); - } - } - var keydown = new $.Event("keydown"); - keydown.keyCode = opts.numericInput ? Inputmask.keyCode.BACKSPACE : Inputmask.keyCode.DELETE; - EventHandlers.keydownEvent.call(input, keydown); - } - e.preventDefault(); - } - } - }, - beforeInputEvent: function beforeInputEvent(e) { - if (e.cancelable) { - var input = this; - switch (e.inputType) { - case "insertText": - $.each(e.data.split(""), function(ndx, entry) { - var keypress = new $.Event("keypress"); - keypress.which = entry.charCodeAt(0); - ignorable = false; - EventHandlers.keypressEvent.call(input, keypress); - }); - return e.preventDefault(); - - case "deleteContentBackward": - var keydown = new $.Event("keydown"); - keydown.keyCode = Inputmask.keyCode.BACKSPACE; - EventHandlers.keydownEvent.call(input, keydown); - return e.preventDefault(); - - case "deleteContentForward": - var keydown = new $.Event("keydown"); - keydown.keyCode = Inputmask.keyCode.DELETE; - EventHandlers.keydownEvent.call(input, keydown); - return e.preventDefault(); - } - } - }, - setValueEvent: function setValueEvent(e) { - this.inputmask.refreshValue = false; - var input = this, value = e && e.detail ? e.detail[0] : arguments[1], value = value || input.inputmask._valueGet(true); - if ($.isFunction(opts.onBeforeMask)) value = opts.onBeforeMask.call(inputmask, value, opts) || value; - value = value.toString().split(""); - checkVal(input, true, false, value); - undoValue = getBuffer().join(""); - if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("")) { - input.inputmask._valueSet(""); - } - }, - focusEvent: function focusEvent(e) { - var input = this, nptValue = input.inputmask._valueGet(); - if (opts.showMaskOnFocus) { - if (nptValue !== getBuffer().join("")) { - writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())); - } else if (mouseEnter === false) { - caret(input, seekNext(getLastValidPosition())); - } - } - if (opts.positionCaretOnTab === true && mouseEnter === false) { - EventHandlers.clickEvent.apply(input, [ e, true ]); - } - undoValue = getBuffer().join(""); - }, - mouseleaveEvent: function mouseleaveEvent(e) { - var input = this; - mouseEnter = false; - if (opts.clearMaskOnLostFocus && document.activeElement !== input) { - HandleNativePlaceholder(input, originalPlaceholder); - } - }, - clickEvent: function clickEvent(e, tabbed) { - function doRadixFocus(clickPos) { - if (opts.radixPoint !== "") { - var vps = getMaskSet().validPositions; - if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) { - if (clickPos < seekNext(-1)) return true; - var radixPos = $.inArray(opts.radixPoint, getBuffer()); - if (radixPos !== -1) { - for (var vp in vps) { - if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) { - return false; - } - } - return true; - } - } - } - return false; - } - var input = this; - setTimeout(function() { - if (document.activeElement === input) { - var selectedCaret = caret(input); - if (tabbed) { - if (isRTL) { - selectedCaret.end = selectedCaret.begin; - } else { - selectedCaret.begin = selectedCaret.end; - } - } - if (selectedCaret.begin === selectedCaret.end) { - switch (opts.positionCaretOnClick) { - case "none": - break; - - case "select": - caret(input, 0, getBuffer().length); - break; - - case "ignore": - caret(input, seekNext(getLastValidPosition())); - break; - - case "radixFocus": - if (doRadixFocus(selectedCaret.begin)) { - var radixPos = getBuffer().join("").indexOf(opts.radixPoint); - caret(input, opts.numericInput ? seekNext(radixPos) : radixPos); - break; - } - - default: - var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, true), lastPosition = seekNext(lvclickPosition); - if (clickPosition < lastPosition) { - caret(input, !isMask(clickPosition, true) && !isMask(clickPosition - 1, true) ? seekNext(clickPosition) : clickPosition); - } else { - var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match); - if (placeholder !== "" && getBuffer()[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) { - var newPos = seekNext(lastPosition); - if (clickPosition >= newPos || clickPosition === lastPosition) { - lastPosition = newPos; - } - } - caret(input, lastPosition); - } - break; - } - } - } - }, 0); - }, - cutEvent: function cutEvent(e) { - var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e; - var clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end); - clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clipData.join("")); - if (document.execCommand) document.execCommand("copy"); - handleRemove(input, Inputmask.keyCode.DELETE, pos); - writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")); - }, - blurEvent: function blurEvent(e) { - var $input = $(this), input = this; - if (input.inputmask) { - HandleNativePlaceholder(input, originalPlaceholder); - var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice(); - if (nptValue !== "" || colorMask !== undefined) { - if (opts.clearMaskOnLostFocus) { - if (getLastValidPosition() === -1 && nptValue === getBufferTemplate().join("")) { - buffer = []; - } else { - clearOptionalTail(buffer); - } - } - if (isComplete(buffer) === false) { - setTimeout(function() { - $input.trigger("incomplete"); - }, 0); - if (opts.clearIncomplete) { - resetMaskSet(); - if (opts.clearMaskOnLostFocus) { - buffer = []; - } else { - buffer = getBufferTemplate().slice(); - } - } - } - writeBuffer(input, buffer, undefined, e); - } - if (undoValue !== getBuffer().join("")) { - undoValue = buffer.join(""); - $input.trigger("change"); - } - } - }, - mouseenterEvent: function mouseenterEvent(e) { - var input = this; - mouseEnter = true; - if (document.activeElement !== input && opts.showMaskOnHover) { - HandleNativePlaceholder(input, (isRTL ? getBuffer().slice().reverse() : getBuffer()).join("")); - } - }, - submitEvent: function submitEvent(e) { - if (undoValue !== getBuffer().join("")) { - $el.trigger("change"); - } - if (opts.clearMaskOnLostFocus && getLastValidPosition() === -1 && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("")) { - el.inputmask._valueSet(""); - } - if (opts.clearIncomplete && isComplete(getBuffer()) === false) { - el.inputmask._valueSet(""); - } - if (opts.removeMaskOnSubmit) { - el.inputmask._valueSet(el.inputmask.unmaskedvalue(), true); - setTimeout(function() { - writeBuffer(el, getBuffer()); - }, 0); - } - }, - resetEvent: function resetEvent(e) { - el.inputmask.refreshValue = true; - setTimeout(function() { - $el.trigger("setvalue"); - }, 0); - } - }; - function checkVal(input, writeOut, strict, nptvl, initiatingEvent) { - var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = "", initialNdx = -1, result = undefined; - function isTemplateMatch(ndx, charCodes) { - var charCodeNdx = getMaskTemplate(true, 0, false).slice(ndx, seekNext(ndx)).join("").replace(/'/g, "").indexOf(charCodes); - return charCodeNdx !== -1 && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || getTest(ndx).match.fn === null && getTest(ndx).match.nativeDef === "'" + charCodes.charAt(0) || getTest(ndx).match.nativeDef === " " && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || getTest(ndx + 1).match.fn === null && getTest(ndx + 1).match.nativeDef === "'" + charCodes.charAt(0))); - } - resetMaskSet(); - if (!strict && opts.autoUnmask !== true) { - var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g")); - if (matches && matches.length > 0) { - inputValue.splice(0, matches.length * staticInput.length); - initialNdx = seekNext(initialNdx); - } - } else { - initialNdx = seekNext(initialNdx); - } - if (initialNdx === -1) { - getMaskSet().p = seekNext(initialNdx); - initialNdx = 0; - } else getMaskSet().p = initialNdx; - inputmask.caretPos = { - begin: initialNdx - }; - $.each(inputValue, function(ndx, charCode) { - if (charCode !== undefined) { - if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, true) && isValid(ndx, inputValue[ndx], true, undefined, undefined, true) === false) { - getMaskSet().p++; - } else { - var keypress = new $.Event("_checkval"); - keypress.which = charCode.charCodeAt(0); - charCodes += charCode; - var lvp = getLastValidPosition(undefined, true); - if (!isTemplateMatch(initialNdx, charCodes)) { - result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, inputmask.caretPos.begin); - if (result) { - initialNdx = inputmask.caretPos.begin + 1; - charCodes = ""; - } - } else { - result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, lvp + 1); - } - if (result) { - writeBuffer(undefined, getBuffer(), result.forwardPosition, keypress, false); - inputmask.caretPos = { - begin: result.forwardPosition, - end: result.forwardPosition - }; - } - } - } - }); - if (writeOut) writeBuffer(input, getBuffer(), result ? result.forwardPosition : undefined, initiatingEvent || new $.Event("checkval"), initiatingEvent && initiatingEvent.type === "input"); - } - function unmaskedvalue(input) { - if (input) { - if (input.inputmask === undefined) { - return input.value; - } - if (input.inputmask && input.inputmask.refreshValue) { - EventHandlers.setValueEvent.call(input); - } - } - var umValue = [], vps = getMaskSet().validPositions; - for (var pndx in vps) { - if (vps[pndx].match && vps[pndx].match.fn != null) { - umValue.push(vps[pndx].input); - } - } - var unmaskedValue = umValue.length === 0 ? "" : (isRTL ? umValue.reverse() : umValue).join(""); - if ($.isFunction(opts.onUnMask)) { - var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(""); - unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts); - } - return unmaskedValue; - } - function caret(input, begin, end, notranslate) { - function translatePosition(pos) { - if (isRTL && typeof pos === "number" && (!opts.greedy || opts.placeholder !== "") && el) { - pos = el.inputmask._valueGet().length - pos; - } - return pos; - } - var range; - if (begin !== undefined) { - if ($.isArray(begin)) { - end = isRTL ? begin[0] : begin[1]; - begin = isRTL ? begin[1] : begin[0]; - } - if (begin.begin !== undefined) { - end = isRTL ? begin.begin : begin.end; - begin = isRTL ? begin.end : begin.begin; - } - if (typeof begin === "number") { - begin = notranslate ? begin : translatePosition(begin); - end = notranslate ? end : translatePosition(end); - end = typeof end == "number" ? end : begin; - var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; - input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0; - input.inputmask.caretPos = { - begin: begin, - end: end - }; - if (input === document.activeElement) { - if ("selectionStart" in input) { - input.selectionStart = begin; - input.selectionEnd = end; - } else if (window.getSelection) { - range = document.createRange(); - if (input.firstChild === undefined || input.firstChild === null) { - var textNode = document.createTextNode(""); - input.appendChild(textNode); - } - range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length); - range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length); - range.collapse(true); - var sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } else if (input.createTextRange) { - range = input.createTextRange(); - range.collapse(true); - range.moveEnd("character", end); - range.moveStart("character", begin); - range.select(); - } - renderColorMask(input, { - begin: begin, - end: end - }); - } - } - } else { - if ("selectionStart" in input) { - begin = input.selectionStart; - end = input.selectionEnd; - } else if (window.getSelection) { - range = window.getSelection().getRangeAt(0); - if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) { - begin = range.startOffset; - end = range.endOffset; - } - } else if (document.selection && document.selection.createRange) { - range = document.selection.createRange(); - begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length); - end = begin + range.text.length; - } - return { - begin: notranslate ? begin : translatePosition(begin), - end: notranslate ? end : translatePosition(end) - }; - } - } - function determineLastRequiredPosition(returnDefinition) { - var buffer = getMaskTemplate(true, getLastValidPosition(), true, true), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, testPos; - for (pos = lvp + 1; pos < buffer.length; pos++) { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - ndxIntlzr = testPos.locator.slice(); - positions[pos] = $.extend(true, {}, testPos); - } - var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined; - for (pos = bl - 1; pos > lvp; pos--) { - testPos = positions[pos]; - if ((testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.fn != null || testPos.match.fn === null && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && getTests(pos)[0].def !== "")) && buffer[pos] === getPlaceholder(pos, testPos.match)) { - bl--; - } else break; - } - return returnDefinition ? { - l: bl, - def: positions[bl] ? positions[bl].match : undefined - } : bl; - } - function clearOptionalTail(buffer) { - buffer.length = 0; - var template = getMaskTemplate(true, 0, true, undefined, true), lmnt, validPos; - while (lmnt = template.shift(), lmnt !== undefined) { - buffer.push(lmnt); - } - return buffer; - } - function isComplete(buffer) { - if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts); - if (opts.repeat === "*") return undefined; - var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp.l); - if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) { - complete = true; - for (var i = 0; i <= aml; i++) { - var test = getTestTemplate(i).match; - if (test.fn !== null && getMaskSet().validPositions[i] === undefined && test.optionality !== true && test.optionalQuantifier !== true || test.fn === null && buffer[i] !== getPlaceholder(i, test)) { - complete = false; - break; - } - } - } - return complete; - } - function handleRemove(input, k, pos, strict, fromIsValid) { - if (opts.numericInput || isRTL) { - if (k === Inputmask.keyCode.BACKSPACE) { - k = Inputmask.keyCode.DELETE; - } else if (k === Inputmask.keyCode.DELETE) { - k = Inputmask.keyCode.BACKSPACE; - } - if (isRTL) { - var pend = pos.end; - pos.end = pos.begin; - pos.begin = pend; - } - } - if (k === Inputmask.keyCode.BACKSPACE && pos.end - pos.begin < 1) { - pos.begin = seekPrevious(pos.begin); - if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) { - pos.begin--; - } - } else if (k === Inputmask.keyCode.DELETE && pos.begin === pos.end) { - pos.end = isMask(pos.end, true) && getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint ? pos.end + 1 : seekNext(pos.end) + 1; - if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) { - pos.end++; - } - } - revalidateMask(pos); - if (strict !== true && opts.keepStatic !== false || opts.regex !== null) { - var result = alternate(true); - if (result) { - var newPos = result.caret !== undefined ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, true); - if (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) { - pos.begin == newPos; - } - } - } - var lvp = getLastValidPosition(pos.begin, true); - if (lvp < pos.begin || pos.begin === -1) { - getMaskSet().p = seekNext(lvp); - } else if (strict !== true) { - getMaskSet().p = pos.begin; - if (fromIsValid !== true) { - while (getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined) { - getMaskSet().p++; - } - } - } - } - function initializeColorMask(input) { - var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null); - function findCaretPos(clientx) { - var e = document.createElement("span"), caretPos; - for (var style in computedStyle) { - if (isNaN(style) && style.indexOf("font") !== -1) { - e.style[style] = computedStyle[style]; - } - } - e.style.textTransform = computedStyle.textTransform; - e.style.letterSpacing = computedStyle.letterSpacing; - e.style.position = "absolute"; - e.style.height = "auto"; - e.style.width = "auto"; - e.style.visibility = "hidden"; - e.style.whiteSpace = "nowrap"; - document.body.appendChild(e); - var inputText = input.inputmask._valueGet(), previousWidth = 0, itl; - for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) { - e.innerHTML += inputText.charAt(caretPos) || "_"; - if (e.offsetWidth >= clientx) { - var offset1 = clientx - previousWidth; - var offset2 = e.offsetWidth - clientx; - e.innerHTML = inputText.charAt(caretPos); - offset1 -= e.offsetWidth / 3; - caretPos = offset1 < offset2 ? caretPos - 1 : caretPos; - break; - } - previousWidth = e.offsetWidth; - } - document.body.removeChild(e); - return caretPos; - } - var template = document.createElement("div"); - template.style.width = computedStyle.width; - template.style.textAlign = computedStyle.textAlign; - colorMask = document.createElement("div"); - input.inputmask.colorMask = colorMask; - colorMask.className = "im-colormask"; - input.parentNode.insertBefore(colorMask, input); - input.parentNode.removeChild(input); - colorMask.appendChild(input); - colorMask.appendChild(template); - input.style.left = template.offsetLeft + "px"; - $(colorMask).on("mouseleave", function(e) { - return EventHandlers.mouseleaveEvent.call(input, [ e ]); - }); - $(colorMask).on("mouseenter", function(e) { - return EventHandlers.mouseenterEvent.call(input, [ e ]); - }); - $(colorMask).on("click", function(e) { - caret(input, findCaretPos(e.clientX)); - return EventHandlers.clickEvent.call(input, [ e ]); - }); - } - function renderColorMask(input, caretPos, clear) { - var maskTemplate = [], isStatic = false, test, testPos, ndxIntlzr, pos = 0; - function setEntry(entry) { - if (entry === undefined) entry = ""; - if (!isStatic && (test.fn === null || testPos.input === undefined)) { - isStatic = true; - maskTemplate.push("" + entry); - } else if (isStatic && (test.fn !== null && testPos.input !== undefined || test.def === "")) { - isStatic = false; - var mtl = maskTemplate.length; - maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + ""; - maskTemplate.push(entry); - } else maskTemplate.push(entry); - } - function setCaret() { - if (document.activeElement === input) { - maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end || caretPos.end > getMaskSet().maskLength ? '' : ''); - maskTemplate.splice(caretPos.end + 1, 0, ""); - } - } - if (colorMask !== undefined) { - var buffer = getBuffer(); - if (caretPos === undefined) { - caretPos = caret(input); - } else if (caretPos.begin === undefined) { - caretPos = { - begin: caretPos, - end: caretPos - }; - } - if (clear !== true) { - var lvp = getLastValidPosition(); - do { - if (getMaskSet().validPositions[pos]) { - testPos = getMaskSet().validPositions[pos]; - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - setEntry(buffer[pos]); - } else { - testPos = getTestTemplate(pos, ndxIntlzr, pos - 1); - test = testPos.match; - ndxIntlzr = testPos.locator.slice(); - if (opts.jitMasking === false || pos < lvp || typeof opts.jitMasking === "number" && isFinite(opts.jitMasking) && opts.jitMasking > pos) { - setEntry(getPlaceholder(pos, test)); - } else isStatic = false; - } - pos++; - } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== "") || lvp > pos || isStatic); - if (isStatic) setEntry(); - setCaret(); - } - var template = colorMask.getElementsByTagName("div")[0]; - template.innerHTML = maskTemplate.join(""); - input.inputmask.positionColorMask(input, template); - } - } - function mask(elem) { - function isElementTypeSupported(input, opts) { - function patchValueProperty(npt) { - var valueGet; - var valueSet; - function patchValhook(type) { - if ($.valHooks && ($.valHooks[type] === undefined || $.valHooks[type].inputmaskpatch !== true)) { - var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) { - return elem.value; - }; - var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) { - elem.value = value; - return elem; - }; - $.valHooks[type] = { - get: function get(elem) { - if (elem.inputmask) { - if (elem.inputmask.opts.autoUnmask) { - return elem.inputmask.unmaskedvalue(); - } else { - var result = valhookGet(elem); - return getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) !== -1 || opts.nullable !== true ? result : ""; - } - } else return valhookGet(elem); - }, - set: function set(elem, value) { - var $elem = $(elem), result; - result = valhookSet(elem, value); - if (elem.inputmask) { - $elem.trigger("setvalue", [ value ]); - } - return result; - }, - inputmaskpatch: true - }; - } - } - function getter() { - if (this.inputmask) { - return this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : getLastValidPosition() !== -1 || opts.nullable !== true ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : ""; - } else return valueGet.call(this); - } - function setter(value) { - valueSet.call(this, value); - if (this.inputmask) { - $(this).trigger("setvalue", [ value ]); - } - } - function installNativeValueSetFallback(npt) { - EventRuler.on(npt, "mouseenter", function(event) { - var $input = $(this), input = this, value = input.inputmask._valueGet(); - if (value !== getBuffer().join("")) { - $input.trigger("setvalue"); - } - }); - } - if (!npt.inputmask.__valueGet) { - if (opts.noValuePatching !== true) { - if (Object.getOwnPropertyDescriptor) { - if (typeof Object.getPrototypeOf !== "function") { - Object.getPrototypeOf = _typeof("test".__proto__) === "object" ? function(object) { - return object.__proto__; - } : function(object) { - return object.constructor.prototype; - }; - } - var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : undefined; - if (valueProperty && valueProperty.get && valueProperty.set) { - valueGet = valueProperty.get; - valueSet = valueProperty.set; - Object.defineProperty(npt, "value", { - get: getter, - set: setter, - configurable: true - }); - } else if (npt.tagName !== "INPUT") { - valueGet = function valueGet() { - return this.textContent; - }; - valueSet = function valueSet(value) { - this.textContent = value; - }; - Object.defineProperty(npt, "value", { - get: getter, - set: setter, - configurable: true - }); - } - } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) { - valueGet = npt.__lookupGetter__("value"); - valueSet = npt.__lookupSetter__("value"); - npt.__defineGetter__("value", getter); - npt.__defineSetter__("value", setter); - } - npt.inputmask.__valueGet = valueGet; - npt.inputmask.__valueSet = valueSet; - } - npt.inputmask._valueGet = function(overruleRTL) { - return isRTL && overruleRTL !== true ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el); - }; - npt.inputmask._valueSet = function(value, overruleRTL) { - valueSet.call(this.el, value === null || value === undefined ? "" : overruleRTL !== true && isRTL ? value.split("").reverse().join("") : value); - }; - if (valueGet === undefined) { - valueGet = function valueGet() { - return this.value; - }; - valueSet = function valueSet(value) { - this.value = value; - }; - patchValhook(npt.type); - installNativeValueSetFallback(npt); - } - } - } - var elementType = input.getAttribute("type"); - var isSupported = input.tagName === "INPUT" && $.inArray(elementType, opts.supportsInputType) !== -1 || input.isContentEditable || input.tagName === "TEXTAREA"; - if (!isSupported) { - if (input.tagName === "INPUT") { - var el = document.createElement("input"); - el.setAttribute("type", elementType); - isSupported = el.type === "text"; - el = null; - } else isSupported = "partial"; - } - if (isSupported !== false) { - patchValueProperty(input); - } else input.inputmask = undefined; - return isSupported; - } - EventRuler.off(elem); - var isSupported = isElementTypeSupported(elem, opts); - if (isSupported !== false) { - el = elem; - $el = $(el); - originalPlaceholder = el.placeholder; - maxLength = el !== undefined ? el.maxLength : undefined; - if (maxLength === -1) maxLength = undefined; - if (opts.colorMask === true) { - initializeColorMask(el); - } - if (mobile) { - if ("inputMode" in el) { - el.inputmode = opts.inputmode; - el.setAttribute("inputmode", opts.inputmode); - } - if (opts.disablePredictiveText === true) { - if ("autocorrect" in el) { - el.autocorrect = false; - } else { - if (opts.colorMask !== true) { - initializeColorMask(el); - } - el.type = "password"; - } - } - } - if (isSupported === true) { - el.setAttribute("im-insert", opts.insertMode); - EventRuler.on(el, "submit", EventHandlers.submitEvent); - EventRuler.on(el, "reset", EventHandlers.resetEvent); - EventRuler.on(el, "blur", EventHandlers.blurEvent); - EventRuler.on(el, "focus", EventHandlers.focusEvent); - if (opts.colorMask !== true) { - EventRuler.on(el, "click", EventHandlers.clickEvent); - EventRuler.on(el, "mouseleave", EventHandlers.mouseleaveEvent); - EventRuler.on(el, "mouseenter", EventHandlers.mouseenterEvent); - } - EventRuler.on(el, "paste", EventHandlers.pasteEvent); - EventRuler.on(el, "cut", EventHandlers.cutEvent); - EventRuler.on(el, "complete", opts.oncomplete); - EventRuler.on(el, "incomplete", opts.onincomplete); - EventRuler.on(el, "cleared", opts.oncleared); - if (!mobile && opts.inputEventOnly !== true) { - EventRuler.on(el, "keydown", EventHandlers.keydownEvent); - EventRuler.on(el, "keypress", EventHandlers.keypressEvent); - } else { - el.removeAttribute("maxLength"); - } - EventRuler.on(el, "input", EventHandlers.inputFallBackEvent); - EventRuler.on(el, "beforeinput", EventHandlers.beforeInputEvent); - } - EventRuler.on(el, "setvalue", EventHandlers.setValueEvent); - undoValue = getBufferTemplate().join(""); - if (el.inputmask._valueGet(true) !== "" || opts.clearMaskOnLostFocus === false || document.activeElement === el) { - var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(true), opts) || el.inputmask._valueGet(true) : el.inputmask._valueGet(true); - if (initialValue !== "") checkVal(el, true, false, initialValue.split("")); - var buffer = getBuffer().slice(); - undoValue = buffer.join(""); - if (isComplete(buffer) === false) { - if (opts.clearIncomplete) { - resetMaskSet(); - } - } - if (opts.clearMaskOnLostFocus && document.activeElement !== el) { - if (getLastValidPosition() === -1) { - buffer = []; - } else { - clearOptionalTail(buffer); - } - } - if (opts.clearMaskOnLostFocus === false || opts.showMaskOnFocus && document.activeElement === el || el.inputmask._valueGet(true) !== "") writeBuffer(el, buffer); - if (document.activeElement === el) { - caret(el, seekNext(getLastValidPosition())); - } - } - } - } - var valueBuffer; - if (actionObj !== undefined) { - switch (actionObj.action) { - case "isComplete": - el = actionObj.el; - return isComplete(getBuffer()); - - case "unmaskedvalue": - if (el === undefined || actionObj.value !== undefined) { - valueBuffer = actionObj.value; - valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(""); - checkVal.call(this, undefined, false, false, valueBuffer); - if ($.isFunction(opts.onBeforeWrite)) opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts); - } - return unmaskedvalue(el); - - case "mask": - mask(el); - break; - - case "format": - valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(""); - checkVal.call(this, undefined, true, false, valueBuffer); - if (actionObj.metadata) { - return { - value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""), - metadata: maskScope.call(this, { - action: "getmetadata" - }, maskset, opts) - }; - } - return isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""); - - case "isValid": - if (actionObj.value) { - valueBuffer = actionObj.value.split(""); - checkVal.call(this, undefined, true, true, valueBuffer); - } else { - actionObj.value = getBuffer().join(""); - } - var buffer = getBuffer(); - var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; - for (;lmib > rl; lmib--) { - if (isMask(lmib)) break; - } - buffer.splice(rl, lmib + 1 - rl); - return isComplete(buffer) && actionObj.value === getBuffer().join(""); - - case "getemptymask": - return getBufferTemplate().join(""); - - case "remove": - if (el && el.inputmask) { - $.data(el, "_inputmask_opts", null); - $el = $(el); - el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(true)); - EventRuler.off(el); - if (el.inputmask.colorMask) { - colorMask = el.inputmask.colorMask; - colorMask.removeChild(el); - colorMask.parentNode.insertBefore(el, colorMask); - colorMask.parentNode.removeChild(colorMask); - } - var valueProperty; - if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) { - valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"); - if (valueProperty) { - if (el.inputmask.__valueGet) { - Object.defineProperty(el, "value", { - get: el.inputmask.__valueGet, - set: el.inputmask.__valueSet, - configurable: true - }); - } - } - } else if (document.__lookupGetter__ && el.__lookupGetter__("value")) { - if (el.inputmask.__valueGet) { - el.__defineGetter__("value", el.inputmask.__valueGet); - el.__defineSetter__("value", el.inputmask.__valueSet); - } - } - el.inputmask = undefined; - } - return el; - break; - - case "getmetadata": - if ($.isArray(maskset.metadata)) { - var maskTarget = getMaskTemplate(true, 0, false).join(""); - $.each(maskset.metadata, function(ndx, mtdt) { - if (mtdt.mask === maskTarget) { - maskTarget = mtdt; - return false; - } - }); - return maskTarget; - } - return maskset.metadata; - } - } - } - return Inputmask; - }); -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(4) ], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, - __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function($) { - return $; - }); -}, function(module, exports) { - module.exports = jQuery; -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - if (true) !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return typeof window !== "undefined" ? window : new (eval("require('jsdom').JSDOM"))("").window; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else {} -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2) ], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, - __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function(Inputmask) { - var $ = Inputmask.dependencyLib; - var formatCode = { - d: [ "[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", Date.prototype.getDate ], - dd: [ "0[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", function() { - return pad(Date.prototype.getDate.call(this), 2); - } ], - ddd: [ "" ], - dddd: [ "" ], - m: [ "[1-9]|1[012]", Date.prototype.setMonth, "month", function() { - return Date.prototype.getMonth.call(this) + 1; - } ], - mm: [ "0[1-9]|1[012]", Date.prototype.setMonth, "month", function() { - return pad(Date.prototype.getMonth.call(this) + 1, 2); - } ], - mmm: [ "" ], - mmmm: [ "" ], - yy: [ "[0-9]{2}", Date.prototype.setFullYear, "year", function() { - return pad(Date.prototype.getFullYear.call(this), 2); - } ], - yyyy: [ "[0-9]{4}", Date.prototype.setFullYear, "year", function() { - return pad(Date.prototype.getFullYear.call(this), 4); - } ], - h: [ "[1-9]|1[0-2]", Date.prototype.setHours, "hours", Date.prototype.getHours ], - hh: [ "0[1-9]|1[0-2]", Date.prototype.setHours, "hours", function() { - return pad(Date.prototype.getHours.call(this), 2); - } ], - hhh: [ "[0-9]+", Date.prototype.setHours, "hours", Date.prototype.getHours ], - H: [ "1?[0-9]|2[0-3]", Date.prototype.setHours, "hours", Date.prototype.getHours ], - HH: [ "0[0-9]|1[0-9]|2[0-3]", Date.prototype.setHours, "hours", function() { - return pad(Date.prototype.getHours.call(this), 2); - } ], - HHH: [ "[0-9]+", Date.prototype.setHours, "hours", Date.prototype.getHours ], - M: [ "[1-5]?[0-9]", Date.prototype.setMinutes, "minutes", Date.prototype.getMinutes ], - MM: [ "0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]", Date.prototype.setMinutes, "minutes", function() { - return pad(Date.prototype.getMinutes.call(this), 2); - } ], - ss: [ "[0-5][0-9]", Date.prototype.setSeconds, "seconds", function() { - return pad(Date.prototype.getSeconds.call(this), 2); - } ], - l: [ "[0-9]{3}", Date.prototype.setMilliseconds, "milliseconds", function() { - return pad(Date.prototype.getMilliseconds.call(this), 3); - } ], - L: [ "[0-9]{2}", Date.prototype.setMilliseconds, "milliseconds", function() { - return pad(Date.prototype.getMilliseconds.call(this), 2); - } ], - t: [ "[ap]" ], - tt: [ "[ap]m" ], - T: [ "[AP]" ], - TT: [ "[AP]M" ], - Z: [ "" ], - o: [ "" ], - S: [ "" ] - }, formatAlias = { - isoDate: "yyyy-mm-dd", - isoTime: "HH:MM:ss", - isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", - isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" - }; - function getTokenizer(opts) { - if (!opts.tokenizer) { - var tokens = []; - for (var ndx in formatCode) { - if (tokens.indexOf(ndx[0]) === -1) tokens.push(ndx[0]); - } - opts.tokenizer = "(" + tokens.join("+|") + ")+?|."; - opts.tokenizer = new RegExp(opts.tokenizer, "g"); - } - return opts.tokenizer; - } - function isValidDate(dateParts, currentResult) { - return !isFinite(dateParts.rawday) || dateParts.day == "29" && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day ? currentResult : false; - } - function isDateInRange(dateParts, opts) { - var result = true; - if (opts.min) { - if (dateParts["rawyear"]) { - var rawYear = dateParts["rawyear"].replace(/[^0-9]/g, ""), minYear = opts.min.year.substr(0, rawYear.length); - result = minYear <= rawYear; - } - if (dateParts["year"] === dateParts["rawyear"]) { - if (opts.min.date.getTime() === opts.min.date.getTime()) { - result = opts.min.date.getTime() <= dateParts.date.getTime(); - } - } - } - if (result && opts.max && opts.max.date.getTime() === opts.max.date.getTime()) { - result = opts.max.date.getTime() >= dateParts.date.getTime(); - } - return result; - } - function parse(format, dateObjValue, opts, raw) { - var mask = "", match; - while (match = getTokenizer(opts).exec(format)) { - if (dateObjValue === undefined) { - if (formatCode[match[0]]) { - mask += "(" + formatCode[match[0]][0] + ")"; - } else { - switch (match[0]) { - case "[": - mask += "("; - break; - - case "]": - mask += ")?"; - break; - - default: - mask += Inputmask.escapeRegex(match[0]); - } - } - } else { - if (formatCode[match[0]]) { - if (raw !== true && formatCode[match[0]][3]) { - var getFn = formatCode[match[0]][3]; - mask += getFn.call(dateObjValue.date); - } else if (formatCode[match[0]][2]) mask += dateObjValue["raw" + formatCode[match[0]][2]]; else mask += match[0]; - } else mask += match[0]; - } - } - return mask; - } - function pad(val, len) { - val = String(val); - len = len || 2; - while (val.length < len) { - val = "0" + val; - } - return val; - } - function analyseMask(maskString, format, opts) { - var dateObj = { - date: new Date(1, 0, 1) - }, targetProp, mask = maskString, match, dateOperation, targetValidator; - function extendProperty(value) { - var correctedValue = value.replace(/[^0-9]/g, "0"); - if (correctedValue != value) { - var enteredPart = value.replace(/[^0-9]/g, ""), min = (opts.min && opts.min[targetProp] || value).toString(), max = (opts.max && opts.max[targetProp] || value).toString(); - correctedValue = enteredPart + (enteredPart < min.slice(0, enteredPart.length) ? min.slice(enteredPart.length) : enteredPart > max.slice(0, enteredPart.length) ? max.slice(enteredPart.length) : correctedValue.toString().slice(enteredPart.length)); - } - return correctedValue; - } - function setValue(dateObj, value, opts) { - dateObj[targetProp] = extendProperty(value); - dateObj["raw" + targetProp] = value; - if (dateOperation !== undefined) dateOperation.call(dateObj.date, targetProp == "month" ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]); - } - if (typeof mask === "string") { - while (match = getTokenizer(opts).exec(format)) { - var value = mask.slice(0, match[0].length); - if (formatCode.hasOwnProperty(match[0])) { - targetValidator = formatCode[match[0]][0]; - targetProp = formatCode[match[0]][2]; - dateOperation = formatCode[match[0]][1]; - setValue(dateObj, value, opts); - } - mask = mask.slice(value.length); - } - return dateObj; - } else if (mask && (typeof mask === "undefined" ? "undefined" : _typeof(mask)) === "object" && mask.hasOwnProperty("date")) { - return mask; - } - return undefined; - } - Inputmask.extendAliases({ - datetime: { - mask: function mask(opts) { - formatCode.S = opts.i18n.ordinalSuffix.join("|"); - opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat; - opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat; - opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat; - opts.placeholder = opts.placeholder !== "" ? opts.placeholder : opts.inputFormat.replace(/[\[\]]/, ""); - opts.regex = parse(opts.inputFormat, undefined, opts); - return null; - }, - placeholder: "", - inputFormat: "isoDateTime", - displayFormat: undefined, - outputFormat: undefined, - min: null, - max: null, - i18n: { - dayNames: [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ], - monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], - ordinalSuffix: [ "st", "nd", "rd", "th" ] - }, - postValidation: function postValidation(buffer, pos, currentResult, opts) { - opts.min = analyseMask(opts.min, opts.inputFormat, opts); - opts.max = analyseMask(opts.max, opts.inputFormat, opts); - var result = currentResult, dateParts = analyseMask(buffer.join(""), opts.inputFormat, opts); - if (result && dateParts.date.getTime() === dateParts.date.getTime()) { - result = isValidDate(dateParts, result); - result = result && isDateInRange(dateParts, opts); - } - if (pos && result && currentResult.pos !== pos) { - return { - buffer: parse(opts.inputFormat, dateParts, opts), - refreshFromBuffer: { - start: pos, - end: currentResult.pos - } - }; - } - return result; - }, - onKeyDown: function onKeyDown(e, buffer, caretPos, opts) { - var input = this; - if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) { - var today = new Date(), match, date = ""; - while (match = getTokenizer(opts).exec(opts.inputFormat)) { - if (match[0].charAt(0) === "d") { - date += pad(today.getDate(), match[0].length); - } else if (match[0].charAt(0) === "m") { - date += pad(today.getMonth() + 1, match[0].length); - } else if (match[0] === "yyyy") { - date += today.getFullYear().toString(); - } else if (match[0].charAt(0) === "y") { - date += pad(today.getYear(), match[0].length); - } - } - input.inputmask._valueSet(date); - $(input).trigger("setvalue"); - } - }, - onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) { - return parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, true); - }, - casing: function casing(elem, test, pos, validPositions) { - if (test.nativeDef.indexOf("[ap]") == 0) return elem.toLowerCase(); - if (test.nativeDef.indexOf("[AP]") == 0) return elem.toUpperCase(); - return elem; - }, - insertMode: false, - shiftPositions: false - } - }); - return Inputmask; - }); -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(2) ], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, - __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function(Inputmask) { - var $ = Inputmask.dependencyLib; - function autoEscape(txt, opts) { - var escapedTxt = ""; - for (var i = 0; i < txt.length; i++) { - if (Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i)) { - escapedTxt += "\\" + txt.charAt(i); - } else escapedTxt += txt.charAt(i); - } - return escapedTxt; - } - function alignDigits(buffer, digits, opts) { - if (digits > 0) { - var radixPosition = $.inArray(opts.radixPoint, buffer); - if (radixPosition === -1) { - buffer.push(opts.radixPoint); - radixPosition = buffer.length - 1; - } - for (var i = 1; i <= digits; i++) { - buffer[radixPosition + i] = buffer[radixPosition + i] || "0"; - } - } - return buffer; - } - Inputmask.extendAliases({ - numeric: { - mask: function mask(opts) { - if (opts.repeat !== 0 && isNaN(opts.integerDigits)) { - opts.integerDigits = opts.repeat; - } - opts.repeat = 0; - if (opts.groupSeparator === opts.radixPoint && opts.digits && opts.digits !== "0") { - if (opts.radixPoint === ".") { - opts.groupSeparator = ","; - } else if (opts.radixPoint === ",") { - opts.groupSeparator = "."; - } else opts.groupSeparator = ""; - } - if (opts.groupSeparator === " ") { - opts.skipOptionalPartCharacter = undefined; - } - opts.autoGroup = opts.autoGroup && opts.groupSeparator !== ""; - if (opts.autoGroup) { - if (typeof opts.groupSize == "string" && isFinite(opts.groupSize)) opts.groupSize = parseInt(opts.groupSize); - if (isFinite(opts.integerDigits)) { - var seps = Math.floor(opts.integerDigits / opts.groupSize); - var mod = opts.integerDigits % opts.groupSize; - opts.integerDigits = parseInt(opts.integerDigits) + (mod === 0 ? seps - 1 : seps); - if (opts.integerDigits < 1) { - opts.integerDigits = "*"; - } - } - } - if (opts.placeholder.length > 1) { - opts.placeholder = opts.placeholder.charAt(0); - } - if (opts.positionCaretOnClick === "radixFocus" && opts.placeholder === "" && opts.integerOptional === false) { - opts.positionCaretOnClick = "lvp"; - } - opts.definitions[";"] = opts.definitions["~"]; - opts.definitions[";"].definitionSymbol = "~"; - if (opts.numericInput === true) { - opts.positionCaretOnClick = opts.positionCaretOnClick === "radixFocus" ? "lvp" : opts.positionCaretOnClick; - opts.digitsOptional = false; - if (isNaN(opts.digits)) opts.digits = 2; - opts.decimalProtect = false; - } - var mask = "[+]"; - mask += autoEscape(opts.prefix, opts); - if (opts.integerOptional === true) { - mask += "~{1," + opts.integerDigits + "}"; - } else mask += "~{" + opts.integerDigits + "}"; - if (opts.digits !== undefined) { - var radixDef = opts.decimalProtect ? ":" : opts.radixPoint; - var dq = opts.digits.toString().split(","); - if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) { - mask += radixDef + ";{" + opts.digits + "}"; - } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) { - if (opts.digitsOptional) { - mask += "[" + radixDef + ";{1," + opts.digits + "}]"; - } else mask += radixDef + ";{" + opts.digits + "}"; - } - } - mask += autoEscape(opts.suffix, opts); - mask += "[-]"; - opts.greedy = false; - return mask; - }, - placeholder: "", - greedy: false, - digits: "*", - digitsOptional: true, - enforceDigitsOnBlur: false, - radixPoint: ".", - positionCaretOnClick: "radixFocus", - groupSize: 3, - groupSeparator: "", - autoGroup: false, - allowMinus: true, - negationSymbol: { - front: "-", - back: "" - }, - integerDigits: "+", - integerOptional: true, - prefix: "", - suffix: "", - rightAlign: true, - decimalProtect: true, - min: null, - max: null, - step: 1, - insertMode: true, - autoUnmask: false, - unmaskAsNumber: false, - inputType: "text", - inputmode: "numeric", - preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset) { - if (c === "-" || c === opts.negationSymbol.front) { - if (opts.allowMinus !== true) return false; - opts.isNegative = opts.isNegative === undefined ? true : !opts.isNegative; - if (buffer.join("") === "") return true; - return { - caret: maskset.validPositions[pos] ? pos : undefined, - dopost: true - }; - } - if (isSelection === false && c === opts.radixPoint && opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) { - var radixPos = $.inArray(opts.radixPoint, buffer); - if (radixPos !== -1 && maskset.validPositions[radixPos] !== undefined) { - if (opts.numericInput === true) { - return pos === radixPos; - } - return { - caret: radixPos + 1 - }; - } - } - return true; - }, - postValidation: function postValidation(buffer, pos, currentResult, opts) { - function buildPostMask(buffer, opts) { - var postMask = ""; - postMask += "(" + opts.groupSeparator + "*{" + opts.groupSize + "}){*}"; - if (opts.radixPoint !== "") { - var radixSplit = buffer.join("").split(opts.radixPoint); - if (radixSplit[1]) { - postMask += opts.radixPoint + "*{" + radixSplit[1].match(/^\d*\??\d*/)[0].length + "}"; - } - } - return postMask; - } - var suffix = opts.suffix.split(""), prefix = opts.prefix.split(""); - if (currentResult.pos === undefined && currentResult.caret !== undefined && currentResult.dopost !== true) return currentResult; - var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos; - var maskedValue = buffer.slice(); - if (opts.numericInput) { - caretPos = maskedValue.length - caretPos - 1; - maskedValue = maskedValue.reverse(); - } - var charAtPos = maskedValue[caretPos]; - if (charAtPos === opts.groupSeparator) { - caretPos += 1; - charAtPos = maskedValue[caretPos]; - } - if (caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult; - if (charAtPos !== undefined) { - if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) { - maskedValue[caretPos] = "?"; - if (opts.prefix.length > 0 && caretPos >= (opts.isNegative === false ? 1 : 0) && caretPos < opts.prefix.length - 1 + (opts.isNegative === false ? 1 : 0)) { - prefix[caretPos - (opts.isNegative === false ? 1 : 0)] = "?"; - } else if (opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0)) { - suffix[caretPos - (maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0))] = "?"; - } - } - } - prefix = prefix.join(""); - suffix = suffix.join(""); - var processValue = maskedValue.join("").replace(prefix, ""); - processValue = processValue.replace(suffix, ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - if (isNaN(opts.placeholder)) { - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), "g"), ""); - } - if (processValue.length > 1 && processValue.indexOf(opts.radixPoint) !== 1) { - if (charAtPos === "0") { - processValue = processValue.replace(/^\?/g, ""); - } - processValue = processValue.replace(/^0/g, ""); - } - if (processValue.charAt(0) === opts.radixPoint && opts.radixPoint !== "" && opts.numericInput !== true) { - processValue = "0" + processValue; - } - if (processValue !== "") { - processValue = processValue.split(""); - if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === "blur") && isFinite(opts.digits)) { - var radixPosition = $.inArray(opts.radixPoint, processValue); - var rpb = $.inArray(opts.radixPoint, maskedValue); - if (radixPosition === -1) { - processValue.push(opts.radixPoint); - radixPosition = processValue.length - 1; - } - for (var i = 1; i <= opts.digits; i++) { - if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === "blur") && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) { - processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0); - } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) { - processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]; - } - } - } - if (opts.autoGroup === true && opts.groupSeparator !== "" && (charAtPos !== opts.radixPoint || currentResult.pos !== undefined || currentResult.dopost)) { - var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint; - processValue = Inputmask(buildPostMask(processValue, opts), { - numericInput: true, - jitMasking: true, - definitions: { - "*": { - validator: "[0-9?]", - cardinality: 1 - } - } - }).format(processValue.join("")); - if (addRadix) processValue += opts.radixPoint; - if (processValue.charAt(0) === opts.groupSeparator) { - processValue.substr(1); - } - } else processValue = processValue.join(""); - } - if (opts.isNegative && currentResult.event === "blur") { - opts.isNegative = processValue !== "0"; - } - processValue = prefix + processValue; - processValue += suffix; - if (opts.isNegative) { - processValue = opts.negationSymbol.front + processValue; - processValue += opts.negationSymbol.back; - } - processValue = processValue.split(""); - if (charAtPos !== undefined) { - if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) { - caretPos = $.inArray("?", processValue); - if (caretPos > -1) { - processValue[caretPos] = charAtPos; - } else caretPos = currentResult.caret || 0; - } else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) { - var newCaretPos = $.inArray(charAtPos, processValue); - if (newCaretPos !== -1) caretPos = newCaretPos; - } - } - if (opts.numericInput) { - caretPos = processValue.length - caretPos - 1; - processValue = processValue.reverse(); - } - var rslt = { - caret: (charAtPos === undefined || currentResult.pos !== undefined) && caretPos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos, - buffer: processValue, - refreshFromBuffer: currentResult.dopost || buffer.join("") !== processValue.join("") - }; - return rslt.refreshFromBuffer ? rslt : currentResult; - }, - onBeforeWrite: function onBeforeWrite(e, buffer, caretPos, opts) { - function parseMinMaxOptions(opts) { - if (opts.parseMinMaxOptions === undefined) { - if (opts.min !== null) { - opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.radixPoint === ",") opts.min = opts.min.replace(opts.radixPoint, "."); - opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN; - if (isNaN(opts.min)) opts.min = Number.MIN_VALUE; - } - if (opts.max !== null) { - opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.radixPoint === ",") opts.max = opts.max.replace(opts.radixPoint, "."); - opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN; - if (isNaN(opts.max)) opts.max = Number.MAX_VALUE; - } - opts.parseMinMaxOptions = "done"; - } - } - if (e) { - switch (e.type) { - case "keydown": - return opts.postValidation(buffer, caretPos, { - caret: caretPos, - dopost: true - }, opts); - - case "blur": - case "checkval": - var unmasked; - parseMinMaxOptions(opts); - if (opts.min !== null || opts.max !== null) { - unmasked = opts.onUnMask(buffer.join(""), undefined, $.extend({}, opts, { - unmaskAsNumber: true - })); - if (opts.min !== null && unmasked < opts.min) { - opts.isNegative = opts.min < 0; - return opts.postValidation(opts.min.toString().replace(".", opts.radixPoint).split(""), caretPos, { - caret: caretPos, - dopost: true, - placeholder: "0" - }, opts); - } else if (opts.max !== null && unmasked > opts.max) { - opts.isNegative = opts.max < 0; - return opts.postValidation(opts.max.toString().replace(".", opts.radixPoint).split(""), caretPos, { - caret: caretPos, - dopost: true, - placeholder: "0" - }, opts); - } - } - return opts.postValidation(buffer, caretPos, { - caret: caretPos, - placeholder: "0", - event: "blur" - }, opts); - - case "_checkval": - return { - caret: caretPos - }; - - default: - break; - } - } - }, - regex: { - integerPart: function integerPart(opts, emptyCheck) { - return emptyCheck ? new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?") : new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+"); - }, - integerNPart: function integerNPart(opts) { - return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+"); - } - }, - definitions: { - "~": { - validator: function validator(chrs, maskset, pos, strict, opts, isSelection) { - var isValid, l; - if (chrs === "k" || chrs === "m") { - isValid = { - insert: [], - c: 0 - }; - for (var i = 0, l = chrs === "k" ? 2 : 5; i < l; i++) { - isValid.insert.push({ - pos: pos + i, - c: 0 - }); - } - isValid.pos = pos + l; - return isValid; - } - isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs); - if (isValid === true) { - if (opts.numericInput !== true && maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].match.def === "~" && !isSelection) { - var processValue = maskset.buffer.join(""); - processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - var pvRadixSplit = processValue.split(opts.radixPoint); - if (pvRadixSplit.length > 1) { - pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0)); - } - if (pvRadixSplit[0] === "0") { - pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0)); - } - processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || ""; - var bufferTemplate = maskset._buffer.join(""); - if (processValue === opts.radixPoint) { - processValue = bufferTemplate; - } - while (processValue.match(Inputmask.escapeRegex(bufferTemplate) + "$") === null) { - bufferTemplate = bufferTemplate.slice(1); - } - processValue = processValue.replace(bufferTemplate, ""); - processValue = processValue.split(""); - if (processValue[pos] === undefined) { - isValid = { - pos: pos, - remove: pos - }; - } else { - isValid = { - pos: pos - }; - } - } - } else if (!strict && chrs === opts.radixPoint && maskset.validPositions[pos - 1] === undefined) { - isValid = { - insert: { - pos: pos, - c: 0 - }, - pos: pos + 1 - }; - } - return isValid; - }, - cardinality: 1 - }, - "+": { - validator: function validator(chrs, maskset, pos, strict, opts) { - return opts.allowMinus && (chrs === "-" || chrs === opts.negationSymbol.front); - }, - cardinality: 1, - placeholder: "" - }, - "-": { - validator: function validator(chrs, maskset, pos, strict, opts) { - return opts.allowMinus && chrs === opts.negationSymbol.back; - }, - cardinality: 1, - placeholder: "" - }, - ":": { - validator: function validator(chrs, maskset, pos, strict, opts) { - var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + "]"; - var isValid = new RegExp(radix).test(chrs); - if (isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint) { - isValid = { - caret: pos + 1 - }; - } - return isValid; - }, - cardinality: 1, - placeholder: function placeholder(opts) { - return opts.radixPoint; - } - } - }, - onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) { - if (unmaskedValue === "" && opts.nullable === true) { - return unmaskedValue; - } - var processValue = maskedValue.replace(opts.prefix, ""); - processValue = processValue.replace(opts.suffix, ""); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""); - if (opts.placeholder.charAt(0) !== "") { - processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), "g"), "0"); - } - if (opts.unmaskAsNumber) { - if (opts.radixPoint !== "" && processValue.indexOf(opts.radixPoint) !== -1) processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), "."); - processValue = processValue.replace(new RegExp("^" + Inputmask.escapeRegex(opts.negationSymbol.front)), "-"); - processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - return Number(processValue); - } - return processValue; - }, - isComplete: function isComplete(buffer, opts) { - var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(""); - maskedValue = maskedValue.replace(new RegExp("^" + Inputmask.escapeRegex(opts.negationSymbol.front)), "-"); - maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""); - maskedValue = maskedValue.replace(opts.prefix, ""); - maskedValue = maskedValue.replace(opts.suffix, ""); - maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + "([0-9]{3})", "g"), "$1"); - if (opts.radixPoint === ",") maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."); - return isFinite(maskedValue); - }, - onBeforeMask: function onBeforeMask(initialValue, opts) { - opts.isNegative = undefined; - var radixPoint = opts.radixPoint || ","; - if ((typeof initialValue == "number" || opts.inputType === "number") && radixPoint !== "") { - initialValue = initialValue.toString().replace(".", radixPoint); - } - var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\-0-9]/g, ""), decimalPart = valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, "") : ""; - initialValue = integerPart + (decimalPart !== "" ? radixPoint + decimalPart : decimalPart); - var digits = 0; - if (radixPoint !== "") { - digits = decimalPart.length; - if (decimalPart !== "") { - var digitsFactor = Math.pow(10, digits || 1); - if (isFinite(opts.digits)) { - digits = parseInt(opts.digits); - digitsFactor = Math.pow(10, digits); - } - initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), "."); - if (isFinite(initialValue)) initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor; - initialValue = initialValue.toString().replace(".", radixPoint); - } - } - if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) { - initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint))); - } - return alignDigits(initialValue.toString().split(""), digits, opts).join(""); - }, - onKeyDown: function onKeyDown(e, buffer, caretPos, opts) { - var $input = $(this); - if (e.ctrlKey) { - switch (e.keyCode) { - case Inputmask.keyCode.UP: - $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)); - $input.trigger("setvalue"); - break; - - case Inputmask.keyCode.DOWN: - $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)); - $input.trigger("setvalue"); - break; - } - } - } - }, - currency: { - prefix: "$ ", - groupSeparator: ",", - alias: "numeric", - placeholder: "0", - autoGroup: true, - digits: 2, - digitsOptional: false, - clearMaskOnLostFocus: false - }, - decimal: { - alias: "numeric" - }, - integer: { - alias: "numeric", - digits: 0, - radixPoint: "" - }, - percentage: { - alias: "numeric", - digits: 2, - digitsOptional: true, - radixPoint: ".", - placeholder: "0", - autoGroup: false, - min: 0, - max: 100, - suffix: " %", - allowMinus: false - } - }); - return Inputmask; - }); -}, function(module, exports, __webpack_require__) { - "use strict"; - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - (function(factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(4), __webpack_require__(2) ], - __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} - })(function($, Inputmask) { - if ($.fn.inputmask === undefined) { - $.fn.inputmask = function(fn, options) { - var nptmask, input = this[0]; - if (options === undefined) options = {}; - if (typeof fn === "string") { - switch (fn) { - case "unmaskedvalue": - return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val(); - - case "remove": - return this.each(function() { - if (this.inputmask) this.inputmask.remove(); - }); - - case "getemptymask": - return input && input.inputmask ? input.inputmask.getemptymask() : ""; - - case "hasMaskedValue": - return input && input.inputmask ? input.inputmask.hasMaskedValue() : false; - - case "isComplete": - return input && input.inputmask ? input.inputmask.isComplete() : true; - - case "getmetadata": - return input && input.inputmask ? input.inputmask.getmetadata() : undefined; - - case "setvalue": - Inputmask.setValue(input, options); - break; - - case "option": - if (typeof options === "string") { - if (input && input.inputmask !== undefined) { - return input.inputmask.option(options); - } - } else { - return this.each(function() { - if (this.inputmask !== undefined) { - return this.inputmask.option(options); - } - }); - } - break; - - default: - options.alias = fn; - nptmask = new Inputmask(options); - return this.each(function() { - nptmask.mask(this); - }); - } - } else if (Array.isArray(fn)) { - options.alias = fn; - nptmask = new Inputmask(options); - return this.each(function() { - nptmask.mask(this); - }); - } else if ((typeof fn === "undefined" ? "undefined" : _typeof(fn)) == "object") { - nptmask = new Inputmask(fn); - if (fn.mask === undefined && fn.alias === undefined) { - return this.each(function() { - if (this.inputmask !== undefined) { - return this.inputmask.option(fn); - } else nptmask.mask(this); - }); - } else { - return this.each(function() { - nptmask.mask(this); - }); - } - } else if (fn === undefined) { - return this.each(function() { - nptmask = new Inputmask(options); - nptmask.mask(this); - }); - } - }; - } - return $.fn.inputmask; - }); -} ]); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/bindings/inputmask.binding.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/bindings/inputmask.binding.min.js deleted file mode 100644 index 3318267..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/bindings/inputmask.binding.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* bindings/inputmask.binding.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["jquery","../inputmask","../global/window"],factory)}else if(typeof exports==="object"){module.exports=factory(require("jquery"),require("../inputmask"),require("../global/window"))}else{factory(jQuery,window.Inputmask,window)}})(function($,Inputmask,window){$(window.document).ajaxComplete(function(event,xmlHttpRequest,ajaxOptions){if($.inArray("html",ajaxOptions.dataTypes)!==-1){$(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]").each(function(ndx,lmnt){if(lmnt.inputmask===undefined){Inputmask().mask(lmnt)}})}}).ready(function(){$(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias]").each(function(ndx,lmnt){if(lmnt.inputmask===undefined){Inputmask().mask(lmnt)}})})}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js deleted file mode 100644 index c984d56..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* dependencyLibs/inputmask.dependencyLib.jqlite.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["jqlite","../global/window"],factory)}else if(typeof exports==="object"){module.exports=factory(require("jqlite"),require("../global/window"))}else{window.dependencyLib=factory(jqlite,window)}})(function($,window){var document=window.document;function indexOf(list,elem){var i=0,len=list.length;for(;i0&&length-1 in obj}$.inArray=function(elem,arr,i){return arr==null?-1:indexOf(arr,elem,i)};$.isFunction=function(obj){return typeof obj==="function"};$.isArray=Array.isArray;$.isPlainObject=function(obj){if(typeof obj!=="object"||obj.nodeType||isWindow(obj)){return false}if(obj.constructor&&!Object.hasOwnProperty.call(obj.constructor.prototype,"isPrototypeOf")){return false}return true};$.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++}if(typeof target!=="object"&&!$.isFunction(target)){target={}}if(i===length){target=this;i--}for(;i0&&length-1 in obj}function isValidElement(elem){return elem instanceof Element}function DependencyLib(elem){if(elem instanceof DependencyLib){return elem}if(!(this instanceof DependencyLib)){return new DependencyLib(elem)}if(elem!==undefined&&elem!==null&&elem!==window){this[0]=elem.nodeName?elem:elem[0]!==undefined&&elem[0].nodeName?elem[0]:document.querySelector(elem);if(this[0]!==undefined&&this[0]!==null){this[0].eventRegistry=this[0].eventRegistry||{}}}}function getWindow(elem){return isWindow(elem)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false}DependencyLib.prototype={on:function(events,handler){if(isValidElement(this[0])){var eventRegistry=this[0].eventRegistry,elem=this[0];var addEvent=function(ev,namespace){if(elem.addEventListener){elem.addEventListener(ev,handler,false)}else if(elem.attachEvent){elem.attachEvent("on"+ev,handler)}eventRegistry[ev]=eventRegistry[ev]||{};eventRegistry[ev][namespace]=eventRegistry[ev][namespace]||[];eventRegistry[ev][namespace].push(handler)};var _events=events.split(" ");for(var endx=0;endx<_events.length;endx++){var nsEvent=_events[endx].split("."),ev=nsEvent[0],namespace=nsEvent[1]||"global";addEvent(ev,namespace)}}return this},off:function(events,handler){if(isValidElement(this[0])){var eventRegistry=this[0].eventRegistry,elem=this[0];var removeEvent=function(ev,namespace,handler){if(ev in eventRegistry===true){if(elem.removeEventListener){elem.removeEventListener(ev,handler,false)}else if(elem.detachEvent){elem.detachEvent("on"+ev,handler)}if(namespace==="global"){for(var nmsp in eventRegistry[ev]){eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler),1)}}else{eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler),1)}}};var resolveNamespace=function(ev,namespace){var evts=[],hndx,hndL;if(ev.length>0){if(handler===undefined){for(hndx=0,hndL=eventRegistry[ev][namespace].length;hndx0?namespace:"global",handler:eventRegistry[ev][namespace][hndx]})}}else{evts.push({ev:ev,namespace:namespace&&namespace.length>0?namespace:"global",handler:handler})}}else if(namespace.length>0){for(var evNdx in eventRegistry){for(var nmsp in eventRegistry[evNdx]){if(nmsp===namespace){if(handler===undefined){for(hndx=0,hndL=eventRegistry[evNdx][nmsp].length;hndx=dateParts.day?currentResult:false}function isDateInRange(dateParts,opts){var result=true;if(opts.min){if(dateParts["rawyear"]){var rawYear=dateParts["rawyear"].replace(/[^0-9]/g,""),minYear=opts.min.year.substr(0,rawYear.length);result=minYear<=rawYear}if(dateParts["year"]===dateParts["rawyear"]){if(opts.min.date.getTime()===opts.min.date.getTime()){result=opts.min.date.getTime()<=dateParts.date.getTime()}}}if(result&&opts.max&&opts.max.date.getTime()===opts.max.date.getTime()){result=opts.max.date.getTime()>=dateParts.date.getTime()}return result}function parse(format,dateObjValue,opts,raw){var mask="",match;while(match=getTokenizer(opts).exec(format)){if(dateObjValue===undefined){if(formatCode[match[0]]){mask+="("+formatCode[match[0]][0]+")"}else{switch(match[0]){case"[":mask+="(";break;case"]":mask+=")?";break;default:mask+=Inputmask.escapeRegex(match[0])}}}else{if(formatCode[match[0]]){if(raw!==true&&formatCode[match[0]][3]){var getFn=formatCode[match[0]][3];mask+=getFn.call(dateObjValue.date)}else if(formatCode[match[0]][2])mask+=dateObjValue["raw"+formatCode[match[0]][2]];else mask+=match[0]}else mask+=match[0]}}return mask}function pad(val,len){val=String(val);len=len||2;while(val.lengthmax.slice(0,enteredPart.length)?max.slice(enteredPart.length):correctedValue.toString().slice(enteredPart.length))}return correctedValue}function setValue(dateObj,value,opts){dateObj[targetProp]=extendProperty(value);dateObj["raw"+targetProp]=value;if(dateOperation!==undefined)dateOperation.call(dateObj.date,targetProp=="month"?parseInt(dateObj[targetProp])-1:dateObj[targetProp])}if(typeof mask==="string"){while(match=getTokenizer(opts).exec(format)){var value=mask.slice(0,match[0].length);if(formatCode.hasOwnProperty(match[0])){targetValidator=formatCode[match[0]][0];targetProp=formatCode[match[0]][2];dateOperation=formatCode[match[0]][1];setValue(dateObj,value,opts)}mask=mask.slice(value.length)}return dateObj}else if(mask&&typeof mask==="object"&&mask.hasOwnProperty("date")){return mask}return undefined}Inputmask.extendAliases({datetime:{mask:function(opts){formatCode.S=opts.i18n.ordinalSuffix.join("|");opts.inputFormat=formatAlias[opts.inputFormat]||opts.inputFormat;opts.displayFormat=formatAlias[opts.displayFormat]||opts.displayFormat||opts.inputFormat;opts.outputFormat=formatAlias[opts.outputFormat]||opts.outputFormat||opts.inputFormat;opts.placeholder=opts.placeholder!==""?opts.placeholder:opts.inputFormat.replace(/[\[\]]/,"");opts.regex=parse(opts.inputFormat,undefined,opts);return null},placeholder:"",inputFormat:"isoDateTime",displayFormat:undefined,outputFormat:undefined,min:null,max:null,i18n:{dayNames:["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],ordinalSuffix:["st","nd","rd","th"]},postValidation:function(buffer,pos,currentResult,opts){opts.min=analyseMask(opts.min,opts.inputFormat,opts);opts.max=analyseMask(opts.max,opts.inputFormat,opts);var result=currentResult,dateParts=analyseMask(buffer.join(""),opts.inputFormat,opts);if(result&&dateParts.date.getTime()===dateParts.date.getTime()){result=isValidDate(dateParts,result);result=result&&isDateInRange(dateParts,opts)}if(pos&&result&¤tResult.pos!==pos){return{buffer:parse(opts.inputFormat,dateParts,opts),refreshFromBuffer:{start:pos,end:currentResult.pos}}}return result},onKeyDown:function(e,buffer,caretPos,opts){var input=this;if(e.ctrlKey&&e.keyCode===Inputmask.keyCode.RIGHT){var today=new Date,match,date="";while(match=getTokenizer(opts).exec(opts.inputFormat)){if(match[0].charAt(0)==="d"){date+=pad(today.getDate(),match[0].length)}else if(match[0].charAt(0)==="m"){date+=pad(today.getMonth()+1,match[0].length)}else if(match[0]==="yyyy"){date+=today.getFullYear().toString()}else if(match[0].charAt(0)==="y"){date+=pad(today.getYear(),match[0].length)}}input.inputmask._valueSet(date);$(input).trigger("setvalue")}},onUnMask:function(maskedValue,unmaskedValue,opts){return parse(opts.outputFormat,analyseMask(maskedValue,opts.inputFormat,opts),opts,true)},casing:function(elem,test,pos,validPositions){if(test.nativeDef.indexOf("[ap]")==0)return elem.toLowerCase();if(test.nativeDef.indexOf("[AP]")==0)return elem.toUpperCase();return elem},insertMode:false,shiftPositions:false}});return Inputmask}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.extensions.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.extensions.min.js deleted file mode 100644 index dd3f6e6..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.extensions.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* inputmask.extensions.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["./inputmask"],factory)}else if(typeof exports==="object"){module.exports=factory(require("./inputmask"))}else{factory(window.Inputmask)}})(function(Inputmask){Inputmask.extendDefinitions({A:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",casing:"upper"},"&":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",casing:"upper"},"#":{validator:"[0-9A-Fa-f]",casing:"upper"}});Inputmask.extendAliases({cssunit:{regex:"[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)"},url:{regex:"(https?|ftp)//.*",autoUnmask:false},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(chrs,maskset,pos,strict,opts){if(pos-1>-1&&maskset.buffer[pos-1]!=="."){chrs=maskset.buffer[pos-1]+chrs;if(pos-2>-1&&maskset.buffer[pos-2]!=="."){chrs=maskset.buffer[pos-2]+chrs}else chrs="0"+chrs}else chrs="00"+chrs;return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs)}}},onUnMask:function(maskedValue,unmaskedValue,opts){return maskedValue},inputmode:"numeric"},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:false,casing:"lower",onBeforePaste:function(pastedValue,opts){pastedValue=pastedValue.toLowerCase();return pastedValue.replace("mailto:","")},definitions:{"*":{validator:"[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]"},"-":{validator:"[0-9A-Za-z-]"}},onUnMask:function(maskedValue,unmaskedValue,opts){return maskedValue},inputmode:"email"},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",casing:"upper"}},clearIncomplete:true,autoUnmask:true}});return Inputmask}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.min.js deleted file mode 100644 index 09f0854..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* inputmask.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["./dependencyLibs/inputmask.dependencyLib","./global/window"],factory)}else if(typeof exports==="object"){module.exports=factory(require("./dependencyLibs/inputmask.dependencyLib"),require("./global/window"))}else{window.Inputmask=factory(window.dependencyLib||jQuery,window)}})(function($,window,undefined){var document=window.document,ua=navigator.userAgent,ie=ua.indexOf("MSIE ")>0||ua.indexOf("Trident/")>0,mobile=isInputEventSupported("touchstart"),iemobile=/iemobile/i.test(ua),iphone=/iphone/i.test(ua)&&!iemobile;function Inputmask(alias,options,internal){if(!(this instanceof Inputmask)){return new Inputmask(alias,options,internal)}this.el=undefined;this.events={};this.maskset=undefined;this.refreshValue=false;if(internal!==true){if($.isPlainObject(alias)){options=alias}else{options=options||{};if(alias)options.alias=alias}this.opts=$.extend(true,{},this.defaults,options);this.noMasksCache=options&&options.definitions!==undefined;this.userOptions=options||{};this.isRTL=this.opts.numericInput;resolveAlias(this.opts.alias,options,this.opts)}}Inputmask.prototype={dataAttribute:"data-inputmask",defaults:{placeholder:"_",optionalmarker:["[","]"],quantifiermarker:["{","}"],groupmarker:["(",")"],alternatormarker:"|",escapeChar:"\\",mask:null,regex:null,oncomplete:$.noop,onincomplete:$.noop,oncleared:$.noop,repeat:0,greedy:false,autoUnmask:false,removeMaskOnSubmit:false,clearMaskOnLostFocus:true,insertMode:true,clearIncomplete:false,alias:null,onKeyDown:$.noop,onBeforeMask:null,onBeforePaste:function(pastedValue,opts){return $.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(this,pastedValue,opts):pastedValue},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:true,showMaskOnHover:true,onKeyValidation:$.noop,skipOptionalPartCharacter:" ",numericInput:false,rightAlign:false,undoOnEscape:true,radixPoint:"",_radixDance:false,groupSeparator:"",keepStatic:null,positionCaretOnTab:true,tabThrough:false,supportsInputType:["text","tel","url","password","search"],ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123,0,229],isComplete:null,preValidation:null,postValidation:null,staticDefinitionSymbol:undefined,jitMasking:false,nullable:true,inputEventOnly:false,noValuePatching:false,positionCaretOnClick:"lvp",casing:null,inputmode:"verbatim",colorMask:false,disablePredictiveText:false,importDataAttributes:true,shiftPositions:true},definitions:{9:{validator:"[0-9\uff11-\uff19]",definitionSymbol:"*"},a:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",definitionSymbol:"*"},"*":{validator:"[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]"}},aliases:{},masksCache:{},mask:function(elems){var that=this;function importAttributeOptions(npt,opts,userOptions,dataAttribute){if(opts.importDataAttributes===true){var attrOptions=npt.getAttribute(dataAttribute),option,dataoptions,optionData,p;var importOption=function(option,optionData){optionData=optionData!==undefined?optionData:npt.getAttribute(dataAttribute+"-"+option);if(optionData!==null){if(typeof optionData==="string"){if(option.indexOf("on")===0)optionData=window[optionData];else if(optionData==="false")optionData=false;else if(optionData==="true")optionData=true}userOptions[option]=optionData}};if(attrOptions&&attrOptions!==""){attrOptions=attrOptions.replace(/'/g,'"');dataoptions=JSON.parse("{"+attrOptions+"}")}if(dataoptions){optionData=undefined;for(p in dataoptions){if(p.toLowerCase()==="alias"){optionData=dataoptions[p];break}}}importOption("alias",optionData);if(userOptions.alias){resolveAlias(userOptions.alias,userOptions,opts)}for(option in opts){if(dataoptions){optionData=undefined;for(p in dataoptions){if(p.toLowerCase()===option.toLowerCase()){optionData=dataoptions[p];break}}}importOption(option,optionData)}}$.extend(true,opts,userOptions);if(npt.dir==="rtl"||opts.rightAlign){npt.style.textAlign="right"}if(npt.dir==="rtl"||opts.numericInput){npt.dir="ltr";npt.removeAttribute("dir");opts.isRTL=true}return Object.keys(userOptions).length}if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){var scopedOpts=$.extend(true,{},that.opts);if(importAttributeOptions(el,scopedOpts,$.extend(true,{},that.userOptions),that.dataAttribute)){var maskset=generateMaskSet(scopedOpts,that.noMasksCache);if(maskset!==undefined){if(el.inputmask!==undefined){el.inputmask.opts.autoUnmask=true;el.inputmask.remove()}el.inputmask=new Inputmask(undefined,undefined,true);el.inputmask.opts=scopedOpts;el.inputmask.noMasksCache=that.noMasksCache;el.inputmask.userOptions=$.extend(true,{},that.userOptions);el.inputmask.isRTL=scopedOpts.isRTL||scopedOpts.numericInput;el.inputmask.el=el;el.inputmask.maskset=maskset;$.data(el,"_inputmask_opts",scopedOpts);maskScope.call(el.inputmask,{action:"mask"})}}});return elems&&elems[0]?elems[0].inputmask||this:this},option:function(options,noremask){if(typeof options==="string"){return this.opts[options]}else if(typeof options==="object"){$.extend(this.userOptions,options);if(this.el&&noremask!==true){this.mask(this.el)}return this}},unmaskedvalue:function(value){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"unmaskedvalue",value:value})},remove:function(){return maskScope.call(this,{action:"remove"})},getemptymask:function(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"getemptymask"})},hasMaskedValue:function(){return!this.opts.autoUnmask},isComplete:function(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"isComplete"})},getmetadata:function(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"getmetadata"})},isValid:function(value){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"isValid",value:value})},format:function(value,metadata){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"format",value:value,metadata:metadata})},setValue:function(value){if(this.el){$(this.el).trigger("setvalue",[value])}},analyseMask:function(mask,regexMask,opts){var tokenizer=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?(?:\|[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,regexTokenizer=/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,escaped=false,currentToken=new MaskToken,match,m,openenings=[],maskTokens=[],openingToken,currentOpeningToken,alternator,lastMatch,groupToken;function MaskToken(isGroup,isOptional,isQuantifier,isAlternator){this.matches=[];this.openGroup=isGroup||false;this.alternatorGroup=false;this.isGroup=isGroup||false;this.isOptional=isOptional||false;this.isQuantifier=isQuantifier||false;this.isAlternator=isAlternator||false;this.quantifier={min:1,max:1}}function insertTestDefinition(mtoken,element,position){position=position!==undefined?position:mtoken.matches.length;var prevMatch=mtoken.matches[position-1];if(regexMask){if(element.indexOf("[")===0||escaped&&/\\d|\\s|\\w]/i.test(element)||element==="."){mtoken.matches.splice(position++,0,{fn:new RegExp(element,opts.casing?"i":""),optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==element,casing:null,def:element,placeholder:undefined,nativeDef:element})}else{if(escaped)element=element[element.length-1];$.each(element.split(""),function(ndx,lmnt){prevMatch=mtoken.matches[position-1];mtoken.matches.splice(position++,0,{fn:null,optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==lmnt&&prevMatch.fn!==null,casing:null,def:opts.staticDefinitionSymbol||lmnt,placeholder:opts.staticDefinitionSymbol!==undefined?lmnt:undefined,nativeDef:(escaped?"'":"")+lmnt})})}escaped=false}else{var maskdef=(opts.definitions?opts.definitions[element]:undefined)||Inputmask.prototype.definitions[element];if(maskdef&&!escaped){mtoken.matches.splice(position++,0,{fn:maskdef.validator?typeof maskdef.validator=="string"?new RegExp(maskdef.validator,opts.casing?"i":""):new function(){this.test=maskdef.validator}:new RegExp("."),optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==(maskdef.definitionSymbol||element),casing:maskdef.casing,def:maskdef.definitionSymbol||element,placeholder:maskdef.placeholder,nativeDef:element})}else{mtoken.matches.splice(position++,0,{fn:null,optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==element&&prevMatch.fn!==null,casing:null,def:opts.staticDefinitionSymbol||element,placeholder:opts.staticDefinitionSymbol!==undefined?element:undefined,nativeDef:(escaped?"'":"")+element});escaped=false}}}function verifyGroupMarker(maskToken){if(maskToken&&maskToken.matches){$.each(maskToken.matches,function(ndx,token){var nextToken=maskToken.matches[ndx+1];if((nextToken===undefined||(nextToken.matches===undefined||nextToken.isQuantifier===false))&&token&&token.isGroup){token.isGroup=false;if(!regexMask){insertTestDefinition(token,opts.groupmarker[0],0);if(token.openGroup!==true){insertTestDefinition(token,opts.groupmarker[1])}}}verifyGroupMarker(token)})}}function defaultCase(){if(openenings.length>0){currentOpeningToken=openenings[openenings.length-1];insertTestDefinition(currentOpeningToken,m);if(currentOpeningToken.isAlternator){alternator=openenings.pop();for(var mndx=0;mndx0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(alternator)}else{currentToken.matches.push(alternator)}}}else{insertTestDefinition(currentToken,m)}}function reverseTokens(maskToken){function reverseStatic(st){if(st===opts.optionalmarker[0])st=opts.optionalmarker[1];else if(st===opts.optionalmarker[1])st=opts.optionalmarker[0];else if(st===opts.groupmarker[0])st=opts.groupmarker[1];else if(st===opts.groupmarker[1])st=opts.groupmarker[0];return st}maskToken.matches=maskToken.matches.reverse();for(var match in maskToken.matches){if(maskToken.matches.hasOwnProperty(match)){var intMatch=parseInt(match);if(maskToken.matches[match].isQuantifier&&maskToken.matches[intMatch+1]&&maskToken.matches[intMatch+1].isGroup){var qt=maskToken.matches[match];maskToken.matches.splice(match,1);maskToken.matches.splice(intMatch+1,0,qt)}if(maskToken.matches[match].matches!==undefined){maskToken.matches[match]=reverseTokens(maskToken.matches[match])}else{maskToken.matches[match]=reverseStatic(maskToken.matches[match])}}}return maskToken}function groupify(matches){var groupToken=new MaskToken(true);groupToken.openGroup=false;groupToken.matches=matches;return groupToken}if(regexMask){opts.optionalmarker[0]=undefined;opts.optionalmarker[1]=undefined}while(match=regexMask?regexTokenizer.exec(mask):tokenizer.exec(mask)){m=match[0];if(regexMask){switch(m.charAt(0)){case"?":m="{0,1}";break;case"+":case"*":m="{"+m+"}";break}}if(escaped){defaultCase();continue}switch(m.charAt(0)){case"(?=":break;case"(?!":break;case"(?<=":break;case"(?0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(openingToken);if(currentOpeningToken.isAlternator){alternator=openenings.pop();for(var mndx=0;mndx0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(alternator)}else{currentToken.matches.push(alternator)}}}else{currentToken.matches.push(openingToken)}}else defaultCase();break;case opts.optionalmarker[0]:openenings.push(new MaskToken(false,true));break;case opts.groupmarker[0]:openenings.push(new MaskToken(true));break;case opts.quantifiermarker[0]:var quantifier=new MaskToken(false,false,true);m=m.replace(/[{}]/g,"");var mqj=m.split("|"),mq=mqj[0].split(","),mq0=isNaN(mq[0])?mq[0]:parseInt(mq[0]),mq1=mq.length===1?mq0:isNaN(mq[1])?mq[1]:parseInt(mq[1]);if(mq0==="*"||mq0==="+"){mq0=mq1==="*"?0:1}quantifier.quantifier={min:mq0,max:mq1,jit:mqj[1]};var matches=openenings.length>0?openenings[openenings.length-1].matches:currentToken.matches;match=matches.pop();if(match.isAlternator){matches.push(match);matches=match.matches;var groupToken=new MaskToken(true);var tmpMatch=matches.pop();matches.push(groupToken);matches=groupToken.matches;match=tmpMatch}if(!match.isGroup){match=groupify([match])}matches.push(match);matches.push(quantifier);break;case opts.alternatormarker:var groupQuantifier=function(matches){var lastMatch=matches.pop();if(lastMatch.isQuantifier){lastMatch=groupify([matches.pop(),lastMatch])}return lastMatch};if(openenings.length>0){currentOpeningToken=openenings[openenings.length-1];var subToken=currentOpeningToken.matches[currentOpeningToken.matches.length-1];if(currentOpeningToken.openGroup&&(subToken.matches===undefined||subToken.isGroup===false&&subToken.isAlternator===false)){lastMatch=openenings.pop()}else{lastMatch=groupQuantifier(currentOpeningToken.matches)}}else{lastMatch=groupQuantifier(currentToken.matches)}if(lastMatch.isAlternator){openenings.push(lastMatch)}else{if(lastMatch.alternatorGroup){alternator=openenings.pop();lastMatch.alternatorGroup=false}else{alternator=new MaskToken(false,false,false,true)}alternator.matches.push(lastMatch);openenings.push(alternator);if(lastMatch.openGroup){lastMatch.openGroup=false;var alternatorGroup=new MaskToken(true);alternatorGroup.alternatorGroup=true;openenings.push(alternatorGroup)}}break;default:defaultCase()}}while(openenings.length>0){openingToken=openenings.pop();currentToken.matches.push(openingToken)}if(currentToken.matches.length>0){verifyGroupMarker(currentToken);maskTokens.push(currentToken)}if(opts.numericInput||opts.isRTL){reverseTokens(maskTokens[0])}return maskTokens},positionColorMask:function(input,template){input.style.left=template.offsetLeft+"px"}};Inputmask.extendDefaults=function(options){$.extend(true,Inputmask.prototype.defaults,options)};Inputmask.extendDefinitions=function(definition){$.extend(true,Inputmask.prototype.definitions,definition)};Inputmask.extendAliases=function(alias){$.extend(true,Inputmask.prototype.aliases,alias)};Inputmask.format=function(value,options,metadata){return Inputmask(options).format(value,metadata)};Inputmask.unmask=function(value,options){return Inputmask(options).unmaskedvalue(value)};Inputmask.isValid=function(value,options){return Inputmask(options).isValid(value)};Inputmask.remove=function(elems){if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){if(el.inputmask)el.inputmask.remove()})};Inputmask.setValue=function(elems,value){if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){if(el.inputmask)el.inputmask.setValue(value);else $(el).trigger("setvalue",[value])})};Inputmask.escapeRegex=function(str){var specials=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return str.replace(new RegExp("(\\"+specials.join("|\\")+")","gim"),"\\$1")};Inputmask.keyCode={BACKSPACE:8,BACKSPACE_SAFARI:127,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,SPACE:32,TAB:9,UP:38,X:88,CONTROL:17};Inputmask.dependencyLib=$;function resolveAlias(aliasStr,options,opts){var aliasDefinition=Inputmask.prototype.aliases[aliasStr];if(aliasDefinition){if(aliasDefinition.alias)resolveAlias(aliasDefinition.alias,undefined,opts);$.extend(true,opts,aliasDefinition);$.extend(true,opts,options);return true}else if(opts.mask===null){opts.mask=aliasStr}return false}function generateMaskSet(opts,nocache){function generateMask(mask,metadata,opts){var regexMask=false;if(mask===null||mask===""){regexMask=opts.regex!==null;if(regexMask){mask=opts.regex;mask=mask.replace(/^(\^)(.*)(\$)$/,"$2")}else{regexMask=true;mask=".*"}}if(mask.length===1&&opts.greedy===false&&opts.repeat!==0){opts.placeholder=""}if(opts.repeat>0||opts.repeat==="*"||opts.repeat==="+"){var repeatStart=opts.repeat==="*"?0:opts.repeat==="+"?1:opts.repeat;mask=opts.groupmarker[0]+mask+opts.groupmarker[1]+opts.quantifiermarker[0]+repeatStart+","+opts.repeat+opts.quantifiermarker[1]}var masksetDefinition,maskdefKey=regexMask?"regex_"+opts.regex:opts.numericInput?mask.split("").reverse().join(""):mask;if(Inputmask.prototype.masksCache[maskdefKey]===undefined||nocache===true){masksetDefinition={mask:mask,maskToken:Inputmask.prototype.analyseMask(mask,regexMask,opts),validPositions:{},_buffer:undefined,buffer:undefined,tests:{},excludes:{},metadata:metadata,maskLength:undefined,jitOffset:{}};if(nocache!==true){Inputmask.prototype.masksCache[maskdefKey]=masksetDefinition;masksetDefinition=$.extend(true,{},Inputmask.prototype.masksCache[maskdefKey])}}else masksetDefinition=$.extend(true,{},Inputmask.prototype.masksCache[maskdefKey]);return masksetDefinition}var ms;if($.isFunction(opts.mask)){opts.mask=opts.mask(opts)}if($.isArray(opts.mask)){if(opts.mask.length>1){if(opts.keepStatic===null){opts.keepStatic="auto";for(var i=0;i1){altMask+=opts.groupmarker[1]+opts.alternatormarker+opts.groupmarker[0]}if(msk.mask!==undefined&&!$.isFunction(msk.mask)){altMask+=msk.mask}else{altMask+=msk}});altMask+=opts.groupmarker[1];return generateMask(altMask,opts.mask,opts)}else opts.mask=opts.mask.pop()}if(opts.mask&&opts.mask.mask!==undefined&&!$.isFunction(opts.mask.mask)){ms=generateMask(opts.mask.mask,opts.mask,opts)}else{ms=generateMask(opts.mask,opts.mask,opts)}return ms}function isInputEventSupported(eventName){var el=document.createElement("input"),evName="on"+eventName,isSupported=evName in el;if(!isSupported){el.setAttribute(evName,"return;");isSupported=typeof el[evName]==="function"}el=null;return isSupported}function maskScope(actionObj,maskset,opts){maskset=maskset||this.maskset;opts=opts||this.opts;var inputmask=this,el=this.el,isRTL=this.isRTL,undoValue,$el,skipKeyPressEvent=false,skipInputEvent=false,ignorable=false,maxLength,mouseEnter=false,colorMask,originalPlaceholder;var getMaskTemplate=function(baseOnInput,minimalPos,includeMode,noJit,clearOptionalTail){var greedy=opts.greedy;if(clearOptionalTail)opts.greedy=false;minimalPos=minimalPos||0;var maskTemplate=[],ndxIntlzr,pos=0,test,testPos,lvp=getLastValidPosition();do{if(baseOnInput===true&&getMaskSet().validPositions[pos]){testPos=clearOptionalTail&&getMaskSet().validPositions[pos].match.optionality===true&&getMaskSet().validPositions[pos+1]===undefined&&(getMaskSet().validPositions[pos].generatedInput===true||getMaskSet().validPositions[pos].input==opts.skipOptionalPartCharacter&&pos>0)?determineTestTemplate(pos,getTests(pos,ndxIntlzr,pos-1)):getMaskSet().validPositions[pos];test=testPos.match;ndxIntlzr=testPos.locator.slice();maskTemplate.push(includeMode===true?testPos.input:includeMode===false?test.nativeDef:getPlaceholder(pos,test))}else{testPos=getTestTemplate(pos,ndxIntlzr,pos-1);test=testPos.match;ndxIntlzr=testPos.locator.slice();var jitMasking=noJit===true?false:opts.jitMasking!==false?opts.jitMasking:test.jit;if(jitMasking===false||jitMasking===undefined||typeof jitMasking==="number"&&isFinite(jitMasking)&&jitMasking>pos){maskTemplate.push(includeMode===false?test.nativeDef:getPlaceholder(pos,test))}}if(opts.keepStatic==="auto"){if(test.newBlockMarker&&test.fn!==null){opts.keepStatic=pos-1}}pos++}while((maxLength===undefined||pospos);if(maskTemplate[maskTemplate.length-1]===""){maskTemplate.pop()}if(includeMode!==false||getMaskSet().maskLength===undefined)getMaskSet().maskLength=pos-1;opts.greedy=greedy;return maskTemplate};function getMaskSet(){return maskset}function resetMaskSet(soft){var maskset=getMaskSet();maskset.buffer=undefined;if(soft!==true){maskset.validPositions={};maskset.p=0}}function getLastValidPosition(closestTo,strict,validPositions){var before=-1,after=-1,valids=validPositions||getMaskSet().validPositions;if(closestTo===undefined)closestTo=-1;for(var posNdx in valids){var psNdx=parseInt(posNdx);if(valids[psNdx]&&(strict||valids[psNdx].generatedInput!==true)){if(psNdx<=closestTo)before=psNdx;if(psNdx>=closestTo)after=psNdx}}return before===-1||before==closestTo?after:after==-1?before:closestTo-before0){decisionTaker=decisionTaker.split(",")[0]}return decisionTaker!==undefined?decisionTaker.toString():""}function getLocator(tst,align){var locator=(tst.alternation!=undefined?tst.mloc[getDecisionTaker(tst)]:tst.locator).join("");if(locator!=="")while(locator.length0?pos-1:0;var altTest=getTest(pos),targetLocator=getLocator(altTest),tstLocator,closest,bestMatch;for(var ndx=0;ndx500&&quantifierRecurse!==undefined){throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+getMaskSet().mask}if(testPos===pos&&match.matches===undefined){matches.push({match:match,locator:loopNdx.reverse(),cd:cacheDependency,mloc:{}});return true}else if(match.matches!==undefined){if(match.isGroup&&quantifierRecurse!==match){match=handleMatch(maskToken.matches[$.inArray(match,maskToken.matches)+1],loopNdx,quantifierRecurse);if(match)return true}else if(match.isOptional){var optionalToken=match;match=resolveTestFromToken(match,ndxInitializer,loopNdx,quantifierRecurse);if(match){$.each(matches,function(ndx,mtch){mtch.match.optionality=true});latestMatch=matches[matches.length-1].match;if(quantifierRecurse===undefined&&isFirstMatch(latestMatch,optionalToken)){insertStop=true;testPos=pos}else return true}}else if(match.isAlternator){var alternateToken=match,malternateMatches=[],maltMatches,currentMatches=matches.slice(),loopNdxCnt=loopNdx.length;var altIndex=ndxInitializer.length>0?ndxInitializer.shift():-1;if(altIndex===-1||typeof altIndex==="string"){var currentPos=testPos,ndxInitializerClone=ndxInitializer.slice(),altIndexArr=[],amndx;if(typeof altIndex=="string"){altIndexArr=altIndex.split(",")}else{for(amndx=0;amndx=opts.keepStatic)altIndexArr=altIndexArr.slice(0,1);var unMatchedAlternation=false;for(var ndx=0;ndx0;match=malternateMatches.length>0;ndxInitializer=ndxInitializerClone.slice()}else match=handleMatch(alternateToken.matches[altIndex]||maskToken.matches[altIndex],[altIndex].concat(loopNdx),quantifierRecurse);if(match)return true}else if(match.isQuantifier&&quantifierRecurse!==maskToken.matches[$.inArray(match,maskToken.matches)-1]){var qt=match;for(var qndx=ndxInitializer.length>0?ndxInitializer.shift():0;qndx<(isNaN(qt.quantifier.max)?qndx+1:qt.quantifier.max)&&testPos<=pos;qndx++){var tokenGroup=maskToken.matches[$.inArray(qt,maskToken.matches)-1];match=handleMatch(tokenGroup,[qndx].concat(loopNdx),tokenGroup);if(match){latestMatch=matches[matches.length-1].match;latestMatch.optionalQuantifier=qndx>=qt.quantifier.min;latestMatch.jit=(qndx||1)*tokenGroup.matches.indexOf(latestMatch)>=qt.quantifier.jit;if(latestMatch.optionalQuantifier&&isFirstMatch(latestMatch,tokenGroup)){insertStop=true;testPos=pos;break}if(latestMatch.jit){getMaskSet().jitOffset[pos]=tokenGroup.matches.indexOf(latestMatch)}return true}}}else{match=resolveTestFromToken(match,ndxInitializer,loopNdx,quantifierRecurse);if(match)return true}}else{testPos++}}for(var tndx=ndxInitializer.length>0?ndxInitializer.shift():0;tndxpos){break}}}}function mergeLocators(pos,tests){var locator=[];if(!$.isArray(tests))tests=[tests];if(tests.length>0){if(tests[0].alternation===undefined){locator=determineTestTemplate(pos,tests.slice()).locator.slice();if(locator.length===0)locator=tests[0].locator.slice()}else{$.each(tests,function(ndx,tst){if(tst.def!==""){if(locator.length===0)locator=tst.locator.slice();else{for(var i=0;i-1){if(ndxIntlzr===undefined){var previousPos=pos-1,test;while((test=getMaskSet().validPositions[previousPos]||getMaskSet().tests[previousPos])===undefined&&previousPos>-1){previousPos--}if(test!==undefined&&previousPos>-1){ndxInitializer=mergeLocators(previousPos,test);cacheDependency=ndxInitializer.join("");testPos=previousPos}}if(getMaskSet().tests[pos]&&getMaskSet().tests[pos][0].cd===cacheDependency){return getMaskSet().tests[pos]}for(var mtndx=ndxInitializer.shift();mtndxpos){break}}}if(matches.length===0||insertStop){matches.push({match:{fn:null,optionality:false,casing:null,def:"",placeholder:""},locator:[],mloc:{},cd:cacheDependency})}if(ndxIntlzr!==undefined&&getMaskSet().tests[pos]){return $.extend(true,[],matches)}getMaskSet().tests[pos]=$.extend(true,[],matches);return getMaskSet().tests[pos]}function getBufferTemplate(){if(getMaskSet()._buffer===undefined){getMaskSet()._buffer=getMaskTemplate(false,1);if(getMaskSet().buffer===undefined)getMaskSet().buffer=getMaskSet()._buffer.slice()}return getMaskSet()._buffer}function getBuffer(noCache){if(getMaskSet().buffer===undefined||noCache===true){getMaskSet().buffer=getMaskTemplate(true,getLastValidPosition(),true);if(getMaskSet()._buffer===undefined)getMaskSet()._buffer=getMaskSet().buffer.slice()}return getMaskSet().buffer}function refreshFromBuffer(start,end,buffer){var i,p;if(start===true){resetMaskSet();start=0;end=buffer.length}else{for(i=start;i=0;lAltPos--){altPos=getMaskSet().validPositions[lAltPos];if(altPos&&altPos.alternation!==undefined){if(prevAltPos&&prevAltPos.locator[altPos.alternation]!==altPos.locator[altPos.alternation]){break}lastAlt=lAltPos;alternation=getMaskSet().validPositions[lastAlt].alternation;prevAltPos=altPos}}}if(alternation!==undefined){decisionPos=parseInt(lastAlt);getMaskSet().excludes[decisionPos]=getMaskSet().excludes[decisionPos]||[];if(pos!==true){getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos))}var validInputsClone=[],staticInputsBeforePos=0;for(i=decisionPos;i0){var input=validInputs.shift();if(!(isValidRslt=isValid(getLastValidPosition(undefined,true)+1,input,false,fromSetValid,true))){break}}if(isValidRslt&&c!==undefined){var targetLvp=getLastValidPosition(pos)+1;for(i=decisionPos;itargetLvp?targetLvp:pos,c,strict,fromSetValid,true)}if(!isValidRslt){resetMaskSet();prevAltPos=getTest(decisionPos);getMaskSet().validPositions=$.extend(true,{},validPsClone);if(getMaskSet().excludes[decisionPos]){var decisionTaker=getDecisionTaker(prevAltPos);if(getMaskSet().excludes[decisionPos].indexOf(decisionTaker)!==-1){isValidRslt=alternate(pos,c,strict,fromSetValid,decisionPos-1);break}getMaskSet().excludes[decisionPos].push(decisionTaker);for(i=decisionPos;i1||posObj.begin-posObj.end===1:posObj.end-posObj.begin>1||posObj.end-posObj.begin===1}strict=strict===true;var maskPos=pos;if(pos.begin!==undefined){maskPos=isRTL?pos.end:pos.begin}function _isValid(position,c,strict){var rslt=false;$.each(getTests(position),function(ndx,tst){var test=tst.match;getBuffer(true);rslt=test.fn!=null?test.fn.test(c,getMaskSet(),position,strict,opts,isSelection(pos)):(c===test.def||c===opts.skipOptionalPartCharacter)&&test.def!==""?{c:getPlaceholder(position,test,true)||test.def,pos:position}:false;if(rslt!==false){var elem=rslt.c!==undefined?rslt.c:c,validatedPos=position;elem=elem===opts.skipOptionalPartCharacter&&test.fn===null?getPlaceholder(position,test,true)||test.def:elem;if(rslt.remove!==undefined){if(!$.isArray(rslt.remove))rslt.remove=[rslt.remove];$.each(rslt.remove.sort(function(a,b){return b-a}),function(ndx,lmnt){revalidateMask({begin:lmnt,end:lmnt+1})})}if(rslt.insert!==undefined){if(!$.isArray(rslt.insert))rslt.insert=[rslt.insert];$.each(rslt.insert.sort(function(a,b){return a-b}),function(ndx,lmnt){isValid(lmnt.pos,lmnt.c,true,fromSetValid)})}if(rslt!==true&&rslt.pos!==undefined&&rslt.pos!==position){validatedPos=rslt.pos}if(rslt!==true&&rslt.pos===undefined&&rslt.c===undefined){return false}if(!revalidateMask(pos,$.extend({},tst,{input:casing(elem,test,validatedPos)}),fromSetValid,validatedPos)){rslt=false}return false}});return rslt}var result=true,positionsClone=$.extend(true,{},getMaskSet().validPositions);if($.isFunction(opts.preValidation)&&!strict&&fromSetValid!==true&&validateOnly!==true){result=opts.preValidation(getBuffer(),maskPos,c,isSelection(pos),opts,getMaskSet())}if(result===true){trackbackPositions(undefined,maskPos,true);if(maxLength===undefined||maskPos0;originalPos--){if(getMaskSet().validPositions[originalPos])break}}for(var ps=originalPos;pspos+1?valids[pos+1]&&valids[pos+1].match.fn===null&&valids[pos+1]:valids[pos+1];return prevMatch&&nextMatch}return false}var begin=pos.begin!==undefined?pos.begin:pos,end=pos.end!==undefined?pos.end:pos;if(pos.begin>pos.end){begin=pos.end;end=pos.begin}validatedPos=validatedPos!==undefined?validatedPos:begin;if(begin!==end||opts.insertMode&&getMaskSet().validPositions[validatedPos]!==undefined&&fromSetValid===undefined){var positionsClone=$.extend(true,{},getMaskSet().validPositions),lvp=getLastValidPosition(undefined,true),i;getMaskSet().p=begin;for(i=lvp;i>=begin;i--){if(getMaskSet().validPositions[i]&&getMaskSet().validPositions[i].match.nativeDef==="+"){opts.isNegative=false}delete getMaskSet().validPositions[i]}var valid=true,j=validatedPos,vps=getMaskSet().validPositions,needsValidation=false,posMatch=j,i=j;if(validTest){getMaskSet().validPositions[validatedPos]=$.extend(true,{},validTest);posMatch++;j++;if(begin=end||i>=begin&&t.generatedInput!==true&&IsEnclosedStatic(i,positionsClone,{begin:begin,end:end}))){while(getTest(posMatch).match.def!==""){if(needsValidation===false&&positionsClone[posMatch]&&positionsClone[posMatch].match.nativeDef===t.match.nativeDef){getMaskSet().validPositions[posMatch]=$.extend(true,{},positionsClone[posMatch]);getMaskSet().validPositions[posMatch].input=t.input;trackbackPositions(undefined,posMatch,true);j=posMatch+1;valid=true}else if(opts.shiftPositions&&positionCanMatchDefinition(posMatch,t.match.def)){var result=isValid(posMatch,t.input,true,true);valid=result!==false;j=result.caret||result.insert?getLastValidPosition():posMatch+1;needsValidation=true}else{valid=t.generatedInput===true||t.input===opts.radixPoint&&opts.numericInput===true}if(valid)break;if(!valid&&posMatch>end&&isMask(posMatch,true)&&(t.match.fn!==null||posMatch>getMaskSet().maskLength)){break}posMatch++}if(getTest(posMatch).match.def=="")valid=false;posMatch=j}if(!valid)break}if(!valid){getMaskSet().validPositions=$.extend(true,{},positionsClone);resetMaskSet(true);return false}}else if(validTest){getMaskSet().validPositions[validatedPos]=$.extend(true,{},validTest)}resetMaskSet(true);return true}function isMask(pos,strict){var test=getTestTemplate(pos).match;if(test.def==="")test=getTest(pos).match;if(test.fn!=null){return test.fn}if(strict!==true&&pos>-1){var tests=getTests(pos);return tests.length>1+(tests[tests.length-1].match.def===""?1:0)}return false}function seekNext(pos,newBlock){var position=pos+1;while(getTest(position).match.def!==""&&(newBlock===true&&(getTest(position).match.newBlockMarker!==true||!isMask(position))||newBlock!==true&&!isMask(position))){position++}return position}function seekPrevious(pos,newBlock){var position=pos,tests;if(position<=0)return 0;while(--position>0&&(newBlock===true&&getTest(position).match.newBlockMarker!==true||newBlock!==true&&!isMask(position)&&(tests=getTests(position),tests.length<2||tests.length===2&&tests[1].match.def===""))){}return position}function writeBuffer(input,buffer,caretPos,event,triggerEvents){if(event&&$.isFunction(opts.onBeforeWrite)){var result=opts.onBeforeWrite.call(inputmask,event,buffer,caretPos,opts);if(result){if(result.refreshFromBuffer){var refresh=result.refreshFromBuffer;refreshFromBuffer(refresh===true?refresh:refresh.start,refresh.end,result.buffer||buffer);buffer=getBuffer(true)}if(caretPos!==undefined)caretPos=result.caret!==undefined?result.caret:caretPos}}if(input!==undefined){input.inputmask._valueSet(buffer.join(""));if(caretPos!==undefined&&(event===undefined||event.type!=="blur")){caret(input,caretPos)}else renderColorMask(input,caretPos,buffer.length===0);if(triggerEvents===true){var $input=$(input),nptVal=input.inputmask._valueGet();skipInputEvent=true;$input.trigger("input");setTimeout(function(){if(nptVal===getBufferTemplate().join("")){$input.trigger("cleared")}else if(isComplete(buffer)===true){$input.trigger("complete")}},0)}}}function getPlaceholder(pos,test,returnPL){test=test||getTest(pos).match;if(test.placeholder!==undefined||returnPL===true){return $.isFunction(test.placeholder)?test.placeholder(opts):test.placeholder}else if(test.fn===null){if(pos>-1&&getMaskSet().validPositions[pos]===undefined){var tests=getTests(pos),staticAlternations=[],prevTest;if(tests.length>1+(tests[tests.length-1].match.def===""?1:0)){for(var i=0;i1){if(/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)){return opts.placeholder.charAt(pos%opts.placeholder.length)}}}}}}return test.def}return opts.placeholder.charAt(pos%opts.placeholder.length)}function HandleNativePlaceholder(npt,value){if(ie){if(npt.inputmask._valueGet()!==value&&(npt.placeholder!==value||npt.placeholder==="")){var buffer=getBuffer().slice(),nptValue=npt.inputmask._valueGet();if(nptValue!==value){var lvp=getLastValidPosition();if(lvp===-1&&nptValue===getBufferTemplate().join("")){buffer=[]}else if(lvp!==-1){clearOptionalTail(buffer)}writeBuffer(npt,buffer)}}}else if(npt.placeholder!==value){npt.placeholder=value;if(npt.placeholder==="")npt.removeAttribute("placeholder")}}var EventRuler={on:function(input,eventName,eventHandler){var ev=function(e){var that=this;if(that.inputmask===undefined&&this.nodeName!=="FORM"){var imOpts=$.data(that,"_inputmask_opts");if(imOpts)new Inputmask(imOpts).mask(that);else EventRuler.off(that)}else if(e.type!=="setvalue"&&this.nodeName!=="FORM"&&(that.disabled||that.readOnly&&!(e.type==="keydown"&&(e.ctrlKey&&e.keyCode===67)||opts.tabThrough===false&&e.keyCode===Inputmask.keyCode.TAB))){e.preventDefault()}else{switch(e.type){case"input":if(skipInputEvent===true){skipInputEvent=false;return e.preventDefault()}if(mobile){var args=arguments;setTimeout(function(){eventHandler.apply(that,args);caret(that,that.inputmask.caretPos,undefined,true)},0);return false}break;case"keydown":skipKeyPressEvent=false;skipInputEvent=false;break;case"keypress":if(skipKeyPressEvent===true){return e.preventDefault()}skipKeyPressEvent=true;break;case"click":if(iemobile||iphone){var args=arguments;setTimeout(function(){eventHandler.apply(that,args)},0);return false}break}var returnVal=eventHandler.apply(that,arguments);if(returnVal===false){e.preventDefault();e.stopPropagation()}return returnVal}};input.inputmask.events[eventName]=input.inputmask.events[eventName]||[];input.inputmask.events[eventName].push(ev);if($.inArray(eventName,["submit","reset"])!==-1){if(input.form!==null)$(input.form).on(eventName,ev)}else{$(input).on(eventName,ev)}},off:function(input,event){if(input.inputmask&&input.inputmask.events){var events;if(event){events=[];events[event]=input.inputmask.events[event]}else{events=input.inputmask.events}$.each(events,function(eventName,evArr){while(evArr.length>0){var ev=evArr.pop();if($.inArray(eventName,["submit","reset"])!==-1){if(input.form!==null)$(input.form).off(eventName,ev)}else{$(input).off(eventName,ev)}}delete input.inputmask.events[eventName]})}}};var EventHandlers={keydownEvent:function(e){var input=this,$input=$(input),k=e.keyCode,pos=caret(input);if(k===Inputmask.keyCode.BACKSPACE||k===Inputmask.keyCode.DELETE||iphone&&k===Inputmask.keyCode.BACKSPACE_SAFARI||e.ctrlKey&&k===Inputmask.keyCode.X&&!isInputEventSupported("cut")){e.preventDefault();handleRemove(input,k,pos);writeBuffer(input,getBuffer(true),getMaskSet().p,e,input.inputmask._valueGet()!==getBuffer().join(""))}else if(k===Inputmask.keyCode.END||k===Inputmask.keyCode.PAGE_DOWN){e.preventDefault();var caretPos=seekNext(getLastValidPosition());caret(input,e.shiftKey?pos.begin:caretPos,caretPos,true)}else if(k===Inputmask.keyCode.HOME&&!e.shiftKey||k===Inputmask.keyCode.PAGE_UP){e.preventDefault();caret(input,0,e.shiftKey?pos.begin:0,true)}else if((opts.undoOnEscape&&k===Inputmask.keyCode.ESCAPE||k===90&&e.ctrlKey)&&e.altKey!==true){checkVal(input,true,false,undoValue.split(""));$input.trigger("click")}else if(k===Inputmask.keyCode.INSERT&&!(e.shiftKey||e.ctrlKey)){opts.insertMode=!opts.insertMode;input.setAttribute("im-insert",opts.insertMode)}else if(opts.tabThrough===true&&k===Inputmask.keyCode.TAB){if(e.shiftKey===true){if(getTest(pos.begin).match.fn===null){pos.begin=seekNext(pos.begin)}pos.end=seekPrevious(pos.begin,true);pos.begin=seekPrevious(pos.end,true)}else{pos.begin=seekNext(pos.begin,true);pos.end=seekNext(pos.begin,true);if(pos.endbuffer.length?-1:0,frontPart=inputValue.substr(0,caretPos.begin),backPart=inputValue.substr(caretPos.begin),frontBufferPart=buffer.substr(0,caretPos.begin+offset),backBufferPart=buffer.substr(caretPos.begin+offset);var selection=caretPos,entries="",isEntry=false;if(frontPart!==frontBufferPart){var fpl=(isEntry=frontPart.length>=frontBufferPart.length)?frontPart.length:frontBufferPart.length,i;for(i=0;frontPart.charAt(i)===frontBufferPart.charAt(i)&&ibackBufferPart.length){entries+=backPart.slice(0,1)}else{if(backPart.length0){$.each(entries.split(""),function(ndx,entry){var keypress=new $.Event("keypress");keypress.which=entry.charCodeAt(0);ignorable=false;EventHandlers.keypressEvent.call(input,keypress)})}else{if(selection.begin===selection.end-1){selection.begin=seekPrevious(selection.begin+1);if(selection.begin===selection.end-1){caret(input,selection.begin)}else{caret(input,selection.begin,selection.end)}}var keydown=new $.Event("keydown");keydown.keyCode=opts.numericInput?Inputmask.keyCode.BACKSPACE:Inputmask.keyCode.DELETE;EventHandlers.keydownEvent.call(input,keydown)}e.preventDefault()}}},beforeInputEvent:function(e){if(e.cancelable){var input=this;switch(e.inputType){case"insertText":$.each(e.data.split(""),function(ndx,entry){var keypress=new $.Event("keypress");keypress.which=entry.charCodeAt(0);ignorable=false;EventHandlers.keypressEvent.call(input,keypress)});return e.preventDefault();case"deleteContentBackward":var keydown=new $.Event("keydown");keydown.keyCode=Inputmask.keyCode.BACKSPACE;EventHandlers.keydownEvent.call(input,keydown);return e.preventDefault();case"deleteContentForward":var keydown=new $.Event("keydown");keydown.keyCode=Inputmask.keyCode.DELETE;EventHandlers.keydownEvent.call(input,keydown);return e.preventDefault()}}},setValueEvent:function(e){this.inputmask.refreshValue=false;var input=this,value=e&&e.detail?e.detail[0]:arguments[1],value=value||input.inputmask._valueGet(true);if($.isFunction(opts.onBeforeMask))value=opts.onBeforeMask.call(inputmask,value,opts)||value;value=value.toString().split("");checkVal(input,true,false,value);undoValue=getBuffer().join("");if((opts.clearMaskOnLostFocus||opts.clearIncomplete)&&input.inputmask._valueGet()===getBufferTemplate().join("")){input.inputmask._valueSet("")}},focusEvent:function(e){var input=this,nptValue=input.inputmask._valueGet();if(opts.showMaskOnFocus){if(nptValue!==getBuffer().join("")){writeBuffer(input,getBuffer(),seekNext(getLastValidPosition()))}else if(mouseEnter===false){caret(input,seekNext(getLastValidPosition()))}}if(opts.positionCaretOnTab===true&&mouseEnter===false){EventHandlers.clickEvent.apply(input,[e,true])}undoValue=getBuffer().join("")},mouseleaveEvent:function(e){var input=this;mouseEnter=false;if(opts.clearMaskOnLostFocus&&document.activeElement!==input){HandleNativePlaceholder(input,originalPlaceholder)}},clickEvent:function(e,tabbed){function doRadixFocus(clickPos){if(opts.radixPoint!==""){var vps=getMaskSet().validPositions;if(vps[clickPos]===undefined||vps[clickPos].input===getPlaceholder(clickPos)){if(clickPos=newPos||clickPosition===lastPosition){lastPosition=newPos}}caret(input,lastPosition)}break}}}},0)},cutEvent:function(e){var input=this,$input=$(input),pos=caret(input),ev=e.originalEvent||e;var clipboardData=window.clipboardData||ev.clipboardData,clipData=isRTL?getBuffer().slice(pos.end,pos.begin):getBuffer().slice(pos.begin,pos.end);clipboardData.setData("text",isRTL?clipData.reverse().join(""):clipData.join(""));if(document.execCommand)document.execCommand("copy");handleRemove(input,Inputmask.keyCode.DELETE,pos);writeBuffer(input,getBuffer(),getMaskSet().p,e,undoValue!==getBuffer().join(""))},blurEvent:function(e){var $input=$(this),input=this;if(input.inputmask){HandleNativePlaceholder(input,originalPlaceholder);var nptValue=input.inputmask._valueGet(),buffer=getBuffer().slice();if(nptValue!==""||colorMask!==undefined){if(opts.clearMaskOnLostFocus){if(getLastValidPosition()===-1&&nptValue===getBufferTemplate().join("")){buffer=[]}else{clearOptionalTail(buffer)}}if(isComplete(buffer)===false){setTimeout(function(){$input.trigger("incomplete")},0);if(opts.clearIncomplete){resetMaskSet();if(opts.clearMaskOnLostFocus){buffer=[]}else{buffer=getBufferTemplate().slice()}}}writeBuffer(input,buffer,undefined,e)}if(undoValue!==getBuffer().join("")){undoValue=buffer.join("");$input.trigger("change")}}},mouseenterEvent:function(e){var input=this;mouseEnter=true;if(document.activeElement!==input&&opts.showMaskOnHover){HandleNativePlaceholder(input,(isRTL?getBuffer().slice().reverse():getBuffer()).join(""))}},submitEvent:function(e){if(undoValue!==getBuffer().join("")){$el.trigger("change")}if(opts.clearMaskOnLostFocus&&getLastValidPosition()===-1&&el.inputmask._valueGet&&el.inputmask._valueGet()===getBufferTemplate().join("")){el.inputmask._valueSet("")}if(opts.clearIncomplete&&isComplete(getBuffer())===false){el.inputmask._valueSet("")}if(opts.removeMaskOnSubmit){el.inputmask._valueSet(el.inputmask.unmaskedvalue(),true);setTimeout(function(){writeBuffer(el,getBuffer())},0)}},resetEvent:function(e){el.inputmask.refreshValue=true;setTimeout(function(){$el.trigger("setvalue")},0)}};function checkVal(input,writeOut,strict,nptvl,initiatingEvent){var inputmask=this||input.inputmask,inputValue=nptvl.slice(),charCodes="",initialNdx=-1,result=undefined;function isTemplateMatch(ndx,charCodes){var charCodeNdx=getMaskTemplate(true,0,false).slice(ndx,seekNext(ndx)).join("").replace(/'/g,"").indexOf(charCodes);return charCodeNdx!==-1&&!isMask(ndx)&&(getTest(ndx).match.nativeDef===charCodes.charAt(0)||getTest(ndx).match.fn===null&&getTest(ndx).match.nativeDef==="'"+charCodes.charAt(0)||getTest(ndx).match.nativeDef===" "&&(getTest(ndx+1).match.nativeDef===charCodes.charAt(0)||getTest(ndx+1).match.fn===null&&getTest(ndx+1).match.nativeDef==="'"+charCodes.charAt(0)))}resetMaskSet();if(!strict&&opts.autoUnmask!==true){var staticInput=getBufferTemplate().slice(0,seekNext(-1)).join(""),matches=inputValue.join("").match(new RegExp("^"+Inputmask.escapeRegex(staticInput),"g"));if(matches&&matches.length>0){inputValue.splice(0,matches.length*staticInput.length);initialNdx=seekNext(initialNdx)}}else{initialNdx=seekNext(initialNdx)}if(initialNdx===-1){getMaskSet().p=seekNext(initialNdx);initialNdx=0}else getMaskSet().p=initialNdx;inputmask.caretPos={begin:initialNdx};$.each(inputValue,function(ndx,charCode){if(charCode!==undefined){if(getMaskSet().validPositions[ndx]===undefined&&inputValue[ndx]===getPlaceholder(ndx)&&isMask(ndx,true)&&isValid(ndx,inputValue[ndx],true,undefined,undefined,true)===false){getMaskSet().p++}else{var keypress=new $.Event("_checkval");keypress.which=charCode.charCodeAt(0);charCodes+=charCode;var lvp=getLastValidPosition(undefined,true);if(!isTemplateMatch(initialNdx,charCodes)){result=EventHandlers.keypressEvent.call(input,keypress,true,false,strict,inputmask.caretPos.begin);if(result){initialNdx=inputmask.caretPos.begin+1;charCodes=""}}else{result=EventHandlers.keypressEvent.call(input,keypress,true,false,strict,lvp+1)}if(result){writeBuffer(undefined,getBuffer(),result.forwardPosition,keypress,false);inputmask.caretPos={begin:result.forwardPosition,end:result.forwardPosition}}}}});if(writeOut)writeBuffer(input,getBuffer(),result?result.forwardPosition:undefined,initiatingEvent||new $.Event("checkval"),initiatingEvent&&initiatingEvent.type==="input")}function unmaskedvalue(input){if(input){if(input.inputmask===undefined){return input.value}if(input.inputmask&&input.inputmask.refreshValue){EventHandlers.setValueEvent.call(input)}}var umValue=[],vps=getMaskSet().validPositions;for(var pndx in vps){if(vps[pndx].match&&vps[pndx].match.fn!=null){umValue.push(vps[pndx].input)}}var unmaskedValue=umValue.length===0?"":(isRTL?umValue.reverse():umValue).join("");if($.isFunction(opts.onUnMask)){var bufferValue=(isRTL?getBuffer().slice().reverse():getBuffer()).join("");unmaskedValue=opts.onUnMask.call(inputmask,bufferValue,unmaskedValue,opts)}return unmaskedValue}function caret(input,begin,end,notranslate){function translatePosition(pos){if(isRTL&&typeof pos==="number"&&(!opts.greedy||opts.placeholder!=="")&&el){pos=el.inputmask._valueGet().length-pos}return pos}var range;if(begin!==undefined){if($.isArray(begin)){end=isRTL?begin[0]:begin[1];begin=isRTL?begin[1]:begin[0]}if(begin.begin!==undefined){end=isRTL?begin.begin:begin.end;begin=isRTL?begin.end:begin.begin}if(typeof begin==="number"){begin=notranslate?begin:translatePosition(begin);end=notranslate?end:translatePosition(end);end=typeof end=="number"?end:begin;var scrollCalc=parseInt(((input.ownerDocument.defaultView||window).getComputedStyle?(input.ownerDocument.defaultView||window).getComputedStyle(input,null):input.currentStyle).fontSize)*end;input.scrollLeft=scrollCalc>input.scrollWidth?scrollCalc:0;input.inputmask.caretPos={begin:begin,end:end};if(input===document.activeElement){if("selectionStart"in input){input.selectionStart=begin;input.selectionEnd=end}else if(window.getSelection){range=document.createRange();if(input.firstChild===undefined||input.firstChild===null){var textNode=document.createTextNode("");input.appendChild(textNode)}range.setStart(input.firstChild,beginlvp;pos--){testPos=positions[pos];if((testPos.match.optionality||testPos.match.optionalQuantifier&&testPos.match.newBlockMarker||lvTestAlt&&(lvTestAlt!==positions[pos].locator[lvTest.alternation]&&testPos.match.fn!=null||testPos.match.fn===null&&testPos.locator[lvTest.alternation]&&checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","),lvTestAlt.toString().split(","))&&getTests(pos)[0].def!==""))&&buffer[pos]===getPlaceholder(pos,testPos.match)){bl--}else break}return returnDefinition?{l:bl,def:positions[bl]?positions[bl].match:undefined}:bl}function clearOptionalTail(buffer){buffer.length=0;var template=getMaskTemplate(true,0,true,undefined,true),lmnt,validPos;while(lmnt=template.shift(),lmnt!==undefined)buffer.push(lmnt);return buffer}function isComplete(buffer){if($.isFunction(opts.isComplete))return opts.isComplete(buffer,opts);if(opts.repeat==="*")return undefined;var complete=false,lrp=determineLastRequiredPosition(true),aml=seekPrevious(lrp.l);if(lrp.def===undefined||lrp.def.newBlockMarker||lrp.def.optionality||lrp.def.optionalQuantifier){complete=true;for(var i=0;i<=aml;i++){var test=getTestTemplate(i).match;if(test.fn!==null&&getMaskSet().validPositions[i]===undefined&&test.optionality!==true&&test.optionalQuantifier!==true||test.fn===null&&buffer[i]!==getPlaceholder(i,test)){complete=false;break}}}return complete}function handleRemove(input,k,pos,strict,fromIsValid){if(opts.numericInput||isRTL){if(k===Inputmask.keyCode.BACKSPACE){k=Inputmask.keyCode.DELETE}else if(k===Inputmask.keyCode.DELETE){k=Inputmask.keyCode.BACKSPACE}if(isRTL){var pend=pos.end;pos.end=pos.begin;pos.begin=pend}}if(k===Inputmask.keyCode.BACKSPACE&&pos.end-pos.begin<1){pos.begin=seekPrevious(pos.begin);if(getMaskSet().validPositions[pos.begin]!==undefined&&getMaskSet().validPositions[pos.begin].input===opts.groupSeparator){pos.begin--}}else if(k===Inputmask.keyCode.DELETE&&pos.begin===pos.end){pos.end=isMask(pos.end,true)&&(getMaskSet().validPositions[pos.end]&&getMaskSet().validPositions[pos.end].input!==opts.radixPoint)?pos.end+1:seekNext(pos.end)+1;if(getMaskSet().validPositions[pos.begin]!==undefined&&getMaskSet().validPositions[pos.begin].input===opts.groupSeparator){pos.end++}}revalidateMask(pos);if(strict!==true&&opts.keepStatic!==false||opts.regex!==null){var result=alternate(true);if(result){var newPos=result.caret!==undefined?result.caret:result.pos?seekNext(result.pos.begin?result.pos.begin:result.pos):getLastValidPosition(-1,true);if(k!==Inputmask.keyCode.DELETE||pos.begin>newPos){pos.begin==newPos}}}var lvp=getLastValidPosition(pos.begin,true);if(lvp=clientx){var offset1=clientx-previousWidth;var offset2=e.offsetWidth-clientx;e.innerHTML=inputText.charAt(caretPos);offset1-=e.offsetWidth/3;caretPos=offset1"+entry)}else if(isStatic&&(test.fn!==null&&testPos.input!==undefined||test.def==="")){isStatic=false;var mtl=maskTemplate.length;maskTemplate[mtl-1]=maskTemplate[mtl-1]+"";maskTemplate.push(entry)}else maskTemplate.push(entry)}function setCaret(){if(document.activeElement===input){maskTemplate.splice(caretPos.begin,0,caretPos.begin===caretPos.end||caretPos.end>getMaskSet().maskLength?'':'');maskTemplate.splice(caretPos.end+1,0,"")}}if(colorMask!==undefined){var buffer=getBuffer();if(caretPos===undefined){caretPos=caret(input)}else if(caretPos.begin===undefined){caretPos={begin:caretPos,end:caretPos}}if(clear!==true){var lvp=getLastValidPosition();do{if(getMaskSet().validPositions[pos]){testPos=getMaskSet().validPositions[pos];test=testPos.match;ndxIntlzr=testPos.locator.slice();setEntry(buffer[pos])}else{testPos=getTestTemplate(pos,ndxIntlzr,pos-1);test=testPos.match;ndxIntlzr=testPos.locator.slice();if(opts.jitMasking===false||pospos){setEntry(getPlaceholder(pos,test))}else isStatic=false}pos++}while((maxLength===undefined||pospos||isStatic);if(isStatic)setEntry();setCaret()}var template=colorMask.getElementsByTagName("div")[0];template.innerHTML=maskTemplate.join("");input.inputmask.positionColorMask(input,template)}}function mask(elem){function isElementTypeSupported(input,opts){function patchValueProperty(npt){var valueGet;var valueSet;function patchValhook(type){if($.valHooks&&($.valHooks[type]===undefined||$.valHooks[type].inputmaskpatch!==true)){var valhookGet=$.valHooks[type]&&$.valHooks[type].get?$.valHooks[type].get:function(elem){return elem.value};var valhookSet=$.valHooks[type]&&$.valHooks[type].set?$.valHooks[type].set:function(elem,value){elem.value=value;return elem};$.valHooks[type]={get:function(elem){if(elem.inputmask){if(elem.inputmask.opts.autoUnmask){return elem.inputmask.unmaskedvalue()}else{var result=valhookGet(elem);return getLastValidPosition(undefined,undefined,elem.inputmask.maskset.validPositions)!==-1||opts.nullable!==true?result:""}}else return valhookGet(elem)},set:function(elem,value){var $elem=$(elem),result;result=valhookSet(elem,value);if(elem.inputmask){$elem.trigger("setvalue",[value])}return result},inputmaskpatch:true}}}function getter(){if(this.inputmask){return this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():getLastValidPosition()!==-1||opts.nullable!==true?document.activeElement===this&&opts.clearMaskOnLostFocus?(isRTL?clearOptionalTail(getBuffer().slice()).reverse():clearOptionalTail(getBuffer().slice())).join(""):valueGet.call(this):""}else return valueGet.call(this)}function setter(value){valueSet.call(this,value);if(this.inputmask){$(this).trigger("setvalue",[value])}}function installNativeValueSetFallback(npt){EventRuler.on(npt,"mouseenter",function(event){var $input=$(this),input=this,value=input.inputmask._valueGet();if(value!==getBuffer().join("")){$input.trigger("setvalue")}})}if(!npt.inputmask.__valueGet){if(opts.noValuePatching!==true){if(Object.getOwnPropertyDescriptor){if(typeof Object.getPrototypeOf!=="function"){Object.getPrototypeOf=typeof"test".__proto__==="object"?function(object){return object.__proto__}:function(object){return object.constructor.prototype}}var valueProperty=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt),"value"):undefined;if(valueProperty&&valueProperty.get&&valueProperty.set){valueGet=valueProperty.get;valueSet=valueProperty.set;Object.defineProperty(npt,"value",{get:getter,set:setter,configurable:true})}else if(npt.tagName!=="INPUT"){valueGet=function(){return this.textContent};valueSet=function(value){this.textContent=value};Object.defineProperty(npt,"value",{get:getter,set:setter,configurable:true})}}else if(document.__lookupGetter__&&npt.__lookupGetter__("value")){valueGet=npt.__lookupGetter__("value");valueSet=npt.__lookupSetter__("value");npt.__defineGetter__("value",getter);npt.__defineSetter__("value",setter)}npt.inputmask.__valueGet=valueGet;npt.inputmask.__valueSet=valueSet}npt.inputmask._valueGet=function(overruleRTL){return isRTL&&overruleRTL!==true?valueGet.call(this.el).split("").reverse().join(""):valueGet.call(this.el)};npt.inputmask._valueSet=function(value,overruleRTL){valueSet.call(this.el,value===null||value===undefined?"":overruleRTL!==true&&isRTL?value.split("").reverse().join(""):value)};if(valueGet===undefined){valueGet=function(){return this.value};valueSet=function(value){this.value=value};patchValhook(npt.type);installNativeValueSetFallback(npt)}}}var elementType=input.getAttribute("type");var isSupported=input.tagName==="INPUT"&&$.inArray(elementType,opts.supportsInputType)!==-1||input.isContentEditable||input.tagName==="TEXTAREA";if(!isSupported){if(input.tagName==="INPUT"){var el=document.createElement("input");el.setAttribute("type",elementType);isSupported=el.type==="text";el=null}else isSupported="partial"}if(isSupported!==false){patchValueProperty(input)}else input.inputmask=undefined;return isSupported}EventRuler.off(elem);var isSupported=isElementTypeSupported(elem,opts);if(isSupported!==false){el=elem;$el=$(el);originalPlaceholder=el.placeholder;maxLength=el!==undefined?el.maxLength:undefined;if(maxLength===-1)maxLength=undefined;if(opts.colorMask===true){initializeColorMask(el)}if(mobile){if("inputMode"in el){el.inputmode=opts.inputmode;el.setAttribute("inputmode",opts.inputmode)}if(opts.disablePredictiveText===true){if("autocorrect"in el){el.autocorrect=false}else{if(opts.colorMask!==true){initializeColorMask(el)}el.type="password"}}}if(isSupported===true){el.setAttribute("im-insert",opts.insertMode);EventRuler.on(el,"submit",EventHandlers.submitEvent);EventRuler.on(el,"reset",EventHandlers.resetEvent);EventRuler.on(el,"blur",EventHandlers.blurEvent);EventRuler.on(el,"focus",EventHandlers.focusEvent);if(opts.colorMask!==true){EventRuler.on(el,"click",EventHandlers.clickEvent);EventRuler.on(el,"mouseleave",EventHandlers.mouseleaveEvent);EventRuler.on(el,"mouseenter",EventHandlers.mouseenterEvent)}EventRuler.on(el,"paste",EventHandlers.pasteEvent);EventRuler.on(el,"cut",EventHandlers.cutEvent);EventRuler.on(el,"complete",opts.oncomplete);EventRuler.on(el,"incomplete",opts.onincomplete);EventRuler.on(el,"cleared",opts.oncleared);if(!mobile&&opts.inputEventOnly!==true){EventRuler.on(el,"keydown",EventHandlers.keydownEvent);EventRuler.on(el,"keypress",EventHandlers.keypressEvent)}else{el.removeAttribute("maxLength")}EventRuler.on(el,"input",EventHandlers.inputFallBackEvent);EventRuler.on(el,"beforeinput",EventHandlers.beforeInputEvent)}EventRuler.on(el,"setvalue",EventHandlers.setValueEvent);undoValue=getBufferTemplate().join("");if(el.inputmask._valueGet(true)!==""||opts.clearMaskOnLostFocus===false||document.activeElement===el){var initialValue=$.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,el.inputmask._valueGet(true),opts)||el.inputmask._valueGet(true):el.inputmask._valueGet(true);if(initialValue!=="")checkVal(el,true,false,initialValue.split(""));var buffer=getBuffer().slice();undoValue=buffer.join("");if(isComplete(buffer)===false){if(opts.clearIncomplete){resetMaskSet()}}if(opts.clearMaskOnLostFocus&&document.activeElement!==el){if(getLastValidPosition()===-1){buffer=[]}else{clearOptionalTail(buffer)}}if(opts.clearMaskOnLostFocus===false||opts.showMaskOnFocus&&document.activeElement===el||el.inputmask._valueGet(true)!=="")writeBuffer(el,buffer);if(document.activeElement===el){caret(el,seekNext(getLastValidPosition()))}}}}var valueBuffer;if(actionObj!==undefined){switch(actionObj.action){case"isComplete":el=actionObj.el;return isComplete(getBuffer());case"unmaskedvalue":if(el===undefined||actionObj.value!==undefined){valueBuffer=actionObj.value;valueBuffer=($.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,valueBuffer,opts)||valueBuffer:valueBuffer).split("");checkVal.call(this,undefined,false,false,valueBuffer);if($.isFunction(opts.onBeforeWrite))opts.onBeforeWrite.call(inputmask,undefined,getBuffer(),0,opts)}return unmaskedvalue(el);case"mask":mask(el);break;case"format":valueBuffer=($.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,actionObj.value,opts)||actionObj.value:actionObj.value).split("");checkVal.call(this,undefined,true,false,valueBuffer);if(actionObj.metadata){return{value:isRTL?getBuffer().slice().reverse().join(""):getBuffer().join(""),metadata:maskScope.call(this,{action:"getmetadata"},maskset,opts)}}return isRTL?getBuffer().slice().reverse().join(""):getBuffer().join("");case"isValid":if(actionObj.value){valueBuffer=actionObj.value.split("");checkVal.call(this,undefined,true,true,valueBuffer)}else{actionObj.value=getBuffer().join("")}var buffer=getBuffer();var rl=determineLastRequiredPosition(),lmib=buffer.length-1;for(;lmib>rl;lmib--){if(isMask(lmib))break}buffer.splice(rl,lmib+1-rl);return isComplete(buffer)&&actionObj.value===getBuffer().join("");case"getemptymask":return getBufferTemplate().join("");case"remove":if(el&&el.inputmask){$.data(el,"_inputmask_opts",null);$el=$(el);el.inputmask._valueSet(opts.autoUnmask?unmaskedvalue(el):el.inputmask._valueGet(true));EventRuler.off(el);if(el.inputmask.colorMask){colorMask=el.inputmask.colorMask;colorMask.removeChild(el);colorMask.parentNode.insertBefore(el,colorMask);colorMask.parentNode.removeChild(colorMask)}var valueProperty;if(Object.getOwnPropertyDescriptor&&Object.getPrototypeOf){valueProperty=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el),"value");if(valueProperty){if(el.inputmask.__valueGet){Object.defineProperty(el,"value",{get:el.inputmask.__valueGet,set:el.inputmask.__valueSet,configurable:true})}}}else if(document.__lookupGetter__&&el.__lookupGetter__("value")){if(el.inputmask.__valueGet){el.__defineGetter__("value",el.inputmask.__valueGet);el.__defineSetter__("value",el.inputmask.__valueSet)}}el.inputmask=undefined}return el;break;case"getmetadata":if($.isArray(maskset.metadata)){var maskTarget=getMaskTemplate(true,0,false).join("");$.each(maskset.metadata,function(ndx,mtdt){if(mtdt.mask===maskTarget){maskTarget=mtdt;return false}});return maskTarget}return maskset.metadata}}}return Inputmask}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.numeric.extensions.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.numeric.extensions.min.js deleted file mode 100644 index eb82098..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/inputmask.numeric.extensions.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* inputmask.numeric.extensions.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["./inputmask"],factory)}else if(typeof exports==="object"){module.exports=factory(require("./inputmask"))}else{factory(window.Inputmask)}})(function(Inputmask){var $=Inputmask.dependencyLib;function autoEscape(txt,opts){var escapedTxt="";for(var i=0;i0){var radixPosition=$.inArray(opts.radixPoint,buffer);if(radixPosition===-1){buffer.push(opts.radixPoint);radixPosition=buffer.length-1}for(var i=1;i<=digits;i++){buffer[radixPosition+i]=buffer[radixPosition+i]||"0"}}return buffer}Inputmask.extendAliases({numeric:{mask:function(opts){if(opts.repeat!==0&&isNaN(opts.integerDigits)){opts.integerDigits=opts.repeat}opts.repeat=0;if(opts.groupSeparator===opts.radixPoint&&opts.digits&&opts.digits!=="0"){if(opts.radixPoint==="."){opts.groupSeparator=","}else if(opts.radixPoint===","){opts.groupSeparator="."}else opts.groupSeparator=""}if(opts.groupSeparator===" "){opts.skipOptionalPartCharacter=undefined}opts.autoGroup=opts.autoGroup&&opts.groupSeparator!=="";if(opts.autoGroup){if(typeof opts.groupSize=="string"&&isFinite(opts.groupSize))opts.groupSize=parseInt(opts.groupSize);if(isFinite(opts.integerDigits)){var seps=Math.floor(opts.integerDigits/opts.groupSize);var mod=opts.integerDigits%opts.groupSize;opts.integerDigits=parseInt(opts.integerDigits)+(mod===0?seps-1:seps);if(opts.integerDigits<1){opts.integerDigits="*"}}}if(opts.placeholder.length>1){opts.placeholder=opts.placeholder.charAt(0)}if(opts.positionCaretOnClick==="radixFocus"&&(opts.placeholder===""&&opts.integerOptional===false)){opts.positionCaretOnClick="lvp"}opts.definitions[";"]=opts.definitions["~"];opts.definitions[";"].definitionSymbol="~";if(opts.numericInput===true){opts.positionCaretOnClick=opts.positionCaretOnClick==="radixFocus"?"lvp":opts.positionCaretOnClick;opts.digitsOptional=false;if(isNaN(opts.digits))opts.digits=2;opts.decimalProtect=false}var mask="[+]";mask+=autoEscape(opts.prefix,opts);if(opts.integerOptional===true){mask+="~{1,"+opts.integerDigits+"}"}else mask+="~{"+opts.integerDigits+"}";if(opts.digits!==undefined){var radixDef=opts.decimalProtect?":":opts.radixPoint;var dq=opts.digits.toString().split(",");if(isFinite(dq[0])&&dq[1]&&isFinite(dq[1])){mask+=radixDef+";{"+opts.digits+"}"}else if(isNaN(opts.digits)||parseInt(opts.digits)>0){if(opts.digitsOptional){mask+="["+radixDef+";{1,"+opts.digits+"}]"}else mask+=radixDef+";{"+opts.digits+"}"}}mask+=autoEscape(opts.suffix,opts);mask+="[-]";opts.greedy=false;return mask},placeholder:"",greedy:false,digits:"*",digitsOptional:true,enforceDigitsOnBlur:false,radixPoint:".",positionCaretOnClick:"radixFocus",groupSize:3,groupSeparator:"",autoGroup:false,allowMinus:true,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:true,prefix:"",suffix:"",rightAlign:true,decimalProtect:true,min:null,max:null,step:1,insertMode:true,autoUnmask:false,unmaskAsNumber:false,inputType:"text",inputmode:"numeric",preValidation:function(buffer,pos,c,isSelection,opts,maskset){if(c==="-"||c===opts.negationSymbol.front){if(opts.allowMinus!==true)return false;opts.isNegative=opts.isNegative===undefined?true:!opts.isNegative;if(buffer.join("")==="")return true;return{caret:maskset.validPositions[pos]?pos:undefined,dopost:true}}if(isSelection===false&&c===opts.radixPoint&&(opts.digits!==undefined&&(isNaN(opts.digits)||parseInt(opts.digits)>0))){var radixPos=$.inArray(opts.radixPoint,buffer);if(radixPos!==-1&&maskset.validPositions[radixPos]!==undefined){if(opts.numericInput===true){return pos===radixPos}return{caret:radixPos+1}}}return true},postValidation:function(buffer,pos,currentResult,opts){function buildPostMask(buffer,opts){var postMask="";postMask+="("+opts.groupSeparator+"*{"+opts.groupSize+"}){*}";if(opts.radixPoint!==""){var radixSplit=buffer.join("").split(opts.radixPoint);if(radixSplit[1]){postMask+=opts.radixPoint+"*{"+radixSplit[1].match(/^\d*\??\d*/)[0].length+"}"}}return postMask}var suffix=opts.suffix.split(""),prefix=opts.prefix.split("");if(currentResult.pos===undefined&¤tResult.caret!==undefined&¤tResult.dopost!==true)return currentResult;var caretPos=currentResult.caret!==undefined?currentResult.caret:currentResult.pos;var maskedValue=buffer.slice();if(opts.numericInput){caretPos=maskedValue.length-caretPos-1;maskedValue=maskedValue.reverse()}var charAtPos=maskedValue[caretPos];if(charAtPos===opts.groupSeparator){caretPos+=1;charAtPos=maskedValue[caretPos]}if(caretPos===maskedValue.length-opts.suffix.length-1&&charAtPos===opts.radixPoint)return currentResult;if(charAtPos!==undefined){if(charAtPos!==opts.radixPoint&&charAtPos!==opts.negationSymbol.front&&charAtPos!==opts.negationSymbol.back){maskedValue[caretPos]="?";if(opts.prefix.length>0&&caretPos>=(opts.isNegative===false?1:0)&&caretPos0&&caretPos>=maskedValue.length-opts.suffix.length-(opts.isNegative===false?1:0)){suffix[caretPos-(maskedValue.length-opts.suffix.length-(opts.isNegative===false?1:0))]="?"}}}prefix=prefix.join("");suffix=suffix.join("");var processValue=maskedValue.join("").replace(prefix,"");processValue=processValue.replace(suffix,"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");processValue=processValue.replace(new RegExp("[-"+Inputmask.escapeRegex(opts.negationSymbol.front)+"]","g"),"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");if(isNaN(opts.placeholder)){processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder),"g"),"")}if(processValue.length>1&&processValue.indexOf(opts.radixPoint)!==1){if(charAtPos==="0"){processValue=processValue.replace(/^\?/g,"")}processValue=processValue.replace(/^0/g,"")}if(processValue.charAt(0)===opts.radixPoint&&opts.radixPoint!==""&&opts.numericInput!==true){processValue="0"+processValue}if(processValue!==""){processValue=processValue.split("");if((!opts.digitsOptional||opts.enforceDigitsOnBlur&¤tResult.event==="blur")&&isFinite(opts.digits)){var radixPosition=$.inArray(opts.radixPoint,processValue);var rpb=$.inArray(opts.radixPoint,maskedValue);if(radixPosition===-1){processValue.push(opts.radixPoint);radixPosition=processValue.length-1}for(var i=1;i<=opts.digits;i++){if((!opts.digitsOptional||opts.enforceDigitsOnBlur&¤tResult.event==="blur")&&(processValue[radixPosition+i]===undefined||processValue[radixPosition+i]===opts.placeholder.charAt(0))){processValue[radixPosition+i]=currentResult.placeholder||opts.placeholder.charAt(0)}else if(rpb!==-1&&maskedValue[rpb+i]!==undefined){processValue[radixPosition+i]=processValue[radixPosition+i]||maskedValue[rpb+i]}}}if(opts.autoGroup===true&&opts.groupSeparator!==""&&(charAtPos!==opts.radixPoint||currentResult.pos!==undefined||currentResult.dopost)){var addRadix=processValue[processValue.length-1]===opts.radixPoint&¤tResult.c===opts.radixPoint;processValue=Inputmask(buildPostMask(processValue,opts),{numericInput:true,jitMasking:true,definitions:{"*":{validator:"[0-9?]",cardinality:1}}}).format(processValue.join(""));if(addRadix)processValue+=opts.radixPoint;if(processValue.charAt(0)===opts.groupSeparator){processValue.substr(1)}}else processValue=processValue.join("")}if(opts.isNegative&¤tResult.event==="blur"){opts.isNegative=processValue!=="0"}processValue=prefix+processValue;processValue+=suffix;if(opts.isNegative){processValue=opts.negationSymbol.front+processValue;processValue+=opts.negationSymbol.back}processValue=processValue.split("");if(charAtPos!==undefined){if(charAtPos!==opts.radixPoint&&charAtPos!==opts.negationSymbol.front&&charAtPos!==opts.negationSymbol.back){caretPos=$.inArray("?",processValue);if(caretPos>-1){processValue[caretPos]=charAtPos}else caretPos=currentResult.caret||0}else if(charAtPos===opts.radixPoint||charAtPos===opts.negationSymbol.front||charAtPos===opts.negationSymbol.back){var newCaretPos=$.inArray(charAtPos,processValue);if(newCaretPos!==-1)caretPos=newCaretPos}}if(opts.numericInput){caretPos=processValue.length-caretPos-1;processValue=processValue.reverse()}var rslt={caret:(charAtPos===undefined||currentResult.pos!==undefined)&&caretPos!==undefined?caretPos+(opts.numericInput?-1:1):caretPos,buffer:processValue,refreshFromBuffer:currentResult.dopost||buffer.join("")!==processValue.join("")};return rslt.refreshFromBuffer?rslt:currentResult},onBeforeWrite:function(e,buffer,caretPos,opts){function parseMinMaxOptions(opts){if(opts.parseMinMaxOptions===undefined){if(opts.min!==null){opts.min=opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.radixPoint===",")opts.min=opts.min.replace(opts.radixPoint,".");opts.min=isFinite(opts.min)?parseFloat(opts.min):NaN;if(isNaN(opts.min))opts.min=Number.MIN_VALUE}if(opts.max!==null){opts.max=opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.radixPoint===",")opts.max=opts.max.replace(opts.radixPoint,".");opts.max=isFinite(opts.max)?parseFloat(opts.max):NaN;if(isNaN(opts.max))opts.max=Number.MAX_VALUE}opts.parseMinMaxOptions="done"}}if(e){switch(e.type){case"keydown":return opts.postValidation(buffer,caretPos,{caret:caretPos,dopost:true},opts);case"blur":case"checkval":var unmasked;parseMinMaxOptions(opts);if(opts.min!==null||opts.max!==null){unmasked=opts.onUnMask(buffer.join(""),undefined,$.extend({},opts,{unmaskAsNumber:true}));if(opts.min!==null&&unmaskedopts.max){opts.isNegative=opts.max<0;return opts.postValidation(opts.max.toString().replace(".",opts.radixPoint).split(""),caretPos,{caret:caretPos,dopost:true,placeholder:"0"},opts)}}return opts.postValidation(buffer,caretPos,{caret:caretPos,placeholder:"0",event:"blur"},opts);case"_checkval":return{caret:caretPos};default:break}}},regex:{integerPart:function(opts,emptyCheck){return emptyCheck?new RegExp("["+Inputmask.escapeRegex(opts.negationSymbol.front)+"+]?"):new RegExp("["+Inputmask.escapeRegex(opts.negationSymbol.front)+"+]?\\d+")},integerNPart:function(opts){return new RegExp("[\\d"+Inputmask.escapeRegex(opts.groupSeparator)+Inputmask.escapeRegex(opts.placeholder.charAt(0))+"]+")}},definitions:{"~":{validator:function(chrs,maskset,pos,strict,opts,isSelection){var isValid,l;if(chrs==="k"||chrs==="m"){isValid={insert:[],c:0};for(var i=0,l=chrs==="k"?2:5;i1){pvRadixSplit[1]=pvRadixSplit[1].replace(/0/g,opts.placeholder.charAt(0))}if(pvRadixSplit[0]==="0"){pvRadixSplit[0]=pvRadixSplit[0].replace(/0/g,opts.placeholder.charAt(0))}processValue=pvRadixSplit[0]+opts.radixPoint+pvRadixSplit[1]||"";var bufferTemplate=maskset._buffer.join("");if(processValue===opts.radixPoint){processValue=bufferTemplate}while(processValue.match(Inputmask.escapeRegex(bufferTemplate)+"$")===null){bufferTemplate=bufferTemplate.slice(1)}processValue=processValue.replace(bufferTemplate,"");processValue=processValue.split("");if(processValue[pos]===undefined){isValid={pos:pos,remove:pos}}else{isValid={pos:pos}}}}else if(!strict&&chrs===opts.radixPoint&&maskset.validPositions[pos-1]===undefined){isValid={insert:{pos:pos,c:0},pos:pos+1}}return isValid},cardinality:1},"+":{validator:function(chrs,maskset,pos,strict,opts){return opts.allowMinus&&(chrs==="-"||chrs===opts.negationSymbol.front)},cardinality:1,placeholder:""},"-":{validator:function(chrs,maskset,pos,strict,opts){return opts.allowMinus&&chrs===opts.negationSymbol.back},cardinality:1,placeholder:""},":":{validator:function(chrs,maskset,pos,strict,opts){var radix="["+Inputmask.escapeRegex(opts.radixPoint)+"]";var isValid=new RegExp(radix).test(chrs);if(isValid&&maskset.validPositions[pos]&&maskset.validPositions[pos].match.placeholder===opts.radixPoint){isValid={caret:pos+1}}return isValid},cardinality:1,placeholder:function(opts){return opts.radixPoint}}},onUnMask:function(maskedValue,unmaskedValue,opts){if(unmaskedValue===""&&opts.nullable===true){return unmaskedValue}var processValue=maskedValue.replace(opts.prefix,"");processValue=processValue.replace(opts.suffix,"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.placeholder.charAt(0)!==""){processValue=processValue.replace(new RegExp(opts.placeholder.charAt(0),"g"),"0")}if(opts.unmaskAsNumber){if(opts.radixPoint!==""&&processValue.indexOf(opts.radixPoint)!==-1)processValue=processValue.replace(Inputmask.escapeRegex.call(this,opts.radixPoint),".");processValue=processValue.replace(new RegExp("^"+Inputmask.escapeRegex(opts.negationSymbol.front)),"-");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");return Number(processValue)}return processValue},isComplete:function(buffer,opts){var maskedValue=(opts.numericInput?buffer.slice().reverse():buffer).join("");maskedValue=maskedValue.replace(new RegExp("^"+Inputmask.escapeRegex(opts.negationSymbol.front)),"-");maskedValue=maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");maskedValue=maskedValue.replace(opts.prefix,"");maskedValue=maskedValue.replace(opts.suffix,"");maskedValue=maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator)+"([0-9]{3})","g"),"$1");if(opts.radixPoint===",")maskedValue=maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint),".");return isFinite(maskedValue)},onBeforeMask:function(initialValue,opts){opts.isNegative=undefined;var radixPoint=opts.radixPoint||",";if((typeof initialValue=="number"||opts.inputType==="number")&&radixPoint!==""){initialValue=initialValue.toString().replace(".",radixPoint)}var valueParts=initialValue.split(radixPoint),integerPart=valueParts[0].replace(/[^\-0-9]/g,""),decimalPart=valueParts.length>1?valueParts[1].replace(/[^0-9]/g,""):"";initialValue=integerPart+(decimalPart!==""?radixPoint+decimalPart:decimalPart);var digits=0;if(radixPoint!==""){digits=decimalPart.length;if(decimalPart!==""){var digitsFactor=Math.pow(10,digits||1);if(isFinite(opts.digits)){digits=parseInt(opts.digits);digitsFactor=Math.pow(10,digits)}initialValue=initialValue.replace(Inputmask.escapeRegex(radixPoint),".");if(isFinite(initialValue))initialValue=Math.round(parseFloat(initialValue)*digitsFactor)/digitsFactor;initialValue=initialValue.toString().replace(".",radixPoint)}}if(opts.digits===0&&initialValue.indexOf(Inputmask.escapeRegex(radixPoint))!==-1){initialValue=initialValue.substring(0,initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))}return alignDigits(initialValue.toString().split(""),digits,opts).join("")},onKeyDown:function(e,buffer,caretPos,opts){var $input=$(this);if(e.ctrlKey){switch(e.keyCode){case Inputmask.keyCode.UP:$input.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(opts.step));$input.trigger("setvalue");break;case Inputmask.keyCode.DOWN:$input.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(opts.step));$input.trigger("setvalue");break}}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:true,digits:2,digitsOptional:false,clearMaskOnLostFocus:false},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,digitsOptional:true,radixPoint:".",placeholder:"0",autoGroup:false,min:0,max:100,suffix:" %",allowMinus:false}});return Inputmask}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/jquery.inputmask.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/jquery.inputmask.min.js deleted file mode 100644 index 4b581e9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/inputmask/jquery.inputmask.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* jquery.inputmask.min.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(factory){if(typeof define==="function"&&define.amd){define(["jquery","./inputmask"],factory)}else if(typeof exports==="object"){module.exports=factory(require("jquery"),require("./inputmask"))}else{factory(jQuery,window.Inputmask)}})(function($,Inputmask){if($.fn.inputmask===undefined){$.fn.inputmask=function(fn,options){var nptmask,input=this[0];if(options===undefined)options={};if(typeof fn==="string"){switch(fn){case"unmaskedvalue":return input&&input.inputmask?input.inputmask.unmaskedvalue():$(input).val();case"remove":return this.each(function(){if(this.inputmask)this.inputmask.remove()});case"getemptymask":return input&&input.inputmask?input.inputmask.getemptymask():"";case"hasMaskedValue":return input&&input.inputmask?input.inputmask.hasMaskedValue():false;case"isComplete":return input&&input.inputmask?input.inputmask.isComplete():true;case"getmetadata":return input&&input.inputmask?input.inputmask.getmetadata():undefined;case"setvalue":Inputmask.setValue(input,options);break;case"option":if(typeof options==="string"){if(input&&input.inputmask!==undefined){return input.inputmask.option(options)}}else{return this.each(function(){if(this.inputmask!==undefined){return this.inputmask.option(options)}})}break;default:options.alias=fn;nptmask=new Inputmask(options);return this.each(function(){nptmask.mask(this)})}}else if(Array.isArray(fn)){options.alias=fn;nptmask=new Inputmask(options);return this.each(function(){nptmask.mask(this)})}else if(typeof fn=="object"){nptmask=new Inputmask(fn);if(fn.mask===undefined&&fn.alias===undefined){return this.each(function(){if(this.inputmask!==undefined){return this.inputmask.option(fn)}else nptmask.mask(this)})}else{return this.each(function(){nptmask.mask(this)})}}else if(fn===undefined){return this.each(function(){nptmask=new Inputmask(options);nptmask.mask(this)})}}}return $.fn.inputmask}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/jquery.inputmask.bundle.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/jquery.inputmask.bundle.min.js deleted file mode 100644 index 3b07847..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/inputmask/min/jquery.inputmask.bundle.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* jquery.inputmask.bundle.js -* https://github.com/RobinHerbots/Inputmask -* Copyright (c) 2010 - 2019 Robin Herbots -* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -* Version: 4.0.9 -*/ - -(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value:value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)})([function(module,exports,__webpack_require__){"use strict";__webpack_require__(1);__webpack_require__(6);__webpack_require__(7);var _inputmask=__webpack_require__(2);var _inputmask2=_interopRequireDefault(_inputmask);var _inputmask3=__webpack_require__(3);var _inputmask4=_interopRequireDefault(_inputmask3);var _jquery=__webpack_require__(4);var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}if(_inputmask4.default===_jquery2.default){__webpack_require__(8)}window.Inputmask=_inputmask2.default},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(2)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function(Inputmask){Inputmask.extendDefinitions({A:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",casing:"upper"},"&":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",casing:"upper"},"#":{validator:"[0-9A-Fa-f]",casing:"upper"}});Inputmask.extendAliases({cssunit:{regex:"[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)"},url:{regex:"(https?|ftp)//.*",autoUnmask:false},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function validator(chrs,maskset,pos,strict,opts){if(pos-1>-1&&maskset.buffer[pos-1]!=="."){chrs=maskset.buffer[pos-1]+chrs;if(pos-2>-1&&maskset.buffer[pos-2]!=="."){chrs=maskset.buffer[pos-2]+chrs}else chrs="0"+chrs}else chrs="00"+chrs;return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs)}}},onUnMask:function onUnMask(maskedValue,unmaskedValue,opts){return maskedValue},inputmode:"numeric"},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:false,casing:"lower",onBeforePaste:function onBeforePaste(pastedValue,opts){pastedValue=pastedValue.toLowerCase();return pastedValue.replace("mailto:","")},definitions:{"*":{validator:"[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]"},"-":{validator:"[0-9A-Za-z-]"}},onUnMask:function onUnMask(maskedValue,unmaskedValue,opts){return maskedValue},inputmode:"email"},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",casing:"upper"}},clearIncomplete:true,autoUnmask:true}});return Inputmask})},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(3),__webpack_require__(5)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function($,window,undefined){var document=window.document,ua=navigator.userAgent,ie=ua.indexOf("MSIE ")>0||ua.indexOf("Trident/")>0,mobile=isInputEventSupported("touchstart"),iemobile=/iemobile/i.test(ua),iphone=/iphone/i.test(ua)&&!iemobile;function Inputmask(alias,options,internal){if(!(this instanceof Inputmask)){return new Inputmask(alias,options,internal)}this.el=undefined;this.events={};this.maskset=undefined;this.refreshValue=false;if(internal!==true){if($.isPlainObject(alias)){options=alias}else{options=options||{};if(alias)options.alias=alias}this.opts=$.extend(true,{},this.defaults,options);this.noMasksCache=options&&options.definitions!==undefined;this.userOptions=options||{};this.isRTL=this.opts.numericInput;resolveAlias(this.opts.alias,options,this.opts)}}Inputmask.prototype={dataAttribute:"data-inputmask",defaults:{placeholder:"_",optionalmarker:["[","]"],quantifiermarker:["{","}"],groupmarker:["(",")"],alternatormarker:"|",escapeChar:"\\",mask:null,regex:null,oncomplete:$.noop,onincomplete:$.noop,oncleared:$.noop,repeat:0,greedy:false,autoUnmask:false,removeMaskOnSubmit:false,clearMaskOnLostFocus:true,insertMode:true,clearIncomplete:false,alias:null,onKeyDown:$.noop,onBeforeMask:null,onBeforePaste:function onBeforePaste(pastedValue,opts){return $.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(this,pastedValue,opts):pastedValue},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:true,showMaskOnHover:true,onKeyValidation:$.noop,skipOptionalPartCharacter:" ",numericInput:false,rightAlign:false,undoOnEscape:true,radixPoint:"",_radixDance:false,groupSeparator:"",keepStatic:null,positionCaretOnTab:true,tabThrough:false,supportsInputType:["text","tel","url","password","search"],ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123,0,229],isComplete:null,preValidation:null,postValidation:null,staticDefinitionSymbol:undefined,jitMasking:false,nullable:true,inputEventOnly:false,noValuePatching:false,positionCaretOnClick:"lvp",casing:null,inputmode:"verbatim",colorMask:false,disablePredictiveText:false,importDataAttributes:true,shiftPositions:true},definitions:{9:{validator:"[0-9\uff11-\uff19]",definitionSymbol:"*"},a:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",definitionSymbol:"*"},"*":{validator:"[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]"}},aliases:{},masksCache:{},mask:function mask(elems){var that=this;function importAttributeOptions(npt,opts,userOptions,dataAttribute){if(opts.importDataAttributes===true){var attrOptions=npt.getAttribute(dataAttribute),option,dataoptions,optionData,p;var importOption=function importOption(option,optionData){optionData=optionData!==undefined?optionData:npt.getAttribute(dataAttribute+"-"+option);if(optionData!==null){if(typeof optionData==="string"){if(option.indexOf("on")===0)optionData=window[optionData];else if(optionData==="false")optionData=false;else if(optionData==="true")optionData=true}userOptions[option]=optionData}};if(attrOptions&&attrOptions!==""){attrOptions=attrOptions.replace(/'/g,'"');dataoptions=JSON.parse("{"+attrOptions+"}")}if(dataoptions){optionData=undefined;for(p in dataoptions){if(p.toLowerCase()==="alias"){optionData=dataoptions[p];break}}}importOption("alias",optionData);if(userOptions.alias){resolveAlias(userOptions.alias,userOptions,opts)}for(option in opts){if(dataoptions){optionData=undefined;for(p in dataoptions){if(p.toLowerCase()===option.toLowerCase()){optionData=dataoptions[p];break}}}importOption(option,optionData)}}$.extend(true,opts,userOptions);if(npt.dir==="rtl"||opts.rightAlign){npt.style.textAlign="right"}if(npt.dir==="rtl"||opts.numericInput){npt.dir="ltr";npt.removeAttribute("dir");opts.isRTL=true}return Object.keys(userOptions).length}if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){var scopedOpts=$.extend(true,{},that.opts);if(importAttributeOptions(el,scopedOpts,$.extend(true,{},that.userOptions),that.dataAttribute)){var maskset=generateMaskSet(scopedOpts,that.noMasksCache);if(maskset!==undefined){if(el.inputmask!==undefined){el.inputmask.opts.autoUnmask=true;el.inputmask.remove()}el.inputmask=new Inputmask(undefined,undefined,true);el.inputmask.opts=scopedOpts;el.inputmask.noMasksCache=that.noMasksCache;el.inputmask.userOptions=$.extend(true,{},that.userOptions);el.inputmask.isRTL=scopedOpts.isRTL||scopedOpts.numericInput;el.inputmask.el=el;el.inputmask.maskset=maskset;$.data(el,"_inputmask_opts",scopedOpts);maskScope.call(el.inputmask,{action:"mask"})}}});return elems&&elems[0]?elems[0].inputmask||this:this},option:function option(options,noremask){if(typeof options==="string"){return this.opts[options]}else if((typeof options==="undefined"?"undefined":_typeof(options))==="object"){$.extend(this.userOptions,options);if(this.el&&noremask!==true){this.mask(this.el)}return this}},unmaskedvalue:function unmaskedvalue(value){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"unmaskedvalue",value:value})},remove:function remove(){return maskScope.call(this,{action:"remove"})},getemptymask:function getemptymask(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"getemptymask"})},hasMaskedValue:function hasMaskedValue(){return!this.opts.autoUnmask},isComplete:function isComplete(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"isComplete"})},getmetadata:function getmetadata(){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"getmetadata"})},isValid:function isValid(value){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"isValid",value:value})},format:function format(value,metadata){this.maskset=this.maskset||generateMaskSet(this.opts,this.noMasksCache);return maskScope.call(this,{action:"format",value:value,metadata:metadata})},setValue:function setValue(value){if(this.el){$(this.el).trigger("setvalue",[value])}},analyseMask:function analyseMask(mask,regexMask,opts){var tokenizer=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?(?:\|[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,regexTokenizer=/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,escaped=false,currentToken=new MaskToken,match,m,openenings=[],maskTokens=[],openingToken,currentOpeningToken,alternator,lastMatch,groupToken;function MaskToken(isGroup,isOptional,isQuantifier,isAlternator){this.matches=[];this.openGroup=isGroup||false;this.alternatorGroup=false;this.isGroup=isGroup||false;this.isOptional=isOptional||false;this.isQuantifier=isQuantifier||false;this.isAlternator=isAlternator||false;this.quantifier={min:1,max:1}}function insertTestDefinition(mtoken,element,position){position=position!==undefined?position:mtoken.matches.length;var prevMatch=mtoken.matches[position-1];if(regexMask){if(element.indexOf("[")===0||escaped&&/\\d|\\s|\\w]/i.test(element)||element==="."){mtoken.matches.splice(position++,0,{fn:new RegExp(element,opts.casing?"i":""),optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==element,casing:null,def:element,placeholder:undefined,nativeDef:element})}else{if(escaped)element=element[element.length-1];$.each(element.split(""),function(ndx,lmnt){prevMatch=mtoken.matches[position-1];mtoken.matches.splice(position++,0,{fn:null,optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==lmnt&&prevMatch.fn!==null,casing:null,def:opts.staticDefinitionSymbol||lmnt,placeholder:opts.staticDefinitionSymbol!==undefined?lmnt:undefined,nativeDef:(escaped?"'":"")+lmnt})})}escaped=false}else{var maskdef=(opts.definitions?opts.definitions[element]:undefined)||Inputmask.prototype.definitions[element];if(maskdef&&!escaped){mtoken.matches.splice(position++,0,{fn:maskdef.validator?typeof maskdef.validator=="string"?new RegExp(maskdef.validator,opts.casing?"i":""):new function(){this.test=maskdef.validator}:new RegExp("."),optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==(maskdef.definitionSymbol||element),casing:maskdef.casing,def:maskdef.definitionSymbol||element,placeholder:maskdef.placeholder,nativeDef:element})}else{mtoken.matches.splice(position++,0,{fn:null,optionality:false,newBlockMarker:prevMatch===undefined?"master":prevMatch.def!==element&&prevMatch.fn!==null,casing:null,def:opts.staticDefinitionSymbol||element,placeholder:opts.staticDefinitionSymbol!==undefined?element:undefined,nativeDef:(escaped?"'":"")+element});escaped=false}}}function verifyGroupMarker(maskToken){if(maskToken&&maskToken.matches){$.each(maskToken.matches,function(ndx,token){var nextToken=maskToken.matches[ndx+1];if((nextToken===undefined||nextToken.matches===undefined||nextToken.isQuantifier===false)&&token&&token.isGroup){token.isGroup=false;if(!regexMask){insertTestDefinition(token,opts.groupmarker[0],0);if(token.openGroup!==true){insertTestDefinition(token,opts.groupmarker[1])}}}verifyGroupMarker(token)})}}function defaultCase(){if(openenings.length>0){currentOpeningToken=openenings[openenings.length-1];insertTestDefinition(currentOpeningToken,m);if(currentOpeningToken.isAlternator){alternator=openenings.pop();for(var mndx=0;mndx0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(alternator)}else{currentToken.matches.push(alternator)}}}else{insertTestDefinition(currentToken,m)}}function reverseTokens(maskToken){function reverseStatic(st){if(st===opts.optionalmarker[0])st=opts.optionalmarker[1];else if(st===opts.optionalmarker[1])st=opts.optionalmarker[0];else if(st===opts.groupmarker[0])st=opts.groupmarker[1];else if(st===opts.groupmarker[1])st=opts.groupmarker[0];return st}maskToken.matches=maskToken.matches.reverse();for(var match in maskToken.matches){if(maskToken.matches.hasOwnProperty(match)){var intMatch=parseInt(match);if(maskToken.matches[match].isQuantifier&&maskToken.matches[intMatch+1]&&maskToken.matches[intMatch+1].isGroup){var qt=maskToken.matches[match];maskToken.matches.splice(match,1);maskToken.matches.splice(intMatch+1,0,qt)}if(maskToken.matches[match].matches!==undefined){maskToken.matches[match]=reverseTokens(maskToken.matches[match])}else{maskToken.matches[match]=reverseStatic(maskToken.matches[match])}}}return maskToken}function groupify(matches){var groupToken=new MaskToken(true);groupToken.openGroup=false;groupToken.matches=matches;return groupToken}if(regexMask){opts.optionalmarker[0]=undefined;opts.optionalmarker[1]=undefined}while(match=regexMask?regexTokenizer.exec(mask):tokenizer.exec(mask)){m=match[0];if(regexMask){switch(m.charAt(0)){case"?":m="{0,1}";break;case"+":case"*":m="{"+m+"}";break}}if(escaped){defaultCase();continue}switch(m.charAt(0)){case"(?=":break;case"(?!":break;case"(?<=":break;case"(?0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(openingToken);if(currentOpeningToken.isAlternator){alternator=openenings.pop();for(var mndx=0;mndx0){currentOpeningToken=openenings[openenings.length-1];currentOpeningToken.matches.push(alternator)}else{currentToken.matches.push(alternator)}}}else{currentToken.matches.push(openingToken)}}else defaultCase();break;case opts.optionalmarker[0]:openenings.push(new MaskToken(false,true));break;case opts.groupmarker[0]:openenings.push(new MaskToken(true));break;case opts.quantifiermarker[0]:var quantifier=new MaskToken(false,false,true);m=m.replace(/[{}]/g,"");var mqj=m.split("|"),mq=mqj[0].split(","),mq0=isNaN(mq[0])?mq[0]:parseInt(mq[0]),mq1=mq.length===1?mq0:isNaN(mq[1])?mq[1]:parseInt(mq[1]);if(mq0==="*"||mq0==="+"){mq0=mq1==="*"?0:1}quantifier.quantifier={min:mq0,max:mq1,jit:mqj[1]};var matches=openenings.length>0?openenings[openenings.length-1].matches:currentToken.matches;match=matches.pop();if(match.isAlternator){matches.push(match);matches=match.matches;var groupToken=new MaskToken(true);var tmpMatch=matches.pop();matches.push(groupToken);matches=groupToken.matches;match=tmpMatch}if(!match.isGroup){match=groupify([match])}matches.push(match);matches.push(quantifier);break;case opts.alternatormarker:var groupQuantifier=function groupQuantifier(matches){var lastMatch=matches.pop();if(lastMatch.isQuantifier){lastMatch=groupify([matches.pop(),lastMatch])}return lastMatch};if(openenings.length>0){currentOpeningToken=openenings[openenings.length-1];var subToken=currentOpeningToken.matches[currentOpeningToken.matches.length-1];if(currentOpeningToken.openGroup&&(subToken.matches===undefined||subToken.isGroup===false&&subToken.isAlternator===false)){lastMatch=openenings.pop()}else{lastMatch=groupQuantifier(currentOpeningToken.matches)}}else{lastMatch=groupQuantifier(currentToken.matches)}if(lastMatch.isAlternator){openenings.push(lastMatch)}else{if(lastMatch.alternatorGroup){alternator=openenings.pop();lastMatch.alternatorGroup=false}else{alternator=new MaskToken(false,false,false,true)}alternator.matches.push(lastMatch);openenings.push(alternator);if(lastMatch.openGroup){lastMatch.openGroup=false;var alternatorGroup=new MaskToken(true);alternatorGroup.alternatorGroup=true;openenings.push(alternatorGroup)}}break;default:defaultCase()}}while(openenings.length>0){openingToken=openenings.pop();currentToken.matches.push(openingToken)}if(currentToken.matches.length>0){verifyGroupMarker(currentToken);maskTokens.push(currentToken)}if(opts.numericInput||opts.isRTL){reverseTokens(maskTokens[0])}return maskTokens},positionColorMask:function positionColorMask(input,template){input.style.left=template.offsetLeft+"px"}};Inputmask.extendDefaults=function(options){$.extend(true,Inputmask.prototype.defaults,options)};Inputmask.extendDefinitions=function(definition){$.extend(true,Inputmask.prototype.definitions,definition)};Inputmask.extendAliases=function(alias){$.extend(true,Inputmask.prototype.aliases,alias)};Inputmask.format=function(value,options,metadata){return Inputmask(options).format(value,metadata)};Inputmask.unmask=function(value,options){return Inputmask(options).unmaskedvalue(value)};Inputmask.isValid=function(value,options){return Inputmask(options).isValid(value)};Inputmask.remove=function(elems){if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){if(el.inputmask)el.inputmask.remove()})};Inputmask.setValue=function(elems,value){if(typeof elems==="string"){elems=document.getElementById(elems)||document.querySelectorAll(elems)}elems=elems.nodeName?[elems]:elems;$.each(elems,function(ndx,el){if(el.inputmask)el.inputmask.setValue(value);else $(el).trigger("setvalue",[value])})};Inputmask.escapeRegex=function(str){var specials=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return str.replace(new RegExp("(\\"+specials.join("|\\")+")","gim"),"\\$1")};Inputmask.keyCode={BACKSPACE:8,BACKSPACE_SAFARI:127,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,SPACE:32,TAB:9,UP:38,X:88,CONTROL:17};Inputmask.dependencyLib=$;function resolveAlias(aliasStr,options,opts){var aliasDefinition=Inputmask.prototype.aliases[aliasStr];if(aliasDefinition){if(aliasDefinition.alias)resolveAlias(aliasDefinition.alias,undefined,opts);$.extend(true,opts,aliasDefinition);$.extend(true,opts,options);return true}else if(opts.mask===null){opts.mask=aliasStr}return false}function generateMaskSet(opts,nocache){function generateMask(mask,metadata,opts){var regexMask=false;if(mask===null||mask===""){regexMask=opts.regex!==null;if(regexMask){mask=opts.regex;mask=mask.replace(/^(\^)(.*)(\$)$/,"$2")}else{regexMask=true;mask=".*"}}if(mask.length===1&&opts.greedy===false&&opts.repeat!==0){opts.placeholder=""}if(opts.repeat>0||opts.repeat==="*"||opts.repeat==="+"){var repeatStart=opts.repeat==="*"?0:opts.repeat==="+"?1:opts.repeat;mask=opts.groupmarker[0]+mask+opts.groupmarker[1]+opts.quantifiermarker[0]+repeatStart+","+opts.repeat+opts.quantifiermarker[1]}var masksetDefinition,maskdefKey=regexMask?"regex_"+opts.regex:opts.numericInput?mask.split("").reverse().join(""):mask;if(Inputmask.prototype.masksCache[maskdefKey]===undefined||nocache===true){masksetDefinition={mask:mask,maskToken:Inputmask.prototype.analyseMask(mask,regexMask,opts),validPositions:{},_buffer:undefined,buffer:undefined,tests:{},excludes:{},metadata:metadata,maskLength:undefined,jitOffset:{}};if(nocache!==true){Inputmask.prototype.masksCache[maskdefKey]=masksetDefinition;masksetDefinition=$.extend(true,{},Inputmask.prototype.masksCache[maskdefKey])}}else masksetDefinition=$.extend(true,{},Inputmask.prototype.masksCache[maskdefKey]);return masksetDefinition}var ms;if($.isFunction(opts.mask)){opts.mask=opts.mask(opts)}if($.isArray(opts.mask)){if(opts.mask.length>1){if(opts.keepStatic===null){opts.keepStatic="auto";for(var i=0;i1){altMask+=opts.groupmarker[1]+opts.alternatormarker+opts.groupmarker[0]}if(msk.mask!==undefined&&!$.isFunction(msk.mask)){altMask+=msk.mask}else{altMask+=msk}});altMask+=opts.groupmarker[1];return generateMask(altMask,opts.mask,opts)}else opts.mask=opts.mask.pop()}if(opts.mask&&opts.mask.mask!==undefined&&!$.isFunction(opts.mask.mask)){ms=generateMask(opts.mask.mask,opts.mask,opts)}else{ms=generateMask(opts.mask,opts.mask,opts)}return ms}function isInputEventSupported(eventName){var el=document.createElement("input"),evName="on"+eventName,isSupported=evName in el;if(!isSupported){el.setAttribute(evName,"return;");isSupported=typeof el[evName]==="function"}el=null;return isSupported}function maskScope(actionObj,maskset,opts){maskset=maskset||this.maskset;opts=opts||this.opts;var inputmask=this,el=this.el,isRTL=this.isRTL,undoValue,$el,skipKeyPressEvent=false,skipInputEvent=false,ignorable=false,maxLength,mouseEnter=false,colorMask,originalPlaceholder;var getMaskTemplate=function getMaskTemplate(baseOnInput,minimalPos,includeMode,noJit,clearOptionalTail){var greedy=opts.greedy;if(clearOptionalTail)opts.greedy=false;minimalPos=minimalPos||0;var maskTemplate=[],ndxIntlzr,pos=0,test,testPos,lvp=getLastValidPosition();do{if(baseOnInput===true&&getMaskSet().validPositions[pos]){testPos=clearOptionalTail&&getMaskSet().validPositions[pos].match.optionality===true&&getMaskSet().validPositions[pos+1]===undefined&&(getMaskSet().validPositions[pos].generatedInput===true||getMaskSet().validPositions[pos].input==opts.skipOptionalPartCharacter&&pos>0)?determineTestTemplate(pos,getTests(pos,ndxIntlzr,pos-1)):getMaskSet().validPositions[pos];test=testPos.match;ndxIntlzr=testPos.locator.slice();maskTemplate.push(includeMode===true?testPos.input:includeMode===false?test.nativeDef:getPlaceholder(pos,test))}else{testPos=getTestTemplate(pos,ndxIntlzr,pos-1);test=testPos.match;ndxIntlzr=testPos.locator.slice();var jitMasking=noJit===true?false:opts.jitMasking!==false?opts.jitMasking:test.jit;if(jitMasking===false||jitMasking===undefined||typeof jitMasking==="number"&&isFinite(jitMasking)&&jitMasking>pos){maskTemplate.push(includeMode===false?test.nativeDef:getPlaceholder(pos,test))}}if(opts.keepStatic==="auto"){if(test.newBlockMarker&&test.fn!==null){opts.keepStatic=pos-1}}pos++}while((maxLength===undefined||pospos);if(maskTemplate[maskTemplate.length-1]===""){maskTemplate.pop()}if(includeMode!==false||getMaskSet().maskLength===undefined)getMaskSet().maskLength=pos-1;opts.greedy=greedy;return maskTemplate};function getMaskSet(){return maskset}function resetMaskSet(soft){var maskset=getMaskSet();maskset.buffer=undefined;if(soft!==true){maskset.validPositions={};maskset.p=0}}function getLastValidPosition(closestTo,strict,validPositions){var before=-1,after=-1,valids=validPositions||getMaskSet().validPositions;if(closestTo===undefined)closestTo=-1;for(var posNdx in valids){var psNdx=parseInt(posNdx);if(valids[psNdx]&&(strict||valids[psNdx].generatedInput!==true)){if(psNdx<=closestTo)before=psNdx;if(psNdx>=closestTo)after=psNdx}}return before===-1||before==closestTo?after:after==-1?before:closestTo-before0){decisionTaker=decisionTaker.split(",")[0]}return decisionTaker!==undefined?decisionTaker.toString():""}function getLocator(tst,align){var locator=(tst.alternation!=undefined?tst.mloc[getDecisionTaker(tst)]:tst.locator).join("");if(locator!=="")while(locator.length0?pos-1:0;var altTest=getTest(pos),targetLocator=getLocator(altTest),tstLocator,closest,bestMatch;for(var ndx=0;ndx500&&quantifierRecurse!==undefined){throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+getMaskSet().mask}if(testPos===pos&&match.matches===undefined){matches.push({match:match,locator:loopNdx.reverse(),cd:cacheDependency,mloc:{}});return true}else if(match.matches!==undefined){if(match.isGroup&&quantifierRecurse!==match){match=handleMatch(maskToken.matches[$.inArray(match,maskToken.matches)+1],loopNdx,quantifierRecurse);if(match)return true}else if(match.isOptional){var optionalToken=match;match=resolveTestFromToken(match,ndxInitializer,loopNdx,quantifierRecurse);if(match){$.each(matches,function(ndx,mtch){mtch.match.optionality=true});latestMatch=matches[matches.length-1].match;if(quantifierRecurse===undefined&&isFirstMatch(latestMatch,optionalToken)){insertStop=true;testPos=pos}else return true}}else if(match.isAlternator){var alternateToken=match,malternateMatches=[],maltMatches,currentMatches=matches.slice(),loopNdxCnt=loopNdx.length;var altIndex=ndxInitializer.length>0?ndxInitializer.shift():-1;if(altIndex===-1||typeof altIndex==="string"){var currentPos=testPos,ndxInitializerClone=ndxInitializer.slice(),altIndexArr=[],amndx;if(typeof altIndex=="string"){altIndexArr=altIndex.split(",")}else{for(amndx=0;amndx=opts.keepStatic)altIndexArr=altIndexArr.slice(0,1);var unMatchedAlternation=false;for(var ndx=0;ndx0;match=malternateMatches.length>0;ndxInitializer=ndxInitializerClone.slice()}else match=handleMatch(alternateToken.matches[altIndex]||maskToken.matches[altIndex],[altIndex].concat(loopNdx),quantifierRecurse);if(match)return true}else if(match.isQuantifier&&quantifierRecurse!==maskToken.matches[$.inArray(match,maskToken.matches)-1]){var qt=match;for(var qndx=ndxInitializer.length>0?ndxInitializer.shift():0;qndx<(isNaN(qt.quantifier.max)?qndx+1:qt.quantifier.max)&&testPos<=pos;qndx++){var tokenGroup=maskToken.matches[$.inArray(qt,maskToken.matches)-1];match=handleMatch(tokenGroup,[qndx].concat(loopNdx),tokenGroup);if(match){latestMatch=matches[matches.length-1].match;latestMatch.optionalQuantifier=qndx>=qt.quantifier.min;latestMatch.jit=(qndx||1)*tokenGroup.matches.indexOf(latestMatch)>=qt.quantifier.jit;if(latestMatch.optionalQuantifier&&isFirstMatch(latestMatch,tokenGroup)){insertStop=true;testPos=pos;break}if(latestMatch.jit){getMaskSet().jitOffset[pos]=tokenGroup.matches.indexOf(latestMatch)}return true}}}else{match=resolveTestFromToken(match,ndxInitializer,loopNdx,quantifierRecurse);if(match)return true}}else{testPos++}}for(var tndx=ndxInitializer.length>0?ndxInitializer.shift():0;tndxpos){break}}}}function mergeLocators(pos,tests){var locator=[];if(!$.isArray(tests))tests=[tests];if(tests.length>0){if(tests[0].alternation===undefined){locator=determineTestTemplate(pos,tests.slice()).locator.slice();if(locator.length===0)locator=tests[0].locator.slice()}else{$.each(tests,function(ndx,tst){if(tst.def!==""){if(locator.length===0)locator=tst.locator.slice();else{for(var i=0;i-1){if(ndxIntlzr===undefined){var previousPos=pos-1,test;while((test=getMaskSet().validPositions[previousPos]||getMaskSet().tests[previousPos])===undefined&&previousPos>-1){previousPos--}if(test!==undefined&&previousPos>-1){ndxInitializer=mergeLocators(previousPos,test);cacheDependency=ndxInitializer.join("");testPos=previousPos}}if(getMaskSet().tests[pos]&&getMaskSet().tests[pos][0].cd===cacheDependency){return getMaskSet().tests[pos]}for(var mtndx=ndxInitializer.shift();mtndxpos){break}}}if(matches.length===0||insertStop){matches.push({match:{fn:null,optionality:false,casing:null,def:"",placeholder:""},locator:[],mloc:{},cd:cacheDependency})}if(ndxIntlzr!==undefined&&getMaskSet().tests[pos]){return $.extend(true,[],matches)}getMaskSet().tests[pos]=$.extend(true,[],matches);return getMaskSet().tests[pos]}function getBufferTemplate(){if(getMaskSet()._buffer===undefined){getMaskSet()._buffer=getMaskTemplate(false,1);if(getMaskSet().buffer===undefined)getMaskSet().buffer=getMaskSet()._buffer.slice()}return getMaskSet()._buffer}function getBuffer(noCache){if(getMaskSet().buffer===undefined||noCache===true){getMaskSet().buffer=getMaskTemplate(true,getLastValidPosition(),true);if(getMaskSet()._buffer===undefined)getMaskSet()._buffer=getMaskSet().buffer.slice()}return getMaskSet().buffer}function refreshFromBuffer(start,end,buffer){var i,p;if(start===true){resetMaskSet();start=0;end=buffer.length}else{for(i=start;i=0;lAltPos--){altPos=getMaskSet().validPositions[lAltPos];if(altPos&&altPos.alternation!==undefined){if(prevAltPos&&prevAltPos.locator[altPos.alternation]!==altPos.locator[altPos.alternation]){break}lastAlt=lAltPos;alternation=getMaskSet().validPositions[lastAlt].alternation;prevAltPos=altPos}}}if(alternation!==undefined){decisionPos=parseInt(lastAlt);getMaskSet().excludes[decisionPos]=getMaskSet().excludes[decisionPos]||[];if(pos!==true){getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos))}var validInputsClone=[],staticInputsBeforePos=0;for(i=decisionPos;i0){var input=validInputs.shift();if(!(isValidRslt=isValid(getLastValidPosition(undefined,true)+1,input,false,fromSetValid,true))){break}}if(isValidRslt&&c!==undefined){var targetLvp=getLastValidPosition(pos)+1;for(i=decisionPos;itargetLvp?targetLvp:pos,c,strict,fromSetValid,true)}if(!isValidRslt){resetMaskSet();prevAltPos=getTest(decisionPos);getMaskSet().validPositions=$.extend(true,{},validPsClone);if(getMaskSet().excludes[decisionPos]){var decisionTaker=getDecisionTaker(prevAltPos);if(getMaskSet().excludes[decisionPos].indexOf(decisionTaker)!==-1){isValidRslt=alternate(pos,c,strict,fromSetValid,decisionPos-1);break}getMaskSet().excludes[decisionPos].push(decisionTaker);for(i=decisionPos;i1||posObj.begin-posObj.end===1:posObj.end-posObj.begin>1||posObj.end-posObj.begin===1}strict=strict===true;var maskPos=pos;if(pos.begin!==undefined){maskPos=isRTL?pos.end:pos.begin}function _isValid(position,c,strict){var rslt=false;$.each(getTests(position),function(ndx,tst){var test=tst.match;getBuffer(true);rslt=test.fn!=null?test.fn.test(c,getMaskSet(),position,strict,opts,isSelection(pos)):(c===test.def||c===opts.skipOptionalPartCharacter)&&test.def!==""?{c:getPlaceholder(position,test,true)||test.def,pos:position}:false;if(rslt!==false){var elem=rslt.c!==undefined?rslt.c:c,validatedPos=position;elem=elem===opts.skipOptionalPartCharacter&&test.fn===null?getPlaceholder(position,test,true)||test.def:elem;if(rslt.remove!==undefined){if(!$.isArray(rslt.remove))rslt.remove=[rslt.remove];$.each(rslt.remove.sort(function(a,b){return b-a}),function(ndx,lmnt){revalidateMask({begin:lmnt,end:lmnt+1})})}if(rslt.insert!==undefined){if(!$.isArray(rslt.insert))rslt.insert=[rslt.insert];$.each(rslt.insert.sort(function(a,b){return a-b}),function(ndx,lmnt){isValid(lmnt.pos,lmnt.c,true,fromSetValid)})}if(rslt!==true&&rslt.pos!==undefined&&rslt.pos!==position){validatedPos=rslt.pos}if(rslt!==true&&rslt.pos===undefined&&rslt.c===undefined){return false}if(!revalidateMask(pos,$.extend({},tst,{input:casing(elem,test,validatedPos)}),fromSetValid,validatedPos)){rslt=false}return false}});return rslt}var result=true,positionsClone=$.extend(true,{},getMaskSet().validPositions);if($.isFunction(opts.preValidation)&&!strict&&fromSetValid!==true&&validateOnly!==true){result=opts.preValidation(getBuffer(),maskPos,c,isSelection(pos),opts,getMaskSet())}if(result===true){trackbackPositions(undefined,maskPos,true);if(maxLength===undefined||maskPos0;originalPos--){if(getMaskSet().validPositions[originalPos])break}}for(var ps=originalPos;pspos+1?valids[pos+1]&&valids[pos+1].match.fn===null&&valids[pos+1]:valids[pos+1];return prevMatch&&nextMatch}return false}var begin=pos.begin!==undefined?pos.begin:pos,end=pos.end!==undefined?pos.end:pos;if(pos.begin>pos.end){begin=pos.end;end=pos.begin}validatedPos=validatedPos!==undefined?validatedPos:begin;if(begin!==end||opts.insertMode&&getMaskSet().validPositions[validatedPos]!==undefined&&fromSetValid===undefined){var positionsClone=$.extend(true,{},getMaskSet().validPositions),lvp=getLastValidPosition(undefined,true),i;getMaskSet().p=begin;for(i=lvp;i>=begin;i--){if(getMaskSet().validPositions[i]&&getMaskSet().validPositions[i].match.nativeDef==="+"){opts.isNegative=false}delete getMaskSet().validPositions[i]}var valid=true,j=validatedPos,vps=getMaskSet().validPositions,needsValidation=false,posMatch=j,i=j;if(validTest){getMaskSet().validPositions[validatedPos]=$.extend(true,{},validTest);posMatch++;j++;if(begin=end||i>=begin&&t.generatedInput!==true&&IsEnclosedStatic(i,positionsClone,{begin:begin,end:end}))){while(getTest(posMatch).match.def!==""){if(needsValidation===false&&positionsClone[posMatch]&&positionsClone[posMatch].match.nativeDef===t.match.nativeDef){getMaskSet().validPositions[posMatch]=$.extend(true,{},positionsClone[posMatch]);getMaskSet().validPositions[posMatch].input=t.input;trackbackPositions(undefined,posMatch,true);j=posMatch+1;valid=true}else if(opts.shiftPositions&&positionCanMatchDefinition(posMatch,t.match.def)){var result=isValid(posMatch,t.input,true,true);valid=result!==false;j=result.caret||result.insert?getLastValidPosition():posMatch+1;needsValidation=true}else{valid=t.generatedInput===true||t.input===opts.radixPoint&&opts.numericInput===true}if(valid)break;if(!valid&&posMatch>end&&isMask(posMatch,true)&&(t.match.fn!==null||posMatch>getMaskSet().maskLength)){break}posMatch++}if(getTest(posMatch).match.def=="")valid=false;posMatch=j}if(!valid)break}if(!valid){getMaskSet().validPositions=$.extend(true,{},positionsClone);resetMaskSet(true);return false}}else if(validTest){getMaskSet().validPositions[validatedPos]=$.extend(true,{},validTest)}resetMaskSet(true);return true}function isMask(pos,strict){var test=getTestTemplate(pos).match;if(test.def==="")test=getTest(pos).match;if(test.fn!=null){return test.fn}if(strict!==true&&pos>-1){var tests=getTests(pos);return tests.length>1+(tests[tests.length-1].match.def===""?1:0)}return false}function seekNext(pos,newBlock){var position=pos+1;while(getTest(position).match.def!==""&&(newBlock===true&&(getTest(position).match.newBlockMarker!==true||!isMask(position))||newBlock!==true&&!isMask(position))){position++}return position}function seekPrevious(pos,newBlock){var position=pos,tests;if(position<=0)return 0;while(--position>0&&(newBlock===true&&getTest(position).match.newBlockMarker!==true||newBlock!==true&&!isMask(position)&&(tests=getTests(position),tests.length<2||tests.length===2&&tests[1].match.def===""))){}return position}function writeBuffer(input,buffer,caretPos,event,triggerEvents){if(event&&$.isFunction(opts.onBeforeWrite)){var result=opts.onBeforeWrite.call(inputmask,event,buffer,caretPos,opts);if(result){if(result.refreshFromBuffer){var refresh=result.refreshFromBuffer;refreshFromBuffer(refresh===true?refresh:refresh.start,refresh.end,result.buffer||buffer);buffer=getBuffer(true)}if(caretPos!==undefined)caretPos=result.caret!==undefined?result.caret:caretPos}}if(input!==undefined){input.inputmask._valueSet(buffer.join(""));if(caretPos!==undefined&&(event===undefined||event.type!=="blur")){caret(input,caretPos)}else renderColorMask(input,caretPos,buffer.length===0);if(triggerEvents===true){var $input=$(input),nptVal=input.inputmask._valueGet();skipInputEvent=true;$input.trigger("input");setTimeout(function(){if(nptVal===getBufferTemplate().join("")){$input.trigger("cleared")}else if(isComplete(buffer)===true){$input.trigger("complete")}},0)}}}function getPlaceholder(pos,test,returnPL){test=test||getTest(pos).match;if(test.placeholder!==undefined||returnPL===true){return $.isFunction(test.placeholder)?test.placeholder(opts):test.placeholder}else if(test.fn===null){if(pos>-1&&getMaskSet().validPositions[pos]===undefined){var tests=getTests(pos),staticAlternations=[],prevTest;if(tests.length>1+(tests[tests.length-1].match.def===""?1:0)){for(var i=0;i1){if(/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)){return opts.placeholder.charAt(pos%opts.placeholder.length)}}}}}}return test.def}return opts.placeholder.charAt(pos%opts.placeholder.length)}function HandleNativePlaceholder(npt,value){if(ie){if(npt.inputmask._valueGet()!==value&&(npt.placeholder!==value||npt.placeholder==="")){var buffer=getBuffer().slice(),nptValue=npt.inputmask._valueGet();if(nptValue!==value){var lvp=getLastValidPosition();if(lvp===-1&&nptValue===getBufferTemplate().join("")){buffer=[]}else if(lvp!==-1){clearOptionalTail(buffer)}writeBuffer(npt,buffer)}}}else if(npt.placeholder!==value){npt.placeholder=value;if(npt.placeholder==="")npt.removeAttribute("placeholder")}}var EventRuler={on:function on(input,eventName,eventHandler){var ev=function ev(e){var that=this;if(that.inputmask===undefined&&this.nodeName!=="FORM"){var imOpts=$.data(that,"_inputmask_opts");if(imOpts)new Inputmask(imOpts).mask(that);else EventRuler.off(that)}else if(e.type!=="setvalue"&&this.nodeName!=="FORM"&&(that.disabled||that.readOnly&&!(e.type==="keydown"&&e.ctrlKey&&e.keyCode===67||opts.tabThrough===false&&e.keyCode===Inputmask.keyCode.TAB))){e.preventDefault()}else{switch(e.type){case"input":if(skipInputEvent===true){skipInputEvent=false;return e.preventDefault()}if(mobile){var args=arguments;setTimeout(function(){eventHandler.apply(that,args);caret(that,that.inputmask.caretPos,undefined,true)},0);return false}break;case"keydown":skipKeyPressEvent=false;skipInputEvent=false;break;case"keypress":if(skipKeyPressEvent===true){return e.preventDefault()}skipKeyPressEvent=true;break;case"click":if(iemobile||iphone){var args=arguments;setTimeout(function(){eventHandler.apply(that,args)},0);return false}break}var returnVal=eventHandler.apply(that,arguments);if(returnVal===false){e.preventDefault();e.stopPropagation()}return returnVal}};input.inputmask.events[eventName]=input.inputmask.events[eventName]||[];input.inputmask.events[eventName].push(ev);if($.inArray(eventName,["submit","reset"])!==-1){if(input.form!==null)$(input.form).on(eventName,ev)}else{$(input).on(eventName,ev)}},off:function off(input,event){if(input.inputmask&&input.inputmask.events){var events;if(event){events=[];events[event]=input.inputmask.events[event]}else{events=input.inputmask.events}$.each(events,function(eventName,evArr){while(evArr.length>0){var ev=evArr.pop();if($.inArray(eventName,["submit","reset"])!==-1){if(input.form!==null)$(input.form).off(eventName,ev)}else{$(input).off(eventName,ev)}}delete input.inputmask.events[eventName]})}}};var EventHandlers={keydownEvent:function keydownEvent(e){var input=this,$input=$(input),k=e.keyCode,pos=caret(input);if(k===Inputmask.keyCode.BACKSPACE||k===Inputmask.keyCode.DELETE||iphone&&k===Inputmask.keyCode.BACKSPACE_SAFARI||e.ctrlKey&&k===Inputmask.keyCode.X&&!isInputEventSupported("cut")){e.preventDefault();handleRemove(input,k,pos);writeBuffer(input,getBuffer(true),getMaskSet().p,e,input.inputmask._valueGet()!==getBuffer().join(""))}else if(k===Inputmask.keyCode.END||k===Inputmask.keyCode.PAGE_DOWN){e.preventDefault();var caretPos=seekNext(getLastValidPosition());caret(input,e.shiftKey?pos.begin:caretPos,caretPos,true)}else if(k===Inputmask.keyCode.HOME&&!e.shiftKey||k===Inputmask.keyCode.PAGE_UP){e.preventDefault();caret(input,0,e.shiftKey?pos.begin:0,true)}else if((opts.undoOnEscape&&k===Inputmask.keyCode.ESCAPE||k===90&&e.ctrlKey)&&e.altKey!==true){checkVal(input,true,false,undoValue.split(""));$input.trigger("click")}else if(k===Inputmask.keyCode.INSERT&&!(e.shiftKey||e.ctrlKey)){opts.insertMode=!opts.insertMode;input.setAttribute("im-insert",opts.insertMode)}else if(opts.tabThrough===true&&k===Inputmask.keyCode.TAB){if(e.shiftKey===true){if(getTest(pos.begin).match.fn===null){pos.begin=seekNext(pos.begin)}pos.end=seekPrevious(pos.begin,true);pos.begin=seekPrevious(pos.end,true)}else{pos.begin=seekNext(pos.begin,true);pos.end=seekNext(pos.begin,true);if(pos.endbuffer.length?-1:0,frontPart=inputValue.substr(0,caretPos.begin),backPart=inputValue.substr(caretPos.begin),frontBufferPart=buffer.substr(0,caretPos.begin+offset),backBufferPart=buffer.substr(caretPos.begin+offset);var selection=caretPos,entries="",isEntry=false;if(frontPart!==frontBufferPart){var fpl=(isEntry=frontPart.length>=frontBufferPart.length)?frontPart.length:frontBufferPart.length,i;for(i=0;frontPart.charAt(i)===frontBufferPart.charAt(i)&&ibackBufferPart.length){entries+=backPart.slice(0,1)}else{if(backPart.length0){$.each(entries.split(""),function(ndx,entry){var keypress=new $.Event("keypress");keypress.which=entry.charCodeAt(0);ignorable=false;EventHandlers.keypressEvent.call(input,keypress)})}else{if(selection.begin===selection.end-1){selection.begin=seekPrevious(selection.begin+1);if(selection.begin===selection.end-1){caret(input,selection.begin)}else{caret(input,selection.begin,selection.end)}}var keydown=new $.Event("keydown");keydown.keyCode=opts.numericInput?Inputmask.keyCode.BACKSPACE:Inputmask.keyCode.DELETE;EventHandlers.keydownEvent.call(input,keydown)}e.preventDefault()}}},beforeInputEvent:function beforeInputEvent(e){if(e.cancelable){var input=this;switch(e.inputType){case"insertText":$.each(e.data.split(""),function(ndx,entry){var keypress=new $.Event("keypress");keypress.which=entry.charCodeAt(0);ignorable=false;EventHandlers.keypressEvent.call(input,keypress)});return e.preventDefault();case"deleteContentBackward":var keydown=new $.Event("keydown");keydown.keyCode=Inputmask.keyCode.BACKSPACE;EventHandlers.keydownEvent.call(input,keydown);return e.preventDefault();case"deleteContentForward":var keydown=new $.Event("keydown");keydown.keyCode=Inputmask.keyCode.DELETE;EventHandlers.keydownEvent.call(input,keydown);return e.preventDefault()}}},setValueEvent:function setValueEvent(e){this.inputmask.refreshValue=false;var input=this,value=e&&e.detail?e.detail[0]:arguments[1],value=value||input.inputmask._valueGet(true);if($.isFunction(opts.onBeforeMask))value=opts.onBeforeMask.call(inputmask,value,opts)||value;value=value.toString().split("");checkVal(input,true,false,value);undoValue=getBuffer().join("");if((opts.clearMaskOnLostFocus||opts.clearIncomplete)&&input.inputmask._valueGet()===getBufferTemplate().join("")){input.inputmask._valueSet("")}},focusEvent:function focusEvent(e){var input=this,nptValue=input.inputmask._valueGet();if(opts.showMaskOnFocus){if(nptValue!==getBuffer().join("")){writeBuffer(input,getBuffer(),seekNext(getLastValidPosition()))}else if(mouseEnter===false){caret(input,seekNext(getLastValidPosition()))}}if(opts.positionCaretOnTab===true&&mouseEnter===false){EventHandlers.clickEvent.apply(input,[e,true])}undoValue=getBuffer().join("")},mouseleaveEvent:function mouseleaveEvent(e){var input=this;mouseEnter=false;if(opts.clearMaskOnLostFocus&&document.activeElement!==input){HandleNativePlaceholder(input,originalPlaceholder)}},clickEvent:function clickEvent(e,tabbed){function doRadixFocus(clickPos){if(opts.radixPoint!==""){var vps=getMaskSet().validPositions;if(vps[clickPos]===undefined||vps[clickPos].input===getPlaceholder(clickPos)){if(clickPos=newPos||clickPosition===lastPosition){lastPosition=newPos}}caret(input,lastPosition)}break}}}},0)},cutEvent:function cutEvent(e){var input=this,$input=$(input),pos=caret(input),ev=e.originalEvent||e;var clipboardData=window.clipboardData||ev.clipboardData,clipData=isRTL?getBuffer().slice(pos.end,pos.begin):getBuffer().slice(pos.begin,pos.end);clipboardData.setData("text",isRTL?clipData.reverse().join(""):clipData.join(""));if(document.execCommand)document.execCommand("copy");handleRemove(input,Inputmask.keyCode.DELETE,pos);writeBuffer(input,getBuffer(),getMaskSet().p,e,undoValue!==getBuffer().join(""))},blurEvent:function blurEvent(e){var $input=$(this),input=this;if(input.inputmask){HandleNativePlaceholder(input,originalPlaceholder);var nptValue=input.inputmask._valueGet(),buffer=getBuffer().slice();if(nptValue!==""||colorMask!==undefined){if(opts.clearMaskOnLostFocus){if(getLastValidPosition()===-1&&nptValue===getBufferTemplate().join("")){buffer=[]}else{clearOptionalTail(buffer)}}if(isComplete(buffer)===false){setTimeout(function(){$input.trigger("incomplete")},0);if(opts.clearIncomplete){resetMaskSet();if(opts.clearMaskOnLostFocus){buffer=[]}else{buffer=getBufferTemplate().slice()}}}writeBuffer(input,buffer,undefined,e)}if(undoValue!==getBuffer().join("")){undoValue=buffer.join("");$input.trigger("change")}}},mouseenterEvent:function mouseenterEvent(e){var input=this;mouseEnter=true;if(document.activeElement!==input&&opts.showMaskOnHover){HandleNativePlaceholder(input,(isRTL?getBuffer().slice().reverse():getBuffer()).join(""))}},submitEvent:function submitEvent(e){if(undoValue!==getBuffer().join("")){$el.trigger("change")}if(opts.clearMaskOnLostFocus&&getLastValidPosition()===-1&&el.inputmask._valueGet&&el.inputmask._valueGet()===getBufferTemplate().join("")){el.inputmask._valueSet("")}if(opts.clearIncomplete&&isComplete(getBuffer())===false){el.inputmask._valueSet("")}if(opts.removeMaskOnSubmit){el.inputmask._valueSet(el.inputmask.unmaskedvalue(),true);setTimeout(function(){writeBuffer(el,getBuffer())},0)}},resetEvent:function resetEvent(e){el.inputmask.refreshValue=true;setTimeout(function(){$el.trigger("setvalue")},0)}};function checkVal(input,writeOut,strict,nptvl,initiatingEvent){var inputmask=this||input.inputmask,inputValue=nptvl.slice(),charCodes="",initialNdx=-1,result=undefined;function isTemplateMatch(ndx,charCodes){var charCodeNdx=getMaskTemplate(true,0,false).slice(ndx,seekNext(ndx)).join("").replace(/'/g,"").indexOf(charCodes);return charCodeNdx!==-1&&!isMask(ndx)&&(getTest(ndx).match.nativeDef===charCodes.charAt(0)||getTest(ndx).match.fn===null&&getTest(ndx).match.nativeDef==="'"+charCodes.charAt(0)||getTest(ndx).match.nativeDef===" "&&(getTest(ndx+1).match.nativeDef===charCodes.charAt(0)||getTest(ndx+1).match.fn===null&&getTest(ndx+1).match.nativeDef==="'"+charCodes.charAt(0)))}resetMaskSet();if(!strict&&opts.autoUnmask!==true){var staticInput=getBufferTemplate().slice(0,seekNext(-1)).join(""),matches=inputValue.join("").match(new RegExp("^"+Inputmask.escapeRegex(staticInput),"g"));if(matches&&matches.length>0){inputValue.splice(0,matches.length*staticInput.length);initialNdx=seekNext(initialNdx)}}else{initialNdx=seekNext(initialNdx)}if(initialNdx===-1){getMaskSet().p=seekNext(initialNdx);initialNdx=0}else getMaskSet().p=initialNdx;inputmask.caretPos={begin:initialNdx};$.each(inputValue,function(ndx,charCode){if(charCode!==undefined){if(getMaskSet().validPositions[ndx]===undefined&&inputValue[ndx]===getPlaceholder(ndx)&&isMask(ndx,true)&&isValid(ndx,inputValue[ndx],true,undefined,undefined,true)===false){getMaskSet().p++}else{var keypress=new $.Event("_checkval");keypress.which=charCode.charCodeAt(0);charCodes+=charCode;var lvp=getLastValidPosition(undefined,true);if(!isTemplateMatch(initialNdx,charCodes)){result=EventHandlers.keypressEvent.call(input,keypress,true,false,strict,inputmask.caretPos.begin);if(result){initialNdx=inputmask.caretPos.begin+1;charCodes=""}}else{result=EventHandlers.keypressEvent.call(input,keypress,true,false,strict,lvp+1)}if(result){writeBuffer(undefined,getBuffer(),result.forwardPosition,keypress,false);inputmask.caretPos={begin:result.forwardPosition,end:result.forwardPosition}}}}});if(writeOut)writeBuffer(input,getBuffer(),result?result.forwardPosition:undefined,initiatingEvent||new $.Event("checkval"),initiatingEvent&&initiatingEvent.type==="input")}function unmaskedvalue(input){if(input){if(input.inputmask===undefined){return input.value}if(input.inputmask&&input.inputmask.refreshValue){EventHandlers.setValueEvent.call(input)}}var umValue=[],vps=getMaskSet().validPositions;for(var pndx in vps){if(vps[pndx].match&&vps[pndx].match.fn!=null){umValue.push(vps[pndx].input)}}var unmaskedValue=umValue.length===0?"":(isRTL?umValue.reverse():umValue).join("");if($.isFunction(opts.onUnMask)){var bufferValue=(isRTL?getBuffer().slice().reverse():getBuffer()).join("");unmaskedValue=opts.onUnMask.call(inputmask,bufferValue,unmaskedValue,opts)}return unmaskedValue}function caret(input,begin,end,notranslate){function translatePosition(pos){if(isRTL&&typeof pos==="number"&&(!opts.greedy||opts.placeholder!=="")&&el){pos=el.inputmask._valueGet().length-pos}return pos}var range;if(begin!==undefined){if($.isArray(begin)){end=isRTL?begin[0]:begin[1];begin=isRTL?begin[1]:begin[0]}if(begin.begin!==undefined){end=isRTL?begin.begin:begin.end;begin=isRTL?begin.end:begin.begin}if(typeof begin==="number"){begin=notranslate?begin:translatePosition(begin);end=notranslate?end:translatePosition(end);end=typeof end=="number"?end:begin;var scrollCalc=parseInt(((input.ownerDocument.defaultView||window).getComputedStyle?(input.ownerDocument.defaultView||window).getComputedStyle(input,null):input.currentStyle).fontSize)*end;input.scrollLeft=scrollCalc>input.scrollWidth?scrollCalc:0;input.inputmask.caretPos={begin:begin,end:end};if(input===document.activeElement){if("selectionStart"in input){input.selectionStart=begin;input.selectionEnd=end}else if(window.getSelection){range=document.createRange();if(input.firstChild===undefined||input.firstChild===null){var textNode=document.createTextNode("");input.appendChild(textNode)}range.setStart(input.firstChild,beginlvp;pos--){testPos=positions[pos];if((testPos.match.optionality||testPos.match.optionalQuantifier&&testPos.match.newBlockMarker||lvTestAlt&&(lvTestAlt!==positions[pos].locator[lvTest.alternation]&&testPos.match.fn!=null||testPos.match.fn===null&&testPos.locator[lvTest.alternation]&&checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","),lvTestAlt.toString().split(","))&&getTests(pos)[0].def!==""))&&buffer[pos]===getPlaceholder(pos,testPos.match)){bl--}else break}return returnDefinition?{l:bl,def:positions[bl]?positions[bl].match:undefined}:bl}function clearOptionalTail(buffer){buffer.length=0;var template=getMaskTemplate(true,0,true,undefined,true),lmnt,validPos;while(lmnt=template.shift(),lmnt!==undefined){buffer.push(lmnt)}return buffer}function isComplete(buffer){if($.isFunction(opts.isComplete))return opts.isComplete(buffer,opts);if(opts.repeat==="*")return undefined;var complete=false,lrp=determineLastRequiredPosition(true),aml=seekPrevious(lrp.l);if(lrp.def===undefined||lrp.def.newBlockMarker||lrp.def.optionality||lrp.def.optionalQuantifier){complete=true;for(var i=0;i<=aml;i++){var test=getTestTemplate(i).match;if(test.fn!==null&&getMaskSet().validPositions[i]===undefined&&test.optionality!==true&&test.optionalQuantifier!==true||test.fn===null&&buffer[i]!==getPlaceholder(i,test)){complete=false;break}}}return complete}function handleRemove(input,k,pos,strict,fromIsValid){if(opts.numericInput||isRTL){if(k===Inputmask.keyCode.BACKSPACE){k=Inputmask.keyCode.DELETE}else if(k===Inputmask.keyCode.DELETE){k=Inputmask.keyCode.BACKSPACE}if(isRTL){var pend=pos.end;pos.end=pos.begin;pos.begin=pend}}if(k===Inputmask.keyCode.BACKSPACE&&pos.end-pos.begin<1){pos.begin=seekPrevious(pos.begin);if(getMaskSet().validPositions[pos.begin]!==undefined&&getMaskSet().validPositions[pos.begin].input===opts.groupSeparator){pos.begin--}}else if(k===Inputmask.keyCode.DELETE&&pos.begin===pos.end){pos.end=isMask(pos.end,true)&&getMaskSet().validPositions[pos.end]&&getMaskSet().validPositions[pos.end].input!==opts.radixPoint?pos.end+1:seekNext(pos.end)+1;if(getMaskSet().validPositions[pos.begin]!==undefined&&getMaskSet().validPositions[pos.begin].input===opts.groupSeparator){pos.end++}}revalidateMask(pos);if(strict!==true&&opts.keepStatic!==false||opts.regex!==null){var result=alternate(true);if(result){var newPos=result.caret!==undefined?result.caret:result.pos?seekNext(result.pos.begin?result.pos.begin:result.pos):getLastValidPosition(-1,true);if(k!==Inputmask.keyCode.DELETE||pos.begin>newPos){pos.begin==newPos}}}var lvp=getLastValidPosition(pos.begin,true);if(lvp=clientx){var offset1=clientx-previousWidth;var offset2=e.offsetWidth-clientx;e.innerHTML=inputText.charAt(caretPos);offset1-=e.offsetWidth/3;caretPos=offset1"+entry)}else if(isStatic&&(test.fn!==null&&testPos.input!==undefined||test.def==="")){isStatic=false;var mtl=maskTemplate.length;maskTemplate[mtl-1]=maskTemplate[mtl-1]+"";maskTemplate.push(entry)}else maskTemplate.push(entry)}function setCaret(){if(document.activeElement===input){maskTemplate.splice(caretPos.begin,0,caretPos.begin===caretPos.end||caretPos.end>getMaskSet().maskLength?'':'');maskTemplate.splice(caretPos.end+1,0,"")}}if(colorMask!==undefined){var buffer=getBuffer();if(caretPos===undefined){caretPos=caret(input)}else if(caretPos.begin===undefined){caretPos={begin:caretPos,end:caretPos}}if(clear!==true){var lvp=getLastValidPosition();do{if(getMaskSet().validPositions[pos]){testPos=getMaskSet().validPositions[pos];test=testPos.match;ndxIntlzr=testPos.locator.slice();setEntry(buffer[pos])}else{testPos=getTestTemplate(pos,ndxIntlzr,pos-1);test=testPos.match;ndxIntlzr=testPos.locator.slice();if(opts.jitMasking===false||pospos){setEntry(getPlaceholder(pos,test))}else isStatic=false}pos++}while((maxLength===undefined||pospos||isStatic);if(isStatic)setEntry();setCaret()}var template=colorMask.getElementsByTagName("div")[0];template.innerHTML=maskTemplate.join("");input.inputmask.positionColorMask(input,template)}}function mask(elem){function isElementTypeSupported(input,opts){function patchValueProperty(npt){var valueGet;var valueSet;function patchValhook(type){if($.valHooks&&($.valHooks[type]===undefined||$.valHooks[type].inputmaskpatch!==true)){var valhookGet=$.valHooks[type]&&$.valHooks[type].get?$.valHooks[type].get:function(elem){return elem.value};var valhookSet=$.valHooks[type]&&$.valHooks[type].set?$.valHooks[type].set:function(elem,value){elem.value=value;return elem};$.valHooks[type]={get:function get(elem){if(elem.inputmask){if(elem.inputmask.opts.autoUnmask){return elem.inputmask.unmaskedvalue()}else{var result=valhookGet(elem);return getLastValidPosition(undefined,undefined,elem.inputmask.maskset.validPositions)!==-1||opts.nullable!==true?result:""}}else return valhookGet(elem)},set:function set(elem,value){var $elem=$(elem),result;result=valhookSet(elem,value);if(elem.inputmask){$elem.trigger("setvalue",[value])}return result},inputmaskpatch:true}}}function getter(){if(this.inputmask){return this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():getLastValidPosition()!==-1||opts.nullable!==true?document.activeElement===this&&opts.clearMaskOnLostFocus?(isRTL?clearOptionalTail(getBuffer().slice()).reverse():clearOptionalTail(getBuffer().slice())).join(""):valueGet.call(this):""}else return valueGet.call(this)}function setter(value){valueSet.call(this,value);if(this.inputmask){$(this).trigger("setvalue",[value])}}function installNativeValueSetFallback(npt){EventRuler.on(npt,"mouseenter",function(event){var $input=$(this),input=this,value=input.inputmask._valueGet();if(value!==getBuffer().join("")){$input.trigger("setvalue")}})}if(!npt.inputmask.__valueGet){if(opts.noValuePatching!==true){if(Object.getOwnPropertyDescriptor){if(typeof Object.getPrototypeOf!=="function"){Object.getPrototypeOf=_typeof("test".__proto__)==="object"?function(object){return object.__proto__}:function(object){return object.constructor.prototype}}var valueProperty=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt),"value"):undefined;if(valueProperty&&valueProperty.get&&valueProperty.set){valueGet=valueProperty.get;valueSet=valueProperty.set;Object.defineProperty(npt,"value",{get:getter,set:setter,configurable:true})}else if(npt.tagName!=="INPUT"){valueGet=function valueGet(){return this.textContent};valueSet=function valueSet(value){this.textContent=value};Object.defineProperty(npt,"value",{get:getter,set:setter,configurable:true})}}else if(document.__lookupGetter__&&npt.__lookupGetter__("value")){valueGet=npt.__lookupGetter__("value");valueSet=npt.__lookupSetter__("value");npt.__defineGetter__("value",getter);npt.__defineSetter__("value",setter)}npt.inputmask.__valueGet=valueGet;npt.inputmask.__valueSet=valueSet}npt.inputmask._valueGet=function(overruleRTL){return isRTL&&overruleRTL!==true?valueGet.call(this.el).split("").reverse().join(""):valueGet.call(this.el)};npt.inputmask._valueSet=function(value,overruleRTL){valueSet.call(this.el,value===null||value===undefined?"":overruleRTL!==true&&isRTL?value.split("").reverse().join(""):value)};if(valueGet===undefined){valueGet=function valueGet(){return this.value};valueSet=function valueSet(value){this.value=value};patchValhook(npt.type);installNativeValueSetFallback(npt)}}}var elementType=input.getAttribute("type");var isSupported=input.tagName==="INPUT"&&$.inArray(elementType,opts.supportsInputType)!==-1||input.isContentEditable||input.tagName==="TEXTAREA";if(!isSupported){if(input.tagName==="INPUT"){var el=document.createElement("input");el.setAttribute("type",elementType);isSupported=el.type==="text";el=null}else isSupported="partial"}if(isSupported!==false){patchValueProperty(input)}else input.inputmask=undefined;return isSupported}EventRuler.off(elem);var isSupported=isElementTypeSupported(elem,opts);if(isSupported!==false){el=elem;$el=$(el);originalPlaceholder=el.placeholder;maxLength=el!==undefined?el.maxLength:undefined;if(maxLength===-1)maxLength=undefined;if(opts.colorMask===true){initializeColorMask(el)}if(mobile){if("inputMode"in el){el.inputmode=opts.inputmode;el.setAttribute("inputmode",opts.inputmode)}if(opts.disablePredictiveText===true){if("autocorrect"in el){el.autocorrect=false}else{if(opts.colorMask!==true){initializeColorMask(el)}el.type="password"}}}if(isSupported===true){el.setAttribute("im-insert",opts.insertMode);EventRuler.on(el,"submit",EventHandlers.submitEvent);EventRuler.on(el,"reset",EventHandlers.resetEvent);EventRuler.on(el,"blur",EventHandlers.blurEvent);EventRuler.on(el,"focus",EventHandlers.focusEvent);if(opts.colorMask!==true){EventRuler.on(el,"click",EventHandlers.clickEvent);EventRuler.on(el,"mouseleave",EventHandlers.mouseleaveEvent);EventRuler.on(el,"mouseenter",EventHandlers.mouseenterEvent)}EventRuler.on(el,"paste",EventHandlers.pasteEvent);EventRuler.on(el,"cut",EventHandlers.cutEvent);EventRuler.on(el,"complete",opts.oncomplete);EventRuler.on(el,"incomplete",opts.onincomplete);EventRuler.on(el,"cleared",opts.oncleared);if(!mobile&&opts.inputEventOnly!==true){EventRuler.on(el,"keydown",EventHandlers.keydownEvent);EventRuler.on(el,"keypress",EventHandlers.keypressEvent)}else{el.removeAttribute("maxLength")}EventRuler.on(el,"input",EventHandlers.inputFallBackEvent);EventRuler.on(el,"beforeinput",EventHandlers.beforeInputEvent)}EventRuler.on(el,"setvalue",EventHandlers.setValueEvent);undoValue=getBufferTemplate().join("");if(el.inputmask._valueGet(true)!==""||opts.clearMaskOnLostFocus===false||document.activeElement===el){var initialValue=$.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,el.inputmask._valueGet(true),opts)||el.inputmask._valueGet(true):el.inputmask._valueGet(true);if(initialValue!=="")checkVal(el,true,false,initialValue.split(""));var buffer=getBuffer().slice();undoValue=buffer.join("");if(isComplete(buffer)===false){if(opts.clearIncomplete){resetMaskSet()}}if(opts.clearMaskOnLostFocus&&document.activeElement!==el){if(getLastValidPosition()===-1){buffer=[]}else{clearOptionalTail(buffer)}}if(opts.clearMaskOnLostFocus===false||opts.showMaskOnFocus&&document.activeElement===el||el.inputmask._valueGet(true)!=="")writeBuffer(el,buffer);if(document.activeElement===el){caret(el,seekNext(getLastValidPosition()))}}}}var valueBuffer;if(actionObj!==undefined){switch(actionObj.action){case"isComplete":el=actionObj.el;return isComplete(getBuffer());case"unmaskedvalue":if(el===undefined||actionObj.value!==undefined){valueBuffer=actionObj.value;valueBuffer=($.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,valueBuffer,opts)||valueBuffer:valueBuffer).split("");checkVal.call(this,undefined,false,false,valueBuffer);if($.isFunction(opts.onBeforeWrite))opts.onBeforeWrite.call(inputmask,undefined,getBuffer(),0,opts)}return unmaskedvalue(el);case"mask":mask(el);break;case"format":valueBuffer=($.isFunction(opts.onBeforeMask)?opts.onBeforeMask.call(inputmask,actionObj.value,opts)||actionObj.value:actionObj.value).split("");checkVal.call(this,undefined,true,false,valueBuffer);if(actionObj.metadata){return{value:isRTL?getBuffer().slice().reverse().join(""):getBuffer().join(""),metadata:maskScope.call(this,{action:"getmetadata"},maskset,opts)}}return isRTL?getBuffer().slice().reverse().join(""):getBuffer().join("");case"isValid":if(actionObj.value){valueBuffer=actionObj.value.split("");checkVal.call(this,undefined,true,true,valueBuffer)}else{actionObj.value=getBuffer().join("")}var buffer=getBuffer();var rl=determineLastRequiredPosition(),lmib=buffer.length-1;for(;lmib>rl;lmib--){if(isMask(lmib))break}buffer.splice(rl,lmib+1-rl);return isComplete(buffer)&&actionObj.value===getBuffer().join("");case"getemptymask":return getBufferTemplate().join("");case"remove":if(el&&el.inputmask){$.data(el,"_inputmask_opts",null);$el=$(el);el.inputmask._valueSet(opts.autoUnmask?unmaskedvalue(el):el.inputmask._valueGet(true));EventRuler.off(el);if(el.inputmask.colorMask){colorMask=el.inputmask.colorMask;colorMask.removeChild(el);colorMask.parentNode.insertBefore(el,colorMask);colorMask.parentNode.removeChild(colorMask)}var valueProperty;if(Object.getOwnPropertyDescriptor&&Object.getPrototypeOf){valueProperty=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el),"value");if(valueProperty){if(el.inputmask.__valueGet){Object.defineProperty(el,"value",{get:el.inputmask.__valueGet,set:el.inputmask.__valueSet,configurable:true})}}}else if(document.__lookupGetter__&&el.__lookupGetter__("value")){if(el.inputmask.__valueGet){el.__defineGetter__("value",el.inputmask.__valueGet);el.__defineSetter__("value",el.inputmask.__valueSet)}}el.inputmask=undefined}return el;break;case"getmetadata":if($.isArray(maskset.metadata)){var maskTarget=getMaskTemplate(true,0,false).join("");$.each(maskset.metadata,function(ndx,mtdt){if(mtdt.mask===maskTarget){maskTarget=mtdt;return false}});return maskTarget}return maskset.metadata}}}return Inputmask})},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(4)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function($){return $})},function(module,exports){module.exports=jQuery},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};if(true)!(__WEBPACK_AMD_DEFINE_RESULT__=function(){return typeof window!=="undefined"?window:new(eval("require('jsdom').JSDOM"))("").window}.call(exports,__webpack_require__,exports,module),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__));else{}},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(2)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function(Inputmask){var $=Inputmask.dependencyLib;var formatCode={d:["[1-9]|[12][0-9]|3[01]",Date.prototype.setDate,"day",Date.prototype.getDate],dd:["0[1-9]|[12][0-9]|3[01]",Date.prototype.setDate,"day",function(){return pad(Date.prototype.getDate.call(this),2)}],ddd:[""],dddd:[""],m:["[1-9]|1[012]",Date.prototype.setMonth,"month",function(){return Date.prototype.getMonth.call(this)+1}],mm:["0[1-9]|1[012]",Date.prototype.setMonth,"month",function(){return pad(Date.prototype.getMonth.call(this)+1,2)}],mmm:[""],mmmm:[""],yy:["[0-9]{2}",Date.prototype.setFullYear,"year",function(){return pad(Date.prototype.getFullYear.call(this),2)}],yyyy:["[0-9]{4}",Date.prototype.setFullYear,"year",function(){return pad(Date.prototype.getFullYear.call(this),4)}],h:["[1-9]|1[0-2]",Date.prototype.setHours,"hours",Date.prototype.getHours],hh:["0[1-9]|1[0-2]",Date.prototype.setHours,"hours",function(){return pad(Date.prototype.getHours.call(this),2)}],hhh:["[0-9]+",Date.prototype.setHours,"hours",Date.prototype.getHours],H:["1?[0-9]|2[0-3]",Date.prototype.setHours,"hours",Date.prototype.getHours],HH:["0[0-9]|1[0-9]|2[0-3]",Date.prototype.setHours,"hours",function(){return pad(Date.prototype.getHours.call(this),2)}],HHH:["[0-9]+",Date.prototype.setHours,"hours",Date.prototype.getHours],M:["[1-5]?[0-9]",Date.prototype.setMinutes,"minutes",Date.prototype.getMinutes],MM:["0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]",Date.prototype.setMinutes,"minutes",function(){return pad(Date.prototype.getMinutes.call(this),2)}],ss:["[0-5][0-9]",Date.prototype.setSeconds,"seconds",function(){return pad(Date.prototype.getSeconds.call(this),2)}],l:["[0-9]{3}",Date.prototype.setMilliseconds,"milliseconds",function(){return pad(Date.prototype.getMilliseconds.call(this),3)}],L:["[0-9]{2}",Date.prototype.setMilliseconds,"milliseconds",function(){return pad(Date.prototype.getMilliseconds.call(this),2)}],t:["[ap]"],tt:["[ap]m"],T:["[AP]"],TT:["[AP]M"],Z:[""],o:[""],S:[""]},formatAlias={isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};function getTokenizer(opts){if(!opts.tokenizer){var tokens=[];for(var ndx in formatCode){if(tokens.indexOf(ndx[0])===-1)tokens.push(ndx[0])}opts.tokenizer="("+tokens.join("+|")+")+?|.";opts.tokenizer=new RegExp(opts.tokenizer,"g")}return opts.tokenizer}function isValidDate(dateParts,currentResult){return!isFinite(dateParts.rawday)||dateParts.day=="29"&&!isFinite(dateParts.rawyear)||new Date(dateParts.date.getFullYear(),isFinite(dateParts.rawmonth)?dateParts.month:dateParts.date.getMonth()+1,0).getDate()>=dateParts.day?currentResult:false}function isDateInRange(dateParts,opts){var result=true;if(opts.min){if(dateParts["rawyear"]){var rawYear=dateParts["rawyear"].replace(/[^0-9]/g,""),minYear=opts.min.year.substr(0,rawYear.length);result=minYear<=rawYear}if(dateParts["year"]===dateParts["rawyear"]){if(opts.min.date.getTime()===opts.min.date.getTime()){result=opts.min.date.getTime()<=dateParts.date.getTime()}}}if(result&&opts.max&&opts.max.date.getTime()===opts.max.date.getTime()){result=opts.max.date.getTime()>=dateParts.date.getTime()}return result}function parse(format,dateObjValue,opts,raw){var mask="",match;while(match=getTokenizer(opts).exec(format)){if(dateObjValue===undefined){if(formatCode[match[0]]){mask+="("+formatCode[match[0]][0]+")"}else{switch(match[0]){case"[":mask+="(";break;case"]":mask+=")?";break;default:mask+=Inputmask.escapeRegex(match[0])}}}else{if(formatCode[match[0]]){if(raw!==true&&formatCode[match[0]][3]){var getFn=formatCode[match[0]][3];mask+=getFn.call(dateObjValue.date)}else if(formatCode[match[0]][2])mask+=dateObjValue["raw"+formatCode[match[0]][2]];else mask+=match[0]}else mask+=match[0]}}return mask}function pad(val,len){val=String(val);len=len||2;while(val.lengthmax.slice(0,enteredPart.length)?max.slice(enteredPart.length):correctedValue.toString().slice(enteredPart.length))}return correctedValue}function setValue(dateObj,value,opts){dateObj[targetProp]=extendProperty(value);dateObj["raw"+targetProp]=value;if(dateOperation!==undefined)dateOperation.call(dateObj.date,targetProp=="month"?parseInt(dateObj[targetProp])-1:dateObj[targetProp])}if(typeof mask==="string"){while(match=getTokenizer(opts).exec(format)){var value=mask.slice(0,match[0].length);if(formatCode.hasOwnProperty(match[0])){targetValidator=formatCode[match[0]][0];targetProp=formatCode[match[0]][2];dateOperation=formatCode[match[0]][1];setValue(dateObj,value,opts)}mask=mask.slice(value.length)}return dateObj}else if(mask&&(typeof mask==="undefined"?"undefined":_typeof(mask))==="object"&&mask.hasOwnProperty("date")){return mask}return undefined}Inputmask.extendAliases({datetime:{mask:function mask(opts){formatCode.S=opts.i18n.ordinalSuffix.join("|");opts.inputFormat=formatAlias[opts.inputFormat]||opts.inputFormat;opts.displayFormat=formatAlias[opts.displayFormat]||opts.displayFormat||opts.inputFormat;opts.outputFormat=formatAlias[opts.outputFormat]||opts.outputFormat||opts.inputFormat;opts.placeholder=opts.placeholder!==""?opts.placeholder:opts.inputFormat.replace(/[\[\]]/,"");opts.regex=parse(opts.inputFormat,undefined,opts);return null},placeholder:"",inputFormat:"isoDateTime",displayFormat:undefined,outputFormat:undefined,min:null,max:null,i18n:{dayNames:["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],ordinalSuffix:["st","nd","rd","th"]},postValidation:function postValidation(buffer,pos,currentResult,opts){opts.min=analyseMask(opts.min,opts.inputFormat,opts);opts.max=analyseMask(opts.max,opts.inputFormat,opts);var result=currentResult,dateParts=analyseMask(buffer.join(""),opts.inputFormat,opts);if(result&&dateParts.date.getTime()===dateParts.date.getTime()){result=isValidDate(dateParts,result);result=result&&isDateInRange(dateParts,opts)}if(pos&&result&¤tResult.pos!==pos){return{buffer:parse(opts.inputFormat,dateParts,opts),refreshFromBuffer:{start:pos,end:currentResult.pos}}}return result},onKeyDown:function onKeyDown(e,buffer,caretPos,opts){var input=this;if(e.ctrlKey&&e.keyCode===Inputmask.keyCode.RIGHT){var today=new Date,match,date="";while(match=getTokenizer(opts).exec(opts.inputFormat)){if(match[0].charAt(0)==="d"){date+=pad(today.getDate(),match[0].length)}else if(match[0].charAt(0)==="m"){date+=pad(today.getMonth()+1,match[0].length)}else if(match[0]==="yyyy"){date+=today.getFullYear().toString()}else if(match[0].charAt(0)==="y"){date+=pad(today.getYear(),match[0].length)}}input.inputmask._valueSet(date);$(input).trigger("setvalue")}},onUnMask:function onUnMask(maskedValue,unmaskedValue,opts){return parse(opts.outputFormat,analyseMask(maskedValue,opts.inputFormat,opts),opts,true)},casing:function casing(elem,test,pos,validPositions){if(test.nativeDef.indexOf("[ap]")==0)return elem.toLowerCase();if(test.nativeDef.indexOf("[AP]")==0)return elem.toUpperCase();return elem},insertMode:false,shiftPositions:false}});return Inputmask})},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(2)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function(Inputmask){var $=Inputmask.dependencyLib;function autoEscape(txt,opts){var escapedTxt="";for(var i=0;i0){var radixPosition=$.inArray(opts.radixPoint,buffer);if(radixPosition===-1){buffer.push(opts.radixPoint);radixPosition=buffer.length-1}for(var i=1;i<=digits;i++){buffer[radixPosition+i]=buffer[radixPosition+i]||"0"}}return buffer}Inputmask.extendAliases({numeric:{mask:function mask(opts){if(opts.repeat!==0&&isNaN(opts.integerDigits)){opts.integerDigits=opts.repeat}opts.repeat=0;if(opts.groupSeparator===opts.radixPoint&&opts.digits&&opts.digits!=="0"){if(opts.radixPoint==="."){opts.groupSeparator=","}else if(opts.radixPoint===","){opts.groupSeparator="."}else opts.groupSeparator=""}if(opts.groupSeparator===" "){opts.skipOptionalPartCharacter=undefined}opts.autoGroup=opts.autoGroup&&opts.groupSeparator!=="";if(opts.autoGroup){if(typeof opts.groupSize=="string"&&isFinite(opts.groupSize))opts.groupSize=parseInt(opts.groupSize);if(isFinite(opts.integerDigits)){var seps=Math.floor(opts.integerDigits/opts.groupSize);var mod=opts.integerDigits%opts.groupSize;opts.integerDigits=parseInt(opts.integerDigits)+(mod===0?seps-1:seps);if(opts.integerDigits<1){opts.integerDigits="*"}}}if(opts.placeholder.length>1){opts.placeholder=opts.placeholder.charAt(0)}if(opts.positionCaretOnClick==="radixFocus"&&opts.placeholder===""&&opts.integerOptional===false){opts.positionCaretOnClick="lvp"}opts.definitions[";"]=opts.definitions["~"];opts.definitions[";"].definitionSymbol="~";if(opts.numericInput===true){opts.positionCaretOnClick=opts.positionCaretOnClick==="radixFocus"?"lvp":opts.positionCaretOnClick;opts.digitsOptional=false;if(isNaN(opts.digits))opts.digits=2;opts.decimalProtect=false}var mask="[+]";mask+=autoEscape(opts.prefix,opts);if(opts.integerOptional===true){mask+="~{1,"+opts.integerDigits+"}"}else mask+="~{"+opts.integerDigits+"}";if(opts.digits!==undefined){var radixDef=opts.decimalProtect?":":opts.radixPoint;var dq=opts.digits.toString().split(",");if(isFinite(dq[0])&&dq[1]&&isFinite(dq[1])){mask+=radixDef+";{"+opts.digits+"}"}else if(isNaN(opts.digits)||parseInt(opts.digits)>0){if(opts.digitsOptional){mask+="["+radixDef+";{1,"+opts.digits+"}]"}else mask+=radixDef+";{"+opts.digits+"}"}}mask+=autoEscape(opts.suffix,opts);mask+="[-]";opts.greedy=false;return mask},placeholder:"",greedy:false,digits:"*",digitsOptional:true,enforceDigitsOnBlur:false,radixPoint:".",positionCaretOnClick:"radixFocus",groupSize:3,groupSeparator:"",autoGroup:false,allowMinus:true,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:true,prefix:"",suffix:"",rightAlign:true,decimalProtect:true,min:null,max:null,step:1,insertMode:true,autoUnmask:false,unmaskAsNumber:false,inputType:"text",inputmode:"numeric",preValidation:function preValidation(buffer,pos,c,isSelection,opts,maskset){if(c==="-"||c===opts.negationSymbol.front){if(opts.allowMinus!==true)return false;opts.isNegative=opts.isNegative===undefined?true:!opts.isNegative;if(buffer.join("")==="")return true;return{caret:maskset.validPositions[pos]?pos:undefined,dopost:true}}if(isSelection===false&&c===opts.radixPoint&&opts.digits!==undefined&&(isNaN(opts.digits)||parseInt(opts.digits)>0)){var radixPos=$.inArray(opts.radixPoint,buffer);if(radixPos!==-1&&maskset.validPositions[radixPos]!==undefined){if(opts.numericInput===true){return pos===radixPos}return{caret:radixPos+1}}}return true},postValidation:function postValidation(buffer,pos,currentResult,opts){function buildPostMask(buffer,opts){var postMask="";postMask+="("+opts.groupSeparator+"*{"+opts.groupSize+"}){*}";if(opts.radixPoint!==""){var radixSplit=buffer.join("").split(opts.radixPoint);if(radixSplit[1]){postMask+=opts.radixPoint+"*{"+radixSplit[1].match(/^\d*\??\d*/)[0].length+"}"}}return postMask}var suffix=opts.suffix.split(""),prefix=opts.prefix.split("");if(currentResult.pos===undefined&¤tResult.caret!==undefined&¤tResult.dopost!==true)return currentResult;var caretPos=currentResult.caret!==undefined?currentResult.caret:currentResult.pos;var maskedValue=buffer.slice();if(opts.numericInput){caretPos=maskedValue.length-caretPos-1;maskedValue=maskedValue.reverse()}var charAtPos=maskedValue[caretPos];if(charAtPos===opts.groupSeparator){caretPos+=1;charAtPos=maskedValue[caretPos]}if(caretPos===maskedValue.length-opts.suffix.length-1&&charAtPos===opts.radixPoint)return currentResult;if(charAtPos!==undefined){if(charAtPos!==opts.radixPoint&&charAtPos!==opts.negationSymbol.front&&charAtPos!==opts.negationSymbol.back){maskedValue[caretPos]="?";if(opts.prefix.length>0&&caretPos>=(opts.isNegative===false?1:0)&&caretPos0&&caretPos>=maskedValue.length-opts.suffix.length-(opts.isNegative===false?1:0)){suffix[caretPos-(maskedValue.length-opts.suffix.length-(opts.isNegative===false?1:0))]="?"}}}prefix=prefix.join("");suffix=suffix.join("");var processValue=maskedValue.join("").replace(prefix,"");processValue=processValue.replace(suffix,"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");processValue=processValue.replace(new RegExp("[-"+Inputmask.escapeRegex(opts.negationSymbol.front)+"]","g"),"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");if(isNaN(opts.placeholder)){processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder),"g"),"")}if(processValue.length>1&&processValue.indexOf(opts.radixPoint)!==1){if(charAtPos==="0"){processValue=processValue.replace(/^\?/g,"")}processValue=processValue.replace(/^0/g,"")}if(processValue.charAt(0)===opts.radixPoint&&opts.radixPoint!==""&&opts.numericInput!==true){processValue="0"+processValue}if(processValue!==""){processValue=processValue.split("");if((!opts.digitsOptional||opts.enforceDigitsOnBlur&¤tResult.event==="blur")&&isFinite(opts.digits)){var radixPosition=$.inArray(opts.radixPoint,processValue);var rpb=$.inArray(opts.radixPoint,maskedValue);if(radixPosition===-1){processValue.push(opts.radixPoint);radixPosition=processValue.length-1}for(var i=1;i<=opts.digits;i++){if((!opts.digitsOptional||opts.enforceDigitsOnBlur&¤tResult.event==="blur")&&(processValue[radixPosition+i]===undefined||processValue[radixPosition+i]===opts.placeholder.charAt(0))){processValue[radixPosition+i]=currentResult.placeholder||opts.placeholder.charAt(0)}else if(rpb!==-1&&maskedValue[rpb+i]!==undefined){processValue[radixPosition+i]=processValue[radixPosition+i]||maskedValue[rpb+i]}}}if(opts.autoGroup===true&&opts.groupSeparator!==""&&(charAtPos!==opts.radixPoint||currentResult.pos!==undefined||currentResult.dopost)){var addRadix=processValue[processValue.length-1]===opts.radixPoint&¤tResult.c===opts.radixPoint;processValue=Inputmask(buildPostMask(processValue,opts),{numericInput:true,jitMasking:true,definitions:{"*":{validator:"[0-9?]",cardinality:1}}}).format(processValue.join(""));if(addRadix)processValue+=opts.radixPoint;if(processValue.charAt(0)===opts.groupSeparator){processValue.substr(1)}}else processValue=processValue.join("")}if(opts.isNegative&¤tResult.event==="blur"){opts.isNegative=processValue!=="0"}processValue=prefix+processValue;processValue+=suffix;if(opts.isNegative){processValue=opts.negationSymbol.front+processValue;processValue+=opts.negationSymbol.back}processValue=processValue.split("");if(charAtPos!==undefined){if(charAtPos!==opts.radixPoint&&charAtPos!==opts.negationSymbol.front&&charAtPos!==opts.negationSymbol.back){caretPos=$.inArray("?",processValue);if(caretPos>-1){processValue[caretPos]=charAtPos}else caretPos=currentResult.caret||0}else if(charAtPos===opts.radixPoint||charAtPos===opts.negationSymbol.front||charAtPos===opts.negationSymbol.back){var newCaretPos=$.inArray(charAtPos,processValue);if(newCaretPos!==-1)caretPos=newCaretPos}}if(opts.numericInput){caretPos=processValue.length-caretPos-1;processValue=processValue.reverse()}var rslt={caret:(charAtPos===undefined||currentResult.pos!==undefined)&&caretPos!==undefined?caretPos+(opts.numericInput?-1:1):caretPos,buffer:processValue,refreshFromBuffer:currentResult.dopost||buffer.join("")!==processValue.join("")};return rslt.refreshFromBuffer?rslt:currentResult},onBeforeWrite:function onBeforeWrite(e,buffer,caretPos,opts){function parseMinMaxOptions(opts){if(opts.parseMinMaxOptions===undefined){if(opts.min!==null){opts.min=opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.radixPoint===",")opts.min=opts.min.replace(opts.radixPoint,".");opts.min=isFinite(opts.min)?parseFloat(opts.min):NaN;if(isNaN(opts.min))opts.min=Number.MIN_VALUE}if(opts.max!==null){opts.max=opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.radixPoint===",")opts.max=opts.max.replace(opts.radixPoint,".");opts.max=isFinite(opts.max)?parseFloat(opts.max):NaN;if(isNaN(opts.max))opts.max=Number.MAX_VALUE}opts.parseMinMaxOptions="done"}}if(e){switch(e.type){case"keydown":return opts.postValidation(buffer,caretPos,{caret:caretPos,dopost:true},opts);case"blur":case"checkval":var unmasked;parseMinMaxOptions(opts);if(opts.min!==null||opts.max!==null){unmasked=opts.onUnMask(buffer.join(""),undefined,$.extend({},opts,{unmaskAsNumber:true}));if(opts.min!==null&&unmaskedopts.max){opts.isNegative=opts.max<0;return opts.postValidation(opts.max.toString().replace(".",opts.radixPoint).split(""),caretPos,{caret:caretPos,dopost:true,placeholder:"0"},opts)}}return opts.postValidation(buffer,caretPos,{caret:caretPos,placeholder:"0",event:"blur"},opts);case"_checkval":return{caret:caretPos};default:break}}},regex:{integerPart:function integerPart(opts,emptyCheck){return emptyCheck?new RegExp("["+Inputmask.escapeRegex(opts.negationSymbol.front)+"+]?"):new RegExp("["+Inputmask.escapeRegex(opts.negationSymbol.front)+"+]?\\d+")},integerNPart:function integerNPart(opts){return new RegExp("[\\d"+Inputmask.escapeRegex(opts.groupSeparator)+Inputmask.escapeRegex(opts.placeholder.charAt(0))+"]+")}},definitions:{"~":{validator:function validator(chrs,maskset,pos,strict,opts,isSelection){var isValid,l;if(chrs==="k"||chrs==="m"){isValid={insert:[],c:0};for(var i=0,l=chrs==="k"?2:5;i1){pvRadixSplit[1]=pvRadixSplit[1].replace(/0/g,opts.placeholder.charAt(0))}if(pvRadixSplit[0]==="0"){pvRadixSplit[0]=pvRadixSplit[0].replace(/0/g,opts.placeholder.charAt(0))}processValue=pvRadixSplit[0]+opts.radixPoint+pvRadixSplit[1]||"";var bufferTemplate=maskset._buffer.join("");if(processValue===opts.radixPoint){processValue=bufferTemplate}while(processValue.match(Inputmask.escapeRegex(bufferTemplate)+"$")===null){bufferTemplate=bufferTemplate.slice(1)}processValue=processValue.replace(bufferTemplate,"");processValue=processValue.split("");if(processValue[pos]===undefined){isValid={pos:pos,remove:pos}}else{isValid={pos:pos}}}}else if(!strict&&chrs===opts.radixPoint&&maskset.validPositions[pos-1]===undefined){isValid={insert:{pos:pos,c:0},pos:pos+1}}return isValid},cardinality:1},"+":{validator:function validator(chrs,maskset,pos,strict,opts){return opts.allowMinus&&(chrs==="-"||chrs===opts.negationSymbol.front)},cardinality:1,placeholder:""},"-":{validator:function validator(chrs,maskset,pos,strict,opts){return opts.allowMinus&&chrs===opts.negationSymbol.back},cardinality:1,placeholder:""},":":{validator:function validator(chrs,maskset,pos,strict,opts){var radix="["+Inputmask.escapeRegex(opts.radixPoint)+"]";var isValid=new RegExp(radix).test(chrs);if(isValid&&maskset.validPositions[pos]&&maskset.validPositions[pos].match.placeholder===opts.radixPoint){isValid={caret:pos+1}}return isValid},cardinality:1,placeholder:function placeholder(opts){return opts.radixPoint}}},onUnMask:function onUnMask(maskedValue,unmaskedValue,opts){if(unmaskedValue===""&&opts.nullable===true){return unmaskedValue}var processValue=maskedValue.replace(opts.prefix,"");processValue=processValue.replace(opts.suffix,"");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator),"g"),"");if(opts.placeholder.charAt(0)!==""){processValue=processValue.replace(new RegExp(opts.placeholder.charAt(0),"g"),"0")}if(opts.unmaskAsNumber){if(opts.radixPoint!==""&&processValue.indexOf(opts.radixPoint)!==-1)processValue=processValue.replace(Inputmask.escapeRegex.call(this,opts.radixPoint),".");processValue=processValue.replace(new RegExp("^"+Inputmask.escapeRegex(opts.negationSymbol.front)),"-");processValue=processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");return Number(processValue)}return processValue},isComplete:function isComplete(buffer,opts){var maskedValue=(opts.numericInput?buffer.slice().reverse():buffer).join("");maskedValue=maskedValue.replace(new RegExp("^"+Inputmask.escapeRegex(opts.negationSymbol.front)),"-");maskedValue=maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back)+"$"),"");maskedValue=maskedValue.replace(opts.prefix,"");maskedValue=maskedValue.replace(opts.suffix,"");maskedValue=maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator)+"([0-9]{3})","g"),"$1");if(opts.radixPoint===",")maskedValue=maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint),".");return isFinite(maskedValue)},onBeforeMask:function onBeforeMask(initialValue,opts){opts.isNegative=undefined;var radixPoint=opts.radixPoint||",";if((typeof initialValue=="number"||opts.inputType==="number")&&radixPoint!==""){initialValue=initialValue.toString().replace(".",radixPoint)}var valueParts=initialValue.split(radixPoint),integerPart=valueParts[0].replace(/[^\-0-9]/g,""),decimalPart=valueParts.length>1?valueParts[1].replace(/[^0-9]/g,""):"";initialValue=integerPart+(decimalPart!==""?radixPoint+decimalPart:decimalPart);var digits=0;if(radixPoint!==""){digits=decimalPart.length;if(decimalPart!==""){var digitsFactor=Math.pow(10,digits||1);if(isFinite(opts.digits)){digits=parseInt(opts.digits);digitsFactor=Math.pow(10,digits)}initialValue=initialValue.replace(Inputmask.escapeRegex(radixPoint),".");if(isFinite(initialValue))initialValue=Math.round(parseFloat(initialValue)*digitsFactor)/digitsFactor;initialValue=initialValue.toString().replace(".",radixPoint)}}if(opts.digits===0&&initialValue.indexOf(Inputmask.escapeRegex(radixPoint))!==-1){initialValue=initialValue.substring(0,initialValue.indexOf(Inputmask.escapeRegex(radixPoint)))}return alignDigits(initialValue.toString().split(""),digits,opts).join("")},onKeyDown:function onKeyDown(e,buffer,caretPos,opts){var $input=$(this);if(e.ctrlKey){switch(e.keyCode){case Inputmask.keyCode.UP:$input.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(opts.step));$input.trigger("setvalue");break;case Inputmask.keyCode.DOWN:$input.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(opts.step));$input.trigger("setvalue");break}}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:true,digits:2,digitsOptional:false,clearMaskOnLostFocus:false},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,digitsOptional:true,radixPoint:".",placeholder:"0",autoGroup:false,min:0,max:100,suffix:" %",allowMinus:false}});return Inputmask})},function(module,exports,__webpack_require__){"use strict";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(4),__webpack_require__(2)],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__==="function"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else{}})(function($,Inputmask){if($.fn.inputmask===undefined){$.fn.inputmask=function(fn,options){var nptmask,input=this[0];if(options===undefined)options={};if(typeof fn==="string"){switch(fn){case"unmaskedvalue":return input&&input.inputmask?input.inputmask.unmaskedvalue():$(input).val();case"remove":return this.each(function(){if(this.inputmask)this.inputmask.remove()});case"getemptymask":return input&&input.inputmask?input.inputmask.getemptymask():"";case"hasMaskedValue":return input&&input.inputmask?input.inputmask.hasMaskedValue():false;case"isComplete":return input&&input.inputmask?input.inputmask.isComplete():true;case"getmetadata":return input&&input.inputmask?input.inputmask.getmetadata():undefined;case"setvalue":Inputmask.setValue(input,options);break;case"option":if(typeof options==="string"){if(input&&input.inputmask!==undefined){return input.inputmask.option(options)}}else{return this.each(function(){if(this.inputmask!==undefined){return this.inputmask.option(options)}})}break;default:options.alias=fn;nptmask=new Inputmask(options);return this.each(function(){nptmask.mask(this)})}}else if(Array.isArray(fn)){options.alias=fn;nptmask=new Inputmask(options);return this.each(function(){nptmask.mask(this)})}else if((typeof fn==="undefined"?"undefined":_typeof(fn))=="object"){nptmask=new Inputmask(fn);if(fn.mask===undefined&&fn.alias===undefined){return this.each(function(){if(this.inputmask!==undefined){return this.inputmask.option(fn)}else nptmask.mask(this)})}else{return this.each(function(){nptmask.mask(this)})}}else if(fn===undefined){return this.each(function(){nptmask=new Inputmask(options);nptmask.mask(this)})}}}return $.fn.inputmask})}]); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/.editorconfig b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/.editorconfig deleted file mode 100644 index cdd3a58..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/.editorconfig +++ /dev/null @@ -1,6 +0,0 @@ -root = true - -[*.{js,css,less,html}] -indent_style = space -indent_size = 4 -charset = utf-8 diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.css b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.css deleted file mode 100644 index 17e1684..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.css +++ /dev/null @@ -1,675 +0,0 @@ -/** -Ion.RangeSlider, 2.3.0 -© Denis Ineshin, 2010 - 2018, IonDen.com -Build date: 2018-12-11 23:23:51 -*/ -.irs { - position: relative; - display: block; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 12px; - font-family: Arial, sans-serif; -} -.irs-line { - position: relative; - display: block; - overflow: hidden; - outline: none !important; -} -.irs-bar { - position: absolute; - display: block; - left: 0; - width: 0; -} -.irs-shadow { - position: absolute; - display: none; - left: 0; - width: 0; -} -.irs-handle { - position: absolute; - display: block; - box-sizing: border-box; - cursor: default; - z-index: 1; -} -.irs-handle.type_last { - z-index: 2; -} -.irs-min, -.irs-max { - position: absolute; - display: block; - cursor: default; -} -.irs-min { - left: 0; -} -.irs-max { - right: 0; -} -.irs-from, -.irs-to, -.irs-single { - position: absolute; - display: block; - top: 0; - left: 0; - cursor: default; - white-space: nowrap; -} -.irs-grid { - position: absolute; - display: none; - bottom: 0; - left: 0; - width: 100%; - height: 20px; -} -.irs-with-grid .irs-grid { - display: block; -} -.irs-grid-pol { - position: absolute; - top: 0; - left: 0; - width: 1px; - height: 8px; - background: #000; -} -.irs-grid-pol.small { - height: 4px; -} -.irs-grid-text { - position: absolute; - bottom: 0; - left: 0; - white-space: nowrap; - text-align: center; - font-size: 9px; - line-height: 9px; - padding: 0 3px; - color: #000; -} -.irs-disable-mask { - position: absolute; - display: block; - top: 0; - left: -1%; - width: 102%; - height: 100%; - cursor: default; - background: rgba(0, 0, 0, 0); - z-index: 2; -} -.lt-ie9 .irs-disable-mask { - background: #000; - filter: alpha(opacity=0); - cursor: not-allowed; -} -.irs-disabled { - opacity: 0.4; -} -.irs-hidden-input { - position: absolute !important; - display: block !important; - top: 0 !important; - left: 0 !important; - width: 0 !important; - height: 0 !important; - font-size: 0 !important; - line-height: 0 !important; - padding: 0 !important; - margin: 0 !important; - overflow: hidden; - outline: none !important; - z-index: -9999 !important; - background: none !important; - border-style: solid !important; - border-color: transparent !important; -} -.irs--flat { - height: 40px; -} -.irs--flat.irs-with-grid { - height: 60px; -} -.irs--flat .irs-line { - top: 25px; - height: 12px; - background-color: #e1e4e9; - border-radius: 4px; -} -.irs--flat .irs-bar { - top: 25px; - height: 12px; - background-color: #ed5565; -} -.irs--flat .irs-bar--single { - border-radius: 4px 0 0 4px; -} -.irs--flat .irs-shadow { - height: 1px; - bottom: 16px; - background-color: #e1e4e9; -} -.irs--flat .irs-handle { - top: 22px; - width: 16px; - height: 18px; - background-color: transparent; -} -.irs--flat .irs-handle > i:first-child { - position: absolute; - display: block; - top: 0; - left: 50%; - width: 2px; - height: 100%; - margin-left: -1px; - background-color: #da4453; -} -.irs--flat .irs-handle.state_hover > i:first-child, -.irs--flat .irs-handle:hover > i:first-child { - background-color: #a43540; -} -.irs--flat .irs-min, -.irs--flat .irs-max { - top: 0; - padding: 1px 3px; - color: #999; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - background-color: #e1e4e9; - border-radius: 4px; -} -.irs--flat .irs-from, -.irs--flat .irs-to, -.irs--flat .irs-single { - color: white; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background-color: #ed5565; - border-radius: 4px; -} -.irs--flat .irs-from:before, -.irs--flat .irs-to:before, -.irs--flat .irs-single:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #ed5565; -} -.irs--flat .irs-grid-pol { - background-color: #e1e4e9; -} -.irs--flat .irs-grid-text { - color: #999; -} -.irs--big { - height: 55px; -} -.irs--big.irs-with-grid { - height: 70px; -} -.irs--big .irs-line { - top: 33px; - height: 12px; - background-color: white; - background: linear-gradient(to bottom, #ddd -50%, white 150%); - border: 1px solid #ccc; - border-radius: 12px; -} -.irs--big .irs-bar { - top: 33px; - height: 12px; - background-color: #92bce0; - border: 1px solid #428bca; - background: linear-gradient(to bottom, #ffffff 0%, #428bca 30%, #b9d4ec 100%); - box-shadow: inset 0 0 1px 1px rgba(255, 255, 255, 0.5); -} -.irs--big .irs-bar--single { - border-radius: 12px 0 0 12px; -} -.irs--big .irs-shadow { - height: 1px; - bottom: 16px; - background-color: rgba(66, 139, 202, 0.5); -} -.irs--big .irs-handle { - top: 25px; - width: 30px; - height: 30px; - border: 1px solid rgba(0, 0, 0, 0.3); - background-color: #cbcfd5; - background: linear-gradient(to bottom, white 0%, #B4B9BE 30%, white 100%); - box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2), inset 0 0 3px 1px white; - border-radius: 30px; -} -.irs--big .irs-handle.state_hover, -.irs--big .irs-handle:hover { - border-color: rgba(0, 0, 0, 0.45); - background-color: #939ba7; - background: linear-gradient(to bottom, white 0%, #919BA5 30%, white 100%); -} -.irs--big .irs-min, -.irs--big .irs-max { - top: 0; - padding: 1px 5px; - color: white; - text-shadow: none; - background-color: #9f9f9f; - border-radius: 3px; -} -.irs--big .irs-from, -.irs--big .irs-to, -.irs--big .irs-single { - color: white; - text-shadow: none; - padding: 1px 5px; - background-color: #428bca; - background: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); - border-radius: 3px; -} -.irs--big .irs-grid-pol { - background-color: #428bca; -} -.irs--big .irs-grid-text { - color: #428bca; -} -.irs--modern { - height: 55px; -} -.irs--modern.irs-with-grid { - height: 55px; -} -.irs--modern .irs-line { - top: 25px; - height: 5px; - background-color: #d1d6e0; - background: linear-gradient(to bottom, #e0e4ea 0%, #d1d6e0 100%); - border: 1px solid #a3adc1; - border-bottom-width: 0; - border-radius: 5px; -} -.irs--modern .irs-bar { - top: 25px; - height: 5px; - background: #20b426; - background: linear-gradient(to bottom, #20b426 0%, #18891d 100%); -} -.irs--modern .irs-bar--single { - border-radius: 5px 0 0 5px; -} -.irs--modern .irs-shadow { - height: 1px; - bottom: 21px; - background-color: rgba(209, 214, 224, 0.5); -} -.irs--modern .irs-handle { - top: 37px; - width: 12px; - height: 13px; - border: 1px solid #a3adc1; - border-top-width: 0; - box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 0 0 3px 3px; -} -.irs--modern .irs-handle > i:nth-child(1) { - position: absolute; - display: block; - top: -4px; - left: 1px; - width: 6px; - height: 6px; - border: 1px solid #a3adc1; - background: white; - transform: rotate(45deg); -} -.irs--modern .irs-handle > i:nth-child(2) { - position: absolute; - display: block; - box-sizing: border-box; - top: 0; - left: 0; - width: 10px; - height: 12px; - background: #e9e6e6; - background: linear-gradient(to bottom, white 0%, #e9e6e6 100%); - border-radius: 0 0 3px 3px; -} -.irs--modern .irs-handle > i:nth-child(3) { - position: absolute; - display: block; - box-sizing: border-box; - top: 3px; - left: 3px; - width: 4px; - height: 5px; - border-left: 1px solid #a3adc1; - border-right: 1px solid #a3adc1; -} -.irs--modern .irs-handle.state_hover, -.irs--modern .irs-handle:hover { - border-color: #7685a2; - background: #c3c7cd; - background: linear-gradient(to bottom, #ffffff 0%, #919ba5 30%, #ffffff 100%); -} -.irs--modern .irs-handle.state_hover > i:nth-child(1), -.irs--modern .irs-handle:hover > i:nth-child(1) { - border-color: #7685a2; -} -.irs--modern .irs-handle.state_hover > i:nth-child(3), -.irs--modern .irs-handle:hover > i:nth-child(3) { - border-color: #48536a; -} -.irs--modern .irs-min, -.irs--modern .irs-max { - top: 0; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - color: white; - background-color: #d1d6e0; - border-radius: 5px; -} -.irs--modern .irs-from, -.irs--modern .irs-to, -.irs--modern .irs-single { - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background-color: #20b426; - color: white; - border-radius: 5px; -} -.irs--modern .irs-from:before, -.irs--modern .irs-to:before, -.irs--modern .irs-single:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #20b426; -} -.irs--modern .irs-grid { - height: 25px; -} -.irs--modern .irs-grid-pol { - background-color: #dedede; -} -.irs--modern .irs-grid-text { - color: silver; - font-size: 13px; -} -.irs--sharp { - height: 50px; - font-size: 12px; - line-height: 1; -} -.irs--sharp.irs-with-grid { - height: 57px; -} -.irs--sharp .irs-line { - top: 30px; - height: 2px; - background-color: black; - border-radius: 2px; -} -.irs--sharp .irs-bar { - top: 30px; - height: 2px; - background-color: #ee22fa; -} -.irs--sharp .irs-bar--single { - border-radius: 2px 0 0 2px; -} -.irs--sharp .irs-shadow { - height: 1px; - bottom: 21px; - background-color: rgba(0, 0, 0, 0.5); -} -.irs--sharp .irs-handle { - top: 25px; - width: 10px; - height: 10px; - background-color: #a804b2; -} -.irs--sharp .irs-handle > i:first-child { - position: absolute; - display: block; - top: 100%; - left: 0; - width: 0; - height: 0; - border: 5px solid transparent; - border-top-color: #a804b2; -} -.irs--sharp .irs-handle.state_hover, -.irs--sharp .irs-handle:hover { - background-color: black; -} -.irs--sharp .irs-handle.state_hover > i:first-child, -.irs--sharp .irs-handle:hover > i:first-child { - border-top-color: black; -} -.irs--sharp .irs-min, -.irs--sharp .irs-max { - color: white; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 4px; - opacity: 0.4; - background-color: #a804b2; - border-radius: 2px; -} -.irs--sharp .irs-from, -.irs--sharp .irs-to, -.irs--sharp .irs-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 4px; - background-color: #a804b2; - color: white; - border-radius: 2px; -} -.irs--sharp .irs-from:before, -.irs--sharp .irs-to:before, -.irs--sharp .irs-single:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #a804b2; -} -.irs--sharp .irs-grid { - height: 25px; -} -.irs--sharp .irs-grid-pol { - background-color: #dedede; -} -.irs--sharp .irs-grid-text { - color: silver; - font-size: 13px; -} -.irs--round { - height: 50px; -} -.irs--round.irs-with-grid { - height: 65px; -} -.irs--round .irs-line { - top: 36px; - height: 4px; - background-color: #dee4ec; - border-radius: 4px; -} -.irs--round .irs-bar { - top: 36px; - height: 4px; - background-color: #006cfa; -} -.irs--round .irs-bar--single { - border-radius: 4px 0 0 4px; -} -.irs--round .irs-shadow { - height: 4px; - bottom: 21px; - background-color: rgba(222, 228, 236, 0.5); -} -.irs--round .irs-handle { - top: 26px; - width: 24px; - height: 24px; - border: 4px solid #006cfa; - background-color: white; - border-radius: 24px; - box-shadow: 0 1px 3px rgba(0, 0, 255, 0.3); -} -.irs--round .irs-handle.state_hover, -.irs--round .irs-handle:hover { - background-color: #f0f6ff; -} -.irs--round .irs-min, -.irs--round .irs-max { - color: #333; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 5px; - background-color: rgba(0, 0, 0, 0.1); - border-radius: 4px; -} -.irs--round .irs-from, -.irs--round .irs-to, -.irs--round .irs-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 5px; - background-color: #006cfa; - color: white; - border-radius: 4px; -} -.irs--round .irs-from:before, -.irs--round .irs-to:before, -.irs--round .irs-single:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: #006cfa; -} -.irs--round .irs-grid { - height: 25px; -} -.irs--round .irs-grid-pol { - background-color: #dedede; -} -.irs--round .irs-grid-text { - color: silver; - font-size: 13px; -} -.irs--square { - height: 50px; -} -.irs--square.irs-with-grid { - height: 60px; -} -.irs--square .irs-line { - top: 31px; - height: 4px; - background-color: #dedede; -} -.irs--square .irs-bar { - top: 31px; - height: 4px; - background-color: black; -} -.irs--square .irs-shadow { - height: 2px; - bottom: 21px; - background-color: #dedede; -} -.irs--square .irs-handle { - top: 25px; - width: 16px; - height: 16px; - border: 3px solid black; - background-color: white; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} -.irs--square .irs-handle.state_hover, -.irs--square .irs-handle:hover { - background-color: #f0f6ff; -} -.irs--square .irs-min, -.irs--square .irs-max { - color: #333; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 5px; - background-color: rgba(0, 0, 0, 0.1); -} -.irs--square .irs-from, -.irs--square .irs-to, -.irs--square .irs-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 5px; - background-color: black; - color: white; -} -.irs--square .irs-grid { - height: 25px; -} -.irs--square .irs-grid-pol { - background-color: #dedede; -} -.irs--square .irs-grid-text { - color: silver; - font-size: 11px; -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.min.css b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.min.css deleted file mode 100644 index 8558320..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.min.css +++ /dev/null @@ -1 +0,0 @@ -/*!Ion.RangeSlider, 2.3.0, © Denis Ineshin, 2010 - 2018, IonDen.com, Build date: 2018-12-11 23:23:51*/.irs{position:relative;display:block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px;font-family:Arial,sans-serif}.irs-line{position:relative;display:block;overflow:hidden;outline:none !important}.irs-bar{position:absolute;display:block;left:0;width:0}.irs-shadow{position:absolute;display:none;left:0;width:0}.irs-handle{position:absolute;display:block;box-sizing:border-box;cursor:default;z-index:1}.irs-handle.type_last{z-index:2}.irs-min,.irs-max{position:absolute;display:block;cursor:default}.irs-min{left:0}.irs-max{right:0}.irs-from,.irs-to,.irs-single{position:absolute;display:block;top:0;left:0;cursor:default;white-space:nowrap}.irs-grid{position:absolute;display:none;bottom:0;left:0;width:100%;height:20px}.irs-with-grid .irs-grid{display:block}.irs-grid-pol{position:absolute;top:0;left:0;width:1px;height:8px;background:#000}.irs-grid-pol.small{height:4px}.irs-grid-text{position:absolute;bottom:0;left:0;white-space:nowrap;text-align:center;font-size:9px;line-height:9px;padding:0 3px;color:#000}.irs-disable-mask{position:absolute;display:block;top:0;left:-1%;width:102%;height:100%;cursor:default;background:rgba(0,0,0,0);z-index:2}.lt-ie9 .irs-disable-mask{background:#000;filter:alpha(opacity=0);cursor:not-allowed}.irs-disabled{opacity:.4}.irs-hidden-input{position:absolute !important;display:block !important;top:0 !important;left:0 !important;width:0 !important;height:0 !important;font-size:0 !important;line-height:0 !important;padding:0 !important;margin:0 !important;overflow:hidden;outline:none !important;z-index:-9999 !important;background:none !important;border-style:solid !important;border-color:transparent !important}.irs--flat{height:40px}.irs--flat.irs-with-grid{height:60px}.irs--flat .irs-line{top:25px;height:12px;background-color:#e1e4e9;border-radius:4px}.irs--flat .irs-bar{top:25px;height:12px;background-color:#ed5565}.irs--flat .irs-bar--single{border-radius:4px 0 0 4px}.irs--flat .irs-shadow{height:1px;bottom:16px;background-color:#e1e4e9}.irs--flat .irs-handle{top:22px;width:16px;height:18px;background-color:transparent}.irs--flat .irs-handle>i:first-child{position:absolute;display:block;top:0;left:50%;width:2px;height:100%;margin-left:-1px;background-color:#da4453}.irs--flat .irs-handle.state_hover>i:first-child,.irs--flat .irs-handle:hover>i:first-child{background-color:#a43540}.irs--flat .irs-min,.irs--flat .irs-max{top:0;padding:1px 3px;color:#999;font-size:10px;line-height:1.333;text-shadow:none;background-color:#e1e4e9;border-radius:4px}.irs--flat .irs-from,.irs--flat .irs-to,.irs--flat .irs-single{color:white;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background-color:#ed5565;border-radius:4px}.irs--flat .irs-from:before,.irs--flat .irs-to:before,.irs--flat .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#ed5565}.irs--flat .irs-grid-pol{background-color:#e1e4e9}.irs--flat .irs-grid-text{color:#999}.irs--big{height:55px}.irs--big.irs-with-grid{height:70px}.irs--big .irs-line{top:33px;height:12px;background-color:white;background:linear-gradient(to bottom, #ddd -50%, white 150%);border:1px solid #ccc;border-radius:12px}.irs--big .irs-bar{top:33px;height:12px;background-color:#92bce0;border:1px solid #428bca;background:linear-gradient(to bottom, #ffffff 0%, #428bca 30%, #b9d4ec 100%);box-shadow:inset 0 0 1px 1px rgba(255,255,255,0.5)}.irs--big .irs-bar--single{border-radius:12px 0 0 12px}.irs--big .irs-shadow{height:1px;bottom:16px;background-color:rgba(66,139,202,0.5)}.irs--big .irs-handle{top:25px;width:30px;height:30px;border:1px solid rgba(0,0,0,0.3);background-color:#cbcfd5;background:linear-gradient(to bottom, white 0%, #B4B9BE 30%, white 100%);box-shadow:1px 1px 2px rgba(0,0,0,0.2),inset 0 0 3px 1px white;border-radius:30px}.irs--big .irs-handle.state_hover,.irs--big .irs-handle:hover{border-color:rgba(0,0,0,0.45);background-color:#939ba7;background:linear-gradient(to bottom, white 0%, #919BA5 30%, white 100%)}.irs--big .irs-min,.irs--big .irs-max{top:0;padding:1px 5px;color:white;text-shadow:none;background-color:#9f9f9f;border-radius:3px}.irs--big .irs-from,.irs--big .irs-to,.irs--big .irs-single{color:white;text-shadow:none;padding:1px 5px;background-color:#428bca;background:linear-gradient(to bottom, #428bca 0%, #3071a9 100%);border-radius:3px}.irs--big .irs-grid-pol{background-color:#428bca}.irs--big .irs-grid-text{color:#428bca}.irs--modern{height:55px}.irs--modern.irs-with-grid{height:55px}.irs--modern .irs-line{top:25px;height:5px;background-color:#d1d6e0;background:linear-gradient(to bottom, #e0e4ea 0%, #d1d6e0 100%);border:1px solid #a3adc1;border-bottom-width:0;border-radius:5px}.irs--modern .irs-bar{top:25px;height:5px;background:#20b426;background:linear-gradient(to bottom, #20b426 0%, #18891d 100%)}.irs--modern .irs-bar--single{border-radius:5px 0 0 5px}.irs--modern .irs-shadow{height:1px;bottom:21px;background-color:rgba(209,214,224,0.5)}.irs--modern .irs-handle{top:37px;width:12px;height:13px;border:1px solid #a3adc1;border-top-width:0;box-shadow:1px 1px 1px rgba(0,0,0,0.1);border-radius:0 0 3px 3px}.irs--modern .irs-handle>i:nth-child(1){position:absolute;display:block;top:-4px;left:1px;width:6px;height:6px;border:1px solid #a3adc1;background:white;transform:rotate(45deg)}.irs--modern .irs-handle>i:nth-child(2){position:absolute;display:block;box-sizing:border-box;top:0;left:0;width:10px;height:12px;background:#e9e6e6;background:linear-gradient(to bottom, white 0%, #e9e6e6 100%);border-radius:0 0 3px 3px}.irs--modern .irs-handle>i:nth-child(3){position:absolute;display:block;box-sizing:border-box;top:3px;left:3px;width:4px;height:5px;border-left:1px solid #a3adc1;border-right:1px solid #a3adc1}.irs--modern .irs-handle.state_hover,.irs--modern .irs-handle:hover{border-color:#7685a2;background:#c3c7cd;background:linear-gradient(to bottom, #ffffff 0%, #919ba5 30%, #ffffff 100%)}.irs--modern .irs-handle.state_hover>i:nth-child(1),.irs--modern .irs-handle:hover>i:nth-child(1){border-color:#7685a2}.irs--modern .irs-handle.state_hover>i:nth-child(3),.irs--modern .irs-handle:hover>i:nth-child(3){border-color:#48536a}.irs--modern .irs-min,.irs--modern .irs-max{top:0;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;color:white;background-color:#d1d6e0;border-radius:5px}.irs--modern .irs-from,.irs--modern .irs-to,.irs--modern .irs-single{font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background-color:#20b426;color:white;border-radius:5px}.irs--modern .irs-from:before,.irs--modern .irs-to:before,.irs--modern .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#20b426}.irs--modern .irs-grid{height:25px}.irs--modern .irs-grid-pol{background-color:#dedede}.irs--modern .irs-grid-text{color:silver;font-size:13px}.irs--sharp{height:50px;font-size:12px;line-height:1}.irs--sharp.irs-with-grid{height:57px}.irs--sharp .irs-line{top:30px;height:2px;background-color:black;border-radius:2px}.irs--sharp .irs-bar{top:30px;height:2px;background-color:#ee22fa}.irs--sharp .irs-bar--single{border-radius:2px 0 0 2px}.irs--sharp .irs-shadow{height:1px;bottom:21px;background-color:rgba(0,0,0,0.5)}.irs--sharp .irs-handle{top:25px;width:10px;height:10px;background-color:#a804b2}.irs--sharp .irs-handle>i:first-child{position:absolute;display:block;top:100%;left:0;width:0;height:0;border:5px solid transparent;border-top-color:#a804b2}.irs--sharp .irs-handle.state_hover,.irs--sharp .irs-handle:hover{background-color:black}.irs--sharp .irs-handle.state_hover>i:first-child,.irs--sharp .irs-handle:hover>i:first-child{border-top-color:black}.irs--sharp .irs-min,.irs--sharp .irs-max{color:white;font-size:14px;line-height:1;top:0;padding:3px 4px;opacity:.4;background-color:#a804b2;border-radius:2px}.irs--sharp .irs-from,.irs--sharp .irs-to,.irs--sharp .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 4px;background-color:#a804b2;color:white;border-radius:2px}.irs--sharp .irs-from:before,.irs--sharp .irs-to:before,.irs--sharp .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#a804b2}.irs--sharp .irs-grid{height:25px}.irs--sharp .irs-grid-pol{background-color:#dedede}.irs--sharp .irs-grid-text{color:silver;font-size:13px}.irs--round{height:50px}.irs--round.irs-with-grid{height:65px}.irs--round .irs-line{top:36px;height:4px;background-color:#dee4ec;border-radius:4px}.irs--round .irs-bar{top:36px;height:4px;background-color:#006cfa}.irs--round .irs-bar--single{border-radius:4px 0 0 4px}.irs--round .irs-shadow{height:4px;bottom:21px;background-color:rgba(222,228,236,0.5)}.irs--round .irs-handle{top:26px;width:24px;height:24px;border:4px solid #006cfa;background-color:white;border-radius:24px;box-shadow:0 1px 3px rgba(0,0,255,0.3)}.irs--round .irs-handle.state_hover,.irs--round .irs-handle:hover{background-color:#f0f6ff}.irs--round .irs-min,.irs--round .irs-max{color:#333;font-size:14px;line-height:1;top:0;padding:3px 5px;background-color:rgba(0,0,0,0.1);border-radius:4px}.irs--round .irs-from,.irs--round .irs-to,.irs--round .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 5px;background-color:#006cfa;color:white;border-radius:4px}.irs--round .irs-from:before,.irs--round .irs-to:before,.irs--round .irs-single:before{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#006cfa}.irs--round .irs-grid{height:25px}.irs--round .irs-grid-pol{background-color:#dedede}.irs--round .irs-grid-text{color:silver;font-size:13px}.irs--square{height:50px}.irs--square.irs-with-grid{height:60px}.irs--square .irs-line{top:31px;height:4px;background-color:#dedede}.irs--square .irs-bar{top:31px;height:4px;background-color:black}.irs--square .irs-shadow{height:2px;bottom:21px;background-color:#dedede}.irs--square .irs-handle{top:25px;width:16px;height:16px;border:3px solid black;background-color:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.irs--square .irs-handle.state_hover,.irs--square .irs-handle:hover{background-color:#f0f6ff}.irs--square .irs-min,.irs--square .irs-max{color:#333;font-size:14px;line-height:1;top:0;padding:3px 5px;background-color:rgba(0,0,0,0.1)}.irs--square .irs-from,.irs--square .irs-to,.irs--square .irs-single{font-size:14px;line-height:1;text-shadow:none;padding:3px 5px;background-color:black;color:white}.irs--square .irs-grid{height:25px}.irs--square .irs-grid-pol{background-color:#dedede}.irs--square .irs-grid-text{color:silver;font-size:11px} \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.js b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.js deleted file mode 100644 index 1d6bd03..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.js +++ /dev/null @@ -1,2449 +0,0 @@ -// Ion.RangeSlider -// version 2.3.0 Build: 381 -// © Denis Ineshin, 2018 -// https://github.com/IonDen -// -// Project page: http://ionden.com/a/plugins/ion.rangeSlider/en.html -// GitHub page: https://github.com/IonDen/ion.rangeSlider -// -// Released under MIT licence: -// http://ionden.com/a/plugins/licence-en.html -// ===================================================================================================================== - -;(function(factory) { - if (!jQuery && typeof define === "function" && define.amd) { - define(["jquery"], function (jQuery) { - return factory(jQuery, document, window, navigator); - }); - } else if (!jQuery && typeof exports === "object") { - factory(require("jquery"), document, window, navigator); - } else { - factory(jQuery, document, window, navigator); - } -} (function ($, document, window, navigator, undefined) { - "use strict"; - - // ================================================================================================================= - // Service - - var plugin_count = 0; - - // IE8 fix - var is_old_ie = (function () { - var n = navigator.userAgent, - r = /msie\s\d+/i, - v; - if (n.search(r) > 0) { - v = r.exec(n).toString(); - v = v.split(" ")[1]; - if (v < 9) { - $("html").addClass("lt-ie9"); - return true; - } - } - return false; - } ()); - if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { - - var target = this; - var slice = [].slice; - - if (typeof target != "function") { - throw new TypeError(); - } - - var args = slice.call(arguments, 1), - bound = function () { - - if (this instanceof bound) { - - var F = function(){}; - F.prototype = target.prototype; - var self = new F(); - - var result = target.apply( - self, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return self; - - } else { - - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - - return bound; - }; - } - if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function(searchElement, fromIndex) { - var k; - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - var O = Object(this); - var len = O.length >>> 0; - if (len === 0) { - return -1; - } - var n = +fromIndex || 0; - if (Math.abs(n) === Infinity) { - n = 0; - } - if (n >= len) { - return -1; - } - k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - while (k < len) { - if (k in O && O[k] === searchElement) { - return k; - } - k++; - } - return -1; - }; - } - - - - // ================================================================================================================= - // Template - - var base_html = - '' + - '' + - '01' + - '000' + - '' + - ''; - - var single_html = - '' + - '' + - ''; - - var double_html = - '' + - '' + - '' + - '' + - ''; - - var disable_html = - ''; - - - - // ================================================================================================================= - // Core - - /** - * Main plugin constructor - * - * @param input {Object} link to base input element - * @param options {Object} slider config - * @param plugin_count {Number} - * @constructor - */ - var IonRangeSlider = function (input, options, plugin_count) { - this.VERSION = "2.3.0"; - this.input = input; - this.plugin_count = plugin_count; - this.current_plugin = 0; - this.calc_count = 0; - this.update_tm = 0; - this.old_from = 0; - this.old_to = 0; - this.old_min_interval = null; - this.raf_id = null; - this.dragging = false; - this.force_redraw = false; - this.no_diapason = false; - this.has_tab_index = true; - this.is_key = false; - this.is_update = false; - this.is_start = true; - this.is_finish = false; - this.is_active = false; - this.is_resize = false; - this.is_click = false; - - options = options || {}; - - // cache for links to all DOM elements - this.$cache = { - win: $(window), - body: $(document.body), - input: $(input), - cont: null, - rs: null, - min: null, - max: null, - from: null, - to: null, - single: null, - bar: null, - line: null, - s_single: null, - s_from: null, - s_to: null, - shad_single: null, - shad_from: null, - shad_to: null, - edge: null, - grid: null, - grid_labels: [] - }; - - // storage for measure variables - this.coords = { - // left - x_gap: 0, - x_pointer: 0, - - // width - w_rs: 0, - w_rs_old: 0, - w_handle: 0, - - // percents - p_gap: 0, - p_gap_left: 0, - p_gap_right: 0, - p_step: 0, - p_pointer: 0, - p_handle: 0, - p_single_fake: 0, - p_single_real: 0, - p_from_fake: 0, - p_from_real: 0, - p_to_fake: 0, - p_to_real: 0, - p_bar_x: 0, - p_bar_w: 0, - - // grid - grid_gap: 0, - big_num: 0, - big: [], - big_w: [], - big_p: [], - big_x: [] - }; - - // storage for labels measure variables - this.labels = { - // width - w_min: 0, - w_max: 0, - w_from: 0, - w_to: 0, - w_single: 0, - - // percents - p_min: 0, - p_max: 0, - p_from_fake: 0, - p_from_left: 0, - p_to_fake: 0, - p_to_left: 0, - p_single_fake: 0, - p_single_left: 0 - }; - - - - /** - * get and validate config - */ - var $inp = this.$cache.input, - val = $inp.prop("value"), - config, config_from_data, prop; - - // default config - config = { - skin: "flat", - type: "single", - - min: 10, - max: 100, - from: null, - to: null, - step: 1, - - min_interval: 0, - max_interval: 0, - drag_interval: false, - - values: [], - p_values: [], - - from_fixed: false, - from_min: null, - from_max: null, - from_shadow: false, - - to_fixed: false, - to_min: null, - to_max: null, - to_shadow: false, - - prettify_enabled: true, - prettify_separator: " ", - prettify: null, - - force_edges: false, - - keyboard: true, - - grid: false, - grid_margin: true, - grid_num: 4, - grid_snap: false, - - hide_min_max: false, - hide_from_to: false, - - prefix: "", - postfix: "", - max_postfix: "", - decorate_both: true, - values_separator: " — ", - - input_values_separator: ";", - - disable: false, - block: false, - - extra_classes: "", - - scope: null, - onStart: null, - onChange: null, - onFinish: null, - onUpdate: null - }; - - - // check if base element is input - if ($inp[0].nodeName !== "INPUT") { - console && console.warn && console.warn("Base element should be !", $inp[0]); - } - - - // config from data-attributes extends js config - config_from_data = { - skin: $inp.data("skin"), - type: $inp.data("type"), - - min: $inp.data("min"), - max: $inp.data("max"), - from: $inp.data("from"), - to: $inp.data("to"), - step: $inp.data("step"), - - min_interval: $inp.data("minInterval"), - max_interval: $inp.data("maxInterval"), - drag_interval: $inp.data("dragInterval"), - - values: $inp.data("values"), - - from_fixed: $inp.data("fromFixed"), - from_min: $inp.data("fromMin"), - from_max: $inp.data("fromMax"), - from_shadow: $inp.data("fromShadow"), - - to_fixed: $inp.data("toFixed"), - to_min: $inp.data("toMin"), - to_max: $inp.data("toMax"), - to_shadow: $inp.data("toShadow"), - - prettify_enabled: $inp.data("prettifyEnabled"), - prettify_separator: $inp.data("prettifySeparator"), - - force_edges: $inp.data("forceEdges"), - - keyboard: $inp.data("keyboard"), - - grid: $inp.data("grid"), - grid_margin: $inp.data("gridMargin"), - grid_num: $inp.data("gridNum"), - grid_snap: $inp.data("gridSnap"), - - hide_min_max: $inp.data("hideMinMax"), - hide_from_to: $inp.data("hideFromTo"), - - prefix: $inp.data("prefix"), - postfix: $inp.data("postfix"), - max_postfix: $inp.data("maxPostfix"), - decorate_both: $inp.data("decorateBoth"), - values_separator: $inp.data("valuesSeparator"), - - input_values_separator: $inp.data("inputValuesSeparator"), - - disable: $inp.data("disable"), - block: $inp.data("block"), - - extra_classes: $inp.data("extraClasses"), - }; - config_from_data.values = config_from_data.values && config_from_data.values.split(","); - - for (prop in config_from_data) { - if (config_from_data.hasOwnProperty(prop)) { - if (config_from_data[prop] === undefined || config_from_data[prop] === "") { - delete config_from_data[prop]; - } - } - } - - - // input value extends default config - if (val !== undefined && val !== "") { - val = val.split(config_from_data.input_values_separator || options.input_values_separator || ";"); - - if (val[0] && val[0] == +val[0]) { - val[0] = +val[0]; - } - if (val[1] && val[1] == +val[1]) { - val[1] = +val[1]; - } - - if (options && options.values && options.values.length) { - config.from = val[0] && options.values.indexOf(val[0]); - config.to = val[1] && options.values.indexOf(val[1]); - } else { - config.from = val[0] && +val[0]; - config.to = val[1] && +val[1]; - } - } - - - - // js config extends default config - $.extend(config, options); - - - // data config extends config - $.extend(config, config_from_data); - this.options = config; - - - - // validate config, to be sure that all data types are correct - this.update_check = {}; - this.validate(); - - - - // default result object, returned to callbacks - this.result = { - input: this.$cache.input, - slider: null, - - min: this.options.min, - max: this.options.max, - - from: this.options.from, - from_percent: 0, - from_value: null, - - to: this.options.to, - to_percent: 0, - to_value: null - }; - - - - this.init(); - }; - - IonRangeSlider.prototype = { - - /** - * Starts or updates the plugin instance - * - * @param [is_update] {boolean} - */ - init: function (is_update) { - this.no_diapason = false; - this.coords.p_step = this.convertToPercent(this.options.step, true); - - this.target = "base"; - - this.toggleInput(); - this.append(); - this.setMinMax(); - - if (is_update) { - this.force_redraw = true; - this.calc(true); - - // callbacks called - this.callOnUpdate(); - } else { - this.force_redraw = true; - this.calc(true); - - // callbacks called - this.callOnStart(); - } - - this.updateScene(); - }, - - /** - * Appends slider template to a DOM - */ - append: function () { - var container_html = ''; - this.$cache.input.before(container_html); - this.$cache.input.prop("readonly", true); - this.$cache.cont = this.$cache.input.prev(); - this.result.slider = this.$cache.cont; - - this.$cache.cont.html(base_html); - this.$cache.rs = this.$cache.cont.find(".irs"); - this.$cache.min = this.$cache.cont.find(".irs-min"); - this.$cache.max = this.$cache.cont.find(".irs-max"); - this.$cache.from = this.$cache.cont.find(".irs-from"); - this.$cache.to = this.$cache.cont.find(".irs-to"); - this.$cache.single = this.$cache.cont.find(".irs-single"); - this.$cache.line = this.$cache.cont.find(".irs-line"); - this.$cache.grid = this.$cache.cont.find(".irs-grid"); - - if (this.options.type === "single") { - this.$cache.cont.append(single_html); - this.$cache.bar = this.$cache.cont.find(".irs-bar"); - this.$cache.edge = this.$cache.cont.find(".irs-bar-edge"); - this.$cache.s_single = this.$cache.cont.find(".single"); - this.$cache.from[0].style.visibility = "hidden"; - this.$cache.to[0].style.visibility = "hidden"; - this.$cache.shad_single = this.$cache.cont.find(".shadow-single"); - } else { - this.$cache.cont.append(double_html); - this.$cache.bar = this.$cache.cont.find(".irs-bar"); - this.$cache.s_from = this.$cache.cont.find(".from"); - this.$cache.s_to = this.$cache.cont.find(".to"); - this.$cache.shad_from = this.$cache.cont.find(".shadow-from"); - this.$cache.shad_to = this.$cache.cont.find(".shadow-to"); - - this.setTopHandler(); - } - - if (this.options.hide_from_to) { - this.$cache.from[0].style.display = "none"; - this.$cache.to[0].style.display = "none"; - this.$cache.single[0].style.display = "none"; - } - - this.appendGrid(); - - if (this.options.disable) { - this.appendDisableMask(); - this.$cache.input[0].disabled = true; - } else { - this.$cache.input[0].disabled = false; - this.removeDisableMask(); - this.bindEvents(); - } - - // block only if not disabled - if (!this.options.disable) { - if (this.options.block) { - this.appendDisableMask(); - } else { - this.removeDisableMask(); - } - } - - if (this.options.drag_interval) { - this.$cache.bar[0].style.cursor = "ew-resize"; - } - }, - - /** - * Determine which handler has a priority - * works only for double slider type - */ - setTopHandler: function () { - var min = this.options.min, - max = this.options.max, - from = this.options.from, - to = this.options.to; - - if (from > min && to === max) { - this.$cache.s_from.addClass("type_last"); - } else if (to < max) { - this.$cache.s_to.addClass("type_last"); - } - }, - - /** - * Determine which handles was clicked last - * and which handler should have hover effect - * - * @param target {String} - */ - changeLevel: function (target) { - switch (target) { - case "single": - this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_single_fake); - this.$cache.s_single.addClass("state_hover"); - break; - case "from": - this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake); - this.$cache.s_from.addClass("state_hover"); - this.$cache.s_from.addClass("type_last"); - this.$cache.s_to.removeClass("type_last"); - break; - case "to": - this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_to_fake); - this.$cache.s_to.addClass("state_hover"); - this.$cache.s_to.addClass("type_last"); - this.$cache.s_from.removeClass("type_last"); - break; - case "both": - this.coords.p_gap_left = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake); - this.coords.p_gap_right = this.toFixed(this.coords.p_to_fake - this.coords.p_pointer); - this.$cache.s_to.removeClass("type_last"); - this.$cache.s_from.removeClass("type_last"); - break; - } - }, - - /** - * Then slider is disabled - * appends extra layer with opacity - */ - appendDisableMask: function () { - this.$cache.cont.append(disable_html); - this.$cache.cont.addClass("irs-disabled"); - }, - - /** - * Then slider is not disabled - * remove disable mask - */ - removeDisableMask: function () { - this.$cache.cont.remove(".irs-disable-mask"); - this.$cache.cont.removeClass("irs-disabled"); - }, - - /** - * Remove slider instance - * and unbind all events - */ - remove: function () { - this.$cache.cont.remove(); - this.$cache.cont = null; - - this.$cache.line.off("keydown.irs_" + this.plugin_count); - - this.$cache.body.off("touchmove.irs_" + this.plugin_count); - this.$cache.body.off("mousemove.irs_" + this.plugin_count); - - this.$cache.win.off("touchend.irs_" + this.plugin_count); - this.$cache.win.off("mouseup.irs_" + this.plugin_count); - - if (is_old_ie) { - this.$cache.body.off("mouseup.irs_" + this.plugin_count); - this.$cache.body.off("mouseleave.irs_" + this.plugin_count); - } - - this.$cache.grid_labels = []; - this.coords.big = []; - this.coords.big_w = []; - this.coords.big_p = []; - this.coords.big_x = []; - - cancelAnimationFrame(this.raf_id); - }, - - /** - * bind all slider events - */ - bindEvents: function () { - if (this.no_diapason) { - return; - } - - this.$cache.body.on("touchmove.irs_" + this.plugin_count, this.pointerMove.bind(this)); - this.$cache.body.on("mousemove.irs_" + this.plugin_count, this.pointerMove.bind(this)); - - this.$cache.win.on("touchend.irs_" + this.plugin_count, this.pointerUp.bind(this)); - this.$cache.win.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this)); - - this.$cache.line.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - this.$cache.line.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - - this.$cache.line.on("focus.irs_" + this.plugin_count, this.pointerFocus.bind(this)); - - if (this.options.drag_interval && this.options.type === "double") { - this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "both")); - this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "both")); - } else { - this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - } - - if (this.options.type === "single") { - this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); - this.$cache.s_single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); - this.$cache.shad_single.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - - this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); - this.$cache.s_single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); - this.$cache.edge.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - this.$cache.shad_single.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - } else { - this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, null)); - this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, null)); - - this.$cache.from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); - this.$cache.s_from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); - this.$cache.to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); - this.$cache.s_to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); - this.$cache.shad_from.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - this.$cache.shad_to.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - - this.$cache.from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); - this.$cache.s_from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); - this.$cache.to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); - this.$cache.s_to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); - this.$cache.shad_from.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - this.$cache.shad_to.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); - } - - if (this.options.keyboard) { - this.$cache.line.on("keydown.irs_" + this.plugin_count, this.key.bind(this, "keyboard")); - } - - if (is_old_ie) { - this.$cache.body.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this)); - this.$cache.body.on("mouseleave.irs_" + this.plugin_count, this.pointerUp.bind(this)); - } - }, - - /** - * Focus with tabIndex - * - * @param e {Object} event object - */ - pointerFocus: function (e) { - if (!this.target) { - var x; - var $handle; - - if (this.options.type === "single") { - $handle = this.$cache.single; - } else { - $handle = this.$cache.from; - } - - x = $handle.offset().left; - x += ($handle.width() / 2) - 1; - - this.pointerClick("single", {preventDefault: function () {}, pageX: x}); - } - }, - - /** - * Mousemove or touchmove - * only for handlers - * - * @param e {Object} event object - */ - pointerMove: function (e) { - if (!this.dragging) { - return; - } - - var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; - this.coords.x_pointer = x - this.coords.x_gap; - - this.calc(); - }, - - /** - * Mouseup or touchend - * only for handlers - * - * @param e {Object} event object - */ - pointerUp: function (e) { - if (this.current_plugin !== this.plugin_count) { - return; - } - - if (this.is_active) { - this.is_active = false; - } else { - return; - } - - this.$cache.cont.find(".state_hover").removeClass("state_hover"); - - this.force_redraw = true; - - if (is_old_ie) { - $("*").prop("unselectable", false); - } - - this.updateScene(); - this.restoreOriginalMinInterval(); - - // callbacks call - if ($.contains(this.$cache.cont[0], e.target) || this.dragging) { - this.callOnFinish(); - } - - this.dragging = false; - }, - - /** - * Mousedown or touchstart - * only for handlers - * - * @param target {String|null} - * @param e {Object} event object - */ - pointerDown: function (target, e) { - e.preventDefault(); - var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; - if (e.button === 2) { - return; - } - - if (target === "both") { - this.setTempMinInterval(); - } - - if (!target) { - target = this.target || "from"; - } - - this.current_plugin = this.plugin_count; - this.target = target; - - this.is_active = true; - this.dragging = true; - - this.coords.x_gap = this.$cache.rs.offset().left; - this.coords.x_pointer = x - this.coords.x_gap; - - this.calcPointerPercent(); - this.changeLevel(target); - - if (is_old_ie) { - $("*").prop("unselectable", true); - } - - this.$cache.line.trigger("focus"); - - this.updateScene(); - }, - - /** - * Mousedown or touchstart - * for other slider elements, like diapason line - * - * @param target {String} - * @param e {Object} event object - */ - pointerClick: function (target, e) { - e.preventDefault(); - var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; - if (e.button === 2) { - return; - } - - this.current_plugin = this.plugin_count; - this.target = target; - - this.is_click = true; - this.coords.x_gap = this.$cache.rs.offset().left; - this.coords.x_pointer = +(x - this.coords.x_gap).toFixed(); - - this.force_redraw = true; - this.calc(); - - this.$cache.line.trigger("focus"); - }, - - /** - * Keyborard controls for focused slider - * - * @param target {String} - * @param e {Object} event object - * @returns {boolean|undefined} - */ - key: function (target, e) { - if (this.current_plugin !== this.plugin_count || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { - return; - } - - switch (e.which) { - case 83: // W - case 65: // A - case 40: // DOWN - case 37: // LEFT - e.preventDefault(); - this.moveByKey(false); - break; - - case 87: // S - case 68: // D - case 38: // UP - case 39: // RIGHT - e.preventDefault(); - this.moveByKey(true); - break; - } - - return true; - }, - - /** - * Move by key - * - * @param right {boolean} direction to move - */ - moveByKey: function (right) { - var p = this.coords.p_pointer; - var p_step = (this.options.max - this.options.min) / 100; - p_step = this.options.step / p_step; - - if (right) { - p += p_step; - } else { - p -= p_step; - } - - this.coords.x_pointer = this.toFixed(this.coords.w_rs / 100 * p); - this.is_key = true; - this.calc(); - }, - - /** - * Set visibility and content - * of Min and Max labels - */ - setMinMax: function () { - if (!this.options) { - return; - } - - if (this.options.hide_min_max) { - this.$cache.min[0].style.display = "none"; - this.$cache.max[0].style.display = "none"; - return; - } - - if (this.options.values.length) { - this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])); - this.$cache.max.html(this.decorate(this.options.p_values[this.options.max])); - } else { - var min_pretty = this._prettify(this.options.min); - var max_pretty = this._prettify(this.options.max); - - this.result.min_pretty = min_pretty; - this.result.max_pretty = max_pretty; - - this.$cache.min.html(this.decorate(min_pretty, this.options.min)); - this.$cache.max.html(this.decorate(max_pretty, this.options.max)); - } - - this.labels.w_min = this.$cache.min.outerWidth(false); - this.labels.w_max = this.$cache.max.outerWidth(false); - }, - - /** - * Then dragging interval, prevent interval collapsing - * using min_interval option - */ - setTempMinInterval: function () { - var interval = this.result.to - this.result.from; - - if (this.old_min_interval === null) { - this.old_min_interval = this.options.min_interval; - } - - this.options.min_interval = interval; - }, - - /** - * Restore min_interval option to original - */ - restoreOriginalMinInterval: function () { - if (this.old_min_interval !== null) { - this.options.min_interval = this.old_min_interval; - this.old_min_interval = null; - } - }, - - - - // ============================================================================================================= - // Calculations - - /** - * All calculations and measures start here - * - * @param update {boolean=} - */ - calc: function (update) { - if (!this.options) { - return; - } - - this.calc_count++; - - if (this.calc_count === 10 || update) { - this.calc_count = 0; - this.coords.w_rs = this.$cache.rs.outerWidth(false); - - this.calcHandlePercent(); - } - - if (!this.coords.w_rs) { - return; - } - - this.calcPointerPercent(); - var handle_x = this.getHandleX(); - - - if (this.target === "both") { - this.coords.p_gap = 0; - handle_x = this.getHandleX(); - } - - if (this.target === "click") { - this.coords.p_gap = this.coords.p_handle / 2; - handle_x = this.getHandleX(); - - if (this.options.drag_interval) { - this.target = "both_one"; - } else { - this.target = this.chooseHandle(handle_x); - } - } - - switch (this.target) { - case "base": - var w = (this.options.max - this.options.min) / 100, - f = (this.result.from - this.options.min) / w, - t = (this.result.to - this.options.min) / w; - - this.coords.p_single_real = this.toFixed(f); - this.coords.p_from_real = this.toFixed(f); - this.coords.p_to_real = this.toFixed(t); - - this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max); - this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); - this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); - - this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real); - this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); - this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); - - this.target = null; - - break; - - case "single": - if (this.options.from_fixed) { - break; - } - - this.coords.p_single_real = this.convertToRealPercent(handle_x); - this.coords.p_single_real = this.calcWithStep(this.coords.p_single_real); - this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max); - - this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real); - - break; - - case "from": - if (this.options.from_fixed) { - break; - } - - this.coords.p_from_real = this.convertToRealPercent(handle_x); - this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real); - if (this.coords.p_from_real > this.coords.p_to_real) { - this.coords.p_from_real = this.coords.p_to_real; - } - this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); - this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); - this.coords.p_from_real = this.checkMaxInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); - - this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); - - break; - - case "to": - if (this.options.to_fixed) { - break; - } - - this.coords.p_to_real = this.convertToRealPercent(handle_x); - this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real); - if (this.coords.p_to_real < this.coords.p_from_real) { - this.coords.p_to_real = this.coords.p_from_real; - } - this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); - this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); - this.coords.p_to_real = this.checkMaxInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); - - this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); - - break; - - case "both": - if (this.options.from_fixed || this.options.to_fixed) { - break; - } - - handle_x = this.toFixed(handle_x + (this.coords.p_handle * 0.001)); - - this.coords.p_from_real = this.convertToRealPercent(handle_x) - this.coords.p_gap_left; - this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real); - this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); - this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); - this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); - - this.coords.p_to_real = this.convertToRealPercent(handle_x) + this.coords.p_gap_right; - this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real); - this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); - this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); - this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); - - break; - - case "both_one": - if (this.options.from_fixed || this.options.to_fixed) { - break; - } - - var real_x = this.convertToRealPercent(handle_x), - from = this.result.from_percent, - to = this.result.to_percent, - full = to - from, - half = full / 2, - new_from = real_x - half, - new_to = real_x + half; - - if (new_from < 0) { - new_from = 0; - new_to = new_from + full; - } - - if (new_to > 100) { - new_to = 100; - new_from = new_to - full; - } - - this.coords.p_from_real = this.calcWithStep(new_from); - this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); - this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); - - this.coords.p_to_real = this.calcWithStep(new_to); - this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); - this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); - - break; - } - - if (this.options.type === "single") { - this.coords.p_bar_x = (this.coords.p_handle / 2); - this.coords.p_bar_w = this.coords.p_single_fake; - - this.result.from_percent = this.coords.p_single_real; - this.result.from = this.convertToValue(this.coords.p_single_real); - this.result.from_pretty = this._prettify(this.result.from); - - if (this.options.values.length) { - this.result.from_value = this.options.values[this.result.from]; - } - } else { - this.coords.p_bar_x = this.toFixed(this.coords.p_from_fake + (this.coords.p_handle / 2)); - this.coords.p_bar_w = this.toFixed(this.coords.p_to_fake - this.coords.p_from_fake); - - this.result.from_percent = this.coords.p_from_real; - this.result.from = this.convertToValue(this.coords.p_from_real); - this.result.from_pretty = this._prettify(this.result.from); - this.result.to_percent = this.coords.p_to_real; - this.result.to = this.convertToValue(this.coords.p_to_real); - this.result.to_pretty = this._prettify(this.result.to); - - if (this.options.values.length) { - this.result.from_value = this.options.values[this.result.from]; - this.result.to_value = this.options.values[this.result.to]; - } - } - - this.calcMinMax(); - this.calcLabels(); - }, - - - /** - * calculates pointer X in percent - */ - calcPointerPercent: function () { - if (!this.coords.w_rs) { - this.coords.p_pointer = 0; - return; - } - - if (this.coords.x_pointer < 0 || isNaN(this.coords.x_pointer) ) { - this.coords.x_pointer = 0; - } else if (this.coords.x_pointer > this.coords.w_rs) { - this.coords.x_pointer = this.coords.w_rs; - } - - this.coords.p_pointer = this.toFixed(this.coords.x_pointer / this.coords.w_rs * 100); - }, - - convertToRealPercent: function (fake) { - var full = 100 - this.coords.p_handle; - return fake / full * 100; - }, - - convertToFakePercent: function (real) { - var full = 100 - this.coords.p_handle; - return real / 100 * full; - }, - - getHandleX: function () { - var max = 100 - this.coords.p_handle, - x = this.toFixed(this.coords.p_pointer - this.coords.p_gap); - - if (x < 0) { - x = 0; - } else if (x > max) { - x = max; - } - - return x; - }, - - calcHandlePercent: function () { - if (this.options.type === "single") { - this.coords.w_handle = this.$cache.s_single.outerWidth(false); - } else { - this.coords.w_handle = this.$cache.s_from.outerWidth(false); - } - - this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100); - }, - - /** - * Find closest handle to pointer click - * - * @param real_x {Number} - * @returns {String} - */ - chooseHandle: function (real_x) { - if (this.options.type === "single") { - return "single"; - } else { - var m_point = this.coords.p_from_real + ((this.coords.p_to_real - this.coords.p_from_real) / 2); - if (real_x >= m_point) { - return this.options.to_fixed ? "from" : "to"; - } else { - return this.options.from_fixed ? "to" : "from"; - } - } - }, - - /** - * Measure Min and Max labels width in percent - */ - calcMinMax: function () { - if (!this.coords.w_rs) { - return; - } - - this.labels.p_min = this.labels.w_min / this.coords.w_rs * 100; - this.labels.p_max = this.labels.w_max / this.coords.w_rs * 100; - }, - - /** - * Measure labels width and X in percent - */ - calcLabels: function () { - if (!this.coords.w_rs || this.options.hide_from_to) { - return; - } - - if (this.options.type === "single") { - - this.labels.w_single = this.$cache.single.outerWidth(false); - this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100; - this.labels.p_single_left = this.coords.p_single_fake + (this.coords.p_handle / 2) - (this.labels.p_single_fake / 2); - this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake); - - } else { - - this.labels.w_from = this.$cache.from.outerWidth(false); - this.labels.p_from_fake = this.labels.w_from / this.coords.w_rs * 100; - this.labels.p_from_left = this.coords.p_from_fake + (this.coords.p_handle / 2) - (this.labels.p_from_fake / 2); - this.labels.p_from_left = this.toFixed(this.labels.p_from_left); - this.labels.p_from_left = this.checkEdges(this.labels.p_from_left, this.labels.p_from_fake); - - this.labels.w_to = this.$cache.to.outerWidth(false); - this.labels.p_to_fake = this.labels.w_to / this.coords.w_rs * 100; - this.labels.p_to_left = this.coords.p_to_fake + (this.coords.p_handle / 2) - (this.labels.p_to_fake / 2); - this.labels.p_to_left = this.toFixed(this.labels.p_to_left); - this.labels.p_to_left = this.checkEdges(this.labels.p_to_left, this.labels.p_to_fake); - - this.labels.w_single = this.$cache.single.outerWidth(false); - this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100; - this.labels.p_single_left = ((this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to_fake) / 2) - (this.labels.p_single_fake / 2); - this.labels.p_single_left = this.toFixed(this.labels.p_single_left); - this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake); - - } - }, - - - - // ============================================================================================================= - // Drawings - - /** - * Main function called in request animation frame - * to update everything - */ - updateScene: function () { - if (this.raf_id) { - cancelAnimationFrame(this.raf_id); - this.raf_id = null; - } - - clearTimeout(this.update_tm); - this.update_tm = null; - - if (!this.options) { - return; - } - - this.drawHandles(); - - if (this.is_active) { - this.raf_id = requestAnimationFrame(this.updateScene.bind(this)); - } else { - this.update_tm = setTimeout(this.updateScene.bind(this), 300); - } - }, - - /** - * Draw handles - */ - drawHandles: function () { - this.coords.w_rs = this.$cache.rs.outerWidth(false); - - if (!this.coords.w_rs) { - return; - } - - if (this.coords.w_rs !== this.coords.w_rs_old) { - this.target = "base"; - this.is_resize = true; - } - - if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) { - this.setMinMax(); - this.calc(true); - this.drawLabels(); - if (this.options.grid) { - this.calcGridMargin(); - this.calcGridLabels(); - } - this.force_redraw = true; - this.coords.w_rs_old = this.coords.w_rs; - this.drawShadow(); - } - - if (!this.coords.w_rs) { - return; - } - - if (!this.dragging && !this.force_redraw && !this.is_key) { - return; - } - - if (this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key) { - - this.drawLabels(); - - this.$cache.bar[0].style.left = this.coords.p_bar_x + "%"; - this.$cache.bar[0].style.width = this.coords.p_bar_w + "%"; - - if (this.options.type === "single") { - this.$cache.bar[0].style.left = 0; - this.$cache.bar[0].style.width = this.coords.p_bar_w + this.coords.p_bar_x + "%"; - - this.$cache.s_single[0].style.left = this.coords.p_single_fake + "%"; - - this.$cache.single[0].style.left = this.labels.p_single_left + "%"; - } else { - this.$cache.s_from[0].style.left = this.coords.p_from_fake + "%"; - this.$cache.s_to[0].style.left = this.coords.p_to_fake + "%"; - - if (this.old_from !== this.result.from || this.force_redraw) { - this.$cache.from[0].style.left = this.labels.p_from_left + "%"; - } - if (this.old_to !== this.result.to || this.force_redraw) { - this.$cache.to[0].style.left = this.labels.p_to_left + "%"; - } - - this.$cache.single[0].style.left = this.labels.p_single_left + "%"; - } - - this.writeToInput(); - - if ((this.old_from !== this.result.from || this.old_to !== this.result.to) && !this.is_start) { - this.$cache.input.trigger("change"); - this.$cache.input.trigger("input"); - } - - this.old_from = this.result.from; - this.old_to = this.result.to; - - // callbacks call - if (!this.is_resize && !this.is_update && !this.is_start && !this.is_finish) { - this.callOnChange(); - } - if (this.is_key || this.is_click) { - this.is_key = false; - this.is_click = false; - this.callOnFinish(); - } - - this.is_update = false; - this.is_resize = false; - this.is_finish = false; - } - - this.is_start = false; - this.is_key = false; - this.is_click = false; - this.force_redraw = false; - }, - - /** - * Draw labels - * measure labels collisions - * collapse close labels - */ - drawLabels: function () { - if (!this.options) { - return; - } - - var values_num = this.options.values.length; - var p_values = this.options.p_values; - var text_single; - var text_from; - var text_to; - var from_pretty; - var to_pretty; - - if (this.options.hide_from_to) { - return; - } - - if (this.options.type === "single") { - - if (values_num) { - text_single = this.decorate(p_values[this.result.from]); - this.$cache.single.html(text_single); - } else { - from_pretty = this._prettify(this.result.from); - - text_single = this.decorate(from_pretty, this.result.from); - this.$cache.single.html(text_single); - } - - this.calcLabels(); - - if (this.labels.p_single_left < this.labels.p_min + 1) { - this.$cache.min[0].style.visibility = "hidden"; - } else { - this.$cache.min[0].style.visibility = "visible"; - } - - if (this.labels.p_single_left + this.labels.p_single_fake > 100 - this.labels.p_max - 1) { - this.$cache.max[0].style.visibility = "hidden"; - } else { - this.$cache.max[0].style.visibility = "visible"; - } - - } else { - - if (values_num) { - - if (this.options.decorate_both) { - text_single = this.decorate(p_values[this.result.from]); - text_single += this.options.values_separator; - text_single += this.decorate(p_values[this.result.to]); - } else { - text_single = this.decorate(p_values[this.result.from] + this.options.values_separator + p_values[this.result.to]); - } - text_from = this.decorate(p_values[this.result.from]); - text_to = this.decorate(p_values[this.result.to]); - - this.$cache.single.html(text_single); - this.$cache.from.html(text_from); - this.$cache.to.html(text_to); - - } else { - from_pretty = this._prettify(this.result.from); - to_pretty = this._prettify(this.result.to); - - if (this.options.decorate_both) { - text_single = this.decorate(from_pretty, this.result.from); - text_single += this.options.values_separator; - text_single += this.decorate(to_pretty, this.result.to); - } else { - text_single = this.decorate(from_pretty + this.options.values_separator + to_pretty, this.result.to); - } - text_from = this.decorate(from_pretty, this.result.from); - text_to = this.decorate(to_pretty, this.result.to); - - this.$cache.single.html(text_single); - this.$cache.from.html(text_from); - this.$cache.to.html(text_to); - - } - - this.calcLabels(); - - var min = Math.min(this.labels.p_single_left, this.labels.p_from_left), - single_left = this.labels.p_single_left + this.labels.p_single_fake, - to_left = this.labels.p_to_left + this.labels.p_to_fake, - max = Math.max(single_left, to_left); - - if (this.labels.p_from_left + this.labels.p_from_fake >= this.labels.p_to_left) { - this.$cache.from[0].style.visibility = "hidden"; - this.$cache.to[0].style.visibility = "hidden"; - this.$cache.single[0].style.visibility = "visible"; - - if (this.result.from === this.result.to) { - if (this.target === "from") { - this.$cache.from[0].style.visibility = "visible"; - } else if (this.target === "to") { - this.$cache.to[0].style.visibility = "visible"; - } else if (!this.target) { - this.$cache.from[0].style.visibility = "visible"; - } - this.$cache.single[0].style.visibility = "hidden"; - max = to_left; - } else { - this.$cache.from[0].style.visibility = "hidden"; - this.$cache.to[0].style.visibility = "hidden"; - this.$cache.single[0].style.visibility = "visible"; - max = Math.max(single_left, to_left); - } - } else { - this.$cache.from[0].style.visibility = "visible"; - this.$cache.to[0].style.visibility = "visible"; - this.$cache.single[0].style.visibility = "hidden"; - } - - if (min < this.labels.p_min + 1) { - this.$cache.min[0].style.visibility = "hidden"; - } else { - this.$cache.min[0].style.visibility = "visible"; - } - - if (max > 100 - this.labels.p_max - 1) { - this.$cache.max[0].style.visibility = "hidden"; - } else { - this.$cache.max[0].style.visibility = "visible"; - } - - } - }, - - /** - * Draw shadow intervals - */ - drawShadow: function () { - var o = this.options, - c = this.$cache, - - is_from_min = typeof o.from_min === "number" && !isNaN(o.from_min), - is_from_max = typeof o.from_max === "number" && !isNaN(o.from_max), - is_to_min = typeof o.to_min === "number" && !isNaN(o.to_min), - is_to_max = typeof o.to_max === "number" && !isNaN(o.to_max), - - from_min, - from_max, - to_min, - to_max; - - if (o.type === "single") { - if (o.from_shadow && (is_from_min || is_from_max)) { - from_min = this.convertToPercent(is_from_min ? o.from_min : o.min); - from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min; - from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min)); - from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max)); - from_min = from_min + (this.coords.p_handle / 2); - - c.shad_single[0].style.display = "block"; - c.shad_single[0].style.left = from_min + "%"; - c.shad_single[0].style.width = from_max + "%"; - } else { - c.shad_single[0].style.display = "none"; - } - } else { - if (o.from_shadow && (is_from_min || is_from_max)) { - from_min = this.convertToPercent(is_from_min ? o.from_min : o.min); - from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min; - from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min)); - from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max)); - from_min = from_min + (this.coords.p_handle / 2); - - c.shad_from[0].style.display = "block"; - c.shad_from[0].style.left = from_min + "%"; - c.shad_from[0].style.width = from_max + "%"; - } else { - c.shad_from[0].style.display = "none"; - } - - if (o.to_shadow && (is_to_min || is_to_max)) { - to_min = this.convertToPercent(is_to_min ? o.to_min : o.min); - to_max = this.convertToPercent(is_to_max ? o.to_max : o.max) - to_min; - to_min = this.toFixed(to_min - (this.coords.p_handle / 100 * to_min)); - to_max = this.toFixed(to_max - (this.coords.p_handle / 100 * to_max)); - to_min = to_min + (this.coords.p_handle / 2); - - c.shad_to[0].style.display = "block"; - c.shad_to[0].style.left = to_min + "%"; - c.shad_to[0].style.width = to_max + "%"; - } else { - c.shad_to[0].style.display = "none"; - } - } - }, - - - - /** - * Write values to input element - */ - writeToInput: function () { - if (this.options.type === "single") { - if (this.options.values.length) { - this.$cache.input.prop("value", this.result.from_value); - } else { - this.$cache.input.prop("value", this.result.from); - } - this.$cache.input.data("from", this.result.from); - } else { - if (this.options.values.length) { - this.$cache.input.prop("value", this.result.from_value + this.options.input_values_separator + this.result.to_value); - } else { - this.$cache.input.prop("value", this.result.from + this.options.input_values_separator + this.result.to); - } - this.$cache.input.data("from", this.result.from); - this.$cache.input.data("to", this.result.to); - } - }, - - - - // ============================================================================================================= - // Callbacks - - callOnStart: function () { - this.writeToInput(); - - if (this.options.onStart && typeof this.options.onStart === "function") { - if (this.options.scope) { - this.options.onStart.call(this.options.scope, this.result); - } else { - this.options.onStart(this.result); - } - } - }, - callOnChange: function () { - this.writeToInput(); - - if (this.options.onChange && typeof this.options.onChange === "function") { - if (this.options.scope) { - this.options.onChange.call(this.options.scope, this.result); - } else { - this.options.onChange(this.result); - } - } - }, - callOnFinish: function () { - this.writeToInput(); - - if (this.options.onFinish && typeof this.options.onFinish === "function") { - if (this.options.scope) { - this.options.onFinish.call(this.options.scope, this.result); - } else { - this.options.onFinish(this.result); - } - } - }, - callOnUpdate: function () { - this.writeToInput(); - - if (this.options.onUpdate && typeof this.options.onUpdate === "function") { - if (this.options.scope) { - this.options.onUpdate.call(this.options.scope, this.result); - } else { - this.options.onUpdate(this.result); - } - } - }, - - - - - // ============================================================================================================= - // Service methods - - toggleInput: function () { - this.$cache.input.toggleClass("irs-hidden-input"); - - if (this.has_tab_index) { - this.$cache.input.prop("tabindex", -1); - } else { - this.$cache.input.removeProp("tabindex"); - } - - this.has_tab_index = !this.has_tab_index; - }, - - /** - * Convert real value to percent - * - * @param value {Number} X in real - * @param no_min {boolean=} don't use min value - * @returns {Number} X in percent - */ - convertToPercent: function (value, no_min) { - var diapason = this.options.max - this.options.min, - one_percent = diapason / 100, - val, percent; - - if (!diapason) { - this.no_diapason = true; - return 0; - } - - if (no_min) { - val = value; - } else { - val = value - this.options.min; - } - - percent = val / one_percent; - - return this.toFixed(percent); - }, - - /** - * Convert percent to real values - * - * @param percent {Number} X in percent - * @returns {Number} X in real - */ - convertToValue: function (percent) { - var min = this.options.min, - max = this.options.max, - min_decimals = min.toString().split(".")[1], - max_decimals = max.toString().split(".")[1], - min_length, max_length, - avg_decimals = 0, - abs = 0; - - if (percent === 0) { - return this.options.min; - } - if (percent === 100) { - return this.options.max; - } - - - if (min_decimals) { - min_length = min_decimals.length; - avg_decimals = min_length; - } - if (max_decimals) { - max_length = max_decimals.length; - avg_decimals = max_length; - } - if (min_length && max_length) { - avg_decimals = (min_length >= max_length) ? min_length : max_length; - } - - if (min < 0) { - abs = Math.abs(min); - min = +(min + abs).toFixed(avg_decimals); - max = +(max + abs).toFixed(avg_decimals); - } - - var number = ((max - min) / 100 * percent) + min, - string = this.options.step.toString().split(".")[1], - result; - - if (string) { - number = +number.toFixed(string.length); - } else { - number = number / this.options.step; - number = number * this.options.step; - - number = +number.toFixed(0); - } - - if (abs) { - number -= abs; - } - - if (string) { - result = +number.toFixed(string.length); - } else { - result = this.toFixed(number); - } - - if (result < this.options.min) { - result = this.options.min; - } else if (result > this.options.max) { - result = this.options.max; - } - - return result; - }, - - /** - * Round percent value with step - * - * @param percent {Number} - * @returns percent {Number} rounded - */ - calcWithStep: function (percent) { - var rounded = Math.round(percent / this.coords.p_step) * this.coords.p_step; - - if (rounded > 100) { - rounded = 100; - } - if (percent === 100) { - rounded = 100; - } - - return this.toFixed(rounded); - }, - - checkMinInterval: function (p_current, p_next, type) { - var o = this.options, - current, - next; - - if (!o.min_interval) { - return p_current; - } - - current = this.convertToValue(p_current); - next = this.convertToValue(p_next); - - if (type === "from") { - - if (next - current < o.min_interval) { - current = next - o.min_interval; - } - - } else { - - if (current - next < o.min_interval) { - current = next + o.min_interval; - } - - } - - return this.convertToPercent(current); - }, - - checkMaxInterval: function (p_current, p_next, type) { - var o = this.options, - current, - next; - - if (!o.max_interval) { - return p_current; - } - - current = this.convertToValue(p_current); - next = this.convertToValue(p_next); - - if (type === "from") { - - if (next - current > o.max_interval) { - current = next - o.max_interval; - } - - } else { - - if (current - next > o.max_interval) { - current = next + o.max_interval; - } - - } - - return this.convertToPercent(current); - }, - - checkDiapason: function (p_num, min, max) { - var num = this.convertToValue(p_num), - o = this.options; - - if (typeof min !== "number") { - min = o.min; - } - - if (typeof max !== "number") { - max = o.max; - } - - if (num < min) { - num = min; - } - - if (num > max) { - num = max; - } - - return this.convertToPercent(num); - }, - - toFixed: function (num) { - num = num.toFixed(20); - return +num; - }, - - _prettify: function (num) { - if (!this.options.prettify_enabled) { - return num; - } - - if (this.options.prettify && typeof this.options.prettify === "function") { - return this.options.prettify(num); - } else { - return this.prettify(num); - } - }, - - prettify: function (num) { - var n = num.toString(); - return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + this.options.prettify_separator); - }, - - checkEdges: function (left, width) { - if (!this.options.force_edges) { - return this.toFixed(left); - } - - if (left < 0) { - left = 0; - } else if (left > 100 - width) { - left = 100 - width; - } - - return this.toFixed(left); - }, - - validate: function () { - var o = this.options, - r = this.result, - v = o.values, - vl = v.length, - value, - i; - - if (typeof o.min === "string") o.min = +o.min; - if (typeof o.max === "string") o.max = +o.max; - if (typeof o.from === "string") o.from = +o.from; - if (typeof o.to === "string") o.to = +o.to; - if (typeof o.step === "string") o.step = +o.step; - - if (typeof o.from_min === "string") o.from_min = +o.from_min; - if (typeof o.from_max === "string") o.from_max = +o.from_max; - if (typeof o.to_min === "string") o.to_min = +o.to_min; - if (typeof o.to_max === "string") o.to_max = +o.to_max; - - if (typeof o.grid_num === "string") o.grid_num = +o.grid_num; - - if (o.max < o.min) { - o.max = o.min; - } - - if (vl) { - o.p_values = []; - o.min = 0; - o.max = vl - 1; - o.step = 1; - o.grid_num = o.max; - o.grid_snap = true; - - for (i = 0; i < vl; i++) { - value = +v[i]; - - if (!isNaN(value)) { - v[i] = value; - value = this._prettify(value); - } else { - value = v[i]; - } - - o.p_values.push(value); - } - } - - if (typeof o.from !== "number" || isNaN(o.from)) { - o.from = o.min; - } - - if (typeof o.to !== "number" || isNaN(o.to)) { - o.to = o.max; - } - - if (o.type === "single") { - - if (o.from < o.min) o.from = o.min; - if (o.from > o.max) o.from = o.max; - - } else { - - if (o.from < o.min) o.from = o.min; - if (o.from > o.max) o.from = o.max; - - if (o.to < o.min) o.to = o.min; - if (o.to > o.max) o.to = o.max; - - if (this.update_check.from) { - - if (this.update_check.from !== o.from) { - if (o.from > o.to) o.from = o.to; - } - if (this.update_check.to !== o.to) { - if (o.to < o.from) o.to = o.from; - } - - } - - if (o.from > o.to) o.from = o.to; - if (o.to < o.from) o.to = o.from; - - } - - if (typeof o.step !== "number" || isNaN(o.step) || !o.step || o.step < 0) { - o.step = 1; - } - - if (typeof o.from_min === "number" && o.from < o.from_min) { - o.from = o.from_min; - } - - if (typeof o.from_max === "number" && o.from > o.from_max) { - o.from = o.from_max; - } - - if (typeof o.to_min === "number" && o.to < o.to_min) { - o.to = o.to_min; - } - - if (typeof o.to_max === "number" && o.from > o.to_max) { - o.to = o.to_max; - } - - if (r) { - if (r.min !== o.min) { - r.min = o.min; - } - - if (r.max !== o.max) { - r.max = o.max; - } - - if (r.from < r.min || r.from > r.max) { - r.from = o.from; - } - - if (r.to < r.min || r.to > r.max) { - r.to = o.to; - } - } - - if (typeof o.min_interval !== "number" || isNaN(o.min_interval) || !o.min_interval || o.min_interval < 0) { - o.min_interval = 0; - } - - if (typeof o.max_interval !== "number" || isNaN(o.max_interval) || !o.max_interval || o.max_interval < 0) { - o.max_interval = 0; - } - - if (o.min_interval && o.min_interval > o.max - o.min) { - o.min_interval = o.max - o.min; - } - - if (o.max_interval && o.max_interval > o.max - o.min) { - o.max_interval = o.max - o.min; - } - }, - - decorate: function (num, original) { - var decorated = "", - o = this.options; - - if (o.prefix) { - decorated += o.prefix; - } - - decorated += num; - - if (o.max_postfix) { - if (o.values.length && num === o.p_values[o.max]) { - decorated += o.max_postfix; - if (o.postfix) { - decorated += " "; - } - } else if (original === o.max) { - decorated += o.max_postfix; - if (o.postfix) { - decorated += " "; - } - } - } - - if (o.postfix) { - decorated += o.postfix; - } - - return decorated; - }, - - updateFrom: function () { - this.result.from = this.options.from; - this.result.from_percent = this.convertToPercent(this.result.from); - this.result.from_pretty = this._prettify(this.result.from); - if (this.options.values) { - this.result.from_value = this.options.values[this.result.from]; - } - }, - - updateTo: function () { - this.result.to = this.options.to; - this.result.to_percent = this.convertToPercent(this.result.to); - this.result.to_pretty = this._prettify(this.result.to); - if (this.options.values) { - this.result.to_value = this.options.values[this.result.to]; - } - }, - - updateResult: function () { - this.result.min = this.options.min; - this.result.max = this.options.max; - this.updateFrom(); - this.updateTo(); - }, - - - // ============================================================================================================= - // Grid - - appendGrid: function () { - if (!this.options.grid) { - return; - } - - var o = this.options, - i, z, - - total = o.max - o.min, - big_num = o.grid_num, - big_p = 0, - big_w = 0, - - small_max = 4, - local_small_max, - small_p, - small_w = 0, - - result, - html = ''; - - - - this.calcGridMargin(); - - if (o.grid_snap) { - big_num = total / o.step; - } - - if (big_num > 50) big_num = 50; - big_p = this.toFixed(100 / big_num); - - if (big_num > 4) { - small_max = 3; - } - if (big_num > 7) { - small_max = 2; - } - if (big_num > 14) { - small_max = 1; - } - if (big_num > 28) { - small_max = 0; - } - - for (i = 0; i < big_num + 1; i++) { - local_small_max = small_max; - - big_w = this.toFixed(big_p * i); - - if (big_w > 100) { - big_w = 100; - } - this.coords.big[i] = big_w; - - small_p = (big_w - (big_p * (i - 1))) / (local_small_max + 1); - - for (z = 1; z <= local_small_max; z++) { - if (big_w === 0) { - break; - } - - small_w = this.toFixed(big_w - (small_p * z)); - - html += ''; - } - - html += ''; - - result = this.convertToValue(big_w); - if (o.values.length) { - result = o.p_values[result]; - } else { - result = this._prettify(result); - } - - html += '' + result + ''; - } - this.coords.big_num = Math.ceil(big_num + 1); - - - - this.$cache.cont.addClass("irs-with-grid"); - this.$cache.grid.html(html); - this.cacheGridLabels(); - }, - - cacheGridLabels: function () { - var $label, i, - num = this.coords.big_num; - - for (i = 0; i < num; i++) { - $label = this.$cache.grid.find(".js-grid-text-" + i); - this.$cache.grid_labels.push($label); - } - - this.calcGridLabels(); - }, - - calcGridLabels: function () { - var i, label, start = [], finish = [], - num = this.coords.big_num; - - for (i = 0; i < num; i++) { - this.coords.big_w[i] = this.$cache.grid_labels[i].outerWidth(false); - this.coords.big_p[i] = this.toFixed(this.coords.big_w[i] / this.coords.w_rs * 100); - this.coords.big_x[i] = this.toFixed(this.coords.big_p[i] / 2); - - start[i] = this.toFixed(this.coords.big[i] - this.coords.big_x[i]); - finish[i] = this.toFixed(start[i] + this.coords.big_p[i]); - } - - if (this.options.force_edges) { - if (start[0] < -this.coords.grid_gap) { - start[0] = -this.coords.grid_gap; - finish[0] = this.toFixed(start[0] + this.coords.big_p[0]); - - this.coords.big_x[0] = this.coords.grid_gap; - } - - if (finish[num - 1] > 100 + this.coords.grid_gap) { - finish[num - 1] = 100 + this.coords.grid_gap; - start[num - 1] = this.toFixed(finish[num - 1] - this.coords.big_p[num - 1]); - - this.coords.big_x[num - 1] = this.toFixed(this.coords.big_p[num - 1] - this.coords.grid_gap); - } - } - - this.calcGridCollision(2, start, finish); - this.calcGridCollision(4, start, finish); - - for (i = 0; i < num; i++) { - label = this.$cache.grid_labels[i][0]; - - if (this.coords.big_x[i] !== Number.POSITIVE_INFINITY) { - label.style.marginLeft = -this.coords.big_x[i] + "%"; - } - } - }, - - // Collisions Calc Beta - // TODO: Refactor then have plenty of time - calcGridCollision: function (step, start, finish) { - var i, next_i, label, - num = this.coords.big_num; - - for (i = 0; i < num; i += step) { - next_i = i + (step / 2); - if (next_i >= num) { - break; - } - - label = this.$cache.grid_labels[next_i][0]; - - if (finish[i] <= start[next_i]) { - label.style.visibility = "visible"; - } else { - label.style.visibility = "hidden"; - } - } - }, - - calcGridMargin: function () { - if (!this.options.grid_margin) { - return; - } - - this.coords.w_rs = this.$cache.rs.outerWidth(false); - if (!this.coords.w_rs) { - return; - } - - if (this.options.type === "single") { - this.coords.w_handle = this.$cache.s_single.outerWidth(false); - } else { - this.coords.w_handle = this.$cache.s_from.outerWidth(false); - } - this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100); - this.coords.grid_gap = this.toFixed((this.coords.p_handle / 2) - 0.1); - - this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + "%"; - this.$cache.grid[0].style.left = this.coords.grid_gap + "%"; - }, - - - - // ============================================================================================================= - // Public methods - - update: function (options) { - if (!this.input) { - return; - } - - this.is_update = true; - - this.options.from = this.result.from; - this.options.to = this.result.to; - this.update_check.from = this.result.from; - this.update_check.to = this.result.to; - - this.options = $.extend(this.options, options); - this.validate(); - this.updateResult(options); - - this.toggleInput(); - this.remove(); - this.init(true); - }, - - reset: function () { - if (!this.input) { - return; - } - - this.updateResult(); - this.update(); - }, - - destroy: function () { - if (!this.input) { - return; - } - - this.toggleInput(); - this.$cache.input.prop("readonly", false); - $.data(this.input, "ionRangeSlider", null); - - this.remove(); - this.input = null; - this.options = null; - } - }; - - $.fn.ionRangeSlider = function (options) { - return this.each(function() { - if (!$.data(this, "ionRangeSlider")) { - $.data(this, "ionRangeSlider", new IonRangeSlider(this, options, plugin_count++)); - } - }); - }; - - - - // ================================================================================================================= - // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ - // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - - // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel - - // MIT license - - (function() { - var lastTime = 0; - var vendors = ['ms', 'moz', 'webkit', 'o']; - for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { - window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; - window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] - || window[vendors[x]+'CancelRequestAnimationFrame']; - } - - if (!window.requestAnimationFrame) - window.requestAnimationFrame = function(callback, element) { - var currTime = new Date().getTime(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = window.setTimeout(function() { callback(currTime + timeToCall); }, - timeToCall); - lastTime = currTime + timeToCall; - return id; - }; - - if (!window.cancelAnimationFrame) - window.cancelAnimationFrame = function(id) { - clearTimeout(id); - }; - }()); - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.min.js deleted file mode 100644 index 35f8e68..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// Ion.RangeSlider, 2.3.0, © Denis Ineshin, 2010 - 2018, IonDen.com, Build date: 2018-12-11 23:11:14 -!function(i){!jQuery&&"function"==typeof define&&define.amd?define(["jquery"],function(t){return i(t,document,window,navigator)}):jQuery||"object"!=typeof exports?i(jQuery,document,window,navigator):i(require("jquery"),document,window,navigator)}(function(a,c,l,t,_){"use strict";var i,s,o=0,e=(i=t.userAgent,s=/msie\s\d+/i,0>>0;if(0===e)return-1;var h=+i||0;if(Math.abs(h)===1/0&&(h=0),e<=h)return-1;for(s=Math.max(0<=h?h:e-Math.abs(h),0);s!",r[0]),(e={skin:r.data("skin"),type:r.data("type"),min:r.data("min"),max:r.data("max"),from:r.data("from"),to:r.data("to"),step:r.data("step"),min_interval:r.data("minInterval"),max_interval:r.data("maxInterval"),drag_interval:r.data("dragInterval"),values:r.data("values"),from_fixed:r.data("fromFixed"),from_min:r.data("fromMin"),from_max:r.data("fromMax"),from_shadow:r.data("fromShadow"),to_fixed:r.data("toFixed"),to_min:r.data("toMin"),to_max:r.data("toMax"),to_shadow:r.data("toShadow"),prettify_enabled:r.data("prettifyEnabled"),prettify_separator:r.data("prettifySeparator"),force_edges:r.data("forceEdges"),keyboard:r.data("keyboard"),grid:r.data("grid"),grid_margin:r.data("gridMargin"),grid_num:r.data("gridNum"),grid_snap:r.data("gridSnap"),hide_min_max:r.data("hideMinMax"),hide_from_to:r.data("hideFromTo"),prefix:r.data("prefix"),postfix:r.data("postfix"),max_postfix:r.data("maxPostfix"),decorate_both:r.data("decorateBoth"),values_separator:r.data("valuesSeparator"),input_values_separator:r.data("inputValuesSeparator"),disable:r.data("disable"),block:r.data("block"),extra_classes:r.data("extraClasses")}).values=e.values&&e.values.split(","),e)e.hasOwnProperty(h)&&(e[h]!==_&&""!==e[h]||delete e[h]);n!==_&&""!==n&&((n=n.split(e.input_values_separator||i.input_values_separator||";"))[0]&&n[0]==+n[0]&&(n[0]=+n[0]),n[1]&&n[1]==+n[1]&&(n[1]=+n[1]),i&&i.values&&i.values.length?(o.from=n[0]&&i.values.indexOf(n[0]),o.to=n[1]&&i.values.indexOf(n[1])):(o.from=n[0]&&+n[0],o.to=n[1]&&+n[1])),a.extend(o,i),a.extend(o,e),this.options=o,this.update_check={},this.validate(),this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null},this.init()};h.prototype={init:function(t){this.no_diapason=!1,this.coords.p_step=this.convertToPercent(this.options.step,!0),this.target="base",this.toggleInput(),this.append(),this.setMinMax(),t?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart()),this.updateScene()},append:function(){var t='';this.$cache.input.before(t),this.$cache.input.prop("readonly",!0),this.$cache.cont=this.$cache.input.prev(),this.result.slider=this.$cache.cont,this.$cache.cont.html('01000'),this.$cache.rs=this.$cache.cont.find(".irs"),this.$cache.min=this.$cache.cont.find(".irs-min"),this.$cache.max=this.$cache.cont.find(".irs-max"),this.$cache.from=this.$cache.cont.find(".irs-from"),this.$cache.to=this.$cache.cont.find(".irs-to"),this.$cache.single=this.$cache.cont.find(".irs-single"),this.$cache.line=this.$cache.cont.find(".irs-line"),this.$cache.grid=this.$cache.cont.find(".irs-grid"),"single"===this.options.type?(this.$cache.cont.append(''),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append(''),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.s_from=this.$cache.cont.find(".from"),this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler()),this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none"),this.appendGrid(),this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.input[0].disabled=!1,this.removeDisableMask(),this.bindEvents()),this.options.disable||(this.options.block?this.appendDisableMask():this.removeDisableMask()),this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var t=this.options.min,i=this.options.max,s=this.options.from,o=this.options.to;t'),this.$cache.cont.addClass("irs-disabled")},removeDisableMask:function(){this.$cache.cont.remove(".irs-disable-mask"),this.$cache.cont.removeClass("irs-disabled")},remove:function(){this.$cache.cont.remove(),this.$cache.cont=null,this.$cache.line.off("keydown.irs_"+this.plugin_count),this.$cache.body.off("touchmove.irs_"+this.plugin_count),this.$cache.body.off("mousemove.irs_"+this.plugin_count),this.$cache.win.off("touchend.irs_"+this.plugin_count),this.$cache.win.off("mouseup.irs_"+this.plugin_count),e&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count)),this.$cache.grid_labels=[],this.coords.big=[],this.coords.big_w=[],this.coords.big_p=[],this.coords.big_x=[],cancelAnimationFrame(this.raf_id)},bindEvents:function(){this.no_diapason||(this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.body.on("mousemove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("focus.irs_"+this.plugin_count,this.pointerFocus.bind(this)),this.options.drag_interval&&"double"===this.options.type?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),"single"===this.options.type?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),this.options.keyboard&&this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard")),e&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this))))},pointerFocus:function(t){var i,s;this.target||(i=(s="single"===this.options.type?this.$cache.single:this.$cache.from).offset().left,i+=s.width()/2-1,this.pointerClick("single",{preventDefault:function(){},pageX:i}))},pointerMove:function(t){if(this.dragging){var i=t.pageX||t.originalEvent.touches&&t.originalEvent.touches[0].pageX;this.coords.x_pointer=i-this.coords.x_gap,this.calc()}},pointerUp:function(t){this.current_plugin===this.plugin_count&&this.is_active&&(this.is_active=!1,this.$cache.cont.find(".state_hover").removeClass("state_hover"),this.force_redraw=!0,e&&a("*").prop("unselectable",!1),this.updateScene(),this.restoreOriginalMinInterval(),(a.contains(this.$cache.cont[0],t.target)||this.dragging)&&this.callOnFinish(),this.dragging=!1)},pointerDown:function(t,i){i.preventDefault();var s=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;2!==i.button&&("both"===t&&this.setTempMinInterval(),t||(t=this.target||"from"),this.current_plugin=this.plugin_count,this.target=t,this.is_active=!0,this.dragging=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=s-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(t),e&&a("*").prop("unselectable",!0),this.$cache.line.trigger("focus"),this.updateScene())},pointerClick:function(t,i){i.preventDefault();var s=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;2!==i.button&&(this.current_plugin=this.plugin_count,this.target=t,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(s-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(t,i){if(!(this.current_plugin!==this.plugin_count||i.altKey||i.ctrlKey||i.shiftKey||i.metaKey)){switch(i.which){case 83:case 65:case 40:case 37:i.preventDefault(),this.moveByKey(!1);break;case 87:case 68:case 38:case 39:i.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(t){var i=this.coords.p_pointer,s=(this.options.max-this.options.min)/100;s=this.options.step/s,t?i+=s:i-=s,this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*i),this.is_key=!0,this.calc()},setMinMax:function(){if(this.options){if(this.options.hide_min_max)return this.$cache.min[0].style.display="none",void(this.$cache.max[0].style.display="none");if(this.options.values.length)this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));else{var t=this._prettify(this.options.min),i=this._prettify(this.options.max);this.result.min_pretty=t,this.result.max_pretty=i,this.$cache.min.html(this.decorate(t,this.options.min)),this.$cache.max.html(this.decorate(i,this.options.max))}this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)}},setTempMinInterval:function(){var t=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval),this.options.min_interval=t},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(t){if(this.options&&(this.calc_count++,(10===this.calc_count||t)&&(this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent()),this.coords.w_rs)){this.calcPointerPercent();var i=this.getHandleX();switch("both"===this.target&&(this.coords.p_gap=0,i=this.getHandleX()),"click"===this.target&&(this.coords.p_gap=this.coords.p_handle/2,i=this.getHandleX(),this.options.drag_interval?this.target="both_one":this.target=this.chooseHandle(i)),this.target){case"base":var s=(this.options.max-this.options.min)/100,o=(this.result.from-this.options.min)/s,e=(this.result.to-this.options.min)/s;this.coords.p_single_real=this.toFixed(o),this.coords.p_from_real=this.toFixed(o),this.coords.p_to_real=this.toFixed(e),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real),this.target=null;break;case"single":if(this.options.from_fixed)break;this.coords.p_single_real=this.convertToRealPercent(i),this.coords.p_single_real=this.calcWithStep(this.coords.p_single_real),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case"from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(i),this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real),this.coords.p_from_real>this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case"to":if(this.options.to_fixed)break;this.coords.p_to_real=this.convertToRealPercent(i),this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real),this.coords.p_to_realthis.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(t){return t/(100-this.coords.p_handle)*100},convertToFakePercent:function(t){return t/100*(100-this.coords.p_handle)},getHandleX:function(){var t=100-this.coords.p_handle,i=this.toFixed(this.coords.p_pointer-this.coords.p_gap);return i<0?i=0:t100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible";else{s=h?(this.options.decorate_both?(t=this.decorate(r[this.result.from]),t+=this.options.values_separator,t+=this.decorate(r[this.result.to])):t=this.decorate(r[this.result.from]+this.options.values_separator+r[this.result.to]),i=this.decorate(r[this.result.from]),this.decorate(r[this.result.to])):(o=this._prettify(this.result.from),e=this._prettify(this.result.to),this.options.decorate_both?(t=this.decorate(o,this.result.from),t+=this.options.values_separator,t+=this.decorate(e,this.result.to)):t=this.decorate(o+this.options.values_separator+e,this.result.to),i=this.decorate(o,this.result.from),this.decorate(e,this.result.to)),this.$cache.single.html(t),this.$cache.from.html(i),this.$cache.to.html(s),this.calcLabels();var n=Math.min(this.labels.p_single_left,this.labels.p_from_left),a=this.labels.p_single_left+this.labels.p_single_fake,c=this.labels.p_to_left+this.labels.p_to_fake,l=Math.max(a,c);this.labels.p_from_left+this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",l=this.result.from===this.result.to?("from"===this.target?this.$cache.from[0].style.visibility="visible":"to"===this.target?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",c):(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",Math.max(a,c))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden"),n100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible"}}},drawShadow:function(){var t,i,s,o,e=this.options,h=this.$cache,r="number"==typeof e.from_min&&!isNaN(e.from_min),n="number"==typeof e.from_max&&!isNaN(e.from_max),a="number"==typeof e.to_min&&!isNaN(e.to_min),c="number"==typeof e.to_max&&!isNaN(e.to_max);"single"===e.type?e.from_shadow&&(r||n)?(t=this.convertToPercent(r?e.from_min:e.min),i=this.convertToPercent(n?e.from_max:e.max)-t,t=this.toFixed(t-this.coords.p_handle/100*t),i=this.toFixed(i-this.coords.p_handle/100*i),t+=this.coords.p_handle/2,h.shad_single[0].style.display="block",h.shad_single[0].style.left=t+"%",h.shad_single[0].style.width=i+"%"):h.shad_single[0].style.display="none":(e.from_shadow&&(r||n)?(t=this.convertToPercent(r?e.from_min:e.min),i=this.convertToPercent(n?e.from_max:e.max)-t,t=this.toFixed(t-this.coords.p_handle/100*t),i=this.toFixed(i-this.coords.p_handle/100*i),t+=this.coords.p_handle/2,h.shad_from[0].style.display="block",h.shad_from[0].style.left=t+"%",h.shad_from[0].style.width=i+"%"):h.shad_from[0].style.display="none",e.to_shadow&&(a||c)?(s=this.convertToPercent(a?e.to_min:e.min),o=this.convertToPercent(c?e.to_max:e.max)-s,s=this.toFixed(s-this.coords.p_handle/100*s),o=this.toFixed(o-this.coords.p_handle/100*o),s+=this.coords.p_handle/2,h.shad_to[0].style.display="block",h.shad_to[0].style.left=s+"%",h.shad_to[0].style.width=o+"%"):h.shad_to[0].style.display="none")},writeToInput:function(){"single"===this.options.type?(this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from)):(this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to),this.$cache.input.data("from",this.result.from),this.$cache.input.data("to",this.result.to))},callOnStart:function(){this.writeToInput(),this.options.onStart&&"function"==typeof this.options.onStart&&(this.options.scope?this.options.onStart.call(this.options.scope,this.result):this.options.onStart(this.result))},callOnChange:function(){this.writeToInput(),this.options.onChange&&"function"==typeof this.options.onChange&&(this.options.scope?this.options.onChange.call(this.options.scope,this.result):this.options.onChange(this.result))},callOnFinish:function(){this.writeToInput(),this.options.onFinish&&"function"==typeof this.options.onFinish&&(this.options.scope?this.options.onFinish.call(this.options.scope,this.result):this.options.onFinish(this.result))},callOnUpdate:function(){this.writeToInput(),this.options.onUpdate&&"function"==typeof this.options.onUpdate&&(this.options.scope?this.options.onUpdate.call(this.options.scope,this.result):this.options.onUpdate(this.result))},toggleInput:function(){this.$cache.input.toggleClass("irs-hidden-input"),this.has_tab_index?this.$cache.input.prop("tabindex",-1):this.$cache.input.removeProp("tabindex"),this.has_tab_index=!this.has_tab_index},convertToPercent:function(t,i){var s,o=this.options.max-this.options.min,e=o/100;return o?(s=(i?t:t-this.options.min)/e,this.toFixed(s)):(this.no_diapason=!0,0)},convertToValue:function(t){var i,s,o=this.options.min,e=this.options.max,h=o.toString().split(".")[1],r=e.toString().split(".")[1],n=0,a=0;if(0===t)return this.options.min;if(100===t)return this.options.max;h&&(n=i=h.length),r&&(n=s=r.length),i&&s&&(n=s<=i?i:s),o<0&&(o=+(o+(a=Math.abs(o))).toFixed(n),e=+(e+a).toFixed(n));var c,l=(e-o)/100*t+o,_=this.options.step.toString().split(".")[1];return l=_?+l.toFixed(_.length):(l/=this.options.step,+(l*=this.options.step).toFixed(0)),a&&(l-=a),(c=_?+l.toFixed(_.length):this.toFixed(l))this.options.max&&(c=this.options.max),c},calcWithStep:function(t){var i=Math.round(t/this.coords.p_step)*this.coords.p_step;return 100h.max_interval&&(o=e-h.max_interval):o-e>h.max_interval&&(o=e+h.max_interval),this.convertToPercent(o)):t},checkDiapason:function(t,i,s){var o=this.convertToValue(t),e=this.options;return"number"!=typeof i&&(i=e.min),"number"!=typeof s&&(s=e.max),os.max&&(s.from=s.max)):(s.froms.max&&(s.from=s.max),s.tos.max&&(s.to=s.max),this.update_check.from&&(this.update_check.from!==s.from&&s.from>s.to&&(s.from=s.to),this.update_check.to!==s.to&&s.tos.to&&(s.from=s.to),s.tos.from_max&&(s.from=s.from_max),"number"==typeof s.to_min&&s.tos.to_max&&(s.to=s.to_max),o&&(o.min!==s.min&&(o.min=s.min),o.max!==s.max&&(o.max=s.max),(o.fromo.max)&&(o.from=s.from),(o.too.max)&&(o.to=s.to)),("number"!=typeof s.min_interval||isNaN(s.min_interval)||!s.min_interval||s.min_interval<0)&&(s.min_interval=0),("number"!=typeof s.max_interval||isNaN(s.max_interval)||!s.max_interval||s.max_interval<0)&&(s.max_interval=0),s.min_interval&&s.min_interval>s.max-s.min&&(s.min_interval=s.max-s.min),s.max_interval&&s.max_interval>s.max-s.min&&(s.max_interval=s.max-s.min)},decorate:function(t,i){var s="",o=this.options;return o.prefix&&(s+=o.prefix),s+=t,o.max_postfix&&(o.values.length&&t===o.p_values[o.max]?(s+=o.max_postfix,o.postfix&&(s+=" ")):i===o.max&&(s+=o.max_postfix,o.postfix&&(s+=" "))),o.postfix&&(s+=o.postfix),s},updateFrom:function(){this.result.from=this.options.from,this.result.from_percent=this.convertToPercent(this.result.from),this.result.from_pretty=this._prettify(this.result.from),this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to,this.result.to_percent=this.convertToPercent(this.result.to),this.result.to_pretty=this._prettify(this.result.to),this.options.values&&(this.result.to_value=this.options.values[this.result.to])},updateResult:function(){this.result.min=this.options.min,this.result.max=this.options.max,this.updateFrom(),this.updateTo()},appendGrid:function(){if(this.options.grid){var t,i,s,o,e,h,r=this.options,n=r.max-r.min,a=r.grid_num,c=0,l=4,_="";for(this.calcGridMargin(),r.grid_snap&&(a=n/r.step),50';_+='',h=this.convertToValue(c),_+=''+(h=r.values.length?r.p_values[h]:this._prettify(h))+""}this.coords.big_num=Math.ceil(a+1),this.$cache.cont.addClass("irs-with-grid"),this.$cache.grid.html(_),this.cacheGridLabels()}},cacheGridLabels:function(){var t,i,s=this.coords.big_num;for(i=0;i100+this.coords.grid_gap&&(o[e-1]=100+this.coords.grid_gap,s[e-1]=this.toFixed(o[e-1]-this.coords.big_p[e-1]),this.coords.big_x[e-1]=this.toFixed(this.coords.big_p[e-1]-this.coords.grid_gap))),this.calcGridCollision(2,s,o),this.calcGridCollision(4,s,o),t=0;t i:first-child { - position: absolute; - display: block; - top: 0; - left: 50%; - width: 2px; - height: 100%; - margin-left: -1px; - background-color: @handle_color_1; - } - - &.state_hover, - &:hover { - & > i:first-child { - background-color: @handle_color_2; - } - } - } - - .@{name}-min, - .@{name}-max { - top: 0; - padding: 1px 3px; - color: @minmax_text_color; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - background-color: @minmax_bg_color; - border-radius: @custom_radius; - } - - .@{name}-from, - .@{name}-to, - .@{name}-single { - color: @label_color_2; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background-color: @label_color_1; - border-radius: @custom_radius; - - &:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: @label_color_1; - } - } - - .@{name}-grid { - &-pol { - background-color: @grid_color_1; - } - - &-text { - color: @grid_color_2; - } - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/modern.less b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/modern.less deleted file mode 100644 index 0bc5748..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/modern.less +++ /dev/null @@ -1,165 +0,0 @@ -.irs--modern { - @name: irs; - - @top: 25px; - @bottom: 21px; - @line_height: 5px; - @handle_width: 12px; - @handle_height: 13px; - - @line_color: #d1d6e0; - @bar_color: #20b426; - @handle_color_1: #e9e6e6; - @handle_color_2: white; - @handle_color_3: black; - @minmax_text_color: white; - @minmax_bg_color: #d1d6e0; - @label_color_1: #20b426; - @label_color_2: white; - @grid_color_1: #dedede; - @grid_color_2: silver; - - - - height: 55px; - - &.irs-with-grid { - height: 55px; - } - - .@{name}-line { - top: @top; - height: @line_height; - background-color: @line_color; - background: linear-gradient(to bottom, lighten(@line_color, 5%) 0%, @line_color 100%); - border: 1px solid darken(@line_color, 15%); - border-bottom-width: 0; - border-radius: @line_height; - } - - .@{name}-bar { - top: @top; - height: @line_height; - background: @bar_color; - background: linear-gradient(to bottom, @bar_color 0%, darken(@bar_color, 10%) 100%); - - &--single { - border-radius: @line_height 0 0 @line_height; - } - } - - .@{name}-shadow { - height: 1px; - bottom: @bottom; - background-color: fade(@line_color, 50%); - } - - .@{name}-handle { - top: 37px; - width: @handle_width; - height: @handle_height; - border: 1px solid darken(@line_color, 15%); - border-top-width: 0; - box-shadow: 1px 1px 1px rgba(0,0,0,0.1); - border-radius: 0 0 3px 3px; - - & > i:nth-child(1) { - position: absolute; - display: block; - top: -4px; left: 1px; - width: (@handle_width - 6px); - height: (@handle_width - 6px); - border: 1px solid darken(@line_color, 15%); - background: @handle_color_2; - transform: rotate(45deg); - } - - & > i:nth-child(2) { - position: absolute; - display: block; - box-sizing: border-box; - top: 0; left: 0; - width: (@handle_width - 2); - height: (@handle_height - 1); - background: @handle_color_1; - background: linear-gradient(to bottom, @handle_color_2 0%, @handle_color_1 100%); - border-radius: 0 0 3px 3px; - } - - & > i:nth-child(3) { - position: absolute; - display: block; - box-sizing: border-box; - top: 3px; left: 3px; - width: 4px; height: 5px; - border-left: 1px solid darken(@line_color, 15%); - border-right: 1px solid darken(@line_color, 15%); - } - - &.state_hover, - &:hover { - border-color: darken(@line_color, 30%); - background: #c3c7cd; - background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(145,155,165,1) 30%,rgba(255,255,255,1) 100%); - - & > i:nth-child(1) { - border-color: darken(@line_color, 30%); - } - - & > i:nth-child(3) { - border-color: darken(@line_color, 50%); - } - } - } - - .@{name}-min, - .@{name}-max { - top: 0; - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - color: @minmax_text_color; - background-color: @minmax_bg_color; - border-radius: @line_height; - } - - .@{name}-from, - .@{name}-to, - .@{name}-single { - font-size: 10px; - line-height: 1.333; - text-shadow: none; - padding: 1px 5px; - background-color: @label_color_1; - color: @label_color_2; - border-radius: @line_height; - - &:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: @label_color_1; - } - } - - .@{name}-grid { - height: 25px; - - &-pol { - background-color: @grid_color_1; - } - - &-text { - color: @grid_color_2; - font-size: 13px; - } - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/round.less b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/round.less deleted file mode 100644 index deb547c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/round.less +++ /dev/null @@ -1,120 +0,0 @@ -// Skin design by Veaceslav Grimalschi -// https://github.com/grimalschi - -.irs--round { - @name: irs; - - @top: 36px; - @bottom: 21px; - @line_height: 4px; - @handle_width: 24px; - @handle_height: 24px; - - @line_color: #dee4ec; - @bar_color: #006cfa; - @handle_color_1: #006cfa; - @handle_color_2: white; - @handle_color_3: #f0f6ff; - @minmax_text_color: #333; - @minmax_bg_color: rgba(0,0,0,0.1); - @label_color_1: #006cfa; - @label_color_2: white; - @grid_color_1: #dedede; - @grid_color_2: silver; - - - - height: 50px; - - &.irs-with-grid { - height: 65px; - } - - .@{name}-line { - top: @top; - height: @line_height; - background-color: @line_color; - border-radius: @line_height; - } - - .@{name}-bar { - top: @top; - height: @line_height; - background-color: @bar_color; - - &--single { - border-radius: @line_height 0 0 @line_height; - } - } - - .@{name}-shadow { - height: 4px; - bottom: @bottom; - background-color: fade(@line_color, 50%); - } - - .@{name}-handle { - top: 26px; - width: @handle_width; - height: @handle_height; - border: 4px solid @handle_color_1; - background-color: @handle_color_2; - border-radius: @handle_width; - box-shadow: 0 1px 3px rgba(0, 0, 255, 0.3); - - &.state_hover, - &:hover { - background-color: @handle_color_3; - } - } - - .@{name}-min, - .@{name}-max { - color: @minmax_text_color; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 5px; - background-color: @minmax_bg_color; - border-radius: @line_height; - } - - .@{name}-from, - .@{name}-to, - .@{name}-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 5px; - background-color: @label_color_1; - color: @label_color_2; - border-radius: @line_height; - - &:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: @label_color_1; - } - } - - .@{name}-grid { - height: 25px; - - &-pol { - background-color: @grid_color_1; - } - - &-text { - color: @grid_color_2; - font-size: 13px; - } - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/sharp.less b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/sharp.less deleted file mode 100644 index 57fdde9..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/sharp.less +++ /dev/null @@ -1,132 +0,0 @@ -.irs--sharp { - @name: irs; - - @top: 30px; - @bottom: 21px; - @line_height: 2px; - @handle_width: 10px; - @handle_height: 10px; - - @line_color: black; - @bar_color: #ee22fa; - @handle_color_1: darken(#ee22fa, 20%); - @handle_color_2: white; - @handle_color_3: black; - @minmax_text_color: white; - @minmax_bg_color: darken(#ee22fa, 20%); - @label_color_1: darken(#ee22fa, 20%); - @label_color_2: white; - @grid_color_1: #dedede; - @grid_color_2: silver; - - - - height: 50px; - font-size: 12px; - line-height: 1; - - &.irs-with-grid { - height: 57px; - } - - .@{name}-line { - top: @top; - height: @line_height; - background-color: @line_color; - border-radius: @line_height; - } - - .@{name}-bar { - top: @top; - height: @line_height; - background-color: @bar_color; - - &--single { - border-radius: @line_height 0 0 @line_height; - } - } - - .@{name}-shadow { - height: 1px; - bottom: @bottom; - background-color: fade(@line_color, 50%); - } - - .@{name}-handle { - top: (@top - 5px); - width: @handle_width; - height: @handle_height; - background-color: @handle_color_1; - - & > i:first-child { - position: absolute; - display: block; - top: 100%; - left: 0; - width: 0; - height: 0; - border: 5px solid transparent; - border-top-color: @handle_color_1; - } - - &.state_hover, - &:hover { - background-color: @handle_color_3; - - & > i:first-child { - border-top-color: @handle_color_3; - } - } - } - - .@{name}-min, - .@{name}-max { - color: @minmax_text_color; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 4px; - opacity: 0.4; - background-color: @minmax_bg_color; - border-radius: @line_height; - } - - .@{name}-from, - .@{name}-to, - .@{name}-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 4px; - background-color: @label_color_1; - color: @label_color_2; - border-radius: @line_height; - - &:before { - position: absolute; - display: block; - content: ""; - bottom: -6px; - left: 50%; - width: 0; - height: 0; - margin-left: -3px; - overflow: hidden; - border: 3px solid transparent; - border-top-color: @label_color_1; - } - } - - .@{name}-grid { - height: 25px; - - &-pol { - background-color: @grid_color_1; - } - - &-text { - color: @grid_color_2; - font-size: 13px; - } - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/square.less b/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/square.less deleted file mode 100644 index 957f957..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/ion-rangeslider/less/skins/square.less +++ /dev/null @@ -1,100 +0,0 @@ -// Skin design by Veaceslav Grimalschi -// https://github.com/grimalschi - -.irs--square { - @name: irs; - - @top: 31px; - @bottom: 21px; - @line_height: 4px; - @handle_width: 16px; - @handle_height: 16px; - - @line_color: #dedede; - @bar_color: black; - @handle_color_1: black; - @handle_color_2: white; - @handle_color_3: #f0f6ff; - @minmax_text_color: #333; - @minmax_bg_color: rgba(0,0,0,0.1); - @label_color_1: black; - @label_color_2: white; - @grid_color_1: #dedede; - @grid_color_2: silver; - - - - height: 50px; - - &.irs-with-grid { - height: 60px; - } - - .@{name}-line { - top: @top; - height: @line_height; - background-color: @line_color; - } - - .@{name}-bar { - top: @top; - height: @line_height; - background-color: @bar_color; - } - - .@{name}-shadow { - height: 2px; - bottom: @bottom; - background-color: @line_color; - } - - .@{name}-handle { - top: (@top - 6px); - width: @handle_width; - height: @handle_height; - border: 3px solid @handle_color_1; - background-color: @handle_color_2; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - - &.state_hover, - &:hover { - background-color: @handle_color_3; - } - } - - .@{name}-min, - .@{name}-max { - color: @minmax_text_color; - font-size: 14px; - line-height: 1; - top: 0; - padding: 3px 5px; - background-color: @minmax_bg_color; - } - - .@{name}-from, - .@{name}-to, - .@{name}-single { - font-size: 14px; - line-height: 1; - text-shadow: none; - padding: 3px 5px; - background-color: @label_color_1; - color: @label_color_2; - } - - .@{name}-grid { - height: 25px; - - &-pol { - background-color: @grid_color_1; - } - - &-text { - color: @grid_color_2; - font-size: 11px; - } - } -} diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js deleted file mode 100644 index 72d6ed2..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-knob/jquery.knob.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){if(typeof define==="function"&&define.amd){define(["jquery"],e)}else{e(jQuery)}})(function(e){"use strict";var t={},n=Math.max,r=Math.min;t.c={};t.c.d=e(document);t.c.t=function(e){return e.originalEvent.touches.length-1};t.o=function(){var n=this;this.o=null;this.$=null;this.i=null;this.g=null;this.v=null;this.cv=null;this.x=0;this.y=0;this.w=0;this.h=0;this.$c=null;this.c=null;this.t=0;this.isInit=false;this.fgColor=null;this.pColor=null;this.dH=null;this.cH=null;this.eH=null;this.rH=null;this.scale=1;this.relative=false;this.relativeWidth=false;this.relativeHeight=false;this.$div=null;this.run=function(){var t=function(e,t){var r;for(r in t){n.o[r]=t[r]}n._carve().init();n._configure()._draw()};if(this.$.data("kontroled"))return;this.$.data("kontroled",true);this.extend();this.o=e.extend({min:this.$.data("min")!==undefined?this.$.data("min"):0,max:this.$.data("max")!==undefined?this.$.data("max"):100,stopper:true,readOnly:this.$.data("readonly")||this.$.attr("readonly")==="readonly",cursor:this.$.data("cursor")===true&&30||this.$.data("cursor")||0,thickness:this.$.data("thickness")&&Math.max(Math.min(this.$.data("thickness"),1),.01)||.35,lineCap:this.$.data("linecap")||"butt",width:this.$.data("width")||200,height:this.$.data("height")||200,displayInput:this.$.data("displayinput")==null||this.$.data("displayinput"),displayPrevious:this.$.data("displayprevious"),fgColor:this.$.data("fgcolor")||"#87CEEB",inputColor:this.$.data("inputcolor"),font:this.$.data("font")||"Arial",fontWeight:this.$.data("font-weight")||"bold",inline:false,step:this.$.data("step")||1,rotation:this.$.data("rotation"),draw:null,change:null,cancel:null,release:null,format:function(e){return e},parse:function(e){return parseFloat(e)}},this.o);this.o.flip=this.o.rotation==="anticlockwise"||this.o.rotation==="acw";if(!this.o.inputColor){this.o.inputColor=this.o.fgColor}if(this.$.is("fieldset")){this.v={};this.i=this.$.find("input");this.i.each(function(t){var r=e(this);n.i[t]=r;n.v[t]=n.o.parse(r.val());r.bind("change blur",function(){var e={};e[t]=r.val();n.val(n._validate(e))})});this.$.find("legend").remove()}else{this.i=this.$;this.v=this.o.parse(this.$.val());this.v===""&&(this.v=this.o.min);this.$.bind("change blur",function(){n.val(n._validate(n.o.parse(n.$.val())))})}!this.o.displayInput&&this.$.hide();this.$c=e(document.createElement("canvas")).attr({width:this.o.width,height:this.o.height});this.$div=e('
      ');this.$.wrap(this.$div).before(this.$c);this.$div=this.$.parent();if(typeof G_vmlCanvasManager!=="undefined"){G_vmlCanvasManager.initElement(this.$c[0])}this.c=this.$c[0].getContext?this.$c[0].getContext("2d"):null;if(!this.c){throw{name:"CanvasNotSupportedException",message:"Canvas not supported. Please use excanvas on IE8.0.",toString:function(){return this.name+": "+this.message}}}this.scale=(window.devicePixelRatio||1)/(this.c.webkitBackingStorePixelRatio||this.c.mozBackingStorePixelRatio||this.c.msBackingStorePixelRatio||this.c.oBackingStorePixelRatio||this.c.backingStorePixelRatio||1);this.relativeWidth=this.o.width%1!==0&&this.o.width.indexOf("%");this.relativeHeight=this.o.height%1!==0&&this.o.height.indexOf("%");this.relative=this.relativeWidth||this.relativeHeight;this._carve();if(this.v instanceof Object){this.cv={};this.copy(this.v,this.cv)}else{this.cv=this.v}this.$.bind("configure",t).parent().bind("configure",t);this._listen()._configure()._xy().init();this.isInit=true;this.$.val(this.o.format(this.v));this._draw();return this};this._carve=function(){if(this.relative){var e=this.relativeWidth?this.$div.parent().width()*parseInt(this.o.width)/100:this.$div.parent().width(),t=this.relativeHeight?this.$div.parent().height()*parseInt(this.o.height)/100:this.$div.parent().height();this.w=this.h=Math.min(e,t)}else{this.w=this.o.width;this.h=this.o.height}this.$div.css({width:this.w+"px",height:this.h+"px"});this.$c.attr({width:this.w,height:this.h});if(this.scale!==1){this.$c[0].width=this.$c[0].width*this.scale;this.$c[0].height=this.$c[0].height*this.scale;this.$c.width(this.w);this.$c.height(this.h)}return this};this._draw=function(){var e=true;n.g=n.c;n.clear();n.dH&&(e=n.dH());e!==false&&n.draw()};this._touch=function(e){var r=function(e){var t=n.xy2val(e.originalEvent.touches[n.t].pageX,e.originalEvent.touches[n.t].pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};this.t=t.c.t(e);r(e);t.c.d.bind("touchmove.k",r).bind("touchend.k",function(){t.c.d.unbind("touchmove.k touchend.k");n.val(n.cv)});return this};this._mouse=function(e){var r=function(e){var t=n.xy2val(e.pageX,e.pageY);if(t==n.cv)return;if(n.cH&&n.cH(t)===false)return;n.change(n._validate(t));n._draw()};r(e);t.c.d.bind("mousemove.k",r).bind("keyup.k",function(e){if(e.keyCode===27){t.c.d.unbind("mouseup.k mousemove.k keyup.k");if(n.eH&&n.eH()===false)return;n.cancel()}}).bind("mouseup.k",function(e){t.c.d.unbind("mousemove.k mouseup.k keyup.k");n.val(n.cv)});return this};this._xy=function(){var e=this.$c.offset();this.x=e.left;this.y=e.top;return this};this._listen=function(){if(!this.o.readOnly){this.$c.bind("mousedown",function(e){e.preventDefault();n._xy()._mouse(e)}).bind("touchstart",function(e){e.preventDefault();n._xy()._touch(e)});this.listen()}else{this.$.attr("readonly","readonly")}if(this.relative){e(window).resize(function(){n._carve().init();n._draw()})}return this};this._configure=function(){if(this.o.draw)this.dH=this.o.draw;if(this.o.change)this.cH=this.o.change;if(this.o.cancel)this.eH=this.o.cancel;if(this.o.release)this.rH=this.o.release;if(this.o.displayPrevious){this.pColor=this.h2rgba(this.o.fgColor,"0.4");this.fgColor=this.h2rgba(this.o.fgColor,"0.6")}else{this.fgColor=this.o.fgColor}return this};this._clear=function(){this.$c[0].width=this.$c[0].width};this._validate=function(e){var t=~~((e<0?-.5:.5)+e/this.o.step)*this.o.step;return Math.round(t*100)/100};this.listen=function(){};this.extend=function(){};this.init=function(){};this.change=function(e){};this.val=function(e){};this.xy2val=function(e,t){};this.draw=function(){};this.clear=function(){this._clear()};this.h2rgba=function(e,t){var n;e=e.substring(1,7);n=[parseInt(e.substring(0,2),16),parseInt(e.substring(2,4),16),parseInt(e.substring(4,6),16)];return"rgba("+n[0]+","+n[1]+","+n[2]+","+t+")"};this.copy=function(e,t){for(var n in e){t[n]=e[n]}}};t.Dial=function(){t.o.call(this);this.startAngle=null;this.xy=null;this.radius=null;this.lineWidth=null;this.cursorExt=null;this.w2=null;this.PI2=2*Math.PI;this.extend=function(){this.o=e.extend({bgColor:this.$.data("bgcolor")||"#EEEEEE",angleOffset:this.$.data("angleoffset")||0,angleArc:this.$.data("anglearc")||360,inline:true},this.o)};this.val=function(e,t){if(null!=e){e=this.o.parse(e);if(t!==false&&e!=this.v&&this.rH&&this.rH(e)===false){return}this.cv=this.o.stopper?n(r(e,this.o.max),this.o.min):e;this.v=this.cv;this.$.val(this.o.format(this.v));this._draw()}else{return this.v}};this.xy2val=function(e,t){var i,s;i=Math.atan2(e-(this.x+this.w2),-(t-this.y-this.w2))-this.angleOffset;if(this.o.flip){i=this.angleArc-i-this.PI2}if(this.angleArc!=this.PI2&&i<0&&i>-.5){i=0}else if(i<0){i+=this.PI2}s=i*(this.o.max-this.o.min)/this.angleArc+this.o.min;this.o.stopper&&(s=n(r(s,this.o.max),this.o.min));return s};this.listen=function(){var t=this,i,s,o=function(e){e.preventDefault();var o=e.originalEvent,u=o.detail||o.wheelDeltaX,a=o.detail||o.wheelDeltaY,f=t._validate(t.o.parse(t.$.val()))+(u>0||a>0?t.o.step:u<0||a<0?-t.o.step:0);f=n(r(f,t.o.max),t.o.min);t.val(f,false);if(t.rH){clearTimeout(i);i=setTimeout(function(){t.rH(f);i=null},100);if(!s){s=setTimeout(function(){if(i)t.rH(f);s=null},200)}}},u,a,f=1,l={37:-t.o.step,38:t.o.step,39:t.o.step,40:-t.o.step};this.$.bind("keydown",function(i){var s=i.keyCode;if(s>=96&&s<=105){s=i.keyCode=s-48}u=parseInt(String.fromCharCode(s));if(isNaN(u)){s!==13&&s!==8&&s!==9&&s!==189&&(s!==190||t.$.val().match(/\./))&&i.preventDefault();if(e.inArray(s,[37,38,39,40])>-1){i.preventDefault();var o=t.o.parse(t.$.val())+l[s]*f;t.o.stopper&&(o=n(r(o,t.o.max),t.o.min));t.change(t._validate(o));t._draw();a=window.setTimeout(function(){f*=2},30)}}}).bind("keyup",function(e){if(isNaN(u)){if(a){window.clearTimeout(a);a=null;f=1;t.val(t.$.val())}}else{t.$.val()>t.o.max&&t.$.val(t.o.max)||t.$.val()this.o.max){this.v=this.o.min}this.$.val(this.v);this.w2=this.w/2;this.cursorExt=this.o.cursor/100;this.xy=this.w2*this.scale;this.lineWidth=this.xy*this.o.thickness;this.lineCap=this.o.lineCap;this.radius=this.xy-this.lineWidth/2;this.o.angleOffset&&(this.o.angleOffset=isNaN(this.o.angleOffset)?0:this.o.angleOffset);this.o.angleArc&&(this.o.angleArc=isNaN(this.o.angleArc)?this.PI2:this.o.angleArc);this.angleOffset=this.o.angleOffset*Math.PI/180;this.angleArc=this.o.angleArc*Math.PI/180;this.startAngle=1.5*Math.PI+this.angleOffset;this.endAngle=1.5*Math.PI+this.angleOffset+this.angleArc;var e=n(String(Math.abs(this.o.max)).length,String(Math.abs(this.o.min)).length,2)+2;this.o.displayInput&&this.i.css({width:(this.w/2+4>>0)+"px",height:(this.w/3>>0)+"px",position:"absolute","vertical-align":"middle","margin-top":(this.w/3>>0)+"px","margin-left":"-"+(this.w*3/4+2>>0)+"px",border:0,background:"none",font:this.o.fontWeight+" "+(this.w/e>>0)+"px "+this.o.font,"text-align":"center",color:this.o.inputColor||this.o.fgColor,padding:"0px","-webkit-appearance":"none"})||this.i.css({width:"0px",visibility:"hidden"})};this.change=function(e){this.cv=e;this.$.val(this.o.format(e))};this.angle=function(e){return(e-this.o.min)*this.angleArc/(this.o.max-this.o.min)};this.arc=function(e){var t,n;e=this.angle(e);if(this.o.flip){t=this.endAngle+1e-5;n=t-e-1e-5}else{t=this.startAngle-1e-5;n=t+e+1e-5}this.o.cursor&&(t=n-this.cursorExt)&&(n=n+this.cursorExt);return{s:t,e:n,d:this.o.flip&&!this.o.cursor}};this.draw=function(){var e=this.g,t=this.arc(this.cv),n,r=1;e.lineWidth=this.lineWidth;e.lineCap=this.lineCap;if(this.o.bgColor!=="none"){e.beginPath();e.strokeStyle=this.o.bgColor;e.arc(this.xy,this.xy,this.radius,this.endAngle-1e-5,this.startAngle+1e-5,true);e.stroke()}if(this.o.displayPrevious){n=this.arc(this.v);e.beginPath();e.strokeStyle=this.pColor;e.arc(this.xy,this.xy,this.radius,n.s,n.e,n.d);e.stroke();r=this.cv==this.v}e.beginPath();e.strokeStyle=r?this.o.fgColor:this.fgColor;e.arc(this.xy,this.xy,this.radius,t.s,t.e,t.d);e.stroke()};this.cancel=function(){this.val(this.v)}};e.fn.dial=e.fn.knob=function(n){return this.each(function(){var r=new t.Dial;r.o=n;r.$=e(this);r.run()}).parent()}}) \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.js deleted file mode 100644 index 90d2599..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.js +++ /dev/null @@ -1,2781 +0,0 @@ -/*! - * - * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) - * Requires jQuery, raphael.js and jquery.mousewheel - * - * Version: 2.2.0 - * - * Copyright (c) 2017 Vincent Brouté (https://www.vincentbroute.fr/mapael) - * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php). - * - * Thanks to Indigo744 - * - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery'), require('raphael'), require('jquery-mousewheel')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery', 'raphael', 'mousewheel'], factory); - } else { - // Browser globals - factory(jQuery, Raphael, jQuery.fn.mousewheel); - } -}(function ($, Raphael, mousewheel, undefined) { - - "use strict"; - - // The plugin name (used on several places) - var pluginName = "mapael"; - - // Version number of jQuery Mapael. See http://semver.org/ for more information. - var version = "2.2.0"; - - /* - * Mapael constructor - * Init instance vars and call init() - * @param container the DOM element on which to apply the plugin - * @param options the complete options to use - */ - var Mapael = function (container, options) { - var self = this; - - // the global container (DOM element object) - self.container = container; - - // the global container (jQuery object) - self.$container = $(container); - - // the global options - self.options = self.extendDefaultOptions(options); - - // zoom TimeOut handler (used to set and clear) - self.zoomTO = 0; - - // zoom center coordinate (set at touchstart) - self.zoomCenterX = 0; - self.zoomCenterY = 0; - - // Zoom pinch (set at touchstart and touchmove) - self.previousPinchDist = 0; - - // Zoom data - self.zoomData = { - zoomLevel: 0, - zoomX: 0, - zoomY: 0, - panX: 0, - panY: 0 - }; - - self.currentViewBox = { - x: 0, y: 0, w: 0, h: 0 - }; - - // Panning: tell if panning action is in progress - self.panning = false; - - // Animate view box - self.zoomAnimID = null; // Interval handler (used to set and clear) - self.zoomAnimStartTime = null; // Animation start time - self.zoomAnimCVBTarget = null; // Current ViewBox target - - // Map subcontainer jQuery object - self.$map = $("." + self.options.map.cssClass, self.container); - - // Save initial HTML content (used by destroy method) - self.initialMapHTMLContent = self.$map.html(); - - // The tooltip jQuery object - self.$tooltip = {}; - - // The paper Raphael object - self.paper = {}; - - // The areas object list - self.areas = {}; - - // The plots object list - self.plots = {}; - - // The links object list - self.links = {}; - - // The legends list - self.legends = {}; - - // The map configuration object (taken from map file) - self.mapConf = {}; - - // Holds all custom event handlers - self.customEventHandlers = {}; - - // Let's start the initialization - self.init(); - }; - - /* - * Mapael Prototype - * Defines all methods and properties needed by Mapael - * Each mapael object inherits their properties and methods from this prototype - */ - Mapael.prototype = { - - /* Filtering TimeOut value in ms - * Used for mouseover trigger over elements */ - MouseOverFilteringTO: 120, - /* Filtering TimeOut value in ms - * Used for afterPanning trigger when panning */ - panningFilteringTO: 150, - /* Filtering TimeOut value in ms - * Used for mouseup/touchend trigger when panning */ - panningEndFilteringTO: 50, - /* Filtering TimeOut value in ms - * Used for afterZoom trigger when zooming */ - zoomFilteringTO: 150, - /* Filtering TimeOut value in ms - * Used for when resizing window */ - resizeFilteringTO: 150, - - /* - * Initialize the plugin - * Called by the constructor - */ - init: function () { - var self = this; - - // Init check for class existence - if (self.options.map.cssClass === "" || $("." + self.options.map.cssClass, self.container).length === 0) { - throw new Error("The map class `" + self.options.map.cssClass + "` doesn't exists"); - } - - // Create the tooltip container - self.$tooltip = $("
      ").addClass(self.options.map.tooltip.cssClass).css("display", "none"); - - // Get the map container, empty it then append tooltip - self.$map.empty().append(self.$tooltip); - - // Get the map from $.mapael or $.fn.mapael (backward compatibility) - if ($[pluginName] && $[pluginName].maps && $[pluginName].maps[self.options.map.name]) { - // Mapael version >= 2.x - self.mapConf = $[pluginName].maps[self.options.map.name]; - } else if ($.fn[pluginName] && $.fn[pluginName].maps && $.fn[pluginName].maps[self.options.map.name]) { - // Mapael version <= 1.x - DEPRECATED - self.mapConf = $.fn[pluginName].maps[self.options.map.name]; - if (window.console && window.console.warn) { - window.console.warn("Extending $.fn.mapael is deprecated (map '" + self.options.map.name + "')"); - } - } else { - throw new Error("Unknown map '" + self.options.map.name + "'"); - } - - // Create Raphael paper - self.paper = new Raphael(self.$map[0], self.mapConf.width, self.mapConf.height); - - // issue #135: Check for Raphael bug on text element boundaries - if (self.isRaphaelBBoxBugPresent() === true) { - self.destroy(); - throw new Error("Can't get boundary box for text (is your container hidden? See #135)"); - } - - // add plugin class name on element - self.$container.addClass(pluginName); - - if (self.options.map.tooltip.css) self.$tooltip.css(self.options.map.tooltip.css); - self.setViewBox(0, 0, self.mapConf.width, self.mapConf.height); - - // Handle map size - if (self.options.map.width) { - // NOT responsive: map has a fixed width - self.paper.setSize(self.options.map.width, self.mapConf.height * (self.options.map.width / self.mapConf.width)); - } else { - // Responsive: handle resizing of the map - self.initResponsiveSize(); - } - - // Draw map areas - $.each(self.mapConf.elems, function (id) { - // Init area object - self.areas[id] = {}; - // Set area options - self.areas[id].options = self.getElemOptions( - self.options.map.defaultArea, - (self.options.areas[id] ? self.options.areas[id] : {}), - self.options.legend.area - ); - // draw area - self.areas[id].mapElem = self.paper.path(self.mapConf.elems[id]); - }); - - // Hook that allows to add custom processing on the map - if (self.options.map.beforeInit) self.options.map.beforeInit(self.$container, self.paper, self.options); - - // Init map areas in a second loop - // Allows text to be added after ALL areas and prevent them from being hidden - $.each(self.mapConf.elems, function (id) { - self.initElem(id, 'area', self.areas[id]); - }); - - // Draw links - self.links = self.drawLinksCollection(self.options.links); - - // Draw plots - $.each(self.options.plots, function (id) { - self.plots[id] = self.drawPlot(id); - }); - - // Attach zoom event - self.$container.on("zoom." + pluginName, function (e, zoomOptions) { - self.onZoomEvent(e, zoomOptions); - }); - - if (self.options.map.zoom.enabled) { - // Enable zoom - self.initZoom(self.mapConf.width, self.mapConf.height, self.options.map.zoom); - } - - // Set initial zoom - if (self.options.map.zoom.init !== undefined) { - if (self.options.map.zoom.init.animDuration === undefined) { - self.options.map.zoom.init.animDuration = 0; - } - self.$container.trigger("zoom", self.options.map.zoom.init); - } - - // Create the legends for areas - self.createLegends("area", self.areas, 1); - - // Create the legends for plots taking into account the scale of the map - self.createLegends("plot", self.plots, self.paper.width / self.mapConf.width); - - // Attach update event - self.$container.on("update." + pluginName, function (e, opt) { - self.onUpdateEvent(e, opt); - }); - - // Attach showElementsInRange event - self.$container.on("showElementsInRange." + pluginName, function (e, opt) { - self.onShowElementsInRange(e, opt); - }); - - // Attach delegated events - self.initDelegatedMapEvents(); - // Attach delegated custom events - self.initDelegatedCustomEvents(); - - // Hook that allows to add custom processing on the map - if (self.options.map.afterInit) self.options.map.afterInit(self.$container, self.paper, self.areas, self.plots, self.options); - - $(self.paper.desc).append(" and Mapael " + self.version + " (https://www.vincentbroute.fr/mapael/)"); - }, - - /* - * Destroy mapael - * This function effectively detach mapael from the container - * - Set the container back to the way it was before mapael instanciation - * - Remove all data associated to it (memory can then be free'ed by browser) - * - * This method can be call directly by user: - * $(".mapcontainer").data("mapael").destroy(); - * - * This method is also automatically called if the user try to call mapael - * on a container already containing a mapael instance - */ - destroy: function () { - var self = this; - - // Detach all event listeners attached to the container - self.$container.off("." + pluginName); - self.$map.off("." + pluginName); - - // Detach the global resize event handler - if (self.onResizeEvent) $(window).off("resize." + pluginName, self.onResizeEvent); - - // Empty the container (this will also detach all event listeners) - self.$map.empty(); - - // Replace initial HTML content - self.$map.html(self.initialMapHTMLContent); - - // Empty legend containers and replace initial HTML content - $.each(self.legends, function(legendType) { - $.each(self.legends[legendType], function(legendIndex) { - var legend = self.legends[legendType][legendIndex]; - legend.container.empty(); - legend.container.html(legend.initialHTMLContent); - }); - }); - - // Remove mapael class - self.$container.removeClass(pluginName); - - // Remove the data - self.$container.removeData(pluginName); - - // Remove all internal reference - self.container = undefined; - self.$container = undefined; - self.options = undefined; - self.paper = undefined; - self.$map = undefined; - self.$tooltip = undefined; - self.mapConf = undefined; - self.areas = undefined; - self.plots = undefined; - self.links = undefined; - self.customEventHandlers = undefined; - }, - - initResponsiveSize: function () { - var self = this; - var resizeTO = null; - - // Function that actually handle the resizing - var handleResize = function(isInit) { - var containerWidth = self.$map.width(); - - if (self.paper.width !== containerWidth) { - var newScale = containerWidth / self.mapConf.width; - // Set new size - self.paper.setSize(containerWidth, self.mapConf.height * newScale); - - // Create plots legend again to take into account the new scale - // Do not do this on init (it will be done later) - if (isInit !== true && self.options.legend.redrawOnResize) { - self.createLegends("plot", self.plots, newScale); - } - } - }; - - self.onResizeEvent = function() { - // Clear any previous setTimeout (avoid too much triggering) - clearTimeout(resizeTO); - // setTimeout to wait for the user to finish its resizing - resizeTO = setTimeout(function () { - handleResize(); - }, self.resizeFilteringTO); - }; - - // Attach resize handler - $(window).on("resize." + pluginName, self.onResizeEvent); - - // Call once - handleResize(true); - }, - - /* - * Extend the user option with the default one - * @param options the user options - * @return new options object - */ - extendDefaultOptions: function (options) { - - // Extend default options with user options - options = $.extend(true, {}, Mapael.prototype.defaultOptions, options); - - // Extend legend default options - $.each(['area', 'plot'], function (key, type) { - if ($.isArray(options.legend[type])) { - for (var i = 0; i < options.legend[type].length; ++i) - options.legend[type][i] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type][i]); - } else { - options.legend[type] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type]); - } - }); - - return options; - }, - - /* - * Init all delegated events for the whole map: - * mouseover - * mousemove - * mouseout - */ - initDelegatedMapEvents: function() { - var self = this; - - // Mapping between data-type value and the corresponding elements array - // Note: legend-elem and legend-label are not in this table because - // they need a special processing - var dataTypeToElementMapping = { - 'area' : self.areas, - 'area-text' : self.areas, - 'plot' : self.plots, - 'plot-text' : self.plots, - 'link' : self.links, - 'link-text' : self.links - }; - - /* Attach mouseover event delegation - * Note: we filter the event with a timeout to reduce the firing when the mouse moves quickly - */ - var mapMouseOverTimeoutID; - self.$container.on("mouseover." + pluginName, "[data-id]", function () { - var elem = this; - clearTimeout(mapMouseOverTimeoutID); - mapMouseOverTimeoutID = setTimeout(function() { - var $elem = $(elem); - var id = $elem.attr('data-id'); - var type = $elem.attr('data-type'); - - if (dataTypeToElementMapping[type] !== undefined) { - self.elemEnter(dataTypeToElementMapping[type][id]); - } else if (type === 'legend-elem' || type === 'legend-label') { - var legendIndex = $elem.attr('data-legend-id'); - var legendType = $elem.attr('data-legend-type'); - self.elemEnter(self.legends[legendType][legendIndex].elems[id]); - } - }, self.MouseOverFilteringTO); - }); - - /* Attach mousemove event delegation - * Note: timeout filtering is small to update the Tooltip position fast - */ - var mapMouseMoveTimeoutID; - self.$container.on("mousemove." + pluginName, "[data-id]", function (event) { - var elem = this; - clearTimeout(mapMouseMoveTimeoutID); - mapMouseMoveTimeoutID = setTimeout(function() { - var $elem = $(elem); - var id = $elem.attr('data-id'); - var type = $elem.attr('data-type'); - - if (dataTypeToElementMapping[type] !== undefined) { - self.elemHover(dataTypeToElementMapping[type][id], event); - } else if (type === 'legend-elem' || type === 'legend-label') { - /* Nothing to do */ - } - - }, 0); - }); - - /* Attach mouseout event delegation - * Note: we don't perform any timeout filtering to clear & reset elem ASAP - * Otherwise an element may be stuck in 'hover' state (which is NOT good) - */ - self.$container.on("mouseout." + pluginName, "[data-id]", function () { - var elem = this; - // Clear any - clearTimeout(mapMouseOverTimeoutID); - clearTimeout(mapMouseMoveTimeoutID); - var $elem = $(elem); - var id = $elem.attr('data-id'); - var type = $elem.attr('data-type'); - - if (dataTypeToElementMapping[type] !== undefined) { - self.elemOut(dataTypeToElementMapping[type][id]); - } else if (type === 'legend-elem' || type === 'legend-label') { - var legendIndex = $elem.attr('data-legend-id'); - var legendType = $elem.attr('data-legend-type'); - self.elemOut(self.legends[legendType][legendIndex].elems[id]); - } - }); - - /* Attach click event delegation - * Note: we filter the event with a timeout to avoid double click - */ - self.$container.on("click." + pluginName, "[data-id]", function (evt, opts) { - var $elem = $(this); - var id = $elem.attr('data-id'); - var type = $elem.attr('data-type'); - - if (dataTypeToElementMapping[type] !== undefined) { - self.elemClick(dataTypeToElementMapping[type][id]); - } else if (type === 'legend-elem' || type === 'legend-label') { - var legendIndex = $elem.attr('data-legend-id'); - var legendType = $elem.attr('data-legend-type'); - self.handleClickOnLegendElem(self.legends[legendType][legendIndex].elems[id], id, legendIndex, legendType, opts); - } - }); - }, - - /* - * Init all delegated custom events - */ - initDelegatedCustomEvents: function() { - var self = this; - - $.each(self.customEventHandlers, function(eventName) { - // Namespace the custom event - // This allow to easily unbound only custom events and not regular ones - var fullEventName = eventName + '.' + pluginName + ".custom"; - self.$container.off(fullEventName).on(fullEventName, "[data-id]", function (e) { - var $elem = $(this); - var id = $elem.attr('data-id'); - var type = $elem.attr('data-type').replace('-text', ''); - - if (!self.panning && - self.customEventHandlers[eventName][type] !== undefined && - self.customEventHandlers[eventName][type][id] !== undefined) - { - // Get back related elem - var elem = self.customEventHandlers[eventName][type][id]; - // Run callback provided by user - elem.options.eventHandlers[eventName](e, id, elem.mapElem, elem.textElem, elem.options); - } - }); - }); - - }, - - /* - * Init the element "elem" on the map (drawing text, setting attributes, events, tooltip, ...) - * - * @param id the id of the element - * @param type the type of the element (area, plot, link) - * @param elem object the element object (with mapElem), it will be updated - */ - initElem: function (id, type, elem) { - var self = this; - var $mapElem = $(elem.mapElem.node); - - // If an HTML link exists for this element, add cursor attributes - if (elem.options.href) { - elem.options.attrs.cursor = "pointer"; - if (elem.options.text) elem.options.text.attrs.cursor = "pointer"; - } - - // Set SVG attributes to map element - elem.mapElem.attr(elem.options.attrs); - // Set DOM attributes to map element - $mapElem.attr({ - "data-id": id, - "data-type": type - }); - if (elem.options.cssClass !== undefined) { - $mapElem.addClass(elem.options.cssClass); - } - - // Init the label related to the element - if (elem.options.text && elem.options.text.content !== undefined) { - // Set a text label in the area - var textPosition = self.getTextPosition(elem.mapElem.getBBox(), elem.options.text.position, elem.options.text.margin); - elem.options.text.attrs.text = elem.options.text.content; - elem.options.text.attrs.x = textPosition.x; - elem.options.text.attrs.y = textPosition.y; - elem.options.text.attrs['text-anchor'] = textPosition.textAnchor; - // Draw text - elem.textElem = self.paper.text(textPosition.x, textPosition.y, elem.options.text.content); - // Apply SVG attributes to text element - elem.textElem.attr(elem.options.text.attrs); - // Apply DOM attributes - $(elem.textElem.node).attr({ - "data-id": id, - "data-type": type + '-text' - }); - } - - // Set user event handlers - if (elem.options.eventHandlers) self.setEventHandlers(id, type, elem); - - // Set hover option for mapElem - self.setHoverOptions(elem.mapElem, elem.options.attrs, elem.options.attrsHover); - - // Set hover option for textElem - if (elem.textElem) self.setHoverOptions(elem.textElem, elem.options.text.attrs, elem.options.text.attrsHover); - }, - - /* - * Init zoom and panning for the map - * @param mapWidth - * @param mapHeight - * @param zoomOptions - */ - initZoom: function (mapWidth, mapHeight, zoomOptions) { - var self = this; - var mousedown = false; - var previousX = 0; - var previousY = 0; - var fnZoomButtons = { - "reset": function () { - self.$container.trigger("zoom", {"level": 0}); - }, - "in": function () { - self.$container.trigger("zoom", {"level": "+1"}); - }, - "out": function () { - self.$container.trigger("zoom", {"level": -1}); - } - }; - - // init Zoom data - $.extend(self.zoomData, { - zoomLevel: 0, - panX: 0, - panY: 0 - }); - - // init zoom buttons - $.each(zoomOptions.buttons, function(type, opt) { - if (fnZoomButtons[type] === undefined) throw new Error("Unknown zoom button '" + type + "'"); - // Create div with classes, contents and title (for tooltip) - var $button = $("
      ").addClass(opt.cssClass) - .html(opt.content) - .attr("title", opt.title); - // Assign click event - $button.on("click." + pluginName, fnZoomButtons[type]); - // Append to map - self.$map.append($button); - }); - - // Update the zoom level of the map on mousewheel - if (self.options.map.zoom.mousewheel) { - self.$map.on("mousewheel." + pluginName, function (e) { - var zoomLevel = (e.deltaY > 0) ? 1 : -1; - var coord = self.mapPagePositionToXY(e.pageX, e.pageY); - - self.$container.trigger("zoom", { - "fixedCenter": true, - "level": self.zoomData.zoomLevel + zoomLevel, - "x": coord.x, - "y": coord.y - }); - - e.preventDefault(); - }); - } - - // Update the zoom level of the map on touch pinch - if (self.options.map.zoom.touch) { - self.$map.on("touchstart." + pluginName, function (e) { - if (e.originalEvent.touches.length === 2) { - self.zoomCenterX = (e.originalEvent.touches[0].pageX + e.originalEvent.touches[1].pageX) / 2; - self.zoomCenterY = (e.originalEvent.touches[0].pageY + e.originalEvent.touches[1].pageY) / 2; - self.previousPinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2)); - } - }); - - self.$map.on("touchmove." + pluginName, function (e) { - var pinchDist = 0; - var zoomLevel = 0; - - if (e.originalEvent.touches.length === 2) { - pinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2)); - - if (Math.abs(pinchDist - self.previousPinchDist) > 15) { - var coord = self.mapPagePositionToXY(self.zoomCenterX, self.zoomCenterY); - zoomLevel = (pinchDist - self.previousPinchDist) / Math.abs(pinchDist - self.previousPinchDist); - self.$container.trigger("zoom", { - "fixedCenter": true, - "level": self.zoomData.zoomLevel + zoomLevel, - "x": coord.x, - "y": coord.y - }); - self.previousPinchDist = pinchDist; - } - return false; - } - }); - } - - // When the user drag the map, prevent to move the clicked element instead of dragging the map (behaviour seen with Firefox) - self.$map.on("dragstart", function() { - return false; - }); - - // Panning - var panningMouseUpTO = null; - var panningMouseMoveTO = null; - $("body").on("mouseup." + pluginName + (zoomOptions.touch ? " touchend." + pluginName : ""), function () { - mousedown = false; - clearTimeout(panningMouseUpTO); - clearTimeout(panningMouseMoveTO); - panningMouseUpTO = setTimeout(function () { - self.panning = false; - }, self.panningEndFilteringTO); - }); - - self.$map.on("mousedown." + pluginName + (zoomOptions.touch ? " touchstart." + pluginName : ""), function (e) { - clearTimeout(panningMouseUpTO); - clearTimeout(panningMouseMoveTO); - if (e.pageX !== undefined) { - mousedown = true; - previousX = e.pageX; - previousY = e.pageY; - } else { - if (e.originalEvent.touches.length === 1) { - mousedown = true; - previousX = e.originalEvent.touches[0].pageX; - previousY = e.originalEvent.touches[0].pageY; - } - } - }).on("mousemove." + pluginName + (zoomOptions.touch ? " touchmove." + pluginName : ""), function (e) { - var currentLevel = self.zoomData.zoomLevel; - var pageX = 0; - var pageY = 0; - - clearTimeout(panningMouseUpTO); - clearTimeout(panningMouseMoveTO); - - if (e.pageX !== undefined) { - pageX = e.pageX; - pageY = e.pageY; - } else { - if (e.originalEvent.touches.length === 1) { - pageX = e.originalEvent.touches[0].pageX; - pageY = e.originalEvent.touches[0].pageY; - } else { - mousedown = false; - } - } - - if (mousedown && currentLevel !== 0) { - var offsetX = (previousX - pageX) / (1 + (currentLevel * zoomOptions.step)) * (mapWidth / self.paper.width); - var offsetY = (previousY - pageY) / (1 + (currentLevel * zoomOptions.step)) * (mapHeight / self.paper.height); - var panX = Math.min(Math.max(0, self.currentViewBox.x + offsetX), (mapWidth - self.currentViewBox.w)); - var panY = Math.min(Math.max(0, self.currentViewBox.y + offsetY), (mapHeight - self.currentViewBox.h)); - - if (Math.abs(offsetX) > 5 || Math.abs(offsetY) > 5) { - $.extend(self.zoomData, { - panX: panX, - panY: panY, - zoomX: panX + self.currentViewBox.w / 2, - zoomY: panY + self.currentViewBox.h / 2 - }); - self.setViewBox(panX, panY, self.currentViewBox.w, self.currentViewBox.h); - - panningMouseMoveTO = setTimeout(function () { - self.$map.trigger("afterPanning", { - x1: panX, - y1: panY, - x2: (panX + self.currentViewBox.w), - y2: (panY + self.currentViewBox.h) - }); - }, self.panningFilteringTO); - - previousX = pageX; - previousY = pageY; - self.panning = true; - } - return false; - } - }); - }, - - /* - * Map a mouse position to a map position - * Transformation principle: - * ** start with (pageX, pageY) absolute mouse coordinate - * - Apply translation: take into accounts the map offset in the page - * ** from this point, we have relative mouse coordinate - * - Apply homothetic transformation: take into accounts initial factor of map sizing (fullWidth / actualWidth) - * - Apply homothetic transformation: take into accounts the zoom factor - * ** from this point, we have relative map coordinate - * - Apply translation: take into accounts the current panning of the map - * ** from this point, we have absolute map coordinate - * @param pageX: mouse client coordinate on X - * @param pageY: mouse client coordinate on Y - * @return map coordinate {x, y} - */ - mapPagePositionToXY: function(pageX, pageY) { - var self = this; - var offset = self.$map.offset(); - var initFactor = (self.options.map.width) ? (self.mapConf.width / self.options.map.width) : (self.mapConf.width / self.$map.width()); - var zoomFactor = 1 / (1 + (self.zoomData.zoomLevel * self.options.map.zoom.step)); - return { - x: (zoomFactor * initFactor * (pageX - offset.left)) + self.zoomData.panX, - y: (zoomFactor * initFactor * (pageY - offset.top)) + self.zoomData.panY - }; - }, - - /* - * Zoom on the map - * - * zoomOptions.animDuration zoom duration - * - * zoomOptions.level level of the zoom between minLevel and maxLevel (absolute number, or relative string +1 or -1) - * zoomOptions.fixedCenter set to true in order to preserve the position of x,y in the canvas when zoomed - * - * zoomOptions.x x coordinate of the point to focus on - * zoomOptions.y y coordinate of the point to focus on - * - OR - - * zoomOptions.latitude latitude of the point to focus on - * zoomOptions.longitude longitude of the point to focus on - * - OR - - * zoomOptions.plot plot ID to focus on - * - OR - - * zoomOptions.area area ID to focus on - * zoomOptions.areaMargin margin (in pixels) around the area - * - * If an area ID is specified, the algorithm will override the zoom level to focus on the area - * but it may be limited by the min/max zoom level limits set at initialization. - * - * If no coordinates are specified, the zoom will be focused on the center of the current view box - * - */ - onZoomEvent: function (e, zoomOptions) { - var self = this; - - // new Top/Left corner coordinates - var panX; - var panY; - // new Width/Height viewbox size - var panWidth; - var panHeight; - - // Zoom level in absolute scale (from 0 to max, by step of 1) - var zoomLevel = self.zoomData.zoomLevel; - - // Relative zoom level (from 1 to max, by step of 0.25 (default)) - var previousRelativeZoomLevel = 1 + self.zoomData.zoomLevel * self.options.map.zoom.step; - var relativeZoomLevel; - - var animDuration = (zoomOptions.animDuration !== undefined) ? zoomOptions.animDuration : self.options.map.zoom.animDuration; - - if (zoomOptions.area !== undefined) { - /* An area is given - * We will define x/y coordinate AND a new zoom level to fill the area - */ - if (self.areas[zoomOptions.area] === undefined) throw new Error("Unknown area '" + zoomOptions.area + "'"); - var areaMargin = (zoomOptions.areaMargin !== undefined) ? zoomOptions.areaMargin : 10; - var areaBBox = self.areas[zoomOptions.area].mapElem.getBBox(); - var areaFullWidth = areaBBox.width + 2 * areaMargin; - var areaFullHeight = areaBBox.height + 2 * areaMargin; - - // Compute new x/y focus point (center of area) - zoomOptions.x = areaBBox.cx; - zoomOptions.y = areaBBox.cy; - - // Compute a new absolute zoomLevel value (inverse of relative -> absolute) - // Take the min between zoomLevel on width vs. height to be able to see the whole area - zoomLevel = Math.min(Math.floor((self.mapConf.width / areaFullWidth - 1) / self.options.map.zoom.step), - Math.floor((self.mapConf.height / areaFullHeight - 1) / self.options.map.zoom.step)); - - } else { - - // Get user defined zoom level - if (zoomOptions.level !== undefined) { - if (typeof zoomOptions.level === "string") { - // level is a string, either "n", "+n" or "-n" - if ((zoomOptions.level.slice(0, 1) === '+') || (zoomOptions.level.slice(0, 1) === '-')) { - // zoomLevel is relative - zoomLevel = self.zoomData.zoomLevel + parseInt(zoomOptions.level, 10); - } else { - // zoomLevel is absolute - zoomLevel = parseInt(zoomOptions.level, 10); - } - } else { - // level is integer - if (zoomOptions.level < 0) { - // zoomLevel is relative - zoomLevel = self.zoomData.zoomLevel + zoomOptions.level; - } else { - // zoomLevel is absolute - zoomLevel = zoomOptions.level; - } - } - } - - if (zoomOptions.plot !== undefined) { - if (self.plots[zoomOptions.plot] === undefined) throw new Error("Unknown plot '" + zoomOptions.plot + "'"); - - zoomOptions.x = self.plots[zoomOptions.plot].coords.x; - zoomOptions.y = self.plots[zoomOptions.plot].coords.y; - } else { - if (zoomOptions.latitude !== undefined && zoomOptions.longitude !== undefined) { - var coords = self.mapConf.getCoords(zoomOptions.latitude, zoomOptions.longitude); - zoomOptions.x = coords.x; - zoomOptions.y = coords.y; - } - - if (zoomOptions.x === undefined) { - zoomOptions.x = self.currentViewBox.x + self.currentViewBox.w / 2; - } - - if (zoomOptions.y === undefined) { - zoomOptions.y = self.currentViewBox.y + self.currentViewBox.h / 2; - } - } - } - - // Make sure we stay in the zoom level boundaries - zoomLevel = Math.min(Math.max(zoomLevel, self.options.map.zoom.minLevel), self.options.map.zoom.maxLevel); - - // Compute relative zoom level - relativeZoomLevel = 1 + zoomLevel * self.options.map.zoom.step; - - // Compute panWidth / panHeight - panWidth = self.mapConf.width / relativeZoomLevel; - panHeight = self.mapConf.height / relativeZoomLevel; - - if (zoomLevel === 0) { - panX = 0; - panY = 0; - } else { - if (zoomOptions.fixedCenter !== undefined && zoomOptions.fixedCenter === true) { - panX = self.zoomData.panX + ((zoomOptions.x - self.zoomData.panX) * (relativeZoomLevel - previousRelativeZoomLevel)) / relativeZoomLevel; - panY = self.zoomData.panY + ((zoomOptions.y - self.zoomData.panY) * (relativeZoomLevel - previousRelativeZoomLevel)) / relativeZoomLevel; - } else { - panX = zoomOptions.x - panWidth / 2; - panY = zoomOptions.y - panHeight / 2; - } - - // Make sure we stay in the map boundaries - panX = Math.min(Math.max(0, panX), self.mapConf.width - panWidth); - panY = Math.min(Math.max(0, panY), self.mapConf.height - panHeight); - } - - // Update zoom level of the map - if (relativeZoomLevel === previousRelativeZoomLevel && panX === self.zoomData.panX && panY === self.zoomData.panY) return; - - if (animDuration > 0) { - self.animateViewBox(panX, panY, panWidth, panHeight, animDuration, self.options.map.zoom.animEasing); - } else { - self.setViewBox(panX, panY, panWidth, panHeight); - clearTimeout(self.zoomTO); - self.zoomTO = setTimeout(function () { - self.$map.trigger("afterZoom", { - x1: panX, - y1: panY, - x2: panX + panWidth, - y2: panY + panHeight - }); - }, self.zoomFilteringTO); - } - - $.extend(self.zoomData, { - zoomLevel: zoomLevel, - panX: panX, - panY: panY, - zoomX: panX + panWidth / 2, - zoomY: panY + panHeight / 2 - }); - }, - - /* - * Show some element in range defined by user - * Triggered by user $(".mapcontainer").trigger("showElementsInRange", [opt]); - * - * @param opt the options - * opt.hiddenOpacity opacity for hidden element (default = 0.3) - * opt.animDuration animation duration in ms (default = 0) - * opt.afterShowRange callback - * opt.ranges the range to show: - * Example: - * opt.ranges = { - * 'plot' : { - * 0 : { // valueIndex - * 'min': 1000, - * 'max': 1200 - * }, - * 1 : { // valueIndex - * 'min': 10, - * 'max': 12 - * } - * }, - * 'area' : { - * {'min': 10, 'max': 20} // No valueIndex, only an object, use 0 as valueIndex (easy case) - * } - * } - */ - onShowElementsInRange: function(e, opt) { - var self = this; - - // set animDuration to default if not defined - if (opt.animDuration === undefined) { - opt.animDuration = 0; - } - - // set hiddenOpacity to default if not defined - if (opt.hiddenOpacity === undefined) { - opt.hiddenOpacity = 0.3; - } - - // handle area - if (opt.ranges && opt.ranges.area) { - self.showElemByRange(opt.ranges.area, self.areas, opt.hiddenOpacity, opt.animDuration); - } - - // handle plot - if (opt.ranges && opt.ranges.plot) { - self.showElemByRange(opt.ranges.plot, self.plots, opt.hiddenOpacity, opt.animDuration); - } - - // handle link - if (opt.ranges && opt.ranges.link) { - self.showElemByRange(opt.ranges.link, self.links, opt.hiddenOpacity, opt.animDuration); - } - - // Call user callback - if (opt.afterShowRange) opt.afterShowRange(); - }, - - /* - * Show some element in range - * @param ranges: the ranges - * @param elems: list of element on which to check against previous range - * @hiddenOpacity: the opacity when hidden - * @animDuration: the animation duration - */ - showElemByRange: function(ranges, elems, hiddenOpacity, animDuration) { - var self = this; - // Hold the final opacity value for all elements consolidated after applying each ranges - // This allow to set the opacity only once for each elements - var elemsFinalOpacity = {}; - - // set object with one valueIndex to 0 if we have directly the min/max - if (ranges.min !== undefined || ranges.max !== undefined) { - ranges = {0: ranges}; - } - - // Loop through each valueIndex - $.each(ranges, function (valueIndex) { - var range = ranges[valueIndex]; - // Check if user defined at least a min or max value - if (range.min === undefined && range.max === undefined) { - return true; // skip this iteration (each loop), goto next range - } - // Loop through each elements - $.each(elems, function (id) { - var elemValue = elems[id].options.value; - // set value with one valueIndex to 0 if not object - if (typeof elemValue !== "object") { - elemValue = [elemValue]; - } - // Check existence of this value index - if (elemValue[valueIndex] === undefined) { - return true; // skip this iteration (each loop), goto next element - } - // Check if in range - if ((range.min !== undefined && elemValue[valueIndex] < range.min) || - (range.max !== undefined && elemValue[valueIndex] > range.max)) { - // Element not in range - elemsFinalOpacity[id] = hiddenOpacity; - } else { - // Element in range - elemsFinalOpacity[id] = 1; - } - }); - }); - // Now that we looped through all ranges, we can really assign the final opacity - $.each(elemsFinalOpacity, function (id) { - self.setElementOpacity(elems[id], elemsFinalOpacity[id], animDuration); - }); - }, - - /* - * Set element opacity - * Handle elem.mapElem and elem.textElem - * @param elem the element - * @param opacity the opacity to apply - * @param animDuration the animation duration to use - */ - setElementOpacity: function(elem, opacity, animDuration) { - var self = this; - - // Ensure no animation is running - //elem.mapElem.stop(); - //if (elem.textElem) elem.textElem.stop(); - - // If final opacity is not null, ensure element is shown before proceeding - if (opacity > 0) { - elem.mapElem.show(); - if (elem.textElem) elem.textElem.show(); - } - - self.animate(elem.mapElem, {"opacity": opacity}, animDuration, function () { - // If final attribute is 0, hide - if (opacity === 0) elem.mapElem.hide(); - }); - - self.animate(elem.textElem, {"opacity": opacity}, animDuration, function () { - // If final attribute is 0, hide - if (opacity === 0) elem.textElem.hide(); - }); - }, - - /* - * Update the current map - * - * Refresh attributes and tooltips for areas and plots - * @param opt option for the refresh : - * opt.mapOptions: options to update for plots and areas - * opt.replaceOptions: whether mapsOptions should entirely replace current map options, or just extend it - * opt.opt.newPlots new plots to add to the map - * opt.newLinks new links to add to the map - * opt.deletePlotKeys plots to delete from the map (array, or "all" to remove all plots) - * opt.deleteLinkKeys links to remove from the map (array, or "all" to remove all links) - * opt.setLegendElemsState the state of legend elements to be set : show (default) or hide - * opt.animDuration animation duration in ms (default = 0) - * opt.afterUpdate hook that allows to add custom processing on the map - */ - onUpdateEvent: function (e, opt) { - var self = this; - // Abort if opt is undefined - if (typeof opt !== "object") return; - - var i = 0; - var animDuration = (opt.animDuration) ? opt.animDuration : 0; - - // This function remove an element using animation (or not, depending on animDuration) - // Used for deletePlotKeys and deleteLinkKeys - var fnRemoveElement = function (elem) { - - self.animate(elem.mapElem, {"opacity": 0}, animDuration, function () { - elem.mapElem.remove(); - }); - - self.animate(elem.textElem, {"opacity": 0}, animDuration, function () { - elem.textElem.remove(); - }); - }; - - // This function show an element using animation - // Used for newPlots and newLinks - var fnShowElement = function (elem) { - // Starts with hidden elements - elem.mapElem.attr({opacity: 0}); - if (elem.textElem) elem.textElem.attr({opacity: 0}); - // Set final element opacity - self.setElementOpacity( - elem, - (elem.mapElem.originalAttrs.opacity !== undefined) ? elem.mapElem.originalAttrs.opacity : 1, - animDuration - ); - }; - - if (typeof opt.mapOptions === "object") { - if (opt.replaceOptions === true) self.options = self.extendDefaultOptions(opt.mapOptions); - else $.extend(true, self.options, opt.mapOptions); - - // IF we update areas, plots or legend, then reset all legend state to "show" - if (opt.mapOptions.areas !== undefined || opt.mapOptions.plots !== undefined || opt.mapOptions.legend !== undefined) { - $("[data-type='legend-elem']", self.$container).each(function (id, elem) { - if ($(elem).attr('data-hidden') === "1") { - // Toggle state of element by clicking - $(elem).trigger("click", {hideOtherElems: false, animDuration: animDuration}); - } - }); - } - } - - // Delete plots by name if deletePlotKeys is array - if (typeof opt.deletePlotKeys === "object") { - for (; i < opt.deletePlotKeys.length; i++) { - if (self.plots[opt.deletePlotKeys[i]] !== undefined) { - fnRemoveElement(self.plots[opt.deletePlotKeys[i]]); - delete self.plots[opt.deletePlotKeys[i]]; - } - } - // Delete ALL plots if deletePlotKeys is set to "all" - } else if (opt.deletePlotKeys === "all") { - $.each(self.plots, function (id, elem) { - fnRemoveElement(elem); - }); - // Empty plots object - self.plots = {}; - } - - // Delete links by name if deleteLinkKeys is array - if (typeof opt.deleteLinkKeys === "object") { - for (i = 0; i < opt.deleteLinkKeys.length; i++) { - if (self.links[opt.deleteLinkKeys[i]] !== undefined) { - fnRemoveElement(self.links[opt.deleteLinkKeys[i]]); - delete self.links[opt.deleteLinkKeys[i]]; - } - } - // Delete ALL links if deleteLinkKeys is set to "all" - } else if (opt.deleteLinkKeys === "all") { - $.each(self.links, function (id, elem) { - fnRemoveElement(elem); - }); - // Empty links object - self.links = {}; - } - - // New plots - if (typeof opt.newPlots === "object") { - $.each(opt.newPlots, function (id) { - if (self.plots[id] === undefined) { - self.options.plots[id] = opt.newPlots[id]; - self.plots[id] = self.drawPlot(id); - if (animDuration > 0) { - fnShowElement(self.plots[id]); - } - } - }); - } - - // New links - if (typeof opt.newLinks === "object") { - var newLinks = self.drawLinksCollection(opt.newLinks); - $.extend(self.links, newLinks); - $.extend(self.options.links, opt.newLinks); - if (animDuration > 0) { - $.each(newLinks, function (id) { - fnShowElement(newLinks[id]); - }); - } - } - - // Update areas attributes and tooltips - $.each(self.areas, function (id) { - // Avoid updating unchanged elements - if ((typeof opt.mapOptions === "object" && - ( - (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultArea === "object") || - (typeof opt.mapOptions.areas === "object" && typeof opt.mapOptions.areas[id] === "object") || - (typeof opt.mapOptions.legend === "object" && typeof opt.mapOptions.legend.area === "object") - )) || opt.replaceOptions === true - ) { - self.areas[id].options = self.getElemOptions( - self.options.map.defaultArea, - (self.options.areas[id] ? self.options.areas[id] : {}), - self.options.legend.area - ); - self.updateElem(self.areas[id], animDuration); - } - }); - - // Update plots attributes and tooltips - $.each(self.plots, function (id) { - // Avoid updating unchanged elements - if ((typeof opt.mapOptions ==="object" && - ( - (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultPlot === "object") || - (typeof opt.mapOptions.plots === "object" && typeof opt.mapOptions.plots[id] === "object") || - (typeof opt.mapOptions.legend === "object" && typeof opt.mapOptions.legend.plot === "object") - )) || opt.replaceOptions === true - ) { - self.plots[id].options = self.getElemOptions( - self.options.map.defaultPlot, - (self.options.plots[id] ? self.options.plots[id] : {}), - self.options.legend.plot - ); - - self.setPlotCoords(self.plots[id]); - self.setPlotAttributes(self.plots[id]); - - self.updateElem(self.plots[id], animDuration); - } - }); - - // Update links attributes and tooltips - $.each(self.links, function (id) { - // Avoid updating unchanged elements - if ((typeof opt.mapOptions === "object" && - ( - (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultLink === "object") || - (typeof opt.mapOptions.links === "object" && typeof opt.mapOptions.links[id] === "object") - )) || opt.replaceOptions === true - ) { - self.links[id].options = self.getElemOptions( - self.options.map.defaultLink, - (self.options.links[id] ? self.options.links[id] : {}), - {} - ); - - self.updateElem(self.links[id], animDuration); - } - }); - - // Update legends - if (opt.mapOptions && ( - (typeof opt.mapOptions.legend === "object") || - (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultArea === "object") || - (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultPlot === "object") - )) { - // Show all elements on the map before updating the legends - $("[data-type='legend-elem']", self.$container).each(function (id, elem) { - if ($(elem).attr('data-hidden') === "1") { - $(elem).trigger("click", {hideOtherElems: false, animDuration: animDuration}); - } - }); - - self.createLegends("area", self.areas, 1); - if (self.options.map.width) { - self.createLegends("plot", self.plots, (self.options.map.width / self.mapConf.width)); - } else { - self.createLegends("plot", self.plots, (self.$map.width() / self.mapConf.width)); - } - } - - // Hide/Show all elements based on showlegendElems - // Toggle (i.e. click) only if: - // - slice legend is shown AND we want to hide - // - slice legend is hidden AND we want to show - if (typeof opt.setLegendElemsState === "object") { - // setLegendElemsState is an object listing the legend we want to hide/show - $.each(opt.setLegendElemsState, function (legendCSSClass, action) { - // Search for the legend - var $legend = self.$container.find("." + legendCSSClass)[0]; - if ($legend !== undefined) { - // Select all elem inside this legend - $("[data-type='legend-elem']", $legend).each(function (id, elem) { - if (($(elem).attr('data-hidden') === "0" && action === "hide") || - ($(elem).attr('data-hidden') === "1" && action === "show")) { - // Toggle state of element by clicking - $(elem).trigger("click", {hideOtherElems: false, animDuration: animDuration}); - } - }); - } - }); - } else { - // setLegendElemsState is a string, or is undefined - // Default : "show" - var action = (opt.setLegendElemsState === "hide") ? "hide" : "show"; - - $("[data-type='legend-elem']", self.$container).each(function (id, elem) { - if (($(elem).attr('data-hidden') === "0" && action === "hide") || - ($(elem).attr('data-hidden') === "1" && action === "show")) { - // Toggle state of element by clicking - $(elem).trigger("click", {hideOtherElems: false, animDuration: animDuration}); - } - }); - } - - // Always rebind custom events on update - self.initDelegatedCustomEvents(); - - if (opt.afterUpdate) opt.afterUpdate(self.$container, self.paper, self.areas, self.plots, self.options, self.links); - }, - - /* - * Set plot coordinates - * @param plot object plot element - */ - setPlotCoords: function(plot) { - var self = this; - - if (plot.options.x !== undefined && plot.options.y !== undefined) { - plot.coords = { - x: plot.options.x, - y: plot.options.y - }; - } else if (plot.options.plotsOn !== undefined && self.areas[plot.options.plotsOn] !== undefined) { - var areaBBox = self.areas[plot.options.plotsOn].mapElem.getBBox(); - plot.coords = { - x: areaBBox.cx, - y: areaBBox.cy - }; - } else { - plot.coords = self.mapConf.getCoords(plot.options.latitude, plot.options.longitude); - } - }, - - /* - * Set plot size attributes according to its type - * Note: for SVG, plot.mapElem needs to exists beforehand - * @param plot object plot element - */ - setPlotAttributes: function(plot) { - if (plot.options.type === "square") { - plot.options.attrs.width = plot.options.size; - plot.options.attrs.height = plot.options.size; - plot.options.attrs.x = plot.coords.x - (plot.options.size / 2); - plot.options.attrs.y = plot.coords.y - (plot.options.size / 2); - } else if (plot.options.type === "image") { - plot.options.attrs.src = plot.options.url; - plot.options.attrs.width = plot.options.width; - plot.options.attrs.height = plot.options.height; - plot.options.attrs.x = plot.coords.x - (plot.options.width / 2); - plot.options.attrs.y = plot.coords.y - (plot.options.height / 2); - } else if (plot.options.type === "svg") { - plot.options.attrs.path = plot.options.path; - - // Init transform string - if (plot.options.attrs.transform === undefined) { - plot.options.attrs.transform = ""; - } - - // Retrieve original boundary box if not defined - if (plot.mapElem.originalBBox === undefined) { - plot.mapElem.originalBBox = plot.mapElem.getBBox(); - } - - // The base transform will resize the SVG path to the one specified by width/height - // and also move the path to the actual coordinates - plot.mapElem.baseTransform = "m" + (plot.options.width / plot.mapElem.originalBBox.width) + ",0,0," + - (plot.options.height / plot.mapElem.originalBBox.height) + "," + - (plot.coords.x - plot.options.width / 2) + "," + - (plot.coords.y - plot.options.height / 2); - - plot.options.attrs.transform = plot.mapElem.baseTransform + plot.options.attrs.transform; - - } else { // Default : circle - plot.options.attrs.x = plot.coords.x; - plot.options.attrs.y = plot.coords.y; - plot.options.attrs.r = plot.options.size / 2; - } - }, - - /* - * Draw all links between plots on the paper - */ - drawLinksCollection: function (linksCollection) { - var self = this; - var p1 = {}; - var p2 = {}; - var coordsP1 = {}; - var coordsP2 = {}; - var links = {}; - - $.each(linksCollection, function (id) { - var elemOptions = self.getElemOptions(self.options.map.defaultLink, linksCollection[id], {}); - - if (typeof linksCollection[id].between[0] === 'string') { - p1 = self.options.plots[linksCollection[id].between[0]]; - } else { - p1 = linksCollection[id].between[0]; - } - - if (typeof linksCollection[id].between[1] === 'string') { - p2 = self.options.plots[linksCollection[id].between[1]]; - } else { - p2 = linksCollection[id].between[1]; - } - - if (p1.plotsOn !== undefined && self.areas[p1.plotsOn] !== undefined) { - var p1BBox = self.areas[p1.plotsOn].mapElem.getBBox(); - coordsP1 = { - x: p1BBox.cx, - y: p1BBox.cy - }; - } - else if (p1.latitude !== undefined && p1.longitude !== undefined) { - coordsP1 = self.mapConf.getCoords(p1.latitude, p1.longitude); - } else { - coordsP1.x = p1.x; - coordsP1.y = p1.y; - } - - if (p2.plotsOn !== undefined && self.areas[p2.plotsOn] !== undefined) { - var p2BBox = self.areas[p2.plotsOn].mapElem.getBBox(); - coordsP2 = { - x: p2BBox.cx, - y: p2BBox.cy - }; - } - else if (p2.latitude !== undefined && p2.longitude !== undefined) { - coordsP2 = self.mapConf.getCoords(p2.latitude, p2.longitude); - } else { - coordsP2.x = p2.x; - coordsP2.y = p2.y; - } - links[id] = self.drawLink(id, coordsP1.x, coordsP1.y, coordsP2.x, coordsP2.y, elemOptions); - }); - return links; - }, - - /* - * Draw a curved link between two couples of coordinates a(xa,ya) and b(xb, yb) on the paper - */ - drawLink: function (id, xa, ya, xb, yb, elemOptions) { - var self = this; - var link = { - options: elemOptions - }; - // Compute the "curveto" SVG point, d(x,y) - // c(xc, yc) is the center of (xa,ya) and (xb, yb) - var xc = (xa + xb) / 2; - var yc = (ya + yb) / 2; - - // Equation for (cd) : y = acd * x + bcd (d is the cure point) - var acd = -1 / ((yb - ya) / (xb - xa)); - var bcd = yc - acd * xc; - - // dist(c,d) = dist(a,b) (=abDist) - var abDist = Math.sqrt((xb - xa) * (xb - xa) + (yb - ya) * (yb - ya)); - - // Solution for equation dist(cd) = sqrt((xd - xc)² + (yd - yc)²) - // dist(c,d)² = (xd - xc)² + (yd - yc)² - // We assume that dist(c,d) = dist(a,b) - // so : (xd - xc)² + (yd - yc)² - dist(a,b)² = 0 - // With the factor : (xd - xc)² + (yd - yc)² - (factor*dist(a,b))² = 0 - // (xd - xc)² + (acd*xd + bcd - yc)² - (factor*dist(a,b))² = 0 - var a = 1 + acd * acd; - var b = -2 * xc + 2 * acd * bcd - 2 * acd * yc; - var c = xc * xc + bcd * bcd - bcd * yc - yc * bcd + yc * yc - ((elemOptions.factor * abDist) * (elemOptions.factor * abDist)); - var delta = b * b - 4 * a * c; - var x = 0; - var y = 0; - - // There are two solutions, we choose one or the other depending on the sign of the factor - if (elemOptions.factor > 0) { - x = (-b + Math.sqrt(delta)) / (2 * a); - y = acd * x + bcd; - } else { - x = (-b - Math.sqrt(delta)) / (2 * a); - y = acd * x + bcd; - } - - link.mapElem = self.paper.path("m " + xa + "," + ya + " C " + x + "," + y + " " + xb + "," + yb + " " + xb + "," + yb + ""); - - self.initElem(id, 'link', link); - - return link; - }, - - /* - * Check wether newAttrs object bring modifications to originalAttrs object - */ - isAttrsChanged: function(originalAttrs, newAttrs) { - for (var key in newAttrs) { - if (newAttrs.hasOwnProperty(key) && typeof originalAttrs[key] === 'undefined' || newAttrs[key] !== originalAttrs[key]) { - return true; - } - } - return false; - }, - - /* - * Update the element "elem" on the map with the new options - */ - updateElem: function (elem, animDuration) { - var self = this; - var mapElemBBox; - var plotOffsetX; - var plotOffsetY; - - if (elem.options.toFront === true) { - elem.mapElem.toFront(); - } - - // Set the cursor attribute related to the HTML link - if (elem.options.href !== undefined) { - elem.options.attrs.cursor = "pointer"; - if (elem.options.text) elem.options.text.attrs.cursor = "pointer"; - } else { - // No HTML links, check if a cursor was defined to pointer - if (elem.mapElem.attrs.cursor === 'pointer') { - elem.options.attrs.cursor = "auto"; - if (elem.options.text) elem.options.text.attrs.cursor = "auto"; - } - } - - // Update the label - if (elem.textElem) { - // Update text attr - elem.options.text.attrs.text = elem.options.text.content; - - // Get mapElem size, and apply an offset to handle future width/height change - mapElemBBox = elem.mapElem.getBBox(); - if (elem.options.size || (elem.options.width && elem.options.height)) { - if (elem.options.type === "image" || elem.options.type === "svg") { - plotOffsetX = (elem.options.width - mapElemBBox.width) / 2; - plotOffsetY = (elem.options.height - mapElemBBox.height) / 2; - } else { - plotOffsetX = (elem.options.size - mapElemBBox.width) / 2; - plotOffsetY = (elem.options.size - mapElemBBox.height) / 2; - } - mapElemBBox.x -= plotOffsetX; - mapElemBBox.x2 += plotOffsetX; - mapElemBBox.y -= plotOffsetY; - mapElemBBox.y2 += plotOffsetY; - } - - // Update position attr - var textPosition = self.getTextPosition(mapElemBBox, elem.options.text.position, elem.options.text.margin); - elem.options.text.attrs.x = textPosition.x; - elem.options.text.attrs.y = textPosition.y; - elem.options.text.attrs['text-anchor'] = textPosition.textAnchor; - - // Update text element attrs and attrsHover - self.setHoverOptions(elem.textElem, elem.options.text.attrs, elem.options.text.attrsHover); - - if (self.isAttrsChanged(elem.textElem.attrs, elem.options.text.attrs)) { - self.animate(elem.textElem, elem.options.text.attrs, animDuration); - } - } - - // Update elements attrs and attrsHover - self.setHoverOptions(elem.mapElem, elem.options.attrs, elem.options.attrsHover); - - if (self.isAttrsChanged(elem.mapElem.attrs, elem.options.attrs)) { - self.animate(elem.mapElem, elem.options.attrs, animDuration); - } - - // Update the cssClass - if (elem.options.cssClass !== undefined) { - $(elem.mapElem.node).removeClass().addClass(elem.options.cssClass); - } - }, - - /* - * Draw the plot - */ - drawPlot: function (id) { - var self = this; - var plot = {}; - - // Get plot options and store it - plot.options = self.getElemOptions( - self.options.map.defaultPlot, - (self.options.plots[id] ? self.options.plots[id] : {}), - self.options.legend.plot - ); - - // Set plot coords - self.setPlotCoords(plot); - - // Draw SVG before setPlotAttributes() - if (plot.options.type === "svg") { - plot.mapElem = self.paper.path(plot.options.path); - } - - // Set plot size attrs - self.setPlotAttributes(plot); - - // Draw other types of plots - if (plot.options.type === "square") { - plot.mapElem = self.paper.rect( - plot.options.attrs.x, - plot.options.attrs.y, - plot.options.attrs.width, - plot.options.attrs.height - ); - } else if (plot.options.type === "image") { - plot.mapElem = self.paper.image( - plot.options.attrs.src, - plot.options.attrs.x, - plot.options.attrs.y, - plot.options.attrs.width, - plot.options.attrs.height - ); - } else if (plot.options.type === "svg") { - // Nothing to do - } else { - // Default = circle - plot.mapElem = self.paper.circle( - plot.options.attrs.x, - plot.options.attrs.y, - plot.options.attrs.r - ); - } - - self.initElem(id, 'plot', plot); - - return plot; - }, - - /* - * Set user defined handlers for events on areas and plots - * @param id the id of the element - * @param type the type of the element (area, plot, link) - * @param elem the element object {mapElem, textElem, options, ...} - */ - setEventHandlers: function (id, type, elem) { - var self = this; - $.each(elem.options.eventHandlers, function (event) { - if (self.customEventHandlers[event] === undefined) self.customEventHandlers[event] = {}; - if (self.customEventHandlers[event][type] === undefined) self.customEventHandlers[event][type] = {}; - self.customEventHandlers[event][type][id] = elem; - }); - }, - - /* - * Draw a legend for areas and / or plots - * @param legendOptions options for the legend to draw - * @param legendType the type of the legend : "area" or "plot" - * @param elems collection of plots or areas on the maps - * @param legendIndex index of the legend in the conf array - */ - drawLegend: function (legendOptions, legendType, elems, scale, legendIndex) { - var self = this; - var $legend = {}; - var legendPaper = {}; - var width = 0; - var height = 0; - var title = null; - var titleBBox = null; - var legendElems = {}; - var i = 0; - var x = 0; - var y = 0; - var yCenter = 0; - var sliceOptions = []; - - $legend = $("." + legendOptions.cssClass, self.$container); - - // Save content for later - var initialHTMLContent = $legend.html(); - $legend.empty(); - - legendPaper = new Raphael($legend.get(0)); - // Set some data to object - $(legendPaper.canvas).attr({"data-legend-type": legendType, "data-legend-id": legendIndex}); - - height = width = 0; - - // Set the title of the legend - if (legendOptions.title && legendOptions.title !== "") { - title = legendPaper.text(legendOptions.marginLeftTitle, 0, legendOptions.title).attr(legendOptions.titleAttrs); - titleBBox = title.getBBox(); - title.attr({y: 0.5 * titleBBox.height}); - - width = legendOptions.marginLeftTitle + titleBBox.width; - height += legendOptions.marginBottomTitle + titleBBox.height; - } - - // Calculate attrs (and width, height and r (radius)) for legend elements, and yCenter for horizontal legends - - for (i = 0; i < legendOptions.slices.length; ++i) { - var yCenterCurrent = 0; - - sliceOptions[i] = $.extend(true, {}, (legendType === "plot") ? self.options.map.defaultPlot : self.options.map.defaultArea, legendOptions.slices[i]); - - if (legendOptions.slices[i].legendSpecificAttrs === undefined) { - legendOptions.slices[i].legendSpecificAttrs = {}; - } - - $.extend(true, sliceOptions[i].attrs, legendOptions.slices[i].legendSpecificAttrs); - - if (legendType === "area") { - if (sliceOptions[i].attrs.width === undefined) - sliceOptions[i].attrs.width = 30; - if (sliceOptions[i].attrs.height === undefined) - sliceOptions[i].attrs.height = 20; - } else if (sliceOptions[i].type === "square") { - if (sliceOptions[i].attrs.width === undefined) - sliceOptions[i].attrs.width = sliceOptions[i].size; - if (sliceOptions[i].attrs.height === undefined) - sliceOptions[i].attrs.height = sliceOptions[i].size; - } else if (sliceOptions[i].type === "image" || sliceOptions[i].type === "svg") { - if (sliceOptions[i].attrs.width === undefined) - sliceOptions[i].attrs.width = sliceOptions[i].width; - if (sliceOptions[i].attrs.height === undefined) - sliceOptions[i].attrs.height = sliceOptions[i].height; - } else { - if (sliceOptions[i].attrs.r === undefined) - sliceOptions[i].attrs.r = sliceOptions[i].size / 2; - } - - // Compute yCenter for this legend slice - yCenterCurrent = legendOptions.marginBottomTitle; - // Add title height if it exists - if (title) { - yCenterCurrent += titleBBox.height; - } - if (legendType === "plot" && (sliceOptions[i].type === undefined || sliceOptions[i].type === "circle")) { - yCenterCurrent += scale * sliceOptions[i].attrs.r; - } else { - yCenterCurrent += scale * sliceOptions[i].attrs.height / 2; - } - // Update yCenter if current larger - yCenter = Math.max(yCenter, yCenterCurrent); - } - - if (legendOptions.mode === "horizontal") { - width = legendOptions.marginLeft; - } - - // Draw legend elements (circle, square or image in vertical or horizontal mode) - for (i = 0; i < sliceOptions.length; ++i) { - var legendElem = {}; - var legendElemBBox = {}; - var legendLabel = {}; - - if (sliceOptions[i].display === undefined || sliceOptions[i].display === true) { - if (legendType === "area") { - if (legendOptions.mode === "horizontal") { - x = width + legendOptions.marginLeft; - y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); - } else { - x = legendOptions.marginLeft; - y = height; - } - - legendElem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height)); - } else if (sliceOptions[i].type === "square") { - if (legendOptions.mode === "horizontal") { - x = width + legendOptions.marginLeft; - y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); - } else { - x = legendOptions.marginLeft; - y = height; - } - - legendElem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height)); - - } else if (sliceOptions[i].type === "image" || sliceOptions[i].type === "svg") { - if (legendOptions.mode === "horizontal") { - x = width + legendOptions.marginLeft; - y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); - } else { - x = legendOptions.marginLeft; - y = height; - } - - if (sliceOptions[i].type === "image") { - legendElem = legendPaper.image( - sliceOptions[i].url, x, y, scale * sliceOptions[i].attrs.width, scale * sliceOptions[i].attrs.height); - } else { - legendElem = legendPaper.path(sliceOptions[i].path); - - if (sliceOptions[i].attrs.transform === undefined) { - sliceOptions[i].attrs.transform = ""; - } - legendElemBBox = legendElem.getBBox(); - sliceOptions[i].attrs.transform = "m" + ((scale * sliceOptions[i].width) / legendElemBBox.width) + ",0,0," + ((scale * sliceOptions[i].height) / legendElemBBox.height) + "," + x + "," + y + sliceOptions[i].attrs.transform; - } - } else { - if (legendOptions.mode === "horizontal") { - x = width + legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r); - y = yCenter; - } else { - x = legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r); - y = height + scale * (sliceOptions[i].attrs.r); - } - legendElem = legendPaper.circle(x, y, scale * (sliceOptions[i].attrs.r)); - } - - // Set attrs to the element drawn above - delete sliceOptions[i].attrs.width; - delete sliceOptions[i].attrs.height; - delete sliceOptions[i].attrs.r; - legendElem.attr(sliceOptions[i].attrs); - legendElemBBox = legendElem.getBBox(); - - // Draw the label associated with the element - if (legendOptions.mode === "horizontal") { - x = width + legendOptions.marginLeft + legendElemBBox.width + legendOptions.marginLeftLabel; - y = yCenter; - } else { - x = legendOptions.marginLeft + legendElemBBox.width + legendOptions.marginLeftLabel; - y = height + (legendElemBBox.height / 2); - } - - legendLabel = legendPaper.text(x, y, sliceOptions[i].label).attr(legendOptions.labelAttrs); - - // Update the width and height for the paper - if (legendOptions.mode === "horizontal") { - var currentHeight = legendOptions.marginBottom + legendElemBBox.height; - width += legendOptions.marginLeft + legendElemBBox.width + legendOptions.marginLeftLabel + legendLabel.getBBox().width; - if (sliceOptions[i].type !== "image" && legendType !== "area") { - currentHeight += legendOptions.marginBottomTitle; - } - // Add title height if it exists - if (title) { - currentHeight += titleBBox.height; - } - height = Math.max(height, currentHeight); - } else { - width = Math.max(width, legendOptions.marginLeft + legendElemBBox.width + legendOptions.marginLeftLabel + legendLabel.getBBox().width); - height += legendOptions.marginBottom + legendElemBBox.height; - } - - // Set some data to elements - $(legendElem.node).attr({ - "data-legend-id": legendIndex, - "data-legend-type": legendType, - "data-type": "legend-elem", - "data-id": i, - "data-hidden": 0 - }); - $(legendLabel.node).attr({ - "data-legend-id": legendIndex, - "data-legend-type": legendType, - "data-type": "legend-label", - "data-id": i, - "data-hidden": 0 - }); - - // Set array content - // We use similar names like map/plots/links - legendElems[i] = { - mapElem: legendElem, - textElem: legendLabel - }; - - // Hide map elements when the user clicks on a legend item - if (legendOptions.hideElemsOnClick.enabled) { - // Hide/show elements when user clicks on a legend element - legendLabel.attr({cursor: "pointer"}); - legendElem.attr({cursor: "pointer"}); - - self.setHoverOptions(legendElem, sliceOptions[i].attrs, sliceOptions[i].attrs); - self.setHoverOptions(legendLabel, legendOptions.labelAttrs, legendOptions.labelAttrsHover); - - if (sliceOptions[i].clicked !== undefined && sliceOptions[i].clicked === true) { - self.handleClickOnLegendElem(legendElems[i], i, legendIndex, legendType, {hideOtherElems: false}); - } - } - } - } - - // VMLWidth option allows you to set static width for the legend - // only for VML render because text.getBBox() returns wrong values on IE6/7 - if (Raphael.type !== "SVG" && legendOptions.VMLWidth) - width = legendOptions.VMLWidth; - - legendPaper.setSize(width, height); - - return { - container: $legend, - initialHTMLContent: initialHTMLContent, - elems: legendElems - }; - }, - - /* - * Allow to hide elements of the map when the user clicks on a related legend item - * @param elem legend element - * @param id legend element ID - * @param legendIndex corresponding legend index - * @param legendType corresponding legend type (area or plot) - * @param opts object additionnal options - * hideOtherElems boolean, if other elems shall be hidden - * animDuration duration of animation - */ - handleClickOnLegendElem: function(elem, id, legendIndex, legendType, opts) { - var self = this; - var legendOptions; - opts = opts || {}; - - if (!$.isArray(self.options.legend[legendType])) { - legendOptions = self.options.legend[legendType]; - } else { - legendOptions = self.options.legend[legendType][legendIndex]; - } - - var legendElem = elem.mapElem; - var legendLabel = elem.textElem; - var $legendElem = $(legendElem.node); - var $legendLabel = $(legendLabel.node); - var sliceOptions = legendOptions.slices[id]; - var mapElems = legendType === 'area' ? self.areas : self.plots; - // Check animDuration: if not set, this is a regular click, use the value specified in options - var animDuration = opts.animDuration !== undefined ? opts.animDuration : legendOptions.hideElemsOnClick.animDuration ; - - var hidden = $legendElem.attr('data-hidden'); - var hiddenNewAttr = (hidden === '0') ? {"data-hidden": '1'} : {"data-hidden": '0'}; - - if (hidden === '0') { - self.animate(legendLabel, {"opacity": 0.5}, animDuration); - } else { - self.animate(legendLabel, {"opacity": 1}, animDuration); - } - - $.each(mapElems, function (y) { - var elemValue; - - // Retreive stored data of element - // 'hidden-by' contains the list of legendIndex that is hiding this element - var hiddenBy = mapElems[y].mapElem.data('hidden-by'); - // Set to empty object if undefined - if (hiddenBy === undefined) hiddenBy = {}; - - if ($.isArray(mapElems[y].options.value)) { - elemValue = mapElems[y].options.value[legendIndex]; - } else { - elemValue = mapElems[y].options.value; - } - - // Hide elements whose value matches with the slice of the clicked legend item - if (self.getLegendSlice(elemValue, legendOptions) === sliceOptions) { - if (hidden === '0') { // we want to hide this element - hiddenBy[legendIndex] = true; // add legendIndex to the data object for later use - self.setElementOpacity(mapElems[y], legendOptions.hideElemsOnClick.opacity, animDuration); - } else { // We want to show this element - delete hiddenBy[legendIndex]; // Remove this legendIndex from object - // Check if another legendIndex is defined - // We will show this element only if no legend is no longer hiding it - if ($.isEmptyObject(hiddenBy)) { - self.setElementOpacity( - mapElems[y], - mapElems[y].mapElem.originalAttrs.opacity !== undefined ? mapElems[y].mapElem.originalAttrs.opacity : 1, - animDuration - ); - } - } - // Update elem data with new values - mapElems[y].mapElem.data('hidden-by', hiddenBy); - } - }); - - $legendElem.attr(hiddenNewAttr); - $legendLabel.attr(hiddenNewAttr); - - if ((opts.hideOtherElems === undefined || opts.hideOtherElems === true) && legendOptions.exclusive === true ) { - $("[data-type='legend-elem'][data-hidden=0]", self.$container).each(function () { - var $elem = $(this); - if ($elem.attr('data-id') !== id) { - $elem.trigger("click", {hideOtherElems: false}); - } - }); - } - - }, - - /* - * Create all legends for a specified type (area or plot) - * @param legendType the type of the legend : "area" or "plot" - * @param elems collection of plots or areas displayed on the map - * @param scale scale ratio of the map - */ - createLegends: function (legendType, elems, scale) { - var self = this; - var legendsOptions = self.options.legend[legendType]; - - if (!$.isArray(self.options.legend[legendType])) { - legendsOptions = [self.options.legend[legendType]]; - } - - self.legends[legendType] = {}; - for (var j = 0; j < legendsOptions.length; ++j) { - if (legendsOptions[j].display === true && $.isArray(legendsOptions[j].slices) && legendsOptions[j].slices.length > 0 && - legendsOptions[j].cssClass !== "" && $("." + legendsOptions[j].cssClass, self.$container).length !== 0 - ) { - self.legends[legendType][j] = self.drawLegend(legendsOptions[j], legendType, elems, scale, j); - } - } - }, - - /* - * Set the attributes on hover and the attributes to restore for a map element - * @param elem the map element - * @param originalAttrs the original attributes to restore on mouseout event - * @param attrsHover the attributes to set on mouseover event - */ - setHoverOptions: function (elem, originalAttrs, attrsHover) { - // Disable transform option on hover for VML (IE<9) because of several bugs - if (Raphael.type !== "SVG") delete attrsHover.transform; - elem.attrsHover = attrsHover; - - if (elem.attrsHover.transform) elem.originalAttrs = $.extend({transform: "s1"}, originalAttrs); - else elem.originalAttrs = originalAttrs; - }, - - /* - * Set the behaviour when mouse enters element ("mouseover" event) - * It may be an area, a plot, a link or a legend element - * @param elem the map element - */ - elemEnter: function (elem) { - var self = this; - if (elem === undefined) return; - - /* Handle mapElem Hover attributes */ - if (elem.mapElem !== undefined) { - self.animate(elem.mapElem, elem.mapElem.attrsHover, elem.mapElem.attrsHover.animDuration); - } - - /* Handle textElem Hover attributes */ - if (elem.textElem !== undefined) { - self.animate(elem.textElem, elem.textElem.attrsHover, elem.textElem.attrsHover.animDuration); - } - - /* Handle tooltip init */ - if (elem.options && elem.options.tooltip !== undefined) { - var content = ''; - // Reset classes - self.$tooltip.removeClass().addClass(self.options.map.tooltip.cssClass); - // Get content - if (elem.options.tooltip.content !== undefined) { - // if tooltip.content is function, call it. Otherwise, assign it directly. - if (typeof elem.options.tooltip.content === "function") content = elem.options.tooltip.content(elem.mapElem); - else content = elem.options.tooltip.content; - } - if (elem.options.tooltip.cssClass !== undefined) { - self.$tooltip.addClass(elem.options.tooltip.cssClass); - } - self.$tooltip.html(content).css("display", "block"); - } - - // workaround for older version of Raphael - if (elem.mapElem !== undefined || elem.textElem !== undefined) { - if (self.paper.safari) self.paper.safari(); - } - }, - - /* - * Set the behaviour when mouse moves in element ("mousemove" event) - * @param elem the map element - */ - elemHover: function (elem, event) { - var self = this; - if (elem === undefined) return; - - /* Handle tooltip position update */ - if (elem.options.tooltip !== undefined) { - var mouseX = event.pageX; - var mouseY = event.pageY; - - var offsetLeft = 10; - var offsetTop = 20; - if (typeof elem.options.tooltip.offset === "object") { - if (typeof elem.options.tooltip.offset.left !== "undefined") { - offsetLeft = elem.options.tooltip.offset.left; - } - if (typeof elem.options.tooltip.offset.top !== "undefined") { - offsetTop = elem.options.tooltip.offset.top; - } - } - - var tooltipPosition = { - "left": Math.min(self.$map.width() - self.$tooltip.outerWidth() - 5, - mouseX - self.$map.offset().left + offsetLeft), - "top": Math.min(self.$map.height() - self.$tooltip.outerHeight() - 5, - mouseY - self.$map.offset().top + offsetTop) - }; - - if (typeof elem.options.tooltip.overflow === "object") { - if (elem.options.tooltip.overflow.right === true) { - tooltipPosition.left = mouseX - self.$map.offset().left + 10; - } - if (elem.options.tooltip.overflow.bottom === true) { - tooltipPosition.top = mouseY - self.$map.offset().top + 20; - } - } - - self.$tooltip.css(tooltipPosition); - } - }, - - /* - * Set the behaviour when mouse leaves element ("mouseout" event) - * It may be an area, a plot, a link or a legend element - * @param elem the map element - */ - elemOut: function (elem) { - var self = this; - if (elem === undefined) return; - - /* reset mapElem attributes */ - if (elem.mapElem !== undefined) { - self.animate(elem.mapElem, elem.mapElem.originalAttrs, elem.mapElem.attrsHover.animDuration); - } - - /* reset textElem attributes */ - if (elem.textElem !== undefined) { - self.animate(elem.textElem, elem.textElem.originalAttrs, elem.textElem.attrsHover.animDuration); - } - - /* reset tooltip */ - if (elem.options && elem.options.tooltip !== undefined) { - self.$tooltip.css({ - 'display': 'none', - 'top': -1000, - 'left': -1000 - }); - } - - // workaround for older version of Raphael - if (elem.mapElem !== undefined || elem.textElem !== undefined) { - if (self.paper.safari) self.paper.safari(); - } - }, - - /* - * Set the behaviour when mouse clicks element ("click" event) - * It may be an area, a plot or a link (but not a legend element which has its own function) - * @param elem the map element - */ - elemClick: function (elem) { - var self = this; - if (elem === undefined) return; - - /* Handle click when href defined */ - if (!self.panning && elem.options.href !== undefined) { - window.open(elem.options.href, elem.options.target); - } - }, - - /* - * Get element options by merging default options, element options and legend options - * @param defaultOptions - * @param elemOptions - * @param legendOptions - */ - getElemOptions: function (defaultOptions, elemOptions, legendOptions) { - var self = this; - var options = $.extend(true, {}, defaultOptions, elemOptions); - if (options.value !== undefined) { - if ($.isArray(legendOptions)) { - for (var i = 0; i < legendOptions.length; ++i) { - options = $.extend(true, {}, options, self.getLegendSlice(options.value[i], legendOptions[i])); - } - } else { - options = $.extend(true, {}, options, self.getLegendSlice(options.value, legendOptions)); - } - } - return options; - }, - - /* - * Get the coordinates of the text relative to a bbox and a position - * @param bbox the boundary box of the element - * @param textPosition the wanted text position (inner, right, left, top or bottom) - * @param margin number or object {x: val, y:val} margin between the bbox and the text - */ - getTextPosition: function (bbox, textPosition, margin) { - var textX = 0; - var textY = 0; - var textAnchor = ""; - - if (typeof margin === "number") { - if (textPosition === "bottom" || textPosition === "top") { - margin = {x: 0, y: margin}; - } else if (textPosition === "right" || textPosition === "left") { - margin = {x: margin, y: 0}; - } else { - margin = {x: 0, y: 0}; - } - } - - switch (textPosition) { - case "bottom" : - textX = ((bbox.x + bbox.x2) / 2) + margin.x; - textY = bbox.y2 + margin.y; - textAnchor = "middle"; - break; - case "top" : - textX = ((bbox.x + bbox.x2) / 2) + margin.x; - textY = bbox.y - margin.y; - textAnchor = "middle"; - break; - case "left" : - textX = bbox.x - margin.x; - textY = ((bbox.y + bbox.y2) / 2) + margin.y; - textAnchor = "end"; - break; - case "right" : - textX = bbox.x2 + margin.x; - textY = ((bbox.y + bbox.y2) / 2) + margin.y; - textAnchor = "start"; - break; - default : // "inner" position - textX = ((bbox.x + bbox.x2) / 2) + margin.x; - textY = ((bbox.y + bbox.y2) / 2) + margin.y; - textAnchor = "middle"; - } - return {"x": textX, "y": textY, "textAnchor": textAnchor}; - }, - - /* - * Get the legend conf matching with the value - * @param value the value to match with a slice in the legend - * @param legend the legend params object - * @return the legend slice matching with the value - */ - getLegendSlice: function (value, legend) { - for (var i = 0; i < legend.slices.length; ++i) { - if ((legend.slices[i].sliceValue !== undefined && value === legend.slices[i].sliceValue) || - ((legend.slices[i].sliceValue === undefined) && - (legend.slices[i].min === undefined || value >= legend.slices[i].min) && - (legend.slices[i].max === undefined || value <= legend.slices[i].max)) - ) { - return legend.slices[i]; - } - } - return {}; - }, - - /* - * Animated view box changes - * As from http://code.voidblossom.com/animating-viewbox-easing-formulas/, - * (from https://github.com/theshaun works on mapael) - * @param x coordinate of the point to focus on - * @param y coordinate of the point to focus on - * @param w map defined width - * @param h map defined height - * @param duration defined length of time for animation - * @param easingFunction defined Raphael supported easing_formula to use - */ - animateViewBox: function (targetX, targetY, targetW, targetH, duration, easingFunction) { - var self = this; - - var cx = self.currentViewBox.x; - var dx = targetX - cx; - var cy = self.currentViewBox.y; - var dy = targetY - cy; - var cw = self.currentViewBox.w; - var dw = targetW - cw; - var ch = self.currentViewBox.h; - var dh = targetH - ch; - - // Init current ViewBox target if undefined - if (!self.zoomAnimCVBTarget) { - self.zoomAnimCVBTarget = { - x: targetX, y: targetY, w: targetW, h: targetH - }; - } - - // Determine zoom direction by comparig current vs. target width - var zoomDir = (cw > targetW) ? 'in' : 'out'; - - var easingFormula = Raphael.easing_formulas[easingFunction || "linear"]; - - // To avoid another frame when elapsed time approach end (2%) - var durationWithMargin = duration - (duration * 2 / 100); - - // Save current zoomAnimStartTime before assigning a new one - var oldZoomAnimStartTime = self.zoomAnimStartTime; - self.zoomAnimStartTime = (new Date()).getTime(); - - /* Actual function to animate the ViewBox - * Uses requestAnimationFrame to schedule itself again until animation is over - */ - var computeNextStep = function () { - // Cancel any remaining animationFrame - // It means this new step will take precedence over the old one scheduled - // This is the case when the user is triggering the zoom fast (e.g. with a big mousewheel run) - // This actually does nothing when performing a single zoom action - self.cancelAnimationFrame(self.zoomAnimID); - // Compute elapsed time - var elapsed = (new Date()).getTime() - self.zoomAnimStartTime; - // Check if animation should finish - if (elapsed < durationWithMargin) { - // Hold the future ViewBox values - var x, y, w, h; - - // There are two ways to compute the next ViewBox size - // 1. If the target ViewBox has changed between steps (=> ADAPTATION step) - // 2. Or if the target ViewBox is the same (=> NORMAL step) - // - // A change of ViewBox target between steps means the user is triggering - // the zoom fast (like a big scroll with its mousewheel) - // - // The new animation step with the new target will always take precedence over the - // last one and start from 0 (we overwrite zoomAnimStartTime and cancel the scheduled frame) - // - // So if we don't detect the change of target and adapt our computation, - // the user will see a delay at beginning the ratio will stays at 0 for some frames - // - // Hence when detecting the change of target, we animate from the previous target. - // - // The next step will then take the lead and continue from there, achieving a nicer - // experience for user. - - // Change of target IF: an old animation start value exists AND the target has actually changed - if (oldZoomAnimStartTime && self.zoomAnimCVBTarget && self.zoomAnimCVBTarget.w !== targetW) { - // Compute the real time elapsed with the last step - var realElapsed = (new Date()).getTime() - oldZoomAnimStartTime; - // Compute then the actual ratio we're at - var realRatio = easingFormula(realElapsed / duration); - // Compute new ViewBox values - // The difference with the normal function is regarding the delta value used - // We don't take the current (dx, dy, dw, dh) values yet because they are related to the new target - // But we take the old target - x = cx + (self.zoomAnimCVBTarget.x - cx) * realRatio; - y = cy + (self.zoomAnimCVBTarget.y - cy) * realRatio; - w = cw + (self.zoomAnimCVBTarget.w - cw) * realRatio; - h = ch + (self.zoomAnimCVBTarget.h - ch) * realRatio; - // Update cw, cy, cw and ch so the next step take animation from here - cx = x; - dx = targetX - cx; - cy = y; - dy = targetY - cy; - cw = w; - dw = targetW - cw; - ch = h; - dh = targetH - ch; - // Update the current ViewBox target - self.zoomAnimCVBTarget = { - x: targetX, y: targetY, w: targetW, h: targetH - }; - } else { - // This is the classical approach when nothing come interrupting the zoom - // Compute ratio according to elasped time and easing formula - var ratio = easingFormula(elapsed / duration); - // From the current value, we add a delta with a ratio that will leads us to the target - x = cx + dx * ratio; - y = cy + dy * ratio; - w = cw + dw * ratio; - h = ch + dh * ratio; - } - - // Some checks before applying the new viewBox - if (zoomDir === 'in' && (w > self.currentViewBox.w || w < targetW)) { - // Zooming IN and the new ViewBox seems larger than the current value, or smaller than target value - // We do NOT set the ViewBox with this value - // Otherwise, the user would see the camera going back and forth - } else if (zoomDir === 'out' && (w < self.currentViewBox.w || w > targetW)) { - // Zooming OUT and the new ViewBox seems smaller than the current value, or larger than target value - // We do NOT set the ViewBox with this value - // Otherwise, the user would see the camera going back and forth - } else { - // New values look good, applying - self.setViewBox(x, y, w, h); - } - - // Schedule the next step - self.zoomAnimID = self.requestAnimationFrame(computeNextStep); - } else { - /* Zoom animation done ! */ - // Perform some cleaning - self.zoomAnimStartTime = null; - self.zoomAnimCVBTarget = null; - // Make sure the ViewBox hits the target! - if (self.currentViewBox.w !== targetW) { - self.setViewBox(targetX, targetY, targetW, targetH); - } - // Finally trigger afterZoom event - self.$map.trigger("afterZoom", { - x1: targetX, y1: targetY, - x2: (targetX + targetW), y2: (targetY + targetH) - }); - } - }; - - // Invoke the first step directly - computeNextStep(); - }, - - /* - * requestAnimationFrame/cancelAnimationFrame polyfill - * Based on https://gist.github.com/jlmakes/47eba84c54bc306186ac1ab2ffd336d4 - * and also https://gist.github.com/paulirish/1579671 - * - * _requestAnimationFrameFn and _cancelAnimationFrameFn hold the current functions - * But requestAnimationFrame and cancelAnimationFrame shall be called since - * in order to be in window context - */ - // The function to use for requestAnimationFrame - requestAnimationFrame: function(callback) { - return this._requestAnimationFrameFn.call(window, callback); - }, - // The function to use for cancelAnimationFrame - cancelAnimationFrame: function(id) { - this._cancelAnimationFrameFn.call(window, id); - }, - // The requestAnimationFrame polyfill'd function - // Value set by self-invoking function, will be run only once - _requestAnimationFrameFn: (function () { - var polyfill = (function () { - var clock = (new Date()).getTime(); - - return function (callback) { - var currentTime = (new Date()).getTime(); - - // requestAnimationFrame strive to run @60FPS - // (e.g. every 16 ms) - if (currentTime - clock > 16) { - clock = currentTime; - callback(currentTime); - } else { - // Ask browser to schedule next callback when possible - return setTimeout(function () { - polyfill(callback); - }, 0); - } - }; - })(); - - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.msRequestAnimationFrame || - window.oRequestAnimationFrame || - polyfill; - })(), - // The CancelAnimationFrame polyfill'd function - // Value set by self-invoking function, will be run only once - _cancelAnimationFrameFn: (function () { - return window.cancelAnimationFrame || - window.webkitCancelAnimationFrame || - window.webkitCancelRequestAnimationFrame || - window.mozCancelAnimationFrame || - window.mozCancelRequestAnimationFrame || - window.msCancelAnimationFrame || - window.msCancelRequestAnimationFrame || - window.oCancelAnimationFrame || - window.oCancelRequestAnimationFrame || - clearTimeout; - })(), - - /* - * SetViewBox wrapper - * Apply new viewbox values and keep track of them - * - * This avoid using the internal variable paper._viewBox which - * may not be present in future version of Raphael - */ - setViewBox: function(x, y, w, h) { - var self = this; - // Update current value - self.currentViewBox.x = x; - self.currentViewBox.y = y; - self.currentViewBox.w = w; - self.currentViewBox.h = h; - // Perform set view box - self.paper.setViewBox(x, y, w, h, false); - }, - - /* - * Animate wrapper for Raphael element - * - * Perform an animation and ensure the non-animated attr are set. - * This is needed for specific attributes like cursor who will not - * be animated, and thus not set. - * - * If duration is set to 0 (or not set), no animation are performed - * and attributes are directly set (and the callback directly called) - */ - // List extracted from Raphael internal vars - // Diff between Raphael.availableAttrs and Raphael._availableAnimAttrs - _nonAnimatedAttrs: [ - "arrow-end", "arrow-start", "gradient", - "class", "cursor", "text-anchor", - "font", "font-family", "font-style", "font-weight", "letter-spacing", - "src", "href", "target", "title", - "stroke-dasharray", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit" - ], - /* - * @param element Raphael element - * @param attrs Attributes object to animate - * @param duration Animation duration in ms - * @param callback Callback to eventually call after animation is done - */ - animate: function(element, attrs, duration, callback) { - var self = this; - // Check element - if (!element) return; - if (duration > 0) { - // Filter out non-animated attributes - // Note: we don't need to delete from original attribute (they won't be set anyway) - var attrsNonAnimated = {}; - for (var i=0 ; i < self._nonAnimatedAttrs.length ; i++) { - var attrName = self._nonAnimatedAttrs[i]; - if (attrs[attrName] !== undefined) { - attrsNonAnimated[attrName] = attrs[attrName]; - } - } - // Set non-animated attributes - element.attr(attrsNonAnimated); - // Start animation for all attributes - element.animate(attrs, duration, 'linear', function() { - if (callback) callback(); - }); - } else { - // No animation: simply set all attributes... - element.attr(attrs); - // ... and call the callback if needed - if (callback) callback(); - } - }, - - /* - * Check for Raphael bug regarding drawing while beeing hidden (under display:none) - * See https://github.com/neveldo/jQuery-Mapael/issues/135 - * @return true/false - * - * Wants to override this behavior? Use prototype overriding: - * $.mapael.prototype.isRaphaelBBoxBugPresent = function() {return false;}; - */ - isRaphaelBBoxBugPresent: function() { - var self = this; - // Draw text, then get its boundaries - var textElem = self.paper.text(-50, -50, "TEST"); - var textElemBBox = textElem.getBBox(); - // remove element - textElem.remove(); - // If it has no height and width, then the paper is hidden - return (textElemBBox.width === 0 && textElemBBox.height === 0); - }, - - // Default map options - defaultOptions: { - map: { - cssClass: "map", - tooltip: { - cssClass: "mapTooltip" - }, - defaultArea: { - attrs: { - fill: "#343434", - stroke: "#5d5d5d", - "stroke-width": 1, - "stroke-linejoin": "round" - }, - attrsHover: { - fill: "#f38a03", - animDuration: 300 - }, - text: { - position: "inner", - margin: 10, - attrs: { - "font-size": 15, - fill: "#c7c7c7" - }, - attrsHover: { - fill: "#eaeaea", - "animDuration": 300 - } - }, - target: "_self", - cssClass: "area" - }, - defaultPlot: { - type: "circle", - size: 15, - attrs: { - fill: "#0088db", - stroke: "#fff", - "stroke-width": 0, - "stroke-linejoin": "round" - }, - attrsHover: { - "stroke-width": 3, - animDuration: 300 - }, - text: { - position: "right", - margin: 10, - attrs: { - "font-size": 15, - fill: "#c7c7c7" - }, - attrsHover: { - fill: "#eaeaea", - animDuration: 300 - } - }, - target: "_self", - cssClass: "plot" - }, - defaultLink: { - factor: 0.5, - attrs: { - stroke: "#0088db", - "stroke-width": 2 - }, - attrsHover: { - animDuration: 300 - }, - text: { - position: "inner", - margin: 10, - attrs: { - "font-size": 15, - fill: "#c7c7c7" - }, - attrsHover: { - fill: "#eaeaea", - animDuration: 300 - } - }, - target: "_self", - cssClass: "link" - }, - zoom: { - enabled: false, - minLevel: 0, - maxLevel: 10, - step: 0.25, - mousewheel: true, - touch: true, - animDuration: 200, - animEasing: "linear", - buttons: { - "reset": { - cssClass: "zoomButton zoomReset", - content: "•", // bullet sign - title: "Reset zoom" - }, - "in": { - cssClass: "zoomButton zoomIn", - content: "+", - title: "Zoom in" - }, - "out": { - cssClass: "zoomButton zoomOut", - content: "−", // minus sign - title: "Zoom out" - } - } - } - }, - legend: { - redrawOnResize: true, - area: [], - plot: [] - }, - areas: {}, - plots: {}, - links: {} - }, - - // Default legends option - legendDefaultOptions: { - area: { - cssClass: "areaLegend", - display: true, - marginLeft: 10, - marginLeftTitle: 5, - marginBottomTitle: 10, - marginLeftLabel: 10, - marginBottom: 10, - titleAttrs: { - "font-size": 16, - fill: "#343434", - "text-anchor": "start" - }, - labelAttrs: { - "font-size": 12, - fill: "#343434", - "text-anchor": "start" - }, - labelAttrsHover: { - fill: "#787878", - animDuration: 300 - }, - hideElemsOnClick: { - enabled: true, - opacity: 0.2, - animDuration: 300 - }, - slices: [], - mode: "vertical" - }, - plot: { - cssClass: "plotLegend", - display: true, - marginLeft: 10, - marginLeftTitle: 5, - marginBottomTitle: 10, - marginLeftLabel: 10, - marginBottom: 10, - titleAttrs: { - "font-size": 16, - fill: "#343434", - "text-anchor": "start" - }, - labelAttrs: { - "font-size": 12, - fill: "#343434", - "text-anchor": "start" - }, - labelAttrsHover: { - fill: "#787878", - animDuration: 300 - }, - hideElemsOnClick: { - enabled: true, - opacity: 0.2, - animDuration: 300 - }, - slices: [], - mode: "vertical" - } - } - - }; - - // Mapael version number - // Accessible as $.mapael.version - Mapael.version = version; - - // Extend jQuery with Mapael - if ($[pluginName] === undefined) $[pluginName] = Mapael; - - // Add jQuery DOM function - $.fn[pluginName] = function (options) { - // Call Mapael on each element - return this.each(function () { - // Avoid leaking problem on multiple instanciation by removing an old mapael object on a container - if ($.data(this, pluginName)) { - $.data(this, pluginName).destroy(); - } - // Create Mapael and save it as jQuery data - // This allow external access to Mapael using $(".mapcontainer").data("mapael") - $.data(this, pluginName, new Mapael(this, options)); - }); - }; - - return Mapael; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.min.js deleted file mode 100644 index f8ba1e0..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/jquery.mapael.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("raphael"),require("jquery-mousewheel")):"function"==typeof define&&define.amd?define(["jquery","raphael","mousewheel"],a):a(jQuery,Raphael,jQuery.fn.mousewheel)}(function(a,b,c,d){"use strict";var e=function(b,c){var d=this;d.container=b,d.$container=a(b),d.options=d.extendDefaultOptions(c),d.zoomTO=0,d.zoomCenterX=0,d.zoomCenterY=0,d.previousPinchDist=0,d.zoomData={zoomLevel:0,zoomX:0,zoomY:0,panX:0,panY:0},d.currentViewBox={x:0,y:0,w:0,h:0},d.panning=!1,d.zoomAnimID=null,d.zoomAnimStartTime=null,d.zoomAnimCVBTarget=null,d.$map=a("."+d.options.map.cssClass,d.container),d.initialMapHTMLContent=d.$map.html(),d.$tooltip={},d.paper={},d.areas={},d.plots={},d.links={},d.legends={},d.mapConf={},d.customEventHandlers={},d.init()};return e.prototype={MouseOverFilteringTO:120,panningFilteringTO:150,panningEndFilteringTO:50,zoomFilteringTO:150,resizeFilteringTO:150,init:function(){var c=this;if(""===c.options.map.cssClass||0===a("."+c.options.map.cssClass,c.container).length)throw new Error("The map class `"+c.options.map.cssClass+"` doesn't exists");if(c.$tooltip=a("
      ").addClass(c.options.map.tooltip.cssClass).css("display","none"),c.$map.empty().append(c.$tooltip),a.mapael&&a.mapael.maps&&a.mapael.maps[c.options.map.name])c.mapConf=a.mapael.maps[c.options.map.name];else{if(!(a.fn.mapael&&a.fn.mapael.maps&&a.fn.mapael.maps[c.options.map.name]))throw new Error("Unknown map '"+c.options.map.name+"'");c.mapConf=a.fn.mapael.maps[c.options.map.name],window.console&&window.console.warn&&window.console.warn("Extending $.fn.mapael is deprecated (map '"+c.options.map.name+"')")}if(c.paper=new b(c.$map[0],c.mapConf.width,c.mapConf.height),!0===c.isRaphaelBBoxBugPresent())throw c.destroy(),new Error("Can't get boundary box for text (is your container hidden? See #135)");c.$container.addClass("mapael"),c.options.map.tooltip.css&&c.$tooltip.css(c.options.map.tooltip.css),c.setViewBox(0,0,c.mapConf.width,c.mapConf.height),c.options.map.width?c.paper.setSize(c.options.map.width,c.mapConf.height*(c.options.map.width/c.mapConf.width)):c.initResponsiveSize(),a.each(c.mapConf.elems,function(a){c.areas[a]={},c.areas[a].options=c.getElemOptions(c.options.map.defaultArea,c.options.areas[a]?c.options.areas[a]:{},c.options.legend.area),c.areas[a].mapElem=c.paper.path(c.mapConf.elems[a])}),c.options.map.beforeInit&&c.options.map.beforeInit(c.$container,c.paper,c.options),a.each(c.mapConf.elems,function(a){c.initElem(a,"area",c.areas[a])}),c.links=c.drawLinksCollection(c.options.links),a.each(c.options.plots,function(a){c.plots[a]=c.drawPlot(a)}),c.$container.on("zoom.mapael",function(a,b){c.onZoomEvent(a,b)}),c.options.map.zoom.enabled&&c.initZoom(c.mapConf.width,c.mapConf.height,c.options.map.zoom),c.options.map.zoom.init!==d&&(c.options.map.zoom.init.animDuration===d&&(c.options.map.zoom.init.animDuration=0),c.$container.trigger("zoom",c.options.map.zoom.init)),c.createLegends("area",c.areas,1),c.createLegends("plot",c.plots,c.paper.width/c.mapConf.width),c.$container.on("update.mapael",function(a,b){c.onUpdateEvent(a,b)}),c.$container.on("showElementsInRange.mapael",function(a,b){c.onShowElementsInRange(a,b)}),c.initDelegatedMapEvents(),c.initDelegatedCustomEvents(),c.options.map.afterInit&&c.options.map.afterInit(c.$container,c.paper,c.areas,c.plots,c.options),a(c.paper.desc).append(" and Mapael "+c.version+" (https://www.vincentbroute.fr/mapael/)")},destroy:function(){var b=this;b.$container.off(".mapael"),b.$map.off(".mapael"),b.onResizeEvent&&a(window).off("resize.mapael",b.onResizeEvent),b.$map.empty(),b.$map.html(b.initialMapHTMLContent),a.each(b.legends,function(c){a.each(b.legends[c],function(a){var d=b.legends[c][a];d.container.empty(),d.container.html(d.initialHTMLContent)})}),b.$container.removeClass("mapael"),b.$container.removeData("mapael"),b.container=d,b.$container=d,b.options=d,b.paper=d,b.$map=d,b.$tooltip=d,b.mapConf=d,b.areas=d,b.plots=d,b.links=d,b.customEventHandlers=d},initResponsiveSize:function(){var b=this,c=null,d=function(a){var c=b.$map.width();if(b.paper.width!==c){var d=c/b.mapConf.width;b.paper.setSize(c,b.mapConf.height*d),!0!==a&&b.options.legend.redrawOnResize&&b.createLegends("plot",b.plots,d)}};b.onResizeEvent=function(){clearTimeout(c),c=setTimeout(function(){d()},b.resizeFilteringTO)},a(window).on("resize.mapael",b.onResizeEvent),d(!0)},extendDefaultOptions:function(b){return b=a.extend(!0,{},e.prototype.defaultOptions,b),a.each(["area","plot"],function(c,d){if(a.isArray(b.legend[d]))for(var f=0;f").addClass(c.cssClass).html(c.content).attr("title",c.title);e.on("click.mapael",j[b]),f.$map.append(e)}),f.options.map.zoom.mousewheel&&f.$map.on("mousewheel.mapael",function(a){var b=a.deltaY>0?1:-1,c=f.mapPagePositionToXY(a.pageX,a.pageY);f.$container.trigger("zoom",{fixedCenter:!0,level:f.zoomData.zoomLevel+b,x:c.x,y:c.y}),a.preventDefault()}),f.options.map.zoom.touch&&(f.$map.on("touchstart.mapael",function(a){2===a.originalEvent.touches.length&&(f.zoomCenterX=(a.originalEvent.touches[0].pageX+a.originalEvent.touches[1].pageX)/2,f.zoomCenterY=(a.originalEvent.touches[0].pageY+a.originalEvent.touches[1].pageY)/2,f.previousPinchDist=Math.sqrt(Math.pow(a.originalEvent.touches[1].pageX-a.originalEvent.touches[0].pageX,2)+Math.pow(a.originalEvent.touches[1].pageY-a.originalEvent.touches[0].pageY,2)))}),f.$map.on("touchmove.mapael",function(a){var b=0,c=0;if(2===a.originalEvent.touches.length){if(b=Math.sqrt(Math.pow(a.originalEvent.touches[1].pageX-a.originalEvent.touches[0].pageX,2)+Math.pow(a.originalEvent.touches[1].pageY-a.originalEvent.touches[0].pageY,2)),Math.abs(b-f.previousPinchDist)>15){var d=f.mapPagePositionToXY(f.zoomCenterX,f.zoomCenterY);c=(b-f.previousPinchDist)/Math.abs(b-f.previousPinchDist),f.$container.trigger("zoom",{fixedCenter:!0,level:f.zoomData.zoomLevel+c,x:d.x,y:d.y}),f.previousPinchDist=b}return!1}})),f.$map.on("dragstart",function(){return!1});var k=null,l=null;a("body").on("mouseup.mapael"+(e.touch?" touchend.mapael":""),function(){g=!1,clearTimeout(k),clearTimeout(l),k=setTimeout(function(){f.panning=!1},f.panningEndFilteringTO)}),f.$map.on("mousedown.mapael"+(e.touch?" touchstart.mapael":""),function(a){clearTimeout(k),clearTimeout(l),a.pageX!==d?(g=!0,h=a.pageX,i=a.pageY):1===a.originalEvent.touches.length&&(g=!0,h=a.originalEvent.touches[0].pageX,i=a.originalEvent.touches[0].pageY)}).on("mousemove.mapael"+(e.touch?" touchmove.mapael":""),function(j){var m=f.zoomData.zoomLevel,n=0,o=0;if(clearTimeout(k),clearTimeout(l),j.pageX!==d?(n=j.pageX,o=j.pageY):1===j.originalEvent.touches.length?(n=j.originalEvent.touches[0].pageX,o=j.originalEvent.touches[0].pageY):g=!1,g&&0!==m){var p=(h-n)/(1+m*e.step)*(b/f.paper.width),q=(i-o)/(1+m*e.step)*(c/f.paper.height),r=Math.min(Math.max(0,f.currentViewBox.x+p),b-f.currentViewBox.w),s=Math.min(Math.max(0,f.currentViewBox.y+q),c-f.currentViewBox.h);return(Math.abs(p)>5||Math.abs(q)>5)&&(a.extend(f.zoomData,{panX:r,panY:s,zoomX:r+f.currentViewBox.w/2,zoomY:s+f.currentViewBox.h/2}),f.setViewBox(r,s,f.currentViewBox.w,f.currentViewBox.h),l=setTimeout(function(){f.$map.trigger("afterPanning",{x1:r,y1:s,x2:r+f.currentViewBox.w,y2:s+f.currentViewBox.h})},f.panningFilteringTO),h=n,i=o,f.panning=!0),!1}})},mapPagePositionToXY:function(a,b){var c=this,d=c.$map.offset(),e=c.options.map.width?c.mapConf.width/c.options.map.width:c.mapConf.width/c.$map.width(),f=1/(1+c.zoomData.zoomLevel*c.options.map.zoom.step);return{x:f*e*(a-d.left)+c.zoomData.panX,y:f*e*(b-d.top)+c.zoomData.panY}},onZoomEvent:function(b,c){var e,f,g,h,i,j=this,k=j.zoomData.zoomLevel,l=1+j.zoomData.zoomLevel*j.options.map.zoom.step,m=c.animDuration!==d?c.animDuration:j.options.map.zoom.animDuration;if(c.area!==d){if(j.areas[c.area]===d)throw new Error("Unknown area '"+c.area+"'");var n=c.areaMargin!==d?c.areaMargin:10,o=j.areas[c.area].mapElem.getBBox(),p=o.width+2*n,q=o.height+2*n;c.x=o.cx,c.y=o.cy,k=Math.min(Math.floor((j.mapConf.width/p-1)/j.options.map.zoom.step),Math.floor((j.mapConf.height/q-1)/j.options.map.zoom.step))}else if(c.level!==d&&(k="string"==typeof c.level?"+"===c.level.slice(0,1)||"-"===c.level.slice(0,1)?j.zoomData.zoomLevel+parseInt(c.level,10):parseInt(c.level,10):c.level<0?j.zoomData.zoomLevel+c.level:c.level),c.plot!==d){if(j.plots[c.plot]===d)throw new Error("Unknown plot '"+c.plot+"'");c.x=j.plots[c.plot].coords.x,c.y=j.plots[c.plot].coords.y}else{if(c.latitude!==d&&c.longitude!==d){var r=j.mapConf.getCoords(c.latitude,c.longitude);c.x=r.x,c.y=r.y}c.x===d&&(c.x=j.currentViewBox.x+j.currentViewBox.w/2),c.y===d&&(c.y=j.currentViewBox.y+j.currentViewBox.h/2)}k=Math.min(Math.max(k,j.options.map.zoom.minLevel),j.options.map.zoom.maxLevel),i=1+k*j.options.map.zoom.step,g=j.mapConf.width/i,h=j.mapConf.height/i,0===k?(e=0,f=0):(c.fixedCenter!==d&&!0===c.fixedCenter?(e=j.zoomData.panX+(c.x-j.zoomData.panX)*(i-l)/i,f=j.zoomData.panY+(c.y-j.zoomData.panY)*(i-l)/i):(e=c.x-g/2,f=c.y-h/2),e=Math.min(Math.max(0,e),j.mapConf.width-g),f=Math.min(Math.max(0,f),j.mapConf.height-h)),i===l&&e===j.zoomData.panX&&f===j.zoomData.panY||(m>0?j.animateViewBox(e,f,g,h,m,j.options.map.zoom.animEasing):(j.setViewBox(e,f,g,h),clearTimeout(j.zoomTO),j.zoomTO=setTimeout(function(){j.$map.trigger("afterZoom",{x1:e,y1:f,x2:e+g,y2:f+h})},j.zoomFilteringTO)),a.extend(j.zoomData,{zoomLevel:k,panX:e,panY:f,zoomX:e+g/2,zoomY:f+h/2}))},onShowElementsInRange:function(a,b){var c=this;b.animDuration===d&&(b.animDuration=0),b.hiddenOpacity===d&&(b.hiddenOpacity=.3),b.ranges&&b.ranges.area&&c.showElemByRange(b.ranges.area,c.areas,b.hiddenOpacity,b.animDuration),b.ranges&&b.ranges.plot&&c.showElemByRange(b.ranges.plot,c.plots,b.hiddenOpacity,b.animDuration),b.ranges&&b.ranges.link&&c.showElemByRange(b.ranges.link,c.links,b.hiddenOpacity,b.animDuration),b.afterShowRange&&b.afterShowRange()},showElemByRange:function(b,c,e,f){var g=this,h={};b.min===d&&b.max===d||(b={0:b}),a.each(b,function(f){var g=b[f];if(g.min===d&&g.max===d)return!0;a.each(c,function(a){var b=c[a].options.value;if("object"!=typeof b&&(b=[b]),b[f]===d)return!0;g.min!==d&&b[f]g.max?h[a]=e:h[a]=1})}),a.each(h,function(a){g.setElementOpacity(c[a],h[a],f)})},setElementOpacity:function(a,b,c){var d=this;b>0&&(a.mapElem.show(),a.textElem&&a.textElem.show()),d.animate(a.mapElem,{opacity:b},c,function(){0===b&&a.mapElem.hide()}),d.animate(a.textElem,{opacity:b},c,function(){0===b&&a.textElem.hide()})},onUpdateEvent:function(b,c){var e=this;if("object"==typeof c){var f=0,g=c.animDuration?c.animDuration:0,h=function(a){e.animate(a.mapElem,{opacity:0},g,function(){a.mapElem.remove()}),e.animate(a.textElem,{opacity:0},g,function(){a.textElem.remove()})},i=function(a){a.mapElem.attr({opacity:0}),a.textElem&&a.textElem.attr({opacity:0}),e.setElementOpacity(a,a.mapElem.originalAttrs.opacity!==d?a.mapElem.originalAttrs.opacity:1,g)};if("object"==typeof c.mapOptions&&(!0===c.replaceOptions?e.options=e.extendDefaultOptions(c.mapOptions):a.extend(!0,e.options,c.mapOptions),c.mapOptions.areas===d&&c.mapOptions.plots===d&&c.mapOptions.legend===d||a("[data-type='legend-elem']",e.$container).each(function(b,c){"1"===a(c).attr("data-hidden")&&a(c).trigger("click",{hideOtherElems:!1,animDuration:g})})),"object"==typeof c.deletePlotKeys)for(;f0&&i(e.plots[a]))}),"object"==typeof c.newLinks){var j=e.drawLinksCollection(c.newLinks);a.extend(e.links,j),a.extend(e.options.links,c.newLinks),g>0&&a.each(j,function(a){i(j[a])})}if(a.each(e.areas,function(a){("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultArea||"object"==typeof c.mapOptions.areas&&"object"==typeof c.mapOptions.areas[a]||"object"==typeof c.mapOptions.legend&&"object"==typeof c.mapOptions.legend.area)||!0===c.replaceOptions)&&(e.areas[a].options=e.getElemOptions(e.options.map.defaultArea,e.options.areas[a]?e.options.areas[a]:{},e.options.legend.area),e.updateElem(e.areas[a],g))}),a.each(e.plots,function(a){("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultPlot||"object"==typeof c.mapOptions.plots&&"object"==typeof c.mapOptions.plots[a]||"object"==typeof c.mapOptions.legend&&"object"==typeof c.mapOptions.legend.plot)||!0===c.replaceOptions)&&(e.plots[a].options=e.getElemOptions(e.options.map.defaultPlot,e.options.plots[a]?e.options.plots[a]:{},e.options.legend.plot),e.setPlotCoords(e.plots[a]),e.setPlotAttributes(e.plots[a]),e.updateElem(e.plots[a],g))}),a.each(e.links,function(a){("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultLink||"object"==typeof c.mapOptions.links&&"object"==typeof c.mapOptions.links[a])||!0===c.replaceOptions)&&(e.links[a].options=e.getElemOptions(e.options.map.defaultLink,e.options.links[a]?e.options.links[a]:{},{}),e.updateElem(e.links[a],g))}),c.mapOptions&&("object"==typeof c.mapOptions.legend||"object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultArea||"object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultPlot)&&(a("[data-type='legend-elem']",e.$container).each(function(b,c){"1"===a(c).attr("data-hidden")&&a(c).trigger("click",{hideOtherElems:!1,animDuration:g})}),e.createLegends("area",e.areas,1),e.options.map.width?e.createLegends("plot",e.plots,e.options.map.width/e.mapConf.width):e.createLegends("plot",e.plots,e.$map.width()/e.mapConf.width)),"object"==typeof c.setLegendElemsState)a.each(c.setLegendElemsState,function(b,c){var f=e.$container.find("."+b)[0];f!==d&&a("[data-type='legend-elem']",f).each(function(b,d){("0"===a(d).attr("data-hidden")&&"hide"===c||"1"===a(d).attr("data-hidden")&&"show"===c)&&a(d).trigger("click",{hideOtherElems:!1,animDuration:g})})});else{var k="hide"===c.setLegendElemsState?"hide":"show";a("[data-type='legend-elem']",e.$container).each(function(b,c){("0"===a(c).attr("data-hidden")&&"hide"===k||"1"===a(c).attr("data-hidden")&&"show"===k)&&a(c).trigger("click",{hideOtherElems:!1,animDuration:g})})}e.initDelegatedCustomEvents(),c.afterUpdate&&c.afterUpdate(e.$container,e.paper,e.areas,e.plots,e.options,e.links)}},setPlotCoords:function(a){var b=this;if(a.options.x!==d&&a.options.y!==d)a.coords={x:a.options.x,y:a.options.y};else if(a.options.plotsOn!==d&&b.areas[a.options.plotsOn]!==d){var c=b.areas[a.options.plotsOn].mapElem.getBBox();a.coords={x:c.cx,y:c.cy}}else a.coords=b.mapConf.getCoords(a.options.latitude,a.options.longitude)},setPlotAttributes:function(a){"square"===a.options.type?(a.options.attrs.width=a.options.size,a.options.attrs.height=a.options.size,a.options.attrs.x=a.coords.x-a.options.size/2,a.options.attrs.y=a.coords.y-a.options.size/2):"image"===a.options.type?(a.options.attrs.src=a.options.url,a.options.attrs.width=a.options.width,a.options.attrs.height=a.options.height,a.options.attrs.x=a.coords.x-a.options.width/2,a.options.attrs.y=a.coords.y-a.options.height/2):"svg"===a.options.type?(a.options.attrs.path=a.options.path,a.options.attrs.transform===d&&(a.options.attrs.transform=""),a.mapElem.originalBBox===d&&(a.mapElem.originalBBox=a.mapElem.getBBox()),a.mapElem.baseTransform="m"+a.options.width/a.mapElem.originalBBox.width+",0,0,"+a.options.height/a.mapElem.originalBBox.height+","+(a.coords.x-a.options.width/2)+","+(a.coords.y-a.options.height/2),a.options.attrs.transform=a.mapElem.baseTransform+a.options.attrs.transform):(a.options.attrs.x=a.coords.x,a.options.attrs.y=a.coords.y,a.options.attrs.r=a.options.size/2)},drawLinksCollection:function(b){var c=this,e={},f={},g={},h={},i={};return a.each(b,function(a){var j=c.getElemOptions(c.options.map.defaultLink,b[a],{});if(e="string"==typeof b[a].between[0]?c.options.plots[b[a].between[0]]:b[a].between[0],f="string"==typeof b[a].between[1]?c.options.plots[b[a].between[1]]:b[a].between[1],e.plotsOn!==d&&c.areas[e.plotsOn]!==d){var k=c.areas[e.plotsOn].mapElem.getBBox();g={x:k.cx,y:k.cy}}else e.latitude!==d&&e.longitude!==d?g=c.mapConf.getCoords(e.latitude,e.longitude):(g.x=e.x,g.y=e.y);if(f.plotsOn!==d&&c.areas[f.plotsOn]!==d){var l=c.areas[f.plotsOn].mapElem.getBBox();h={x:l.cx,y:l.cy}}else f.latitude!==d&&f.longitude!==d?h=c.mapConf.getCoords(f.latitude,f.longitude):(h.x=f.x,h.y=f.y);i[a]=c.drawLink(a,g.x,g.y,h.x,h.y,j)}),i},drawLink:function(a,b,c,d,e,f){var g=this,h={options:f},i=(b+d)/2,j=(c+e)/2,k=-1/((e-c)/(d-b)),l=j-k*i,m=Math.sqrt((d-b)*(d-b)+(e-c)*(e-c)),n=1+k*k,o=-2*i+2*k*l-2*k*j,p=i*i+l*l-l*j-j*l+j*j-f.factor*m*(f.factor*m),q=o*o-4*n*p,r=0,s=0;return f.factor>0?(r=(-o+Math.sqrt(q))/(2*n),s=k*r+l):(r=(-o-Math.sqrt(q))/(2*n),s=k*r+l),h.mapElem=g.paper.path("m "+b+","+c+" C "+r+","+s+" "+d+","+e+" "+d+","+e),g.initElem(a,"link",h),h},isAttrsChanged:function(a,b){for(var c in b)if(b.hasOwnProperty(c)&&void 0===a[c]||b[c]!==a[c])return!0;return!1},updateElem:function(b,c){var e,f,g,h=this;if(!0===b.options.toFront&&b.mapElem.toFront(),b.options.href!==d?(b.options.attrs.cursor="pointer",b.options.text&&(b.options.text.attrs.cursor="pointer")):"pointer"===b.mapElem.attrs.cursor&&(b.options.attrs.cursor="auto",b.options.text&&(b.options.text.attrs.cursor="auto")),b.textElem){b.options.text.attrs.text=b.options.text.content,e=b.mapElem.getBBox(),(b.options.size||b.options.width&&b.options.height)&&("image"===b.options.type||"svg"===b.options.type?(f=(b.options.width-e.width)/2,g=(b.options.height-e.height)/2):(f=(b.options.size-e.width)/2,g=(b.options.size-e.height)/2),e.x-=f,e.x2+=f,e.y-=g,e.y2+=g);var i=h.getTextPosition(e,b.options.text.position,b.options.text.margin);b.options.text.attrs.x=i.x,b.options.text.attrs.y=i.y,b.options.text.attrs["text-anchor"]=i.textAnchor,h.setHoverOptions(b.textElem,b.options.text.attrs,b.options.text.attrsHover),h.isAttrsChanged(b.textElem.attrs,b.options.text.attrs)&&h.animate(b.textElem,b.options.text.attrs,c)}h.setHoverOptions(b.mapElem,b.options.attrs,b.options.attrsHover),h.isAttrsChanged(b.mapElem.attrs,b.options.attrs)&&h.animate(b.mapElem,b.options.attrs,c),b.options.cssClass!==d&&a(b.mapElem.node).removeClass().addClass(b.options.cssClass)},drawPlot:function(a){var b=this,c={};return c.options=b.getElemOptions(b.options.map.defaultPlot,b.options.plots[a]?b.options.plots[a]:{},b.options.legend.plot),b.setPlotCoords(c),"svg"===c.options.type&&(c.mapElem=b.paper.path(c.options.path)),b.setPlotAttributes(c),"square"===c.options.type?c.mapElem=b.paper.rect(c.options.attrs.x,c.options.attrs.y,c.options.attrs.width,c.options.attrs.height):"image"===c.options.type?c.mapElem=b.paper.image(c.options.attrs.src,c.options.attrs.x,c.options.attrs.y,c.options.attrs.width,c.options.attrs.height):"svg"===c.options.type||(c.mapElem=b.paper.circle(c.options.attrs.x,c.options.attrs.y,c.options.attrs.r)),b.initElem(a,"plot",c),c},setEventHandlers:function(b,c,e){var f=this;a.each(e.options.eventHandlers,function(a){f.customEventHandlers[a]===d&&(f.customEventHandlers[a]={}),f.customEventHandlers[a][c]===d&&(f.customEventHandlers[a][c]={}),f.customEventHandlers[a][c][b]=e})},drawLegend:function(c,e,f,g,h){var i=this,j={},k={},l=0,m=0,n=null,o=null,p={},q=0,r=0,s=0,t=0,u=[];j=a("."+c.cssClass,i.$container);var v=j.html();for(j.empty(),k=new b(j.get(0)),a(k.canvas).attr({"data-legend-type":e,"data-legend-id":h}),m=l=0,c.title&&""!==c.title&&(n=k.text(c.marginLeftTitle,0,c.title).attr(c.titleAttrs),o=n.getBBox(),n.attr({y:.5*o.height}),l=c.marginLeftTitle+o.width,m+=c.marginBottomTitle+o.height),q=0;q0&&""!==f[g].cssClass&&0!==a("."+f[g].cssClass,e.$container).length&&(e.legends[b][g]=e.drawLegend(f[g],b,c,d,g))},setHoverOptions:function(c,d,e){"SVG"!==b.type&&delete e.transform,c.attrsHover=e,c.attrsHover.transform?c.originalAttrs=a.extend({transform:"s1"},d):c.originalAttrs=d},elemEnter:function(a){var b=this;if(a!==d){if(a.mapElem!==d&&b.animate(a.mapElem,a.mapElem.attrsHover,a.mapElem.attrsHover.animDuration),a.textElem!==d&&b.animate(a.textElem,a.textElem.attrsHover,a.textElem.attrsHover.animDuration),a.options&&a.options.tooltip!==d){var c="";b.$tooltip.removeClass().addClass(b.options.map.tooltip.cssClass),a.options.tooltip.content!==d&&(c="function"==typeof a.options.tooltip.content?a.options.tooltip.content(a.mapElem):a.options.tooltip.content),a.options.tooltip.cssClass!==d&&b.$tooltip.addClass(a.options.tooltip.cssClass),b.$tooltip.html(c).css("display","block")}a.mapElem===d&&a.textElem===d||b.paper.safari&&b.paper.safari()}},elemHover:function(a,b){var c=this;if(a!==d&&a.options.tooltip!==d){var e=b.pageX,f=b.pageY,g=10,h=20;"object"==typeof a.options.tooltip.offset&&(void 0!==a.options.tooltip.offset.left&&(g=a.options.tooltip.offset.left),void 0!==a.options.tooltip.offset.top&&(h=a.options.tooltip.offset.top));var i={left:Math.min(c.$map.width()-c.$tooltip.outerWidth()-5,e-c.$map.offset().left+g),top:Math.min(c.$map.height()-c.$tooltip.outerHeight()-5,f-c.$map.offset().top+h)};"object"==typeof a.options.tooltip.overflow&&(!0===a.options.tooltip.overflow.right&&(i.left=e-c.$map.offset().left+10),!0===a.options.tooltip.overflow.bottom&&(i.top=f-c.$map.offset().top+20)),c.$tooltip.css(i)}},elemOut:function(a){var b=this;a!==d&&(a.mapElem!==d&&b.animate(a.mapElem,a.mapElem.originalAttrs,a.mapElem.attrsHover.animDuration),a.textElem!==d&&b.animate(a.textElem,a.textElem.originalAttrs,a.textElem.attrsHover.animDuration),a.options&&a.options.tooltip!==d&&b.$tooltip.css({display:"none",top:-1e3,left:-1e3}),a.mapElem===d&&a.textElem===d||b.paper.safari&&b.paper.safari())},elemClick:function(a){var b=this;a!==d&&(b.panning||a.options.href===d||window.open(a.options.href,a.options.target))},getElemOptions:function(b,c,e){var f=this,g=a.extend(!0,{},b,c);if(g.value!==d)if(a.isArray(e))for(var h=0;h=b.slices[c].min)&&(b.slices[c].max===d||a<=b.slices[c].max))return b.slices[c];return{}},animateViewBox:function(a,c,d,e,f,g){var h=this,i=h.currentViewBox.x,j=a-i,k=h.currentViewBox.y,l=c-k,m=h.currentViewBox.w,n=d-m,o=h.currentViewBox.h,p=e-o;h.zoomAnimCVBTarget||(h.zoomAnimCVBTarget={x:a,y:c,w:d,h:e});var q=m>d?"in":"out",r=b.easing_formulas[g||"linear"],s=f-2*f/100,t=h.zoomAnimStartTime;h.zoomAnimStartTime=(new Date).getTime();var u=function(){h.cancelAnimationFrame(h.zoomAnimID);var b=(new Date).getTime()-h.zoomAnimStartTime;if(bh.currentViewBox.w||wd)||h.setViewBox(g,v,w,x),h.zoomAnimID=h.requestAnimationFrame(u)}else h.zoomAnimStartTime=null,h.zoomAnimCVBTarget=null,h.currentViewBox.w!==d&&h.setViewBox(a,c,d,e),h.$map.trigger("afterZoom",{x1:a,y1:c,x2:a+d,y2:c+e})};u()}, -requestAnimationFrame:function(a){return this._requestAnimationFrameFn.call(window,a)},cancelAnimationFrame:function(a){this._cancelAnimationFrameFn.call(window,a)},_requestAnimationFrameFn:function(){var a=function(){var b=(new Date).getTime();return function(c){var d=(new Date).getTime();if(!(d-b>16))return setTimeout(function(){a(c)},0);b=d,c(d)}}();return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||a}(),_cancelAnimationFrameFn:function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||window.msCancelAnimationFrame||window.msCancelRequestAnimationFrame||window.oCancelAnimationFrame||window.oCancelRequestAnimationFrame||clearTimeout}(),setViewBox:function(a,b,c,d){var e=this;e.currentViewBox.x=a,e.currentViewBox.y=b,e.currentViewBox.w=c,e.currentViewBox.h=d,e.paper.setViewBox(a,b,c,d,!1)},_nonAnimatedAttrs:["arrow-end","arrow-start","gradient","class","cursor","text-anchor","font","font-family","font-style","font-weight","letter-spacing","src","href","target","title","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit"],animate:function(a,b,c,e){var f=this;if(a)if(c>0){for(var g={},h=0;h 8.17199) { - xfactor = 43.64246; - xoffset = 181.34520; - x = (lon * xfactor) + xoffset; - - yfactor = -65.77758; - yoffset = 3346.37839; - y = (lat * yfactor) + yoffset; - } else { - xfactor = 45.48385; - xoffset = 220.22005; - x = (lon * xfactor) + xoffset; - - yfactor = -65.97284; - yoffset = 3371.10748; - y = (lat * yfactor) + yoffset; - } - return {x : x, y : y}; - }, - elems : { - "department-29" : "m 37.28,156.11 c -1.42,1.23 -3.84,1.18 -3.99,3.49 -1.31,-2.24 -8,-0.27 -6.23,1.86 -0.83,0.29 -3.61,-0.09 -4.72,1.08 1.27,-3.15 -2.84,-2.76 -4.74,-1.32 -1.52,0.3 0.5,1.51 -1.67,1.26 -1.43,1.46 -5.78,-1.22 -5,1.7 2.01,2.28 -4.44,-1.17 -2.19,2.21 2.05,2.35 -1.91,-1.21 -3.2,0.17 -2.44,0.46 -5.9,3.28 -4.27,6.2 1.31,1.03 -2.45,2.79 -0.89,4.68 1.85,1.54 -1.54,4.66 1.85,4.99 2.29,0.7 2.49,-2.98 4.87,-0.96 3.08,0.74 5.89,-2.07 8.89,-2.74 1.93,-0.34 5.67,-2.04 6.34,-1.85 -2,1.78 -5.83,1.89 -6.41,4.93 -0.69,1.92 2.11,-0.67 2.33,1.07 1.34,-0.89 2.68,-1.87 3.94,-1.39 3.81,-2.03 -2.75,2.24 0.52,1.99 1.47,0.34 4.01,0.96 4.33,1.46 -1.94,0.3 -3.28,1.07 -4.57,-0.08 -2.38,0.71 -4.58,1.45 -6.63,0.05 -2.75,0.86 -5.75,0.61 -4.18,-2.84 -3.29,-0.24 -0.4,5.1 -3.79,3.67 -1.2,2.84 5.41,0.67 2.62,3.42 0.89,1.41 -0.15,5.78 1.86,2.76 0.83,-2.29 2.62,-4.57 5.09,-2.36 1.97,1.37 5.1,0.79 5.41,4 1.86,2.04 -0.29,6.23 -3,3.6 -3.95,0.62 -7.67,1.95 -11.58,2.45 -2.09,0.38 -5.98,-0.08 -4.41,2.7 2.53,0.06 4.87,1.62 7.03,1.82 2.62,-1.48 5.9,3.16 7.51,5.27 1.61,2.44 2.66,5.4 0.91,7.66 1.94,1.19 5.11,1.18 7.5,0.75 1.99,-0.45 3.16,-2.44 1.04,-3.28 -1.05,-1.98 0.82,-2.27 1.51,-0.45 3.34,0.23 -0.63,-4.11 0.69,-3.65 0.91,2.75 3.66,3.46 5.82,3.53 2.26,0.86 -0.02,-4.66 2.92,-2.01 2.11,1.7 2.69,4.22 4.57,6.13 2.01,0.11 4.17,0.12 6.01,-0.65 1.82,2.12 5.68,2.27 8.25,2.23 1.8,-1.51 -1.55,-4.66 0.95,-5.09 0.94,2.57 3.24,-0.19 3.58,-1.33 2.95,0.23 0.38,-3.13 2.08,-4.2 -0.21,-1.43 -0.64,-3.61 -2.53,-1.94 -1.44,2.09 -1.76,-1.59 -3.7,-1.52 -2.13,-1.41 -5.77,1.37 -6.1,-2.55 -0.44,-2.07 -2.04,-3.22 -2.32,-5.05 -2.23,-0.45 0.49,-4.53 2.59,-4.02 1.42,-1.43 5.76,-1.87 5.77,-3.15 -3.54,-1.5 2.53,-4.55 -0.88,-5.73 0.6,-1.35 -0.87,-3.79 -0.56,-5.72 -3.53,0.13 -1.65,-3.79 0.06,-4.6 -3.56,-1.53 -0.98,-4.21 0.33,-6.05 -1.3,-1.16 -2.22,-1.16 -1.99,-2.94 -3.12,-0.26 -3.41,-4.67 -2.3,-6.54 -0.38,-1.53 -3.23,-0.42 -4.45,-1.94 -2.01,-0.12 -5.18,-1.19 -4.7,2.29 -0.84,1.4 0.25,4.35 -1.82,2.22 -1.36,-0.49 -0.48,-3.38 -2.36,-1.3 -1.28,1.93 -1.52,-3.86 -1.99,-4.38 z m -9.88,28.66 0,0.02 0,-0.02 z", - "department-22" : "m 77.67,146.73 c -2.58,0.94 -4.37,2.6 -5.78,4.84 1.21,-2.76 0.01,-6.18 -2.26,-2.58 -2.86,-0.54 -4.85,2.02 -7.32,2.35 0.05,-2.38 -5.14,-2.89 -4.97,-0.27 -1.65,0.69 -2.79,2.55 -0.54,3.83 1.42,1.41 -3.19,1.12 -1.21,3.58 0.75,2.79 -2.62,-0.53 -2.95,1.74 -2.03,2.25 0.93,5.14 2.73,6.11 -0.89,1.81 3.77,1.87 0.94,3.62 -2.27,1.33 -1.69,4.1 0.71,4.68 -2.37,0.99 -3.54,4.66 -0.18,4.93 -0.75,1.8 0.34,4.07 1.35,3.89 -2.23,1.45 2.07,3.31 -1.02,4.81 -1.32,1.63 3.39,3.81 -0.37,3.46 -0,1.68 3.4,-0.17 4.6,0.64 2.17,-1.15 0.09,3.47 2.84,1.65 2.78,-2.51 5.12,2.28 8.16,0.11 1.28,-1.21 4.21,0.16 3.71,-2.72 2.36,-2.11 5.53,-0.32 6.55,2.07 3.1,-1.66 5.66,1.79 8.52,1.44 1.09,1.13 1.31,4.63 2.54,1.67 1.77,0.69 4.7,-2.67 4.36,1 -1.42,1.92 -0.06,5.98 2.29,3.25 2.15,-1.33 3.24,-3.52 3.71,-5.84 -1.55,-1.8 3.03,-1.29 4.1,-2.17 2.56,0.5 2.84,5.71 5.3,2.6 2.48,-0.52 4.76,-2.21 4.35,-5.23 2.66,1.35 0.38,-3.98 3.68,-3.07 2.3,0.76 0.88,-1.21 2.74,-1.68 0.93,-2.46 3.26,2.1 3.88,-0.74 2.87,-0.05 0.28,-3.49 2.75,-3.67 -0.67,-1.88 -0.1,-4.12 -0.62,-6.07 1.57,-1.46 2.25,-5.3 0.59,-6.78 -0.36,1.32 -2.86,3.56 -2.08,0.75 -0.58,-2.28 -2.24,-1.04 -3,-0.66 -0.39,-2.19 -3.7,-1.69 -4.26,-4.29 -2.01,-0.96 -0.92,3.96 -2.61,1.33 -0.93,2.11 -1.72,-1.85 -2.25,-2.64 -0.23,-2.69 -5.02,3.57 -3.11,-0.38 2.12,-1.4 -0.5,-4.55 -1.42,-1.9 -1.94,1.15 -2.92,1.92 -4.85,1.1 -2.9,-0.12 0.52,1.54 -2.1,2.49 -3.58,0.78 -5.19,5.69 -8.5,5.48 0.49,3.36 -2.74,-0.19 -2.06,-1.81 -2.95,-1.1 -4.73,-3.24 -4.7,-6.38 -2,-2 -5.44,-3.63 -5.11,-6.81 -0.95,-1.07 -6.79,-1.08 -3.38,-3.09 0.47,-2.76 -4.12,-1.19 -3.66,1.11 -0.44,1.73 -2.27,2.41 -0.65,0.39 1.33,-1.47 1.44,-4.62 0.53,-6.14 z", - "department-56" : "m 78.99,190.76 c -3.41,-1.13 -2.2,3.92 -5.32,2.9 -1.41,0.4 -1.19,1.61 -2.99,0.82 -1.13,0.79 -2.69,-0.38 -3.4,-0.47 -0.84,-2.28 -6.08,2.96 -4.76,-1.3 -1.92,-0.69 -4.61,-0.08 -6.81,-0.32 -2.56,1.49 -6.48,1.43 -6.89,4.97 1.66,0.45 1.27,1.18 1.54,2.72 2.29,1.28 1.38,6.71 5.21,4.85 2.27,-0.57 4.21,1.54 5.35,2.54 1.09,-1.75 3.9,-1.39 3.21,0.95 0.1,1.55 -1.11,2.84 -0.3,4.77 -2.2,-0.71 -3.03,4.58 -5.67,1.76 -1.43,0.94 1.23,2.98 -0.19,4.47 0.79,3.11 4.25,6.81 7.21,3.89 -1.96,-1.82 1.17,-1.04 2.08,-2.79 1.53,-1.34 1.85,-1.47 0.72,0.46 -0.96,1.01 -3.43,3.3 -0.38,3.09 1.49,0.45 3.45,4.36 4.77,2.88 -0.27,-2.53 3.83,-3.05 1.1,-5.44 1.05,0.63 2.71,-0.96 2.12,1.15 2.98,0.99 -0.94,3.03 -2.44,3.55 -2.08,3.14 3.5,3.77 1.75,6.92 -0.29,1.59 0.31,5.9 2.13,4.03 -1.68,-0.96 -1.89,-7.61 0.51,-4.94 -0.5,1.26 4.8,0.74 3.44,-1.25 0.35,-0.76 1.34,3.45 1.43,0.83 0.89,1.74 3.91,2.47 1.59,0.06 -0.51,-1.47 -0.02,-3.03 -0.87,-4.45 1.76,1.65 1.37,4.11 4.01,4.31 0.21,-1.28 1.88,-0.67 1.78,-2.23 1.83,0.46 2.89,-0.48 3.79,-0.93 2.28,0.82 -0.59,1.71 2.06,2.43 1.57,0.52 0.39,-4.11 1.62,-1.05 -0.46,2.03 -2.17,6.08 -4.56,4.17 -1.51,0.14 -2.97,0.56 -4.53,-0.67 -3.37,0.66 2.51,2.11 2.17,4.25 2.28,1.57 4.95,-1.33 7.46,-0.04 0.09,-2.03 1.34,-0.88 2.36,-1.71 -1.31,-1.38 4.01,-1.27 0.96,-0.1 0.22,1.93 4.41,-1.17 5.9,0.75 1.01,1.43 4.31,0.26 4.44,1.04 -2.33,0.43 -6.75,-0.69 -5.01,3.23 1.5,1.03 2.59,-3.6 4.01,-0.77 1.99,-0.12 4.3,0.38 4.4,-2.43 0.29,-2.58 2.25,-0.15 3.16,-0.22 1.19,-1.05 2.3,-1.01 2.74,0.42 1.6,-0.29 0.66,-3.06 3.03,-2.61 0.96,-1.59 -0.11,-4.05 1.01,-5.76 -1.21,-2.25 -1.75,-4.67 -1.62,-7.13 1.06,-1.01 4.05,-0.69 1.57,-1.96 -1.94,-0.06 -2.1,-1.17 -0.12,-1.66 0.89,-1.32 3.49,-4.07 1.04,-4.6 -2.47,1.93 -2.55,-3.4 -0.68,-4.04 -0.57,-3.25 -3.22,-4.81 -6.13,-5.41 -2.4,0.4 -4.25,0.1 -2.46,-2.49 0.6,-2.26 5.5,-0.56 4.09,-3.23 -1.75,-0.22 -3.84,2.7 -3.33,-0.63 0.01,-3.41 -3.32,-2.88 -4.84,-1.45 -0.88,-3.11 -3.48,-4.72 -6.36,-3.01 -2.15,-0.01 0.26,2.97 -2.05,3.88 -0.09,2.06 -3.87,4.92 -5.31,3.84 -1.21,-1.39 2.06,-7.27 -1.57,-5.21 -1.38,0.54 -2.88,0.33 -3.62,2.06 -0.18,-2.38 -1.59,-4.23 -4.05,-3.7 -1.5,-2.53 -4.89,-0.74 -6.39,-1.56 -0.77,-1.17 -1.33,-2.65 -3.1,-2.43 z", - "department-35" : "m 134.53,157.78 c -2.29,1.25 -4.29,0.31 -6.19,1.59 -0.35,1.67 -2.93,2.17 -1.16,4.31 0.18,1.71 3.99,2.25 1.51,3.04 0.71,1.27 0.98,3.59 2.33,1.22 1.69,2.12 0.9,4.75 -0.11,6.67 -1.16,1.66 0.84,3.78 -0.19,5.68 1.34,1.46 -2.11,1.58 -0.78,3.48 0.21,2.25 -2.03,-0.13 -2.56,2.08 -1.42,-0.68 -2.58,-1.61 -3.47,0.21 -1.19,0.31 -0.39,2.42 -2.44,1.14 -3.01,-0.11 -1.06,4.1 -3.56,3.46 -0.04,2.21 -0.64,4.46 -2.86,4.2 0.62,1.53 1.56,3.49 1.75,5.16 0.54,-2.03 5.23,-1.03 2.52,0.76 -2.33,-0.69 -5.1,2.03 -3.97,3.88 2.89,-0.33 6.41,0.27 7.93,3.03 1.44,1.66 0.87,2.99 -0.39,4.33 0.11,1.6 0.84,3.69 2.2,1.35 0.71,-0.77 0.83,2.07 1.01,2.45 -1.23,1.26 -2.05,2.91 -3.28,3.92 1.71,0.13 3.61,2.39 0.59,2.1 -2.68,1.22 0.26,4 -0.22,5.86 2.34,-0.34 4.15,-1.76 6.12,-3.07 0.06,2.7 3.03,-0.8 4.56,-0.57 2.43,-1.1 5.63,0.82 7.84,-0.63 3.6,0.5 2.72,-4.87 6.32,-4.78 1.62,-0.77 5.16,-0.84 3.73,-3.31 2.85,-0.62 4.57,1.21 6.54,2.5 1.91,0.57 5.04,2.11 4.63,-1.3 1.15,-1.21 0.6,-2.9 1.92,-3.9 0.7,-1.81 1.08,-4.73 2.39,-6.4 1.07,-2.4 6.58,0.52 5.22,-3.48 -0.09,-3.31 -1.44,-6.24 -2.22,-9.58 0.1,-2.96 -2.26,-6.23 0.02,-8.8 1.83,-2.19 0.74,-5.58 -0.28,-8.01 0.55,-2.21 1.33,-6.39 -2.22,-6.48 -2.56,-0.06 -6.32,-3.21 -7.21,0.93 -2.37,0.79 -4.8,5.49 -7.02,1.82 -2.57,-0.44 -4.28,-3.63 -3.95,-6.18 -0.99,-1.91 -2.39,-5.92 -4.86,-2.88 -3.41,0.04 -8.02,2.16 -10.43,-0.96 -1.67,-2.06 2.03,-3.1 0.24,-4.85 z", - "department-44" : "m 152.12,215.29 c 0.59,4.69 -7.52,2.23 -7.55,6.92 -2.45,2.92 -6.64,1.42 -9.84,1.79 -2.21,0.47 -4.62,2.21 -6.1,1.16 -2.15,1.71 -5.77,2.38 -4.86,5.66 -0.41,1.99 0.14,5.32 -2.78,5.46 0.29,3.39 -2.45,-0.35 -3.39,1.23 -1.97,-0.43 -3.4,-1.22 -3.87,1.43 -1.39,3.38 -7.86,-1.72 -6.53,3.45 1.04,0.36 3.95,1.27 1.26,1.45 -1.78,0.18 -4.38,-0.42 -5.51,2.1 0.81,1.67 6.76,3.88 3.55,5.8 -1.04,-0.85 -4.89,-1.36 -1.91,0.14 1.73,1.23 3.86,1.82 5.03,0.15 2.77,0.79 5.25,4.76 7.99,1.3 2.33,-2.98 5.67,-3.71 9.18,-3.56 3.26,1.31 7.02,1.76 9.14,4.89 0.59,1.56 5.82,2.63 2.15,2.16 -4.08,-0.08 -5.45,-5.45 -9.25,-4.42 -2.59,-1.44 -6.59,-0.45 -8.62,1.17 0.15,2.98 1.07,6.99 -2.64,7.63 1.56,2.78 6.83,0.77 8.69,4.16 2.99,2.74 4.83,7.09 8.9,8.42 0.9,1.88 5.53,0.57 5.08,3.59 3.08,0.7 6.82,2.86 9.67,1.11 2.13,-1.29 -2.55,-2.42 -0.14,-3.94 -2.91,-1.74 -0.81,-8.5 2.35,-5.93 0.6,2.44 -0.71,8.47 3.28,5.3 3.57,-0.9 -1,-7.35 3.9,-6.19 0.83,-0.5 2.39,-4.6 3.91,-1.32 1.06,2.31 6.94,2.33 4.03,-0.72 -1.16,-2.43 -6.27,-0.49 -4.19,-3.49 1.19,-2.09 4.14,-3.59 2.27,-6.58 -0.11,-2.99 -2.79,0.14 -3.66,-2.47 -0.42,-1.81 -2.18,-3.14 -3.54,-3 1.51,-3.16 6.07,-2.52 8.85,-3.95 3.12,-0.79 9.37,1.47 9.71,-3.23 -1.08,-2.47 -1.12,-5.9 -4.66,-5.46 -2.8,0.23 -7.97,-1.25 -5.65,-4.79 1.85,-0.34 7.04,1.35 6.32,-1.48 -2.96,-1.34 -7.7,-2.06 -7.06,-6.38 -0.89,-2.42 -4.47,-2.43 -3.18,-5.19 -2.78,-1.29 -5.51,-2.7 -8.1,-4.12 -0.73,-0.11 -1.47,-0.12 -2.19,-0.28 z", - "department-50" : "m 131.13,90.31 c -1.88,0.95 -0.8,4.82 1.86,4.23 3.56,1.9 1.73,6.62 0.2,9.04 2.05,2.45 3.1,5.7 3,9 0.14,1.74 2.63,0.2 3.07,2.34 0.75,1.03 1.85,2.12 2.19,0.36 1.37,1.6 -1.38,2.27 1.05,3.66 1.37,1.28 0.99,6.4 3.69,4.06 1.9,0.29 2.45,1.19 0.04,0.86 -1.6,1.67 0.46,4.57 0.89,5.74 -2.97,1.02 -0.03,4.32 -0.89,6.45 0.25,4.18 2.26,-2.3 3.97,0.71 -3,-1.64 -2.73,4.63 -1.52,5.52 -1.39,1.53 -0.75,4.59 -2.48,6.57 2.85,1.89 0.3,6.73 3.77,8.41 0.72,3.65 6.47,2.47 6.87,4.86 -3.09,-0.67 -6.13,1.28 -9.29,0.14 2.12,2.48 1.69,5.44 3.35,8.16 0.49,2.03 2.9,1.69 3.89,3.28 2.85,0.97 3.52,-2.95 6.22,-3.35 0.5,-4.19 4.83,-0.16 7.12,-0.52 2.46,0.21 4.49,2.11 6.88,1.58 1.14,-3.4 4.72,2.61 6.05,-1.83 2.14,-1.71 4.11,-4.11 4,-6.8 -2.86,-1.65 2.62,-4.05 -1.04,-4.65 -1.19,-1.03 -1.99,-2.17 -3.44,-2.39 0.65,-1.72 0.69,-2.24 -1.24,-1.46 -2.15,-1.56 -3.83,-1.87 -6.18,-1.16 -1.5,-0.55 -4.16,0.68 -4.02,-2.14 -1.26,-0.78 -4.15,-1.48 -1.38,-2.84 0.99,-1.27 1.76,-1.9 2.97,-1.76 1.12,-1.18 3.8,-4.02 0.24,-2.9 -1.76,-0.83 1.02,-4.16 2.87,-2.17 3.08,-0.43 3.89,-3.82 6.01,-5.35 -2.27,-0.59 1.2,-4.39 -1.22,-5.32 -2.09,1.3 -1,0.15 0.07,-0.89 -1.07,-1.07 -4.55,-2.49 -1.49,-2.88 2.17,-1.47 -0.09,-4.82 -1.5,-1.9 -3.17,0.81 -5.99,-2.78 -7.94,-5.02 -1.69,-1.95 2.34,-3.94 -0.73,-4.53 -0.02,-1.64 -2.94,0.31 -1.33,-2.17 1.04,-2.89 -2.27,-4.45 -3.47,-6.64 -1.37,-1.99 -4.59,-6.54 -0.56,-7.31 0.17,-1.79 2.56,-1.35 1.09,-3.59 -0.43,-3.65 -3.79,-3.85 -6.83,-3.94 -3.88,-1.03 -4.69,4.08 -8.52,3.07 -3.16,1.2 -5.48,-1.83 -8.81,-1.65 -2.47,0.02 -3.19,-2.65 -5.7,-1.92 -0.51,-0.38 -1.01,-1.1 -1.74,-0.94 z", - "department-53" : "m 208.55,167.1 c -1.01,1 0.05,3.16 -1.88,3.54 -1.52,-1.01 -2.64,-0.44 -3.16,1.13 -2.16,0.27 -4.3,-2.6 -6.35,-0.72 -2.51,0.71 -4.34,2.89 -6.91,3.52 -1.47,-0.07 -0.73,-3.05 -2.63,-1.24 -1.44,-0.25 -1.57,0.24 -1.23,1.52 -1.95,1.91 -3.12,-1.9 -4.31,-1.2 -0.57,-2.91 -4.17,-1.79 -5.68,-3.27 -1.71,1.43 -3.54,2.05 -5.24,0.23 -1.62,1.36 -0.04,4.11 -0.87,5.96 1,2.8 1.94,6.2 -0.3,8.68 -1.8,2.64 0.64,5.51 0.63,8.4 0.26,2.57 1.34,4.89 2.01,7.32 0.27,1.9 0.56,4.67 -2.4,4.46 -3.58,-1.21 -3.75,3.46 -4.8,5.71 -0.32,2.32 -3.14,4.44 -1.31,6.55 2.18,1.99 5.34,0.43 7.83,1.57 1.63,0.66 3.95,1.05 3.53,-1.27 2.64,-0.54 3.9,3.91 6.54,1.42 2.25,1.91 5.27,1.85 7.94,2.38 1.76,-0.55 3.96,-1.63 5.33,-1.8 0.74,-3.63 3.49,1.65 5.63,-0.72 3.1,-0.49 -0.69,-2.25 -1.75,-2.95 -1.24,-2.55 5.38,-2.7 2.17,-4.78 -2.1,-2.18 2.21,-3.41 3.9,-3.25 2.7,-2.12 -2.9,-5 -0.82,-7.18 1.54,-1.12 5.56,-0.07 4.23,-2.96 2.04,-1.51 -2.56,-3.7 0.57,-5.19 2.14,-0.95 4.31,-2.8 2.75,-5.2 0.4,-1.84 1.4,-3.83 0.29,-5.45 0.84,-2.27 2.74,-2.67 4.64,-3.69 0.49,-2.31 0.11,-5.38 -2.99,-3.91 -2.18,-0.9 -2.07,-4.02 -1.67,-5.52 -0.9,-1.11 -2.32,-1.86 -3.72,-2.1 z", - "department-49" : "m 163.22,217.21 c -0.83,2.37 -1.6,5.33 1.37,5.86 1.81,2.08 0.91,5.95 4.42,6.63 2.22,0.05 6.13,2.61 1.99,3.38 -1.68,0.33 -6.88,-1.51 -4.42,1.8 -0.28,3.95 5.62,1.28 7.64,2.98 2.45,0.74 1.41,5.07 2.67,6.48 -2.29,2.93 -6.35,1.4 -9.46,1.86 -2.75,1.47 -6.15,1.11 -8.63,2.95 -2.19,2.35 2.81,0.48 2.57,3.2 0.31,2.29 2.55,1.71 3.57,1.87 1.63,2.89 1.11,5.74 -1.65,7.56 -1.38,3.05 3.73,1.85 4.64,4.57 0.65,0.86 -1.19,3.33 1.44,2.98 2.09,1.51 5.06,-0.93 6.83,0.87 2.12,0.24 3.87,3.37 5.76,0.52 2.61,-0.75 5.23,0.76 7.87,-0.16 3.45,0.68 4.18,-2.89 4.98,-5 2.46,-1.53 5.74,1.7 7.32,-1.15 3.52,-0.32 7.2,-1.11 10.47,-0.77 1.05,1.17 -2.26,1.94 0.29,2.63 2.66,0.88 1.49,-3.86 4.67,-2.23 0.32,-1.55 1.08,-6.07 4.26,-4.7 1.02,-3.55 0.54,-7.68 3.15,-10.63 1.2,-1.75 2.78,-3.33 2.02,-5.32 0.89,-2.49 1.94,-4.87 2.33,-7.52 -2.3,-1.25 2.95,-6.06 -1.28,-5.83 -1.14,3.4 -4.78,-0.25 -6.77,-0.21 -1.89,-1.86 -5.83,-3.95 -7.59,-1.47 -2.9,0.48 -5.51,-3.13 -2.87,-5.2 -1.31,-0.36 -3.53,1.25 -5.3,-0.11 -1.96,-0.38 -3.12,0.57 -3.07,-1.96 -1.12,-2.87 -4.12,0.14 -5.77,-2.2 -1.77,-0.71 -0.8,2.61 -3.03,1.75 -3.13,1.53 -6.89,1.32 -10.17,-0.06 -1.72,-2.25 -3.57,1.59 -5.08,-1.25 -0.8,-0.99 -3.72,-1.84 -2.9,0.37 -3.4,0.17 -6.97,-0.89 -10.18,-1.14 -0.72,-0.44 -1.37,-0.99 -2.14,-1.36 z", - "department-85" : "m 161.28,265.2 c -0.97,1.7 -1.54,3.91 -3.7,2.64 -1.76,1.98 1.21,6.33 -3.05,6.68 -4.15,2.13 -1.3,-4.19 -2.86,-6.14 -3.81,-0.88 -3.43,4.2 -2.06,6.39 -1.18,1.59 2.88,3.89 -0.56,4.36 -2.8,1.01 -5.58,-1.25 -8.45,-1.27 -0.94,-1.21 -1.09,-3.22 -3.4,-2.64 -2.06,0.15 -1.35,-2.2 -3.49,-1.71 -2.48,-1.21 -5.24,-7.8 -7.15,-2.42 -0.59,3.85 -5.53,4.8 -4.91,9.21 0.37,4.17 5.72,4.87 7.16,8.67 2.67,2.58 4.99,5.43 6.65,8.8 0.87,1.89 0.24,6.13 2,6.75 0.16,-1.73 0.12,-2.45 1.07,-0.5 1.66,2.86 6.15,2.45 7.02,5.1 3.4,-0.42 6.93,0.3 7.04,4.36 1.27,2.81 4.49,-1.27 6.02,1.84 2.09,-0.13 3,3.11 4.96,3.02 -0.36,-3.97 4.41,-1.93 6.48,-3.3 1.71,-1.96 4.7,-2.5 6.81,-2.37 -1.17,1.68 -0.83,3.92 1.65,2.75 2.07,-0.36 4.04,-2.66 5.25,0.14 2.09,1.8 3.55,-0.97 5.61,-0.12 1.62,-1.38 3.3,-2.9 5.04,-3.72 0.18,-2.56 -3.47,-1.87 -3.87,-1.44 -0.63,-2.59 1.8,-5.29 -0.47,-7.7 0.94,-1.38 2.03,-1.54 1.08,-3.45 0.09,-2.1 -0.29,-4.13 -1.61,-5.22 0.65,-2.15 -1.16,-2.52 -0.79,-4.52 -1.57,-1.94 -3.3,-3.94 -1.89,-6.5 -1.72,-1.62 -5.39,-2.92 -5.22,-6.11 0.38,-2.29 -3.29,-2.9 -3.68,-5.31 -1.81,-2.01 -4.49,-1.74 -7.1,-1.32 -3.49,-1.03 -6.73,-2.66 -9.6,-4.96 z", - "department-79" : "m 211.41,263.54 c -3.47,1 -7.46,-0.24 -10.55,2.01 -1.54,0.87 -3.61,1.5 -3.45,-0.55 -2.89,-0.11 -3.46,3 -4.1,4.64 -2.76,1.84 -6.3,1.53 -9.35,1.02 -2.77,-0.37 -6.01,2.62 -2.55,4.27 1.05,2.29 0.26,5.24 3.5,6.22 3.7,1.27 0.35,4.83 3.08,6.91 1.95,2.46 1.89,5.88 3.13,8.43 0.79,2.29 0.53,5.23 -0.6,6.69 2.08,1.92 -1.04,5.98 0.79,6.87 2.26,-2.05 4.86,2.6 1.35,3.21 -1.82,2.1 -4.84,2.03 -7.01,3.55 -1.92,3.7 2.7,4.91 3.24,8.13 1.44,0.37 2.62,0.88 2.81,2.1 3.32,-0.93 5.83,3.57 8.63,3.01 2.89,1.17 6.03,0.6 8.47,3.22 3.7,-0.54 3.87,6.56 7.56,4.57 1.73,-2.11 1.24,-5.98 4.87,-5.81 1.63,-2.21 4.23,-2.49 6.45,-1.63 1.55,-1.48 2.11,-4.78 -0.83,-4.33 -3.29,-1.46 -1.71,-5.49 -0.5,-7.4 1.75,-0.97 0.56,-7.43 -1.84,-3.75 -2.3,2.89 -5.28,-1.21 -4.22,-3.39 -2.48,-2.03 -1.19,-5.37 -2.68,-7.99 1.33,-2.02 1.71,-4.55 3.11,-6.42 -0.55,-0.92 -2.28,-2.13 -2.08,-2.45 -3.66,1.58 0.19,-4.05 1.24,-5.25 2.3,-2.33 -3.14,-3.07 -0.93,-5.56 1.44,-1.85 -3.47,-1.82 -0.33,-2.92 3.33,-0.16 0.56,-1.18 -0.24,-2.53 0.5,-2.54 0.1,-5.85 -1.91,-7.36 -1.96,-0.52 -0.38,-5.88 -4.15,-4.77 -2.43,-0.12 2.22,-3.17 -0.9,-2.74 z", - "department-17" : "m 175.73,312.62 c -2.1,1.05 -4.89,0.98 -6.33,3.16 -2.59,0.12 1.24,4.72 -2.26,5.02 -2,0.79 -4.42,5.17 -2.11,6.01 2.93,0 2.49,3.17 4.17,4.84 0.72,1.37 3.67,5.65 0.03,4.87 -2.18,0.36 1.95,2.77 0.48,4.24 1.55,2.23 0.05,3.13 -1.55,3.46 -0.38,1.57 -2.23,1.63 -0.92,3.81 0.7,3.56 3.92,5.46 6.53,7.53 -3.66,-0.31 -5.1,-4.96 -7.98,-5.25 -3.89,-1.1 -3.52,4.91 -2.88,6.67 2.74,-1.46 4.76,2.94 7.48,3.54 3.34,1.31 3.69,5.42 7.19,6.15 4.09,3 7.55,7.17 8.5,12.27 0.26,3.76 5.67,2.29 7.12,1.56 -1.08,5.27 6.99,0.78 7.08,5.12 0.92,1.82 -0.24,5.87 1.93,6.53 3.38,-1.84 5.25,4.16 8.91,4.29 2.53,1.16 3.84,-3.72 5.99,-0.43 0.42,-1.35 1.41,-3.02 1.97,-3.79 -0.43,-1.67 1.72,-4.75 -1.44,-5.53 -1.82,-0.53 -4.59,0.36 -3.27,-2.54 -1.47,-1.11 -5.11,-3.27 -7.08,-1.29 -2.02,-1.16 -0.75,-3.34 0.78,-3.22 -1.02,-0.53 -4.64,-2.27 -1.19,-3.33 4.28,-0.66 -2.5,-4.27 0.56,-5.26 2.44,-2.46 -2.28,-2.77 -2.54,-4.29 2.17,-2.32 -2.75,-3.59 -3.55,-5.14 -2.87,0.92 -0.97,-2.62 0.33,-2.63 -2.65,-1.14 -0.44,-4.4 -1.57,-5.27 -2.89,0.77 -1.45,-2.34 0.53,-2.18 1.34,-1.34 4.68,-0.44 6.11,-2.14 2.35,-0.74 2.26,3.5 4.57,1.02 2.44,-0.29 1.26,-3.78 2.59,-5.17 -1.46,-1.93 -1.99,-4.68 1.15,-4.47 0.21,-2.43 -3.03,-4.09 -3.83,-6.1 -0.81,-1.69 -4.49,-0.9 -5.2,-3.54 -1.75,0.56 -3.25,0.45 -4.22,-0.82 -1.42,1.85 -1.72,-1.94 -2.91,-0.25 -3.3,-0.03 -3.97,-4.4 -7.72,-2.73 0.56,-2.08 -4.7,-2.08 -3.15,-4.59 -0.87,-1.66 -4.22,-2.08 -2.44,-4.29 -0.3,-2.54 -4.15,-5.59 -5.48,-2.93 -1.22,-0.57 -5.78,1.4 -3.85,-1.55 0.3,-0.71 0.63,-1.62 -0.55,-1.38 z m -24.48,7.33 c -2.5,0.03 -3.87,1.14 -1.7,3.09 3.95,0.17 7.19,2.31 10.9,3.68 3.89,-1.05 -3.64,-4.87 -5.82,-4.1 0.29,-2.41 -4.61,1.24 -3.83,-1.48 1.5,1.02 1.83,-1.02 0.46,-1.19 z m 4.27,13.72 c -0.7,1.54 2.03,3.7 0.87,5.86 3.02,2.81 6.53,5.8 7.08,10.16 2.32,-1.62 3.28,-6.49 0.08,-7.91 -0.51,-2.29 -0.47,-5.1 -3.54,-5.11 -1.46,-1 -2.65,-2.71 -4.49,-2.99 z", - "department-33" : "m 170.37,365.5 c -2.88,2.39 -3.66,6.38 -3.67,9.99 -0.06,6.47 -0.57,12.93 -1.99,19.26 -0.93,8.17 -1.59,16.38 -2.58,24.55 0.15,2.18 -1.38,7.44 -0.06,8.1 -0.08,-3.31 1.98,-7.54 4.36,-8.96 1.97,1.72 7.34,5.74 3.76,7.49 -2.73,1.04 -6.38,-2.36 -6.38,2.52 -1.52,2.69 -2.74,7 -1.06,9.24 2.84,-0.63 5.96,-2.27 7.61,-3.75 2.03,1.26 5.7,0.92 3.77,4.43 -2.89,4.65 3.5,-0.33 5.45,2.23 3.86,1.51 7.87,-3.74 11.26,-0.84 -1.42,4.09 4.44,3.2 5.19,6.56 1.94,1.37 4.07,0.77 4.89,3.31 2.18,0.86 -1.21,6.6 3.33,5.68 2.58,1.12 6.14,0.42 4.75,-3.03 1.75,-3.72 3.17,3 5.62,1.04 3.5,-1.1 3.84,-4.91 0.95,-7.06 1.78,-1.99 6.6,-1.58 3.43,-5.47 1.27,-2.35 -1.77,-5.16 1.09,-7.2 -1.95,-2.11 4.08,0.01 3.42,-3.48 2.15,-0.49 2.85,-2.17 2.61,-3.54 1.82,1.01 2.01,-3.15 -0.54,-1.86 -1.24,-1.31 -2.01,-2.64 0.2,-3.47 -0.33,-1.44 2,-1.21 2.56,-1.67 0.96,3.46 0.77,-3.24 2.88,-0.59 3.44,-0.12 -2.08,-5.38 2.19,-5.6 -0.3,-3.57 -4.29,-0.98 -5.16,1.24 -2.94,-0.94 -4.42,-0.02 -6.92,-0.52 -0.48,-1.95 -5.24,-0.86 -1.96,-2.84 3,-2.61 -1.26,-5.76 1.74,-8.21 0.18,-2.65 3.61,-7.86 -1.4,-8.03 -1.8,0.66 -3.02,1.85 -4.53,-0.13 -2.79,3.68 -7.23,0.65 -9.47,-1.85 -1.02,0.81 -2.89,-3.34 -3.74,-0.02 -1.83,-2.9 -1.15,-5.89 -1.94,-8.56 -2.49,-1.97 -7.58,0.6 -7.16,-4.13 -0.99,3.32 -7.86,-1.7 -5.65,3.47 1.12,5.25 -0.04,11.74 4.13,15.79 1.6,0.97 5.46,1.4 5.09,3.59 -1.14,-1.76 -5.95,-2.2 -2.42,0.16 0.89,1.86 0.32,4.86 0.46,6.96 -0.86,-3.57 -0.31,-7.65 -4.4,-9.5 -4,-3.65 -3.81,-9.3 -4.62,-14.2 -0.83,-4.14 -2.82,-8.05 -6.26,-10.61 -1.82,-3.68 -6.55,-3.9 -8.36,-7.63 -0.3,-0.84 1.03,-2.73 -0.47,-2.88 z", - "department-40" : "m 169.77,433.93 c -1.39,4.09 -9.03,1.92 -8.11,7.38 -1.02,7.04 -1.81,14.11 -3.21,21.09 -1.27,6.3 -2.02,12.7 -3.64,18.93 -1,6.23 -2.25,12.44 -3.8,18.55 2.58,-1.5 3.77,4.05 6.97,1.91 3.34,1.32 5.68,-3.95 8.44,-2.39 2.07,1.33 0.83,1.91 -0.48,2.62 2.25,0.71 3.66,-2.53 5.72,-0.83 1.43,1.01 3.09,-0.31 2.14,-1.78 2.65,0.58 4.62,-1.18 7.1,-0.71 0.89,-0.91 2.56,-0.97 3.4,-1.93 1.42,1.18 2.14,3.21 3.39,1.18 1.9,-0.75 2.12,-1.21 2.41,0.33 1.62,2.42 3.07,-1.23 4.2,0.55 1.35,-0.65 5.1,-4.97 5.14,-2 -2.25,3.45 3.32,-1.25 4.51,1.48 1.42,-0.66 5.29,-2.61 3.41,-4.06 -2.62,-1.1 2.2,-2.69 0.51,-4.53 -0.4,-2.09 3.75,-3.09 1.72,-4.6 0.25,-1.62 -1.17,-3.73 0.82,-4.32 -0.1,-1.59 -0.15,-2.99 -0.15,-4.15 -3.84,-1.04 1.14,-3.46 2.82,-3.81 1.4,0.08 1.6,0.86 2.46,-0.49 1.85,-0.5 2.29,-3.87 4,-0.74 -0.03,1.42 -1.08,2.56 1.12,3.35 3.85,1.54 0.42,-3.68 2.06,-5.19 -1.31,-3.01 1.52,-6.01 2.73,-8.67 -3.45,-0.68 -6.76,-2.36 -10.44,-2.46 -3.14,0.72 -0.38,-5.12 -3.37,-6.17 -1.68,-2.94 -3.31,0.33 -2.44,2.4 -1.45,2.03 -6.15,0.75 -7.76,-0.49 0.06,-2.43 0.64,-4.45 -1.66,-5.74 -0.75,-1.94 -4.67,-0.97 -4.92,-3.99 -2.01,-1.55 -5.69,-1.4 -4.21,-4.64 -1.24,-2.31 -3.79,0.2 -5.94,-0.34 -3.05,3.71 -7.01,-1.41 -10.49,1 -4.03,1.42 2.63,-4.52 -0.65,-5.54 -1.61,0.68 -2.43,-1.07 -3.83,-1.21 z", - "department-64" : "m 211.2,495.72 c -1.9,1.07 -4.71,-0.23 -5.99,2.39 -1.98,0.52 -4.11,-1.44 -6.18,0.45 -1.47,-0.65 2.04,-3.79 -1.1,-2.24 -1.84,1.1 -3.29,3.13 -5.1,2.48 -1.96,1.45 -5,-2.73 -6.29,0.37 -1.3,-1.42 -2.42,-3.2 -3.7,-1.06 -1.86,0.3 -2.9,1.44 -5.06,0.79 -0.86,1.97 -4.19,-0.71 -3.64,2.4 -2.25,0.68 -5.49,-1.09 -7.26,1.32 -3.27,-0.97 2.34,-1.26 -0.09,-2.53 -2.18,-3.25 -4.64,2.8 -7.39,1.71 -2.74,0.92 -5.67,0.14 -7,-2.21 -3.51,1.11 -4.76,4.93 -7.06,7.37 -1.86,2.09 -5.86,0.94 -7.14,3.17 0.39,1.82 2.63,2.08 2.45,4.31 2.16,-0.79 5.47,-0.83 4.92,2.37 1.44,2.55 2.98,-0.5 3.6,-1.51 2.37,0.53 4.98,1.17 7.12,1.91 1.21,3.15 -0.34,6.66 -1.84,9.39 -3.7,1.82 -0.21,5.81 2.82,5.62 2.52,-0.18 0.25,-6.64 4.3,-5.38 -2.77,2.45 0.66,4.77 3.15,4.41 2.76,1.62 4.75,2.53 7.73,3.53 2.51,0.74 4.11,3.68 7.28,2.92 2.81,1.52 7.35,-3.02 7.16,2.26 -1.02,2.96 3.25,2.28 4.34,4.46 1.78,1.41 3.01,6.8 5.13,3.41 1.29,-2.94 5.1,2.52 7.14,-0.85 1.53,-1.11 3.1,-1.71 2.2,-4.29 -2.14,-2.89 3.19,-3.06 1.08,-6.08 -0.73,-2.21 1.82,-2.45 1.78,-4.48 3.8,1.19 0.42,-4.25 3.06,-5 2.06,-1.26 1.63,-4.46 4.21,-4.01 0.61,-1.33 0.15,-2.87 1.47,-3.33 2.68,-2.17 -1.51,-4.94 1.51,-6.75 3.94,0.18 -1.17,-3.74 0.89,-5.91 -0.71,-3.82 -1.88,1.82 -3.23,0.54 -0.52,-1.85 0.16,-3.46 1.54,-4.09 -0.91,-1.78 -0.41,-4.39 -2.84,-4.92 0.66,-3.73 -2.6,-1.04 -3.99,-2.95 z", - "department-65" : "m 216.99,494.91 c -1.84,0.25 -2.8,4.03 -0.53,4.11 1.88,1.3 0.29,3.67 2.23,4.92 -1.93,0.09 -2.67,2 -1.81,3.38 0.3,1.54 2.42,-3.88 2.78,-0.62 0.04,1.77 -0.37,4.08 1.04,5.66 -0.74,1.52 -3.19,0.65 -3.23,3.06 1.46,1.22 1.22,2.8 0.07,4.31 -0.99,0.9 -1.52,1.78 -1.24,3.38 -1.18,1.4 -2.47,-0.59 -2.75,1.65 -0.31,2.34 -3.5,2.62 -2.83,5.08 -0.23,1.21 0.77,2.46 -1.27,2.75 -1.74,-1.03 -0.67,2.29 -2.47,2.46 -0.22,2.15 1.18,4.49 -1.44,5.52 0.13,2.35 0.39,5.58 3.33,6.26 1.51,1 2.85,2.84 4.69,1.37 -0.57,1.85 1.47,3.6 2.41,4.96 1.56,0.38 2.66,3.5 4.75,1.97 1.8,-0.64 3.96,-1.24 5.98,-1.71 2.21,-1.74 5.92,-0.18 6.53,2.47 2.16,1.45 2.84,-4.54 5.11,-1.48 1.05,2.42 6.1,0.26 2.72,-1.38 -0.47,-1.86 -0.16,-4.75 -0.08,-7.05 -0.01,-1.71 0.82,-4 2.68,-2.21 3.39,1.23 2.02,-4.26 4.56,-5.2 1.78,-1.39 -1.78,-2.01 -0.27,-3.71 -0.3,-0.99 -0.83,-2.98 -1.65,-1.25 -1.08,0.21 -3.2,2.39 -2.44,-0.12 -0.09,-1.57 2.08,-1.37 1.06,-3.26 -1.4,-1.24 -3.29,-2.47 -4.49,-3.12 -2.02,-2.1 3.51,-3.46 2.42,-5.76 0.93,-0.47 4.3,-0.56 1.96,-2.04 0.32,-1.95 5.47,-3.77 2.06,-5.05 -2.3,-1.28 -4.63,-0.69 -6.84,-1.39 -2.1,2.1 -2.26,-2.3 -4.28,-0.93 -1.76,1.3 -0.81,-1.74 -2.47,-1.53 -0.55,-2.46 -4.01,1.85 -5.67,-0.21 0.62,-1.85 -3.42,-2.4 -1.35,-4.21 1.51,-1.16 -1.9,-2.45 -1.19,-4.22 -1.14,-1.21 -3.48,-0.65 -4.39,-2.66 -2.13,-0.62 -0.57,-4.95 -3.7,-4.22 z", - "department-32" : "m 246.37,463.78 c -1.87,2.87 -5.69,0.08 -7.22,3.28 -1.88,1.49 -4.2,0.57 -5.81,2.33 -2.39,-0.54 -4.55,-3.39 -6.11,0.1 -0.16,1.89 -1.71,0.96 -1.7,-0.3 -2.5,0.36 -4.05,2.53 -2.63,4.96 0.01,3.29 -6.18,-0.5 -3.3,-1.85 -0.54,-2.21 -2.13,-1.97 -3.07,-0.29 -1.34,0.89 -1.71,2.04 -3.36,1.03 -1.68,0.34 -3.48,1.37 -4.38,2.76 1.22,0.28 3.13,1.71 1.37,2.42 1.01,1.6 0.51,3.2 -0.73,3.83 -0.07,2.44 2.42,4.6 -0.76,5.86 -1.18,1.63 0.66,4.33 -1.94,5.01 -0.42,1.69 2.27,1.13 1.62,3.13 2.18,-0.55 3.63,0.28 6.01,0.22 1.55,-0.54 3.47,-2.96 4.82,-0.45 0.15,2.77 2.68,4.35 4.51,5.25 2.48,-0.68 1.19,3.49 3.25,4.21 -0.48,0.88 -2.09,2.3 -0,3.14 1.28,0.27 0.25,2.29 2,2.07 2.01,0.08 3.81,-1.91 5.13,-0.1 0.83,0.3 0.34,2.73 2.13,1.32 1.65,-1.02 1.99,3.25 3.69,0.87 2.91,0.44 5.72,1.25 8.79,1.59 2.28,-1 2.83,-4 4.96,-4.85 -0.08,-1.97 1.2,-2.17 2.72,-1.09 2.04,-2.03 5.8,0.4 7.36,1.79 1.25,2.38 1.53,-1.44 1.56,-2.27 1.63,-0.08 0.78,-2.07 1.64,-3.14 -1.95,-1.43 1.97,-2.65 1.07,-4.39 -0.66,-1.2 0.97,-1.78 2.08,-0.85 0.33,-1.45 2.39,-1.29 3.2,-2.18 2.33,0.7 0.78,-3.33 -0.81,-2.33 -0.96,-0.86 -0.26,-2.97 -2.3,-2.06 -1.55,-0.33 0.33,-2.07 -1.76,-1.78 -1.88,-0.75 0.92,-3.18 -2.09,-3.14 -1.61,-1.44 -2.45,-4.37 -4.36,-5.15 -3.35,1.69 1.17,-3.08 -1.5,-3.24 0.76,-1.49 -1.03,-2.76 -0.22,-4.22 -1.16,-1.24 -2.92,-1.03 -4.29,-1.63 -2.35,1.17 -1.75,-1.94 -0.23,-2.55 1.5,-1.23 1.3,-2.73 1.39,-4.08 3.53,-0.83 -1.38,-2.38 -2.33,-0.22 -1.18,0.08 -0.41,-3.33 -2.53,-1.63 -1.28,0.69 -2.36,3.52 -3.35,0.81 -0.67,-0.82 -1.46,-1.92 -2.53,-2.18 z", - "department-47" : "m 230.07,418.5 c -0.81,0.77 -0.9,3.82 -1.83,1.38 -1.82,-0.02 -3.21,2.14 -3.88,3.3 1.04,0.9 2.08,1.66 3.3,1.8 -0.04,1.51 -1.7,2.55 -2.03,4.05 -1.55,0.64 -2.55,2.47 -3.24,3.29 -3.01,0.59 -4.44,4.14 -2.78,6.75 -1.33,1.76 2.46,5.68 -1.08,5.69 -2.16,-0.16 -3.67,2.4 -1.25,3.45 1.89,2.62 -1.53,5.28 -3.79,5.58 -0.01,1.94 -0.52,5.85 2.43,4.84 2.83,-0.58 4.82,1.94 7.53,1.7 1.96,-0.36 2.73,1.43 1.07,2.55 -0.51,2.08 -4.01,5.95 -0.67,6.93 1.39,-0.27 1.71,-1.54 2.32,0.34 1.42,0.2 1.56,-3.84 3.99,-2.43 2.21,2.53 4.49,0.26 7.07,0 2.57,-0.7 3.69,-3.71 6.77,-2.71 1.7,-0.39 3.39,-2.44 4.44,0.28 1.31,3.29 3.19,-0.23 4.88,-1.16 0.36,-1.62 1.13,-2.69 2.56,-3.54 -1.25,-2.97 5.51,1.65 4.18,-2.52 -0.96,-0.29 -2.25,-1.68 -0.22,-2.14 2.35,-0.03 2.05,-4.03 2.4,-5.78 -1.23,-1.07 -4.15,-1.71 -2.2,-3.71 -0.38,-1.68 1.32,-4.27 2.55,-1.77 1.53,0.85 4.19,-0.22 5.25,-0.41 0.48,-2.12 -0.42,-3.89 -1.57,-5.33 0.06,-1.97 -1.67,-5.18 -1.15,-6.13 2.23,0.07 5.01,-2.93 1.78,-3.93 -1.73,-2.48 -5.12,-2.94 -6.92,-0.28 -2.08,2.1 -3.89,-1.44 -2.14,-3.04 0.26,-1.39 -1.37,-4.01 -2.62,-1.92 -2.44,1.01 -5.83,0.37 -7,-0.95 -2.41,-0.18 -2.86,2.94 -5.17,1.62 -2.31,0.8 -5.39,2.91 -7.69,0.67 0.42,-2.17 -0.14,-6.16 -2.93,-6.02 -0.81,0.25 -1.86,0.44 -2.38,-0.43 z", - "department-31" : "m 290.02,474.31 c -1.06,1.38 -2.08,2.2 -3.14,1.27 -0.58,4.46 -6.27,-1.79 -5.29,3.06 -1.9,-0.93 -3.5,1.28 -0.64,0.98 2.48,2.1 -3.77,2.63 -4.93,4.19 -2.22,1.21 -0.1,-1.87 -2.62,-1.46 -1.27,-3.41 -2.92,1.42 -4.53,-1.01 -1.38,1.57 -7.9,0.39 -4.49,3.87 1.19,2.36 4.47,2.68 3.64,5.37 2.67,0.06 0.55,2.9 3.52,1.95 0.58,0.93 0.66,2.79 2.12,2.09 2.71,3.12 -2.63,3.32 -4.16,4.93 -1.1,-1.53 -1.56,1.15 -1.34,1.61 0.44,1.44 -2.97,2.2 -1.16,3.88 -0.09,2.59 -2.4,2.6 -1.68,5.18 -1.9,1.75 -3.41,-2.85 -6.25,-2.48 -1.97,-0.25 -2.83,1.49 -4.6,-0.2 -0.73,3 -3.35,2.98 -4.53,6.1 -1.7,0.77 -1.89,0.75 -1.75,2.05 -1.29,1.74 -3.85,2.87 -2.67,4.97 -1.64,0.77 -2.86,0.43 -2.8,2.37 -2.19,1.55 -3.92,4.34 -0.36,4.93 1.97,0.94 4.52,4.07 1.77,4.79 -1.3,4.88 3.7,-2.96 3.72,1.66 0.49,1.32 -0.65,2.24 1.07,3.28 -2.79,1.64 -2.18,9.05 -6.68,5.6 -1.73,2.41 -1.93,7.77 -0.38,10.18 1.27,3.59 5.97,0.17 8.88,1.83 2.51,-1.92 -1.95,-5.09 0.25,-7.4 -0.76,-3.42 2.9,-4.02 4.93,-2.32 1.62,-0.12 4.31,1.32 2.68,-1.53 -0.93,-1.79 -1.4,-4.59 1.53,-4.74 -1.15,-3.31 5.98,-1.18 5.47,-5.37 -2.22,-1.5 -0.83,-5.26 0.13,-6.33 2.45,2.03 0.85,-3.56 3.56,-1.87 1.66,-2.07 2.75,0.56 4.53,0.43 1.14,1.96 2.46,4.41 4.04,1.37 2.25,-2.5 -5.64,-2.56 -1.56,-4.98 1.91,-0.32 6.85,-0.7 5.84,-3.41 -3.62,0.11 -4.71,-4.72 -0.54,-4.92 1.7,1.78 3.23,3.99 3.46,6.31 3.43,1.14 2.88,-2.05 2.74,-4.44 1.24,-0.74 2.86,2.59 3.98,0.85 2.05,0.25 3.31,3.93 3.51,0.42 1.87,-1.02 3.37,-2.54 3.2,-4.86 1.65,-0.79 5.11,0.92 3.61,-2.58 0.23,-2.56 3.55,-6.11 4.18,-1.52 0.52,0.87 1.91,-3.3 3.78,-0.91 2.24,0.69 2.87,-1.22 1.62,-2.8 0.91,-0.95 2.23,-3.84 -0.03,-2.5 -1.07,2.43 -6.09,-0.82 -6.91,-3.1 -0.98,-3.43 -6.75,-3 -7.98,-6.29 2.91,-1.68 0.76,-3.48 -1.25,-4.16 3.26,-0.53 0.29,-2.11 -0.5,-3.7 0.64,-3.06 -3.23,-3.07 -3.17,-5.79 -1.79,-0.87 -1.06,-3.76 -1.85,-4.82 z", - "department-09" : "m 281,514.26 c -1.93,0.45 -2.81,3.42 -0.61,3.74 0.47,1.06 3.65,0.84 1.91,2.92 -1.78,0.48 -2.86,1.94 -5,1.65 -1.94,-0.47 -2.72,3.01 -0.2,2.59 2.24,0.58 1.95,2.32 0.27,3.21 -1.24,2.42 -2.69,-0.31 -3.19,-1.7 -1.18,-0.65 -2.35,-0.74 -3.49,-1.68 -1.21,1.5 -3.6,0.41 -3.5,3.08 -0.69,0.69 -2.14,-1.23 -2.07,0.85 0.78,1.23 -1.59,1.79 -0.08,3.25 -1.18,1.45 2.43,1.96 0.17,3.11 -0.33,2.96 -5.7,1.12 -4.88,4.08 -1,0.73 -3.51,0.76 -1.93,2.67 -0.14,2.58 1.36,4.98 3.85,6.04 1.3,1.43 2.44,-0.82 3.84,0.84 2.2,0.69 5.28,-0.08 6.42,2.49 -0.04,2.84 2.56,2.9 4.54,2 2.27,0.7 5.31,-0.62 6.28,1.97 2.47,1.03 1.46,6.42 4.53,5.84 0.33,-1.46 -0.02,-3.65 2.25,-2.77 2.58,-1.67 3.67,2.32 6.42,1.51 1.59,0.01 4.16,0.09 3.44,2.23 1.96,0.82 4.9,1.1 6.14,-0.77 0.17,-1.61 2.36,0.02 3.34,-1.21 1.09,-1.15 1.09,-3.64 3.34,-2.57 1.75,-1.21 4.32,-0.24 5.87,-0.95 0.4,-2.48 -3.41,-3.46 -4.42,-5.35 -2.08,0.81 -4.89,2.28 -6.69,-0.08 -1.29,-0.72 0.48,-2.24 -1.27,-3.27 -1.88,-0.45 -2.07,-2.21 -0.54,-3.2 2.84,0.11 5.65,-1.41 4.42,-4.62 -1.62,-0.54 -3.31,-2.15 -0.6,-2.68 1.86,-1.01 -0.44,-3.29 0.61,-4.77 -1.01,-0.87 -2.68,-1.46 -1.18,-2.69 -0.07,-1.43 -0.47,-4.45 -2.45,-3.41 -0.92,1.43 -0.96,-2.2 -2.67,-1.24 -2.3,-0.25 -5.38,-1.98 -6.1,-3.66 0.91,-1.6 -0.72,-3.91 -1.67,-5.05 -0.92,0.6 -1.38,4.39 -1.98,1.49 -1.2,-0.67 -2.47,-1.05 -3.16,-0.2 -0.47,-1.65 -2.24,-0.25 -2.45,-1.94 -1.91,1 1.34,4.52 -1.22,4.39 -1.46,2.03 -3.74,-0.79 -2.75,-2.52 -1.34,-0.95 -2.09,-3.13 -3.54,-3.63 z", - "department-11" : "m 322.74,505.07 c -2.05,0.87 -0.82,6.47 -3.43,3.37 -1.24,-1.83 -5.19,2.71 -5.61,-1.17 -0.96,-1.29 -3.24,1.91 -4.87,-0.09 -1.63,-0.8 -2.35,3.52 -2.64,0.63 -0.96,-2.44 -1.93,-1.82 -2.84,-0.31 -0.91,1.07 -1.52,2.84 -0.93,4.7 -1.36,0.65 -4.52,-0.56 -3.73,2 -2.59,1.87 -0.87,4.71 -0.49,7.11 -1.27,1.72 2.24,1.99 3.14,3.2 1.19,0.53 2.27,1.21 2.96,0.05 1.12,0.9 1.35,2.64 3.05,1.69 2.12,0.9 2.09,4.11 1.18,5.21 3.13,0.75 0.58,4.42 2.61,6.09 -0.39,0.99 -3.64,-0.55 -2.72,1.47 3.15,0.22 2.69,5.73 -0.43,5.57 -2.23,-0.56 -4.71,2.43 -1.69,3.29 1.21,1.07 1.25,2.2 0.94,3.14 2.17,2.52 4.98,0.67 7.49,0.33 1.51,2.48 4.82,3.48 4.44,6.58 1.77,-0.41 3.17,-3.16 4.49,-3.39 3.31,0.6 4.11,-3.13 3.04,-5.57 -1.83,-2.22 -0.3,-4.53 2.45,-3.77 2.55,1.09 4.79,-0.72 7.38,0.01 2.84,0.15 6.37,1.82 8.78,-0.17 0.65,-3.39 5.24,-6.04 7.54,-2.78 1.85,0.63 5.78,4.21 6.08,0.38 -0.45,-2.41 3.52,0.65 2.08,-2.31 -2.01,-0.09 -2.51,-4.47 -0.81,-3.38 -1.64,2.12 0.92,2.66 1.07,0.34 -0.46,-2.15 2.38,-4.6 1.05,-6.15 -2.36,0.27 -1.35,-5.67 0.64,-3.13 -2.54,0.73 1.01,4.03 1.12,0.84 1.32,-2.4 3.72,-4.96 4.13,-7.43 -1.48,-1.18 -2.13,-3.67 -4.25,-2.51 -1.21,-1.56 -3.82,-0.43 -5.13,-2.43 -2.87,1.08 -0.98,-4.2 -4.12,-2.08 -1.35,-0.41 -2.91,-0.78 -3.72,-1.82 -0.39,1.7 -3.42,0.2 -2.88,2.31 -1.03,1.88 -2.16,4.69 -4.29,2.05 -1.21,-0.21 -0.6,-4.63 -2.32,-1.66 -2.18,1.62 -3.12,-0.12 -3.87,-2.12 -3.09,-0.03 -1.41,-4.42 0.31,-5.1 -2.19,-1.27 -5.18,-2.28 -7.77,-1.42 -1.98,2 -4.51,-1.63 -6.72,-1.15 -0.21,-0.07 -0.4,-0.62 -0.72,-0.42 z", - "department-34" : "m 390.74,470.95 c -2.99,-0.26 -2.82,5.22 -4.91,4.05 -0.85,-0.82 -3.55,2.9 -1.7,3.78 -2.23,1.02 -3.63,-1.19 -4.2,-2.93 -1.16,0.9 -4.89,3.4 -3.25,0.24 -0.72,-2.79 -3.95,-1 -5.3,0 -2.69,-1.07 -4.43,1.99 -3.3,4.01 -2.19,2.21 -5.5,0.8 -7.8,-0.28 -1.78,1.11 -0.38,3.61 -0.42,5.05 -1.55,1.49 1.67,5.37 -2.24,4.09 -1.98,-1.46 -4.85,0.46 -4.95,2.6 -2.71,0.38 -5.15,2.58 -7.61,2.47 -1.2,-2.9 -5.65,-2.66 -5.41,0.83 -0.2,2.13 -0.02,4.29 2.09,5.91 -1.23,1.35 0.72,3.85 -1.77,4.6 -0.84,1.05 -3.22,1.42 -1.8,2.86 -2.1,0.55 -3.27,4.78 -0.38,4.9 0.41,3.09 3.29,3.1 4.71,0.7 1.12,1.12 0.35,3.34 2.55,3.76 2.97,1.15 1.66,-5.18 5.05,-4.27 1.09,-0.26 0.38,-2.58 1.62,-0.55 1.21,1.33 3.32,1.66 5.28,1.1 -0.81,3.2 2.64,2.34 4.33,4 1.73,-0.69 2.59,1.52 4.38,0.6 1.39,1.92 3.62,4.56 5.52,1.34 2.58,-2.15 5.39,-4.64 8.99,-3.22 1.68,-2.14 3.28,-4.7 5.33,-6.66 2.9,-0.94 5.12,-2.93 7.63,-4.62 1.32,-0.52 2.38,-2.93 0.36,-1.17 -0.86,0.97 -3.9,2.82 -4.09,1.95 2.86,-0.54 3.94,-3.18 5.35,-4.98 2.22,-0.89 3.15,-3.57 5.97,-3.69 2.76,-1.69 5.46,-2.2 8.14,-1.32 3.13,-2.28 2.15,-5.6 0.6,-8.52 -0.42,-1.85 -2.64,-1.51 -3.41,-3.24 -1.72,-0.64 -2.58,-4.02 -5.12,-2.47 -0.36,-1.17 1.06,-3.05 -1.22,-3.23 -1.16,-1.21 -1.48,-2.47 -3.51,-1.47 -2.48,1.54 -3.44,-1.7 -1.82,-3.25 0.15,-1.49 -1.98,-1.29 -2.11,-2.79 -0.5,-0.22 -1.04,-0.13 -1.56,-0.19 z", - "department-81" : "m 317.26,455.8 c -1.38,0.45 -1.96,1.61 -3.59,0.76 -0.3,1.95 -3.52,3.22 -5.56,2.27 -1.35,-1.6 -1.97,-0.02 -0.95,1.04 -0.95,0.36 -4.67,-1.27 -3.47,1.46 -0.16,1.66 -2.33,-1.92 -2.18,0.76 -1.1,0.98 -2.79,-1.57 -4.48,-0.74 -2.96,-0.67 -1.32,3.31 0.16,3.83 0.79,1.92 -1.89,3.01 -2.42,4.25 -1.32,0.93 -1.16,3.17 -3.54,1.88 -3.23,0.63 2.44,1.72 -0.33,3.16 -1.29,2.54 1.59,4.57 1.92,6.82 3.43,0.3 1.18,4.78 4.33,5.68 1.56,1.28 -3.01,2.06 -0.13,2.25 2.4,0.02 1.46,2.84 -0.02,3.51 0.41,1.89 3.59,2.46 5.14,3.73 3.27,0.27 2.72,5.06 6.14,5.64 1.57,0.82 3.54,1.72 3.47,-0.75 2.28,-0.44 1.4,2 0.21,3 0.06,1.82 2.22,2.93 2.93,4.31 2.14,0.3 3.89,-2.52 5.16,0.35 2.18,0.85 0.37,-3.47 2.64,-4.11 1.88,0.14 4.42,2.05 6.83,2.16 2.71,-2.86 6.35,1.58 9.11,-0.98 1.2,-0.64 2.07,-1.84 2.78,-2.36 -0.59,-1.87 0.29,-4.05 -1.8,-5.38 -0.4,-2.17 -0.06,-5.25 1.22,-6.85 1.68,0.37 3.78,1.08 4.87,2.68 2.13,-1.79 6.04,-1.49 7.35,-3.74 0.82,-2 0.39,-5.04 -2.37,-4.51 -1.51,-1.26 -3.19,-1.55 -4.19,0.39 -2.37,0.97 -5.11,-0.89 -6.55,-2.85 -1.52,-2.15 -3.76,-4.35 -2.85,-6.85 -1.52,-0.96 -0.28,-3.74 -2.85,-4.01 -0.47,-0.84 1.76,-2.39 -0.4,-3.07 -0.29,-2.52 -2.16,-4.07 -4.11,-4.88 -0.57,-2.53 -3.81,-3.32 -5.31,-4.22 -0.15,-2.48 -4.32,0.72 -4.86,-1.12 1.44,0.14 3.17,-1.78 0.74,-1.46 -0.91,0.39 -2.23,-1.71 -3,-2.06 z", - "department-82" : "m 270.52,443.01 c -2.14,1.16 -4.19,2.19 -6.63,2.16 -1.8,1.76 -1.62,-2.78 -3.54,-0.83 0.31,1.77 -1.92,4.88 1.19,4.85 2.39,1.55 0.09,4.21 -0.3,6.31 -0.44,1.21 -4,0.94 -1.6,2.01 1.97,0.84 -0.06,4.23 -1.88,2.4 -1.71,-1.22 -1.76,0.34 -2.14,1.6 -2.88,-0.32 -2.21,4.49 -0.81,4.92 0.76,-1.3 4.97,-1.27 3.43,0.36 -1.84,1.04 -0.66,3.8 -2.94,4.81 -1.25,0.84 -0.68,2.87 0.84,1.84 1.82,0.52 5.75,1.1 3.97,3.56 1.04,0.67 0.69,2.25 0.98,2.38 1.77,0.78 -1.98,4.07 1.01,3.39 2.26,-0.43 4.92,-0.42 6.74,-1.49 1.27,0.58 2.39,0.31 3.28,-0.35 1.56,0.75 2.53,2.41 3.56,2.88 1.74,-0.62 2.22,-2.04 4.12,-2 1.89,-0.5 1.91,-2.44 -0.22,-2.07 -1.95,-1.13 1.52,-1.46 1.74,-1.49 -0.38,-2.02 1.51,-2.5 2.7,-1.14 2.06,1 2.76,-3.06 4.11,-1.34 0.99,-1.05 2.54,-1.76 3.38,-2.23 -0.31,-0.89 -2.82,-2.03 -0.52,-2.27 3.19,1.02 3.39,-3.02 5.79,-4.18 1.52,-1.98 -2.9,-3.42 -1.35,-5.63 1.94,-1.07 4.17,0.24 5.66,0.61 0.71,-1.21 1.03,-1.65 2.08,-0.63 0.24,-1.33 0.21,-2.59 2.09,-1.85 1.1,0.24 2.24,0.41 1.15,-0.79 0.51,-1.8 4.19,2 3.66,-0.96 -0.31,-2.1 -2.39,0.61 -2.47,-1.31 -3.3,-1.19 0.65,-3.45 1.77,-4.89 0.21,-2.45 -4.44,-0.16 -4.38,-2.98 0.49,-1.88 -1.6,-1.91 -2.4,-1.54 -1.21,-0.58 -1.91,1.84 -3.15,0.41 -2.28,-0.21 -4.04,4.15 -5.85,2.74 -0.79,-2.47 -3.62,0.05 -1.56,1.51 0.31,2.35 -3.95,2.36 -3.07,-0.25 -2.24,-2.68 -3.51,1.69 -5.86,2.39 -1.45,2.53 -2.73,-0.71 -4.63,-0.48 -0.83,-1.02 1.91,-4.61 -0.86,-3.31 -1.97,2.14 -4.17,-0.81 -5.73,-2.04 -1.54,-0.03 -2.07,-2.27 -2.71,-3.05 0.48,-0.77 3.85,-1.24 1.34,-2.04 z", - "department-12" : "m 344.82,407.22 c -2.14,2.24 -4.92,3.53 -5.91,6.44 -0.2,3.05 -2.88,4.6 -2.81,7.85 -2.78,1.77 -2.83,6.44 -7.03,4.76 -2.85,0.81 -3.66,-2.92 -6.7,-0.63 -2.79,-0.18 -0.5,4.84 -3.68,4.44 -1,2.09 -4.35,0.18 -4.99,0.68 -2.27,1.36 -4.93,3.35 -6.47,5.56 -0.5,0.74 -1.33,-2.39 -1.72,0.49 -3.55,0.2 0.23,4.71 0.28,6.73 2.91,2.12 -2.27,3.27 -0.47,5.85 1.39,1.46 5.91,0.06 3.8,3.53 -3.1,-0.35 -2.94,5.1 0.37,3.8 0.84,2.24 2.93,2.1 3.97,0.28 0.64,-0.72 3.02,-0.92 4.38,-1.29 0.38,2.53 5.59,1.47 2.9,3.68 1.7,0.61 3.86,-0.93 4.36,1.52 3.19,-0.21 4.33,4.36 7.18,4.97 1.07,2.25 3.3,4.6 2.21,6.63 2.23,0.9 1.85,3.49 2.9,4.9 -1.38,2.72 2.8,5.25 4.08,7.58 2.19,1.85 5.01,1.88 6.77,-0.28 2.08,1.32 5.71,0.5 5.44,3.99 1.27,0.35 3.33,-1.02 4.93,0.31 1.97,-0.43 -0.03,-3.71 1.21,-5.08 -2.26,-3.18 1.08,-5.37 3.72,-2.96 2.82,0.94 5.31,-0.91 4.29,-3.64 1.04,-3.15 6.02,0.38 5.11,-4.28 0.93,-2.39 7.18,-5.33 2.04,-7.25 -1.51,-0.47 -2.97,-0.34 -3.42,-2.06 -1.73,1.9 -3.93,-2.51 -0.51,-1.95 0.48,-1.6 1.14,-3.68 2.65,-4.73 -0.68,-4.43 -9.42,2.3 -6.63,-3.08 -1.18,-1.25 -3.15,-1.32 -3.65,-2.81 -2.6,0.85 1.8,-4.01 -0.75,-5.21 -0.72,-3.41 2.21,-7.15 -2.14,-9.54 -0.76,-2.6 0.83,-5.86 -2.52,-7.49 -2.49,-2.83 -5.19,-5.99 -4.63,-9.9 -1,-0.3 1.62,-2.72 -0.79,-2.1 -2.92,-0.77 -0.83,-7.54 -5.15,-5.36 -2.76,2.56 0.68,-4.65 -2.57,-4.34 z", - "department-46" : "m 289.52,399.9 c -1.93,0.63 -3.22,2.08 -5.19,2.51 -0.55,2.48 1.91,5.04 0.2,6.77 1.53,1.17 0.68,2.13 -0.64,2.71 -0.49,1.39 -2.82,1.08 -2.03,3.22 -2.04,0.31 -3.93,1.87 -1.84,3.73 -0.63,1.48 -1.5,2.57 -2.96,3.19 -1.15,2.55 -6.2,0.92 -4.86,4.75 -0.81,1.54 -2.94,2.2 -2.41,4.25 -2.21,-0.14 -3.42,2.82 -5.02,1.78 1.06,2.16 1.42,4.31 1.76,6.68 1.42,0.87 1.66,2.27 1.65,3.98 1.08,0.06 4.12,-1.76 2.93,0.81 -1.71,0.25 -2.37,1.31 -0.78,2.24 0.3,2.25 3.42,1.16 3.62,3.37 1.9,1.69 3.3,-0.16 5.08,-0.35 0.72,1.57 -2.26,4.22 0.76,4.02 1.46,0.62 1.81,2.15 3.19,0.31 1.85,-0.6 3.07,-3.05 4.33,-3.46 2.43,-0.2 1.29,4.21 3.91,2.83 1.72,-1.05 -1.79,-4.67 1.45,-4.27 1,-0.03 1.35,3.17 2.11,1.18 -1.32,-1.83 1.53,0.24 1.9,-1.51 1.38,-1.16 3.1,-1.29 4.45,-0.92 0.2,-1.96 1.81,0.11 2.71,-1.11 1.67,0.1 4.18,-1.49 1.89,-2.9 -0.47,-2.26 -2.34,-4.82 -1.67,-6.85 1.76,-0.03 1.59,-1.88 3.42,-1.54 2.32,-1.45 3.8,-3.77 6.26,-4.75 1.66,-0.78 4.05,1.82 5.11,-0.84 2.37,0.13 1.47,-2.41 -0.05,-3.14 -0.16,-1.64 0.62,-3.82 -1.82,-3.9 0.88,-2.1 0.95,-4.43 1.69,-6.42 -0.75,-2.19 -3.06,-3.63 -3.78,-5.98 -0.22,-1.15 1.69,-2.17 -0.2,-3.09 0.38,-3.82 -4.01,-3.64 -6.05,-1.43 -0.4,-1.8 -2.37,-1.92 -3.03,-0.03 -1.66,0.66 -3.24,2.7 -4.53,1.71 -1.67,0.61 -1.38,-2.93 -3.39,-2.7 -0.94,-2.08 -2.85,-4.19 -5.2,-4.37 -1.54,-0.53 -2.13,1.38 -2.99,-0.49 z", - "department-24" : "m 247.71,356.64 c -1.33,1.72 -2.15,5.44 -4.37,3.98 -1.29,2.19 0.65,6.02 -2.78,7.22 -1.07,1.73 -1.22,3.17 -3.43,2.89 -1.35,1.3 -2.7,2.47 -3.69,2.4 1.31,1.44 -2.43,1.19 -1.92,3.33 -1.11,2.86 2.21,7.18 -2.16,7.82 -1.72,1.11 -2.1,4.21 -4.37,4.44 -1.83,-1.85 -4.84,-0.09 -5.58,2.19 -1.71,0.92 1.62,1.85 -0.97,2.36 -2.09,3.33 4.38,0.08 4.2,3.85 0.13,2.45 -1.7,4.67 -1.9,7.15 -2.34,1.81 1.75,4.57 -1.01,6.63 -1.98,1.62 -0.57,1.93 1.18,2.08 1.5,2.41 4.72,0.24 7.34,1.24 1.58,-2.14 3.57,-4.36 5.67,-1.25 -1.59,1.46 -2.98,1.82 -1.65,4.38 2.67,1.95 3.57,5.11 3.66,7.87 2.89,2.27 5.83,-2.31 8.31,-0.64 1.5,-0.14 1.73,-2.6 3.78,-2.17 1.74,-0.66 1.71,2.87 4.06,1.59 2.32,0.27 4.87,-3.2 5.62,0.33 1.53,0.48 -2.2,5.61 1.71,4.55 1.86,-2.63 5.57,-3.37 7.55,-0.26 1.61,0.15 2.83,4.14 2.8,0.73 3.09,-1.47 0.93,-6.06 5.03,-5.87 2.1,-1.49 4.63,-2.68 4.89,-5.07 -3.18,-2.94 3.24,-2.15 2.07,-5.03 1.39,-0.77 2.75,-1.97 3.62,-3.12 -2.55,-1.45 1.11,-2.89 -0.92,-4.95 -0.82,-1.88 -0.06,-3.23 0.88,-4.14 -1.12,-2.13 -3.92,-5.19 -1.35,-6.5 -1.47,-1.44 -7.7,-0.59 -6.45,-3.12 3.25,-2.31 -3.9,-1.43 -1.21,-3.75 2.08,-0.54 1.75,-2.32 -0.17,-2.44 -0.66,-1.42 -0.44,-4.25 1.4,-4.42 0.7,-1.32 4.27,-4.12 0.61,-3.76 -2.11,-1.25 -0.47,-1.95 0.2,-2.77 -1.16,-1.12 -2.39,-0.61 -3.26,-2.06 -1.89,0.78 -2.29,-1.48 -4.2,-1.06 -0.44,-1.95 3.54,-4.4 -0.69,-4.44 -2.48,1.66 -3.1,-3.01 -4.18,-4.31 -2.45,-0.69 -5.34,1.33 -6.92,-0.8 -0.28,1.94 -2.24,3.99 -3.3,1.71 -4.01,-0.32 1.3,-5.83 -3.25,-6.54 -2.23,1.7 -3.48,-1.31 -4.85,-0.28 z", - "department-16" : "m 252.54,327.65 c -2.29,0.72 -1.44,3.44 -4.4,2.98 -1.27,1.85 -4.05,0.47 -4.98,-1.39 -0.68,-3.54 -5.06,1.6 -1.79,2.2 -0.58,3.13 -3.4,1.11 -5.1,0.91 -3.14,1.37 -5.19,-1.3 -7.86,-1.81 -1.52,1.5 -2.93,-1.91 -4.66,0.15 -1.97,-0.37 -2.45,3.38 -5.06,2.24 -1.93,0.04 0.82,2.24 -1.2,2.74 0.87,2.68 -3.95,2.15 -2.09,4.68 -0.28,1.91 -3.6,0.31 -2.2,2.53 -0.11,1.44 2.16,2.96 -0.03,4.42 -0.09,1.53 -0.09,4.77 -2.18,3.4 -1.96,2.42 -3.18,-3.47 -5.22,-0.43 -2.04,1.16 -4.38,0.45 -6.15,1.89 -2.73,1.16 0.38,1.62 1.39,1.98 -2.76,2.08 2.9,5.14 -0.46,5.78 -1.46,1.75 0.17,2.05 1.51,1.62 1.01,2.19 5.21,3.29 2.97,5.77 2.34,0.08 4.85,3.05 1.84,4.29 -0.18,1.67 3.8,4.33 0.08,4.95 -3.11,0.84 0.04,2.57 1.34,2.89 -0.62,0.79 -3.1,1.95 -1.06,3.18 2.2,-2.04 4.86,0.36 7.25,0.92 -0.44,1.96 0.03,3.48 2.36,2.77 1.73,0.17 2.65,2.07 3.44,2.83 1.42,-1.43 3.54,-1.84 5.23,-0.38 1.69,-1.46 2.03,-3.29 3.72,-4.47 1.1,-1.12 3.55,-1.27 2.27,-3.69 -1.79,-2.79 1.03,-5.85 1.8,-7.57 0.23,-1.21 1.54,0.42 2.16,-1.12 1.02,-1.12 2.42,-1.8 3.66,-1.6 0.38,-3.16 4.03,-3.24 3.74,-6.43 -0.64,-1.42 -0.09,-4.56 1.85,-3.02 1.5,-1.35 2.27,-4.04 4,-5.85 1.03,-2.13 3.92,-2.7 3.46,-5.45 1.36,-0.67 3.4,1.91 3.05,-0.98 1.5,-1.75 2.07,-3.92 1.46,-6.01 -0.57,-2.93 3.18,0.64 4.34,-1.8 2.69,-1.02 0.69,-6.52 -1.66,-5.43 -1.88,-0.53 -3.24,-3.11 -1.94,-5.21 -0.3,-3.28 -2.38,-2.24 -4.88,-2.46 z", - "department-86" : "m 220.19,259.01 c -2.67,1.11 -1.14,6.66 -4.7,5.46 -1.12,2.67 -0.28,6.33 2.34,7.3 1.21,2.8 -0.12,6.86 2.81,8.58 -0.34,0.88 -4.74,0.94 -2.01,2.12 1.66,0.91 -1.21,4.66 1.86,5.01 0.17,2.88 -3.53,4.96 -3.39,7.51 2.34,-1.74 2.86,1.09 4.01,2.56 -2.36,1.41 -1.42,4.19 -3.11,6.09 1.11,2.79 0.46,6.03 2.68,8.32 -0.98,2.26 1.88,5.6 3.64,2.56 3.26,-2.86 4.22,4.09 1.42,5.44 -1.17,2.3 -1.1,6.6 2.78,6.31 1.76,0.42 -1.54,4.9 1.9,4.82 2.58,2.29 6.42,0.33 9.24,2 3.12,-1.13 -1.64,-3.61 1.54,-4.88 2.93,-0.45 3.66,4.64 7.15,2.55 2.65,-1.24 4.01,-4.64 7.5,-3.07 5.18,0.43 -2.68,-6.17 1.99,-6.32 0.93,-3.5 4.73,-3.96 7.28,-4.09 1.27,-2.3 2.21,-5.88 5.59,-4.54 3.05,-1.23 4.82,-4.66 1.43,-6.65 -0.96,-2.09 -0.63,-5.43 -4.09,-4.96 -2.4,-0.38 -3.1,-2.52 -5.49,-3.06 -4.32,-2.56 0.87,-7.41 -2.39,-10.17 -3.73,-2.36 -3.49,-7.19 -7.25,-9.59 -1.82,-2.65 -1.18,-7.21 -5.41,-7.83 -3.82,-1.6 1.37,4.35 -2.65,2.83 -3.22,-0.17 -6.05,2.2 -9.36,1.21 -5,0.41 0.09,-6.41 -3.44,-7.54 -1.02,-1.75 -5.86,1.14 -3.94,-2.42 -1.49,-2.05 -5.43,-1.78 -6.57,-4.86 -0.36,-0.36 -0.83,-0.61 -1.33,-0.67 z", - "department-37" : "m 248.48,223.77 c -1.42,3.62 -6.45,2.73 -8.2,5.37 -1.46,1.36 -3.9,-2.72 -3.72,0.4 1.37,1.11 1.66,4.33 -0.82,2.81 -1.82,-1.23 -6.06,-3.74 -5.96,0.05 -1.81,2.38 0.79,4.4 -1.19,6.79 -1.59,2.5 -0.38,5.84 -2.27,7.78 -1.62,2.49 -3.61,4.89 -3.44,8.06 -0.62,2.26 -1.45,6.53 1.54,7.19 1.25,-0.87 1.94,2.54 3.31,0.71 0.97,1.11 -0.63,5.21 2.13,3.2 1.8,-1.1 1.89,1.61 3.57,1.4 0.89,2.11 -1.82,7.48 2.05,6.94 1.94,-0.66 4.56,0.68 6.7,-0.98 1.61,-0.96 6.42,0.73 3.58,-2.33 -0.63,-2.85 4.7,0.45 5.56,1.73 0.59,2.71 0.86,5.99 3.94,7.28 1.95,1.88 1.63,7.78 6,6.31 1.43,1.23 2.54,1.03 3.52,-0.09 1.84,-0.7 -1.13,-3.48 0.89,-4.6 0.94,-2.88 0.5,-6.24 2.1,-8.75 -0.51,-3.01 1.88,-5.04 4.77,-5.05 2.3,-0.22 4.18,2.32 5.36,-0.8 1.09,-2.04 2.29,-3.59 3.83,-4.89 -0.17,-3.29 -2.68,-5.86 -4.09,-8.7 -1.3,-3.91 -5.06,-1e-4 -7.13,-2.72 -1.96,-2.54 1.63,-6.07 -1.07,-8.64 1.91,-0.4 1.97,-2.18 -0.13,-2.78 -0.17,-1.99 -3.11,-4.5 -0.71,-6.14 -0.62,-1.2 -2.55,-4.44 -3.27,-1.51 -0.57,-2.17 -2.63,-4.19 -4.63,-1.88 -3.07,2.82 -2.07,-3.8 -2.27,-4.29 -2.95,-0.2 -5.98,-1.05 -8.71,-0.82 -1.21,0.63 -0.51,-1.11 -1.23,-1.05 z", - "department-72" : "m 231.9,172.51 c -2.61,0.34 -4.43,1.91 -6.19,3.04 -1.38,0.48 -2.05,1.94 -3.42,2.6 -0.33,3.05 -3.2,-1.34 -4.33,0.83 -1.43,1.08 -5.63,0.06 -4.24,2.95 -3.08,-0.79 0.86,3.38 -1.37,4.58 -0.86,1.81 1.85,4.28 -0.94,5.2 -2.01,1.1 -4.73,3.07 -1.86,4.9 -0.99,1.29 0.02,2.59 -0.74,3.79 -2.44,-0.68 -6.78,1.67 -3.4,3.85 0.73,2.09 1.76,4.48 -1.53,4.5 -2.58,-0.44 -3.89,2.42 -1.36,3.52 0.5,2.29 -5.19,2.01 -2.45,4.82 3.47,-0.45 1.48,4.86 3.4,5.98 2.31,-1.32 4.91,2 6.78,-0.52 3.29,0.6 -2.46,2.42 0.25,4.06 0.74,1.66 3.87,2.49 4.49,0.08 2.3,1.12 4.71,0.48 6.02,2.83 1.69,1.36 4.05,0.33 5.35,2.19 1.62,-0.93 1.69,-2.65 3.94,-1.78 2.54,-0.05 4.67,2.82 7.14,2.4 0.9,-1.5 -2.93,-3.52 -0.02,-4.31 1.04,1.34 2.82,2.12 3.33,-0.2 2.31,-0.39 4.79,-1.35 6.51,-2.6 -2.85,-2.23 1.58,-5.3 3.79,-5.52 0.46,-1.4 2.4,-3.52 3.78,-4.83 -1.44,-1.85 -0.29,-6.03 1.78,-3.82 -1.09,-2.59 3.21,-2.96 0.58,-5.37 0.08,-1.7 1.43,-3.61 -1.11,-3.97 -1.64,-2.45 2.4,-1.51 1.74,-3.29 -2.05,-0.4 1.4,-1.62 0.89,-2.96 2.29,0.52 3.2,-1.49 0.55,-1.94 -2.01,-0.09 -3.25,-2.56 -5.32,-1.22 -2.38,-0.82 -2.49,-6.22 -5.36,-4.81 0.79,2.39 -2.74,0.17 -4.1,0.37 -1.11,-1.06 -2.58,-1.99 -2.45,-3.6 -1.86,0.23 -5.36,-0.71 -4.94,-3.08 -0.44,-3.4 0.09,-8.02 -4.58,-8.58 l -0.59,-0.08 2e-5,0 z", - "department-61" : "m 236.9,140.22 c -1.37,2.93 -4.44,0.95 -5.77,0.51 -0.7,2.09 -2.92,0.83 -4.24,2.34 -1.35,-2.77 -4.38,-0.25 -5.26,1.87 -3.09,0.73 -4.56,4.12 -8.22,4.12 0.6,2.97 -3.23,-1.05 -4.99,-0.78 -2.07,-0.19 -4.42,-1.53 -4.55,1.51 -1.86,-0.97 -4.38,-5.01 -6.99,-1.88 -2.67,0.7 -5.63,2.58 -8.38,0.81 -1.94,-0.21 0.58,2.41 -2,2.73 -2.21,0.79 -4.81,2.48 -5.8,4.18 1.64,0.47 4.03,2.64 4.89,3.81 -2.6,1.08 -0.04,3.17 -0.37,4.16 -0.1,3.46 -3.63,4.61 -4.76,7.47 1.29,1.59 1.78,3.06 3.56,2.81 -0.2,2.49 3.05,0.83 2.04,-0.77 2.19,0.16 3.37,-1.72 3.97,1.42 2.29,-1.26 4.74,-2.16 6.49,-3.76 2.15,-0.24 4.6,-0.72 6.51,1.02 1.07,-1.63 2.35,-2.41 3.95,-1.42 1.83,-1.07 -0.27,-4.47 3.02,-3.12 1.81,1.18 3.45,2.14 1.99,3.87 0.35,2.25 1.92,4.62 4.47,2.94 1.72,0.65 -0.84,6.99 2.46,4.03 1.16,0.36 3.03,2.09 3.43,-0.38 1.63,-0.81 2.66,-2.19 4.04,-2.85 0.28,-1.38 5.31,-3.16 7.52,-1.96 3.9,1.26 2.59,5.53 3.26,8.6 -0.11,2.92 4.56,1.76 5.41,3.53 -0.07,1.99 3.35,3.78 5.67,2.91 3.19,-3.99 3.88,7.21 7.66,3.4 3.17,-1.53 -1.64,-4 -0.17,-6.33 -3.57,-0.8 0.8,-4.69 3.13,-4.08 2.2,-1.01 6.03,-4.76 3.83,-6.66 -0.95,-2.15 2.33,-4.5 -0.88,-5.72 0.72,-2.4 -4.26,-1.56 -3.98,-4.43 -1.88,-0.39 0.25,-5.19 -3.06,-4.1 -0.43,-1.15 -0.37,-2.32 -1.89,-2.36 3.89,-2.53 -0.45,-5.72 -3.19,-6.87 -1.23,-0.78 -2.92,-1.32 -1.88,-2.86 -1.36,-1.19 -1.22,-3.67 -3.26,-1.5 -2.58,-0.67 -7.27,0.22 -7.13,-3.52 0.64,-0.73 0.75,-2.65 -0.53,-2.7 z", - "department-27" : "m 242.33,106.21 c -2.25,1.4 -4.46,3.12 -7.27,3.2 -3.13,0.01 -1.44,3.96 -0.97,5.79 -0.25,1.42 -0.2,3.07 0.05,4.32 1.56,-2.67 4.74,1.16 1.61,1.68 -3.49,1.51 3.09,2.25 1.65,4.56 -0.6,1.84 0.47,2.5 1.82,3.11 -1.56,1.19 -0.91,2.9 -0.68,4.31 -3.08,-0.3 -1.43,3.4 0.78,3.14 1.11,2.25 -1.15,5.22 -2.03,7.57 1.97,1.86 5.79,2.95 8.17,1.67 1.68,-0.94 2.06,2.46 2.78,2.55 -1.38,3.04 5.18,3.21 5.92,5.84 1.68,1.55 -0.55,2.63 -0.78,3.74 1.84,0.46 1,3.47 3.6,1.89 2.3,-0.06 2.09,-4.03 4.58,-2.4 2.21,-1.11 4.77,-0.84 6.52,-3.04 1.78,1 3.18,0.1 2.69,-1.95 1.73,0.3 3.34,2.1 5.52,1.18 1.73,0.91 5.58,0.54 5.97,-1.71 -2.26,-3.14 2.59,-4.24 4.24,-5.72 -0.13,-1.58 -1.51,-4.22 1.43,-3.88 0.74,-0.67 -0.33,-1.93 0.53,-2.57 -1.47,0.74 -2.69,-0.27 -1.44,-1.58 -1.04,-1.31 -2.12,-4.8 0.61,-3.44 1.11,-1.2 0.8,-1.98 2.49,-1.09 3.37,-0.07 4.6,-2.86 5.45,-5.81 0.13,-2.58 1.39,-4.89 2.52,-6.95 1.56,-1.59 3.56,2.74 3.6,-0.58 -1.93,-1.54 -0.62,-5.1 -2.69,-7.09 -0.94,-2.78 -3.12,-0.33 -5.23,-1.99 -1.74,0.33 -2.23,-3.11 -4.08,-1.45 -2.23,-1.34 -5.13,-1.37 -7.71,-1.23 -0.89,1.39 -2.82,1.34 -2.49,3.35 -1.48,1.47 -1.23,4.8 -4.4,3.5 -1.42,0.9 -3.69,0.83 -4.18,2.58 -2.63,-0.42 -3.44,1.09 -2.81,3.24 -1.76,0.32 -3.16,0.76 -4.2,-0.95 -1.28,0.44 -0.68,-4.41 -2.73,-1.94 -0.92,0.95 -1.47,-2.05 -3.03,-1.54 0.47,-2.75 5.09,0.66 3.34,-3.08 -0.36,-1.37 -2.02,1.31 -1.95,-1 -2.7,-0.13 -3.88,-2.85 -6.72,-1.29 -2.27,1 -3.56,-0.22 -5.16,-1.45 -2.66,0.51 -3.03,-3.16 -5.33,-3.52 z", - "department-14" : "m 231.23,109.9 c -4.06,0.09 -6.85,2.84 -9.55,5.38 -3.34,2.06 -7.05,3.56 -10.99,3.85 -1.95,1.92 -3.54,-1.01 -5.94,-1.28 -2.67,-1.83 -5.65,-1.96 -8.71,-2.47 -2.52,-0.48 -5.06,0.57 -7.64,-0.13 -3.42,-0.41 -7.08,-0.38 -10.19,-1.98 -1.94,-1.82 -4.91,-0.74 -7.32,-0.9 -3.6,0.27 -1.56,4.12 -3.38,5.89 0.35,2.42 2.43,4.3 4.66,5.41 1.29,2.26 4.25,1.82 4.95,-0.81 0.89,1.47 2.18,1.84 0.71,3.15 -2.85,2.72 2.74,3.63 1.8,6.79 0.25,1.58 -1.34,2.53 0.39,3.45 -2.56,1.47 -4.13,6.64 -7.82,4.57 -1.7,0.05 -2.56,3.86 0.25,2.27 1.68,0.8 -1.5,3.01 -2.33,3.69 -1.18,-0.64 -2.61,2.05 -3.44,2.77 1.51,0.52 3.07,1.11 2.99,2.92 1.94,0.53 4.35,0.57 6.32,-0.18 1.55,1.73 4.66,1.77 5.78,1.31 0.33,1.85 2.06,-2.55 3.65,-1.79 1.67,-0.4 2.88,-1.72 1.91,-3.16 2.07,-1.17 2.99,1.93 4.94,0.32 1.69,0.63 2.6,-1.47 4.44,-1.14 2.02,-2.53 4.71,-0.49 6.27,0.75 0.09,2.25 1.52,-0.03 1.58,-1.02 2.72,0.42 5.75,0.47 7.89,2.34 0.72,-2.21 4.15,-0.58 5.38,-3.06 1.98,-1.59 4.45,-2.16 5.53,-4.57 1.56,-0.47 2.62,-1.63 3.42,0.6 1.16,-0.33 2.13,-1.63 3.58,-1.13 0.5,-2.08 1.78,-0.88 2.61,-0.44 1.61,0.55 3,0.24 4,-1.29 0.95,1.22 2.59,1.22 2.01,-0.7 1.28,-2.16 0.25,-3.37 -2.04,-3.81 -1.78,-1.67 1.38,-2.37 1.39,-3.02 -1.93,-1.58 2.62,-4.1 -0.98,-4.39 -0.16,-2.06 0.6,-4.48 -2.13,-4.95 -3.24,-2.19 4.22,-2.19 0.79,-4.43 -0.9,-0.04 -3.11,2.04 -1.98,-0.25 -0.33,-1.14 -1.2,-1.29 -0.01,-2.61 -1.49,-1.67 0.64,-7.09 -2.8,-5.97 z", - "department-76" : "m 285.08,67.51 c -1.66,1.28 -3.92,-0.27 -5.32,2.21 -2.55,2.82 -5.75,4.75 -9.23,6.16 -2.69,2.07 -6.27,0.91 -9.1,2.49 -3.04,0.83 -5.97,2.2 -9.16,2.2 -4.64,-0.08 -8.38,2.85 -12.2,5.03 -3.19,1.24 -5.65,3.53 -8.97,4.44 -4.45,0.63 -4.32,5.58 -6.08,8.7 -1.33,2.41 -3.69,6.09 0.02,7.66 2.71,1.09 5.28,1.25 8.39,1.98 3.84,1.23 7.92,-4.2 10.87,-0.97 1.02,1.67 2.99,3.04 4.68,1.44 -0.81,3.45 3.88,2.23 5.92,1.74 1.25,0.7 1.48,-1.8 1.82,0.62 0.74,1.56 3.24,0.12 3.81,1.84 1.65,-0.96 2.48,4.22 -0.34,2.48 -3.28,0.03 0.21,1.48 0.51,2.68 2.73,-3.35 2.83,4.25 5.77,2.84 2.8,-0.27 -0.27,-3.85 3.3,-3.41 1.82,-0.28 2.83,-2.57 4.57,-2.23 0.36,-1.37 4.68,0.8 4.04,-2.57 1.27,-2.05 1.52,-4.08 4.3,-5.05 2.08,0.14 5.31,0.85 7.56,1.4 2.14,-0.45 3.59,3.15 6.18,2.19 2.06,0.69 2.28,-3.97 4.3,-4.86 1.52,-1.49 -0.75,-3.01 -1.45,-0.94 -2.42,-0.89 0.93,-2.53 -0.81,-3.95 0.3,-1.61 -2.27,-1.27 -1.03,-2.58 -0.73,-1.35 1.8,-2.21 -0.04,-3.48 1.02,-1.01 3.32,-5.11 0.67,-2.57 -2.48,-0.31 0.5,-3.34 1.11,-4.23 -0.07,-1.57 3.34,-0.34 1.01,-2.16 -2.4,-2.69 -1.34,-6.85 -4.28,-9.1 -3.65,-1.5 -5.37,-5.07 -8.6,-7.13 -2.03,-0.46 -0.42,-2.8 -2.2,-2.85 z", - "department-60" : "m 299.82,88.06 c -0.68,1.53 -2.52,3 -2.62,4.61 0.88,0.83 2.72,-2.26 2.36,0.47 -2.03,0.88 -1.5,2.81 -1.5,4.35 -1.65,1.28 0.75,1.64 0.2,3.03 0.54,1.64 1.83,2.54 0.02,4.14 0.78,1.65 2.88,-1.94 3.18,0.81 -0.81,1.88 -3.2,3.3 -3.32,5.72 1.83,-0.19 -0.44,1.38 1.38,2.1 1.48,2.13 0.75,4.92 2.41,6.82 0.2,2.27 -1.63,1.56 -2.48,0.39 -2.21,-0.34 -2.49,2.24 -0.48,2.81 -0.83,1.16 -0.47,2.78 1.13,3 2.38,-0.91 4.68,1.32 7.04,0.62 2.19,-0.63 4.26,-0.42 6.14,-1.88 1.82,-1.52 2.59,1.29 4.7,0.92 0.24,2.48 3.26,-1.11 3.69,1.4 -0.75,1.55 3.2,0.09 3.21,-1.39 1.69,-0.21 1.93,2.59 3.71,1.86 2.57,0.22 4.8,1.97 6.25,3.43 0.62,-1.34 1.71,-1.33 1.95,0.34 1.46,2.81 2.94,-2.02 4.79,0.35 1.09,0.96 1.32,2.68 2.73,1.05 0.38,2.06 2.62,0.41 2.41,-0.61 2.06,-2.04 3.56,2.74 5.7,0.23 1.37,0.79 3.07,-1.58 3.55,0.59 0.9,-2.08 4.02,0.32 3.84,-2.61 0.97,-1.2 1.9,-2.09 3.15,-2.84 -1.43,-0.2 -1,-3.93 -2.02,-1.23 0.12,2.36 -0.59,-0.15 -0.51,-1.14 -0.98,-0.34 -1.96,-0.8 -2.82,-1.45 1.46,-1.59 0.58,-5.08 -1.78,-5.51 -1.64,-1.93 1.32,-3.14 3,-2.37 2.78,-1.33 1.45,-5.56 2.96,-6.93 1.83,1.02 3.46,-1.08 0.88,-1.43 -2.12,-0.58 0.91,-1.96 -1.18,-3 -0.31,-1.21 1.9,-1.71 1.13,-3.46 1.11,-2.28 -2.26,-3.66 -0.83,-5.46 -1.28,-1.35 1.28,-1.82 0.48,-3.31 0.33,-2.37 -2.35,1.17 -1.98,-1.22 -1.06,0.07 -2.21,3.33 -3.26,0.83 -1.15,-1.16 -2.97,0.6 -2.46,1.87 -0.95,-1.04 -2.28,-2.96 -3.61,-2.19 0.98,1.2 1.14,2.51 -0.39,1.26 -0.14,2.4 -4.2,0.61 -3.1,3.55 -0.54,2.6 -5.29,-1.86 -5.5,1.9 0.32,2.24 -2.85,2.23 -2.21,0.03 -1.14,-1.83 -2.74,1.59 -3.58,-0.97 -1.21,-1.4 -2.44,-1.07 -3.66,-0.6 -0.85,-3.25 -4.16,-1.53 -6.1,-3.1 -0.93,-1.42 -3.34,-0.98 -4.87,-2.04 -2.87,-0.39 -5.38,1.28 -8.22,0.91 -0.21,-2.15 -3.87,-1.59 -4.92,-1.24 -1.09,-1.54 -2.79,1.74 -4.47,0.11 -1.06,-0.76 -1.06,-1.17 -0.69,-2.16 -0.99,-0.72 -2.08,-1.47 -3.42,-1.36 z", - "department-80" : "m 292.25,47.76 c -3.3,0.48 -3.7,7.09 -0.18,7.88 1.08,1.67 4.2,2.74 3.06,4.24 -2.73,-1.29 -6.63,-3.63 -7.9,0.8 -0.08,3.06 -3.29,5.38 -4.22,7.27 1.37,-0.11 3.64,-1.46 3.18,1.37 3.11,1.87 5.05,5.06 7.98,7.06 3.9,1.29 3.89,5.38 5.12,8.61 0.56,2.66 4.89,3.47 4.09,5.66 1.46,2.82 4.15,-0.88 5.54,0.73 2.25,-2 4.72,2.18 7.27,1.01 2.7,-0.93 5.98,-1.02 8.68,0.5 1.84,-0.03 3.1,2.73 5.49,1.65 1.93,0.79 2.11,3.17 3.94,1.57 2.03,0.38 2.41,3.33 4.24,1.67 1.8,-0.87 1.46,4.54 3.03,1.36 0.02,-3.92 4.11,-1.35 5.69,-2.17 -0.71,-2.24 0.89,-2.61 2.47,-2.96 0.23,-1.49 2.58,-0.96 0.98,-2.41 1.05,-1.53 0.91,1.46 2.09,-0.25 0.9,2.74 1.49,1.35 3.01,0.23 1.35,0.58 3.49,2.16 3.45,-0.59 1.21,0.66 3.53,0.99 2.21,-1.27 0.39,-2.05 -3.23,-2.65 -0.99,-4.12 0.13,-1.56 -2.17,-2.32 -0.06,-3.42 -0.06,-1.95 2.47,-2.66 2.02,-5.11 0.89,-1.27 2.86,-3.19 2.9,-4.11 -2.64,0.29 0.37,-2.52 -2.05,-2.42 -2.22,-1.41 -5.14,-3.16 -7.9,-1.23 -1.34,-2.15 -4.91,2.97 -5.09,0.51 1.42,-1.44 -0.8,-3.49 -2.15,-1.79 -0.94,1.46 -4.33,1.85 -2.41,-0.4 3.11,-2.33 -2.99,-5.63 -2.46,-2.07 1.41,1.98 -2.63,-0.12 -3.46,-0.4 -1.61,-0.21 -3.12,-0.74 -2.69,-2.12 -1.34,-0.69 -1.48,3.04 -2.43,0.22 -3.21,-2.44 -3.38,5.35 -5.85,1.64 -1.72,-1.93 1.49,-5.21 3.99,-5.44 1.33,-2.2 -4.48,-3.79 -5.35,-1.18 -0.74,-1.34 -1.37,-2.06 -1.64,-0.43 -2.88,-0.65 -5.6,0.07 -8.2,1.37 -1.11,-1.55 -3.47,0.2 -3.68,-2.58 1.41,-3.13 -8.2,-2.22 -4.92,-5.34 -0.16,-2.3 -3.14,1.95 -4.11,-1.07 -2.18,-2.39 -5.42,-2.15 -7.98,-0.54 -2.27,1.67 -2.44,-2.55 -4.75,-1.91 z", - "department-95" : "m 297.89,122.77 c -1.93,0.92 -1.82,3.28 -2.24,5.06 -0.18,1.39 -0.88,2.57 -1.71,3.66 -1.18,2.5 3.25,0.35 3.28,2.76 0.67,1.03 2.44,0.71 2.86,-0.15 1.62,0.83 1.89,-1.96 3.5,-0.67 1.15,0.5 1.54,1.3 0.91,2.4 0.05,1.46 1.28,0.91 1.47,-0.15 1.23,-1.85 1.56,1.36 3.2,0.93 1.81,-0.33 2.63,2.19 4.51,1.19 1,-0.65 2.03,-0.32 2.94,-0.74 0.27,0.84 -0.01,2.32 1.49,2.09 1.39,0.41 0.73,2.42 2.34,2.4 -0.26,0.82 -0.29,3.2 0.91,1.57 0.86,-1.05 2.61,-1.25 3.07,-2.57 1.17,0.19 2.33,0.34 3.34,-0.64 1.5,0.48 3.52,2.04 5,0.44 1.28,-0.6 2.07,-1.91 3.13,-2.67 -1.04,-1.28 1.15,-1.17 1.41,-2.36 0.47,-0.74 -0.21,-1.51 0.41,-2.34 -0.57,-0.87 -1.19,-1.72 -1.74,-2.51 -0.76,0.04 -0.35,1.66 -1.56,0.99 -1.63,0.01 0.09,-1.59 -1.48,-1.79 -0.96,-0.62 -1.98,-0.38 -2.67,-1.33 -1.15,-0.06 -2.21,-0.73 -3.09,-0.09 -0.52,-1.59 -2.64,-3.14 -3.11,-0.65 -0.81,0.43 -3.97,1.21 -2.53,-0.5 -0.87,-1.58 -3.19,1.28 -3.56,-1.01 -1.15,-0.35 -2.65,-0.19 -3.11,-1.46 -1.37,0.13 -2.53,1.17 -3.72,1.84 -1.32,-0.26 -2.69,0.49 -4.1,0.64 -1.33,0.67 -2.12,-0.84 -3.46,0.08 -0.96,-1.47 -2.91,-0.73 -4.2,-0.81 -0.5,-0.95 -2.12,-1.82 -0.57,-2.52 0.13,-0.53 -0.36,-1.09 -0.9,-1.1 z", - "department-78" : "m 292.32,132.84 c -1.68,0.81 -3.67,0.76 -5.14,1.83 -1.97,-1.3 -0.99,2.02 -0.1,2.67 0.55,0.79 -1.34,2.61 0.69,2.07 1.64,-0.39 0.59,0.65 0.37,1.44 0.56,0.92 0.3,2.44 1.88,2.64 -0.09,1.26 1.67,1.89 0.48,3.08 1.64,0.66 2.24,2.6 1.48,4.19 -1.03,2.01 0.99,3.08 1.85,4.34 -0.58,1.19 -2.9,3.12 -0.68,3.75 -0.47,1.26 0.09,2.42 1.54,2.47 0.18,1.99 1.68,2.21 3.27,2.53 -0.41,1.11 -0.51,2.96 1.4,2.43 1.42,0.39 2.18,2 1.59,3.43 0.23,1.67 0.57,3.89 2.53,3.87 0.36,1.68 3.78,2.12 3.77,0.29 -0.23,-1.35 1.17,-2.66 1.54,-4.05 1.67,-0.97 -2.33,-2.06 -0.18,-2.66 1.44,0.17 3.44,0.88 3.57,-1.25 0.08,-1.12 0.7,-1.71 1.35,-2.36 -0.8,-1.15 -2.97,-2.42 -1.13,-3.55 0.61,-1.71 3.54,-1.04 3.46,-3.33 -0.81,-1.48 0.7,-1.23 1.5,-1.61 0.73,-1.13 2.67,-0.43 2.55,-1.99 1.23,0.53 1.88,-0.53 0.53,-1.07 -0.97,-1.07 -3.27,-1.54 -2.66,-3.59 -0.02,-1.82 0.75,-3.53 2.25,-4.55 0.27,-1.43 0.56,-2.46 -1.03,-2.77 0.42,-2.23 -2.99,-1.71 -2.63,-3.73 -1.61,-0.09 -3.2,1.35 -4.8,0.6 -1.14,-1.79 -3.8,-0.64 -4.79,-2.64 -0.79,0.03 -1.9,3.2 -2.31,1.04 -0.6,-0.85 0.89,-2.23 -0.76,-2.51 -1.37,-1.91 -2.01,1.2 -3.59,0.52 -1.03,1.41 -3.22,0.49 -3.58,-1.01 -1.62,-1.22 -2.88,0.79 -4.21,-0.53 z", - "department-28" : "m 287.11,142.32 c -2.1,1.04 1.22,5.31 -2.55,5.04 -3.13,0.47 -2.25,4.05 -2.79,5.7 -2.08,1.39 -4.66,0.71 -6.89,0.79 -1.67,0.17 -4.55,-2.91 -4.14,0.39 -0.94,1.3 -4.08,-0.75 -3.86,1.85 -2.43,0.08 -5.51,1.27 -7.37,1.58 -1.08,1.71 -3.78,2.6 -2.33,4.99 0.77,3.5 4.78,4.24 6.38,7.09 -0.22,2.23 -1.98,4.13 0.4,5.86 -1.32,2.12 -2.68,4.96 -5.61,5.63 -2.31,-0.78 -5.36,3.02 -2.13,3.95 -1.7,2.27 2.62,5.08 0.17,6.87 0.96,1.32 5.87,1.56 4.27,3.23 -2.59,-0.41 -2.61,3.43 0.12,2 1.93,-0.18 2.86,0.02 4.27,-1.38 2.46,-1.17 2.35,1.12 0.44,1.89 0.94,1.94 5.72,-0.14 5.24,3.16 2.38,1.44 2.98,5.53 5.88,5 2.46,1.01 5.04,1.84 7.07,-0.1 2.12,0.96 1.21,-4.35 3.42,-1.33 2.91,1.91 0.9,-4.73 4.83,-2.76 1.99,-0.3 2.54,-3.35 5.19,-2.24 2.89,0.64 5.49,-1.07 8.22,-1.66 2.33,-1.48 0.35,-5.82 3.98,-5.14 -0.56,-1.06 0.03,-1.81 0.2,-2.18 -1.12,-2.33 1.98,-4.62 -0.13,-6.47 1.22,-2.57 0.51,-6.45 -1.46,-7.17 0.98,-3.67 -3.12,-0.53 -4.61,-2.82 -3.57,-1.35 -1.08,-6.34 -4.19,-7.79 -2.86,0.53 -0.05,-3.49 -3.13,-2.7 -2.21,-2.24 -5.44,-5.53 -2.5,-8.36 -1.41,-1.65 -2.75,-3.31 -1.37,-5.55 -0.35,-2.12 -1.91,-3.29 -1.97,-5.44 -0.63,-1.06 -1.8,-1.83 -3.04,-1.94 z", - "department-75" : "m 326.98,144.71 c -1.27,-0.06 -2.46,0.68 -3.27,1.54 -0.47,-0.15 -0.85,0.06 -1.23,0.25 -0.65,0.03 -1.66,1.18 -0.69,1.52 0.81,0.18 0.93,1.2 1.8,1.35 1.65,0.28 3.42,1.43 5.03,0.39 1.03,-0.88 2.21,0.62 3.32,0.28 0.54,-0.43 0.6,-1.27 -0.33,-1.23 -0.68,-0.16 -1.14,-0.33 -1.46,-0.06 -0.34,-1.13 -0.06,-2.23 -0.93,-3.14 -0.12,-1.14 -1.17,-0.96 -2.05,-0.92 l -0.18,0 -0.03,3e-4 z", - "department-93" : "m 336.5,137.58 c -0.46,0.33 -1.14,0.34 -1.42,0.97 -0.75,1.19 -2.15,1.71 -3.14,2.62 -0.82,-0.03 -1.72,-0.07 -2.53,-0.25 -0.64,-0.37 -1.29,-1.34 -2.07,-0.64 -0.6,0.3 -1.08,1.1 -1.81,0.59 -0.35,-0.19 -1.46,-0.42 -1.19,0.3 0.56,0.53 2.05,0.32 2.05,1.33 -0.06,0.69 -1.13,1.34 -0.68,2.02 1.05,0.43 2.37,-0.21 3.33,0.37 0.27,0.54 0.5,1.08 0.89,1.55 0.18,0.57 -0.13,1.72 0.86,1.53 1.07,-0.15 2.16,-1.04 3.23,-0.34 1.04,0.72 2.32,1.35 3.05,2.37 -0.11,0.74 1.41,0.94 1.04,0.05 -0.24,-0.71 -0.92,-1.55 -0.78,-2.26 0.67,-0.23 -0.04,-0.79 -0.4,-0.86 0.27,-0.43 -0.26,-0.81 -0.29,-1.14 0.41,-0.57 1.31,-0.71 1.23,-1.58 -0.09,-0.8 0.8,-1.4 0.35,-2.19 -0.23,-0.84 -1.06,-1.46 -1.25,-2.26 0.77,-0.61 0.45,-1.99 -0.49,-2.17 z", - "department-94" : "m 332.85,147.49 c -0.56,0.21 -2.03,0.43 -2.18,1.01 0.31,0.21 1.82,-0.09 1.77,0.51 0.02,0.58 -0.23,1.64 -1.05,1.16 -1.03,-0.16 -2.09,-1.01 -3.03,-0.14 -0.7,0.5 -1.59,0.2 -2.33,0.5 -0.4,1.12 0.01,2.46 -0.66,3.53 -0.23,0.79 0.87,0.44 1.11,0.99 0.42,0.39 0.99,0.13 1.33,-0.1 0.46,0.44 -0.1,1.74 0.84,1.68 0.59,-0.25 1.17,-0.38 1.79,-0.16 1.34,-0.05 2.64,-0.54 3.94,-0.71 0.51,0.63 0.39,1.61 1.15,2.11 0.31,0.19 0.6,0.29 0.75,0.66 0.59,0.31 1.26,-0.47 0.77,-0.99 -0.01,-0.93 1.56,-1.44 0.88,-2.44 0.49,-0.32 0.24,-1.11 0.85,-1.28 0.43,-0.58 -0.47,-0.6 -0.83,-0.71 -0.34,-0.52 0.66,-1.17 0.14,-1.69 0.12,-0.8 -1.11,-0.7 -1.2,-1.46 -1.03,-1.05 -2.25,-2.13 -3.71,-2.49 -0.1,-0.01 -0.2,-0.01 -0.31,0 z", - "department-92" : "m 324.24,141.53 c -2,0.52 -3.26,2.41 -5.06,3.32 -1.07,0.77 -1.1,2.2 -0.99,3.39 -0.4,0.4 -0.48,0.98 -0.25,1.53 0.01,0.71 0.73,0.52 1.15,0.65 0.16,0.65 0.67,1.01 1.28,1.14 0.25,0.33 0.49,0.67 0.86,0.85 0.32,0.72 0.72,1.57 1.66,1.53 0.78,-0.01 1.11,0.83 1.08,1.46 0.36,0.27 0.92,-0.2 1.18,0.31 0.73,-0.09 0.08,-1 0.1,-1.43 0.14,-0.72 0.7,-1.47 0.38,-2.22 -0.12,-0.62 0.28,-1.24 0.24,-1.78 -0.96,-0.79 -2.46,-0.33 -3.22,-1.42 -0.37,-0.47 -1.1,-0.68 -1.44,-1.08 0.22,-1.13 1.41,-1.83 2.5,-1.7 0.39,-0.7 1.58,-0.82 1.76,-1.68 -0.35,-0.89 1.37,-1.42 0.54,-2.3 -0.48,-0.39 -1.16,-0.56 -1.77,-0.58 z", - "department-91" : "m 320.25,153.32 c -0.58,0.51 -0.49,1.56 -1.65,1.15 -1.09,0.27 -1.38,1.31 -2.58,1.12 0.11,1.05 -0.02,2.93 -1.5,3.32 -1.61,-0.22 -1.97,1.45 -2.84,2.24 0.58,0.86 2.2,1.77 1.79,2.96 -1.64,0.36 -0.55,3.52 -2.55,3.44 -0.79,0.15 -3.39,-0.81 -2.43,0.71 1.02,0.53 2.16,1.11 0.51,1.61 -0.86,0.93 -0.75,2.41 -1.65,3.25 0.14,1.24 1.76,2.59 0.46,3.92 0.71,0.75 2.78,0.14 2.06,1.92 1.07,1.28 -0.54,2.43 0.19,3.85 0.08,0.92 -1.54,1.43 -0.06,2.16 1.67,1.02 3.4,-0.35 5.09,-0.44 0.79,-1.48 2.15,0.97 2.97,-0.44 -0.22,-1.14 1.58,-0.26 1.55,-1.49 0.43,-1.63 2.01,-0.33 2.65,0.23 -0.12,0.95 0.48,1.61 1.08,0.67 0.98,0.38 1.68,0 2.09,-1.03 1.19,-0.35 1.89,2.24 3.4,1.07 0.49,-0.63 -0.03,-1.81 1.37,-1.59 1.11,-0.46 0.12,-2.39 1.77,-2.49 0.99,-0.33 0.83,-1.84 2.2,-1.42 0.62,-0.47 2.15,-0.38 0.97,-1.39 -1.69,-0.77 -1.16,-2.85 -1,-4.34 0.63,-1.35 -0.62,-2.47 -0.1,-3.88 0.63,-1.33 0.75,-2.86 1.78,-3.97 -0.3,-0.67 -1.97,-1.85 -0.32,-2.16 1.12,-0.7 -0.81,-1.91 0.75,-2.52 1.46,0.63 1.85,-1.77 0.18,-1 -1.09,-0.51 -1.76,-1.71 -2.13,-2.88 -1.08,-0.05 -2.24,1 -2.98,0.91 -0.9,-0.56 -2.37,0.31 -3.35,-0.26 0.08,-0.81 -0.25,-1.5 -1.11,-1.09 -0.9,-1.03 -1.16,0.24 -1.83,0.61 -0.49,-0.5 -1.91,-0.11 -1.24,-1.2 -0.57,-1.05 -2.44,-1.17 -3.52,-1.52 z", - "department-45" : "m 320.43,181.91 c -1.93,3.75 -6.85,2.12 -9.9,4.16 -1.95,2.44 0.54,6.83 -3.34,8.04 -0.15,3.54 -2.85,4.96 -6.06,5.24 -2.92,1.1 -6.42,-0.72 -8.49,2.39 -1.57,0.69 -5.05,0.19 -3.17,3.06 1.8,0.69 1.81,1.21 0.63,2.66 -1.69,2.43 4.05,3.22 1.25,6.02 -2.34,2.28 -0.38,4.59 0.09,7.04 1.76,1.74 4.95,-1.17 6.29,2.07 1.03,2.45 2.79,7.52 5.89,3.78 1.72,-3.2 5.45,1.69 8.15,-0.49 3.31,-0.11 8.68,-1.55 10.42,2.55 3,0.8 5.42,3.73 8.74,2.17 2.13,1.16 4.32,2.3 6.96,2.83 1.97,1.01 3.09,6.61 5.84,4.26 -0,-3.62 2.76,-1.68 4.41,-0.43 2.59,0.81 2.19,-2.3 2.2,-3.37 1.94,-0.4 6.46,-0.48 3.87,-3.36 0.34,-3.56 -2.17,-6.48 -4.41,-8.39 0.34,-3.92 6.29,-1.58 7.84,-4.63 1.26,-2.84 -2.35,-5.65 1.12,-7.77 4,-1.7 4.51,-6.41 1.51,-9.33 -2.16,-2.35 -2.73,-6.91 -6.87,-6.87 -1.86,0.13 -5.92,3.75 -6.03,-0.07 -2.63,1.14 -5.36,4.25 -8.22,1.8 -2.17,-0.24 -6.58,1.49 -7.34,0.08 2.67,-1.6 4.53,-6.27 0.45,-7.38 -2.86,-1.04 -1.71,-5.28 -5.43,-4.57 -1.53,-1.38 -4.89,2.52 -5.34,-1.02 -0.33,-0.2 -0.71,-0.32 -1.06,-0.48 z", - "department-41" : "m 266.29,195.63 c -2.06,2.95 -7.43,0.3 -8.5,3.42 -1.9,1 -2.23,2.67 -0.22,3.62 0.19,3.26 0.26,5.82 -1.16,8.6 -4.07,-1.69 0.07,5.24 -3.5,5.91 -0.99,3.4 -6.81,3.06 -5.94,7 2.53,-0.22 6.07,1.21 9.36,0.87 2.33,-0.38 3.21,0.87 2.33,3.13 -0.6,3 2.08,2.14 3.12,0.52 2.68,-0.46 3,3.47 5.15,1.95 3.31,1.92 -0.52,5.3 2.24,7.5 2.87,2.54 0.27,5.57 1.51,8.9 -2.12,3.16 1.39,5.4 4.47,4.52 3.84,-0.06 2.69,7.22 7.32,5.56 1.87,-1.68 3.74,-3.34 6.46,-2 0.88,-3.66 5.55,-2.27 8.48,-2.51 2.88,0.7 4.8,4.16 8.08,3.56 2.17,-0.93 0.23,-5.2 4,-4.24 2.53,1.03 9.23,0.49 7.7,-3.24 -2.46,-1.98 -1.75,-6.33 1.55,-6.48 1.62,0.43 3.89,1.9 3.49,-1.2 0.4,-2.84 -2.55,-3.04 -1.96,-5.71 -0.66,-1.86 -5.5,-1.35 -2.85,-4.03 2.3,-0.71 6.5,-3.18 2.67,-5.2 -3.4,-0.6 -6.94,-0.37 -10.34,0.3 -2.3,0.89 -5.75,-3.14 -6.32,0.82 -3.73,2.59 -5.33,-2.8 -6.15,-5.3 -2.21,-2.59 -5.58,2.04 -6.3,-1.81 -0.8,-1.62 0.46,-2.55 -1.18,-3.79 1.15,-2.66 3.49,-5.56 -0.29,-7.32 0.2,-1.64 2.39,-4.45 -1.04,-3.94 -1.34,-0.61 -4.15,-1.65 -3.51,1.01 -2.97,0.88 -5.87,1.72 -8.76,0.26 -3.05,-0.48 -3.65,-3.81 -5.67,-5.58 -0.41,-3.18 -5.31,-0.86 -5.28,-3.08 0.5,-0.52 3.23,-1.6 1.02,-2.02 z", - "department-36" : "m 292.75,252.32 c -0.22,1.96 -4.71,0.36 -3.09,3.11 -2.43,-0.72 -5.02,-1.03 -6.59,1.34 -2.69,0.52 -2.88,2.56 -1.18,4.37 -0.27,2.79 -3.21,4.19 -4.35,6.82 -1.44,3.03 -4.42,-1.33 -6.53,0.46 -3.18,0.46 -2.88,3.92 -3.68,6.03 -1.05,3.06 -0.95,6.5 -2.13,9.41 1.56,2.64 -2,4.95 -4.07,2.91 -3.4,-0.16 1.5,2.15 0.47,4.03 -1.36,3.26 -0.89,7.48 3.29,8.02 1.63,1.02 1.82,2.51 4.05,2.13 3.15,0.49 2.87,3.8 3.42,5.86 3.01,0.61 1.99,2.49 1.57,4.47 1.47,-0.43 1.97,1.71 3.8,0.38 1.85,0.34 2.68,-2.93 4.56,-0.65 1.37,1.89 2.88,2.94 4.14,0.35 1.12,-1.38 3.37,-4.31 4.14,-1.21 1.33,-0.81 3.52,-2.34 3.35,0.47 1.47,0.6 2.78,-3.28 3.75,-0.32 2.88,0.93 1.17,-5.91 4.57,-3.2 2.52,2.22 5.64,-0.66 8.59,0.82 2.5,1.04 7.68,2.32 7.46,-1.55 4.04,-2.02 -1.08,-5.26 0.41,-8.47 1.23,-2.22 0.34,-4.16 -1.32,-5.77 1.29,-2.28 -5.15,-3.19 -2.63,-5.41 3.7,-2.03 -4.12,-5.08 0.13,-6.45 0.15,-1.85 5.09,-3.55 1.3,-4.36 -3.14,-0.2 -1.71,-2.81 -0.75,-4.45 0.55,-3.16 -4.43,-3.11 -2.28,-6.14 0.71,-2.59 -1.84,-0.34 -2.34,-2.38 -2.14,-1.4 -4.51,2.29 -6.97,0.12 -1.89,-0.3 -3.87,-1.35 -1.68,-3.08 2.9,-1.88 1.03,-5.37 -2,-5.37 -1.57,-1.11 -2.26,-2.41 -4.45,-1.38 -1.18,-0.07 -1.7,-1.07 -2.98,-0.88 z", - "department-18" : "m 323.87,229.07 c -2.35,0.13 -9.34,2.52 -5.77,4.83 3.63,-0.55 1.32,4.29 3.95,4.19 1.09,2.3 -0.24,7.95 -2.97,4.02 -2.53,0.84 -4.38,3.27 -2.23,5.76 1.94,2.35 0.54,4.87 -2.44,4.09 -2,0.97 -4.54,0.79 -6.09,-0.04 -3.26,0.8 0.48,4.8 -3.11,4.5 -2.3,-0.84 -0.78,2.92 -3.07,3.74 -2.13,3.21 4.52,3.78 6.54,2.69 2.19,-2.06 2.95,2.09 4.74,0.99 0.13,1.95 -1.78,4.73 1.47,5.08 2.39,1.98 -3.09,7.46 2.34,7.01 1.98,2.06 -4.63,4.48 -3.1,6.87 3.2,0.9 1.23,3.63 0.29,5.24 0.67,1.68 4.73,1.92 3.03,4.22 4.54,2.34 -0.65,6.57 2.07,9.85 1.42,2.13 -0.12,3.45 -1.35,4.8 0.97,3.01 6.38,2.02 6.61,-1.43 1.68,-1.43 2.79,-4.1 5.74,-3.71 2.61,-0.19 8.61,0.85 7.95,-3.28 -1.28,-1.97 -0.29,-4.02 -0.99,-5.76 1.11,-0.26 2.76,0.38 2.1,-1.66 2.77,0.03 3.8,-5.99 6.55,-2.38 4.02,-0.1 5.48,-4.84 9.43,-5.17 5.09,1.19 4.04,-5.2 3.91,-8.3 0.71,-2.84 1.27,-6.86 -1.24,-8.77 -0.49,-3.87 -0.61,-7.69 -2.18,-11.39 0.6,-4.25 -6.27,-4.24 -4.71,-8.26 2.14,-3.02 2.74,-7.4 -0.15,-10.16 -1.82,-0.35 -3.52,2.23 -5.06,-0.44 -2.66,-2.76 -1.08,3.94 -4.37,2.1 -2.06,-1.93 -3.82,-6.36 -7.51,-5.63 -1.58,-0.2 -3.8,-3.83 -5.86,-1.15 -1.78,-0.24 -2.82,-2.01 -4.51,-2.45 z", - "department-23" : "m 301.06,306.59 c -2.18,-0.09 -0.48,5.24 -3.46,3.84 -1.17,-2.86 -2.05,0.79 -3.59,0.42 -1.13,-0.79 -0,-3.31 -1.73,-1.25 -1.24,0.55 -2.36,1.38 -2.36,-0.7 -1.54,-0.88 -2.18,2.59 -3.79,3.02 -0.98,0.84 -2.88,2.44 -0.45,2.76 0.29,1.69 -1.79,2.6 -0.56,4.04 -2.11,0.16 0.28,2.07 -1.84,2.35 -1.71,2.37 1.37,3.88 3.12,3.98 -0.87,1.98 3.03,2.32 1.47,4.18 0.81,1.46 2.68,2.16 2.08,4.13 0.59,1.41 -1.07,3.49 1.38,3.72 1.8,2.32 -4.92,2.97 -1.35,4.46 1.26,1.18 3.64,-2.06 4.21,0.35 0.31,1.19 0.8,2.47 -1.06,2.08 -1.31,1.78 2.07,3.75 3.94,3.02 1.79,0.62 3.88,-3.62 3.75,-0.15 0.21,1.27 2.24,2.17 2.82,1.56 1.47,1.11 3.83,3.39 1.98,4.77 0.21,1.09 -0.08,4.28 1.82,2.42 1.13,0.08 1.99,-1.04 3.2,-0.95 0.33,-2.76 3.75,-2.96 4.66,-0.46 1.35,-0.17 2.6,0.94 3.34,-0.03 1.49,1.32 3.49,2.43 4.82,3.44 0.2,2.09 4,0.09 3.38,-1.73 2.36,-0.58 5.37,1.33 6.38,-2.1 -1.37,-1.09 -2.62,-1.96 -3.06,-3.78 -1.55,-1.24 -1.59,-2.93 0.65,-2.9 0.54,-1.38 1.04,-2.45 2.73,-1.85 0.62,-1.79 3.09,-2.23 2.56,-4.51 0.36,-1.75 3.84,-1.53 2.12,-3.52 1.2,-2.89 -2.25,-4.14 -2.04,-6.95 -0.08,-2.21 1.4,-4.81 -1.02,-6.11 0.02,-2.5 -1.86,-3.91 -2.39,-6.08 -1.13,-1.7 -3.1,0.63 -2.89,-2.06 -0.52,-1.65 -1.48,-0.92 -2.17,-0.16 -2.13,-0.72 -3.54,-2.45 -1.59,-4.12 -3.08,0.61 -1.54,-4.21 -4.75,-3.19 -2.85,-0.75 -5.52,1.57 -8.05,0.18 -2.39,-0.94 -4.83,-0.98 -7.12,-1.05 -1.87,0.89 -3.74,0.71 -4.87,-1.08 l -0.28,-0.01 10e-6,10e-5 z", - "department-87" : "m 281.04,310.22 c -0.51,0.05 -1.17,0.12 -1.14,0.78 -0.25,1 -1.41,1.2 -2.23,0.78 -0.91,-0.55 -1.46,0.97 -2.37,0.47 -0.41,-0.24 -0.15,-1.36 -0.88,-1.06 -0.15,0.36 -0.49,0.69 -0.87,0.31 -0.42,-0.56 -1.48,-0.46 -1.39,0.36 -0.29,0.51 -0.98,0.78 -0.95,1.46 -0.55,0.47 -1.05,-0.38 -1.56,-0.48 -1.22,-0.29 -2.83,0.17 -3.07,1.56 0.1,1.34 -1.16,2.36 -1.14,3.65 -1.12,-0.21 -2.43,-0.58 -3.48,-0.02 -0.57,-0.29 -1.43,-0.46 -1.55,0.41 -0.29,0.71 -1.42,0.57 -1.53,1.41 -0.45,0.32 -0.59,0.81 -0.41,1.28 -0.57,0.79 -2.14,-0.04 -2.35,1.21 -0.11,1.15 1.52,1.66 1.49,2.82 0.45,0.61 -0.22,1.55 0.51,2.07 0.3,0.78 -1.04,0.68 -1.22,1.21 0.1,0.73 1.16,1.32 0.57,2.1 -0.2,0.88 -0.43,1.82 -0.37,2.7 0.55,0.71 1.53,1.06 1.85,1.96 0.6,0.29 0.77,-1.11 1.42,-0.47 0.52,0.57 1.56,1 1.37,1.9 0.17,0.33 0.61,0.45 0.5,0.91 0.25,0.56 0.69,1.22 0.15,1.8 -0.4,0.33 -0.69,0.93 -0.79,1.33 -1.08,0.03 -1.62,1.44 -2.79,1.15 -0.74,0.09 -1.45,-0.83 -2.12,-0.41 -0.07,0.49 0.25,0.98 0.12,1.53 -0.13,0.54 0.63,1.01 0.41,1.49 -0.44,0.28 -0.27,0.69 -0.21,1.04 -0.23,1.22 -1.06,2.19 -1.62,3.25 -0.26,0.54 0.17,1.51 -0.39,1.85 -0.92,-0.16 -1.85,-1.49 -2.8,-0.78 -0.33,0.63 -0.36,1.44 0.03,2.02 -0.07,0.89 -1.28,0.52 -1.72,1.1 -0.39,0.39 -0.56,0.91 -1.06,1.2 -0.36,0.39 -0.09,1.12 -0.8,1.16 -0.53,0.7 0.73,1.29 1.05,1.78 1.12,0.48 2.72,-0.73 3.83,0.16 0.41,0.49 0.74,1.16 1.39,1.34 0.08,1.16 -0.5,2.25 -0.79,3.32 0.28,0.85 0.98,1.77 1.99,1.46 0.49,0.16 0.41,1.27 1.18,1.08 1.27,-0.42 1.02,-2.31 2.06,-2.9 0.55,0.27 0.58,1.69 1.39,1.27 0.5,-0.37 1.3,-0.2 1.85,-0.57 0.8,-0.12 1.59,0.64 2.37,0.08 1.2,-0.25 2.21,0.92 2.02,2.08 -0.09,0.92 0.66,1.5 1.35,1.88 0.41,0.32 0.61,1.42 1.32,0.86 0.49,-0.58 1.3,-0.68 1.86,-0.14 0.33,0.35 1.23,0.52 1.23,1.08 -0.69,0.87 -1.91,1.66 -1.92,2.87 0.34,0.84 1.26,0.35 1.87,0.21 0.56,0.26 0.58,0.97 0.93,1.33 0.84,-0.26 2.33,-0.56 2.49,0.7 0.19,0.63 0.87,0.23 0.77,-0.27 0.67,-0.31 0.04,-1.73 0.98,-1.81 0.57,0.07 0.21,-0.87 0.71,-0.67 0.95,0.21 1.74,1.1 2.68,1.15 0.76,-1.2 1.96,-2.1 2.52,-3.45 0.35,-0.6 1.02,-0.45 1.52,-0.23 0.86,-0.13 0.35,-1.3 0.75,-1.74 0.56,-0.03 0.98,-0.4 1.21,-0.85 0.63,0.05 0.58,1.16 1.29,0.85 0.37,-0.17 0.08,-0.99 0.68,-0.63 0.79,0.46 1.82,0.91 2.6,0.18 0.48,-0.4 0.34,-1.43 1.2,-1.3 1.25,0.1 2.05,-1.03 2.55,-1.98 0.73,-0.73 1.34,-1.82 2.34,-2.13 0.74,0.12 1.5,-0.28 1.86,-0.87 0.93,-0.17 1.13,-1.16 1.48,-1.85 0.37,-0.07 0.64,0.49 1.11,0.2 0.61,0.2 0.96,1.44 1.71,0.76 0.42,-0.5 1.1,0.52 1.33,-0.26 -0.03,-0.66 0.6,-0.53 1.03,-0.64 0.45,-0.2 0.16,-0.77 -0.12,-0.88 -0.02,-0.51 -0.84,-0.68 -0.83,-1.1 0.48,-0.35 0.14,-0.82 -0.21,-1.07 0.24,-0.6 0.41,-1.25 0.01,-1.83 -0.05,-0.55 1.2,0 0.86,-0.75 -0.45,-0.79 -0.3,-1.85 -1.25,-2.36 -0.47,-0.29 -0.97,-0.56 -1.37,-0.86 -0.42,0.28 -0.85,0.21 -1.19,-0.2 -0.57,-0.6 -1.85,-0.61 -1.72,-1.7 0.17,-0.43 0.1,-1.78 -0.62,-1.22 -0.17,0.44 -0.43,0.74 -0.89,0.86 -0.71,0.92 -2.04,0.24 -2.93,0.86 -0.49,0.28 -0.9,0.12 -1.15,-0.31 -0.68,-0.45 -1.84,-0.44 -2.21,-1.23 0.21,-0.61 -0.04,-1.24 -0.49,-1.61 0.25,-0.59 1.1,-0.28 1.36,-0.78 0.47,0.27 0.94,-0.21 0.51,-0.63 -0.6,-0.41 0.17,-1.39 -0.62,-1.58 -0.8,-0.29 -1.69,0.05 -2.03,0.8 -0.73,0.21 -1.51,-0.02 -1.97,-0.63 -0.45,-0.19 -1.31,-0.18 -0.96,-0.92 0.42,-1.4 2.91,-1.11 2.81,-2.77 -0.02,-0.79 -0.76,-1.12 -1.46,-1.02 -0.74,-0.49 -0.23,-1.62 0.01,-2.28 0.07,-0.84 -0.67,-1.62 -0.2,-2.45 -0.01,-0.95 -1.08,-1.21 -1.63,-1.75 -0.29,-0.44 -0.89,-1.12 -0.22,-1.54 0.59,-0.47 -0.22,-1.14 -0.7,-1.29 -0.29,-0.51 -0.96,-0.67 -1.32,-1.01 0.65,-0.4 0.49,-1.69 -0.42,-1.53 -0.93,0.06 -2.05,-0.18 -2.28,-1.2 -0.52,-0.39 -1.08,-1.35 -0.53,-1.94 0.31,-0.58 0.65,-1.21 1.38,-1.2 0.66,-0.47 -0.77,-0.84 -0.18,-1.34 0.43,-0.32 0.7,-0.79 0.48,-1.28 -0.02,-0.63 0.42,-1.1 0.86,-1.45 0.24,-0.83 0.18,-2.06 -0.9,-2.22 -0.7,-0.32 -0.2,-1.35 -0.83,-1.79 -0.85,-0.67 -1.34,-1.98 -2.45,-2.23 l -0.03,0.01 z", - "department-19" : "m 313.35,352.38 c -1.86,0.13 -2.22,1.42 -2.96,2.7 -1.7,-0.45 -2.02,1.25 -3.41,1.04 0.1,2.65 -3.23,3.39 -4.97,1.84 -1.53,1.04 -2.82,2.64 -4.95,2.95 -1.42,1.63 -2.47,3.68 -4.63,4.05 -0.78,2.4 -3.28,0.32 -4.72,1.32 -0.15,-2.02 -2.14,1.24 -2.3,2.01 -1.89,-1.15 -2.49,2.34 -3.89,3.21 -1.28,0.53 -3.65,-2.27 -4.12,0.75 -1.21,1.38 2.97,2.44 0.01,3.18 -0.68,2.09 4.29,0.8 2.12,3.47 -1.5,0.61 -1.7,2.64 -3.24,3.07 -0.37,1.74 -0.74,3.8 1.62,4.02 0.64,1.56 -3.73,2.47 -1.44,3.5 2.52,-0.79 2.31,2.08 0.75,2.84 2.1,1.86 4.91,0.57 6.95,2.2 -1.97,1.83 -0.08,4.96 1.55,6.77 1.57,0.57 3.76,-3.02 4.88,-0.71 2.49,-1.36 5.15,0.9 6.6,2.82 0.89,1.66 2.62,2.3 3.51,3.98 0.84,-0.76 2.22,0.94 2.83,-0.95 1.95,-0.25 4.19,-4.21 5.12,-0.84 2.18,-2.19 5.35,-1.42 8,-1.89 1.92,-1.72 -3.18,-4.39 -0.13,-5.96 1.44,-0.92 3.38,-0.83 2.82,-3.25 -0.27,-1.27 3.56,-2.56 1.06,-3.66 -2.12,-2.49 1.31,-4.07 2.09,-6.03 1.52,-1.54 3.08,-3.21 4.69,-4.48 0.47,-1.62 0.7,-3.32 -0.12,-4.93 2.48,-0.49 5.95,4.22 7.88,1.25 -2.68,-1.36 -0.86,-4.01 -0.65,-6.27 0.65,-2.61 -0.12,-4.5 -1.81,-6.42 -0.37,-1.09 0.41,-2.79 1.03,-3.68 2.2,0.41 0.72,-2.34 1.39,-3.43 -0.08,-1.62 -1.77,-3.7 -2.72,-1.42 -1.49,2.45 -5.53,-1.84 -5.69,2.21 -1.2,1.04 -3.48,1.86 -3.57,-0.45 -2.4,-0.22 -2.77,-1.54 -4.33,-2.87 -0.57,1 -2.92,0.03 -3.77,-0.11 0.11,-0.94 -1.07,-1.2 -1.5,-1.83 z", - "department-15" : "m 334.72,370.94 c -1.28,1.82 -1.55,4.58 0.43,5.9 -1.81,2.51 -4.37,0.04 -6.57,-1.17 -2.6,-1.06 0.22,2.76 -1.15,4.1 -0.02,1.86 -2.79,1.83 -3.22,3.86 -1.83,1.13 -3.51,3.59 -4.24,5.64 0.35,1.77 2.71,2.41 0.56,3.82 -1.95,0.87 -0.07,4.99 -2.89,4.16 -3.55,0.88 -0.82,4.03 -0.22,5.71 -0.43,1.88 -4.6,-0.03 -2.81,2.9 -0.04,1.62 2.21,2.57 0.46,3.91 0.13,3.08 4.46,4.57 3.6,7.69 -0.92,1.52 -0.85,3.76 -1.46,5.32 3.14,-0.54 0.43,4.14 3.05,4.94 0.99,0 -0.12,-3.03 2.23,-2.19 1.58,-0.83 4.01,-1.56 4.43,0.74 2.75,-0.34 6.48,0.85 7.12,-2.96 2.85,-1.73 1.71,-5.71 4.3,-7.33 -0.14,-2.33 1,-4.52 2.76,-5.39 0.66,-1.77 2.62,-2.11 3.53,-3.79 2.71,0.19 1.23,4.39 2.14,5.14 1.36,-1.39 4.37,-1.42 3.78,1.12 0.34,1.62 0.97,4.51 2.8,3.48 0.84,2.32 -0.52,5.11 1.01,7.65 0.5,1.69 1.9,2.45 2.17,0.12 0.35,-2.14 2.27,-2.85 1.68,-4.93 0.92,-1.91 0.56,-5.47 2.78,-5.83 -0.12,-1.77 1.65,-6.61 3.22,-3.03 1.26,2.36 3.56,-0.59 3.31,-2.05 0.59,-1.14 0.92,-2.65 1.95,-1.09 1.6,-1 4.29,-1.63 3.3,-3.81 1.88,-0.88 -1.23,-1.49 -1.31,-2.37 -2.47,-0.36 0.7,-4.16 -1.68,-4.86 0.04,-1.43 3.56,1.01 2.84,-0.76 -3.52,-0.25 -3.97,-3.78 -3.79,-6.72 -2.86,-0.25 -0.48,-5.68 -3.84,-4.2 -1,0.06 -0.92,-1.73 -2.53,-0.75 -1.83,0.05 -2.03,-0.79 -0.71,-1.66 -1.98,-0.82 1.54,-2.18 -0.51,-2.67 -1.63,1.16 -2.03,4.92 -4.8,3.76 -3.45,-0.77 -2.59,-5.89 -6.01,-5.8 -1.98,-1.95 -3.93,0.16 -6.22,-0.38 -1.82,0.76 -1.98,-2.81 -2.23,-3.3 -2,0.21 -2.37,-1.95 -4.2,-1.04 -0.86,-1.4 -2.85,0.57 -2.19,-1.65 -0.21,-0.26 -0.61,-0.13 -0.87,-0.22 z", - "department-30" : "m 402.45,438.56 c -1.2,2.08 -2.01,3.99 -4.41,4.18 -0.91,2.13 4,4.03 1.37,6.32 -0.45,1.86 3.55,2.45 0.94,3.7 -0.76,1.99 0.11,3.59 0.97,5.15 -2.84,-2.29 -3.24,4.22 -6.65,2.09 -2.84,1.31 -5.14,-3.82 -7.86,-2.71 -1.9,-0.09 0.68,4.12 -2.36,3.87 -3.59,-0.21 -7.54,0.01 -9.81,-3.3 -3.88,-0.94 -1.76,4.82 -5.2,4.63 -0.2,1.99 1.7,1.26 2.49,1.37 0.64,2.2 6.26,1.35 5.12,4.79 -0.92,1.9 -5.78,3.67 -3.13,5.83 2.48,-0.75 3.13,1.64 2.84,3.17 1.93,-1.62 4.32,-2.9 4.52,0.69 1.23,0.34 3.7,1.07 1.85,-0.84 1.05,-1.8 2.07,-3.7 4.36,-3.11 -0.01,-3.76 5,-4.67 6.38,-1.85 2.32,1.17 -2.54,5.3 1.82,4.76 1.89,-0.76 3.45,-1.45 3.7,1.02 2.53,0.02 1.7,2.08 1.81,3.51 2.89,-1.55 4.4,2.61 6.33,3.87 2.8,0.69 3.15,4.82 3.78,7.11 -0.67,2.22 -2.4,3.52 -4.18,3.93 1.03,2.15 2.04,4.41 2.86,6.75 1.85,2.05 3.54,0.51 3.74,-1.66 2.08,-0.46 3.52,-1.72 3.36,-3.55 0.97,2.31 4.15,-0.86 5.01,-1.94 1.98,0.27 2.78,-2.49 0.23,-2.01 -0.41,-2.17 1.81,-4.53 3.24,-5.76 1.92,-1.29 6.52,3.05 5.01,-1.07 0.59,-2.7 2.29,-5.32 1.74,-7.95 1.25,-0.84 -1.73,-1.91 0.74,-2.53 2.32,-1.47 3.71,-3.79 6.04,-5.21 0.4,-1.57 0.8,-2.1 2,-2.68 -1.38,-1.85 -2.67,-6.36 -5.46,-5.62 -1.54,-2.69 0.63,-6.1 -0.98,-8.69 -2.44,0.11 -1.5,-4.81 -4.22,-4.74 -2.14,-0.69 -5.48,-5.75 -7.17,-2.57 0.92,4.08 -4.49,2.27 -2.46,-0.85 -1.91,-1.19 -5.21,1.01 -5.19,3.34 -1.4,3.16 -4.03,-1.21 -5.4,-1.88 -1.7,0.52 -1.47,-2.53 -3.73,-1.05 -1.71,1.8 -2.68,-0.11 -1.46,-1.57 -0.15,-1.56 -0.74,-2.62 0.35,-3.62 -1.57,-1 -0.67,-2.78 -2.91,-3.32 z", - "department-48" : "m 373.48,404.94 c -1.47,0.89 -3.46,3.53 -5.12,1.98 -0.01,1.49 -1.57,1.93 -1.04,3.5 -1.43,1.81 -3.11,1.2 -3.88,-0.85 -2.88,-0.45 -1.07,4.27 -3.39,4.9 -1.4,1.6 -1.16,4.02 -1.76,5.9 0.45,1.49 -1.64,2.13 -1.6,3.92 -1.61,2.48 1.66,4.55 3.09,6.26 2.11,1.84 -1.38,5.67 2.08,6.72 1.92,1.77 1.3,4.27 0.7,6.32 -0.81,2.08 2.13,3.68 0.68,5.63 -1.2,1 -0.69,2.92 0.49,1.55 -0.34,2.49 4.49,1.53 3.22,4.04 -0.61,3.08 3.16,-0.47 4.71,0.57 2.33,-0.24 2.39,2.9 4.55,3.55 1.02,2.18 4.4,1.65 6.21,1.9 1.73,0.64 4.49,-0.1 3.28,-2.39 -0.17,-1.71 2.49,-2.35 3.14,-0.7 2.15,-0.14 3.4,3.16 5.36,2.3 1.4,-0.48 2.81,0.78 3.7,-1.01 1.48,-0.27 0.79,-2.83 2.56,-1.71 0.48,-1.13 -1.37,-1.78 -0.45,-3.23 -0.32,-1.45 2.55,-2.77 -0.12,-3.02 -0.49,-1.4 -1.27,-2.69 0.33,-3.79 -0.9,-1.25 -2.65,-3.18 -2.62,-4.42 1.46,-1.07 3.7,-0.89 3.95,-3.34 1.21,-1.8 0.03,-4.2 -0.54,-6.13 -0.14,-2.55 -3.1,-2.32 -3.01,-4.96 -0.51,-1.42 -0.74,-3.3 -1.23,-4.8 0.21,-0.99 -1.02,-2.2 -0.2,-3.43 -0.96,-0.75 -2.32,-0.83 -1.55,-2.36 -1.84,1.16 -1.86,-1.71 -3.45,-2.23 0.02,-3.18 -3.5,-0.79 -4.63,-2.01 2.18,-2.04 -3.67,-4.45 -2.82,-1.23 0.29,3.23 -3.33,0.7 -4.65,2.81 -2.12,0.38 -2.38,-3.83 -3.37,-5.42 -0.69,-1.57 0.03,-3.98 -2.15,-4.28 l -0.25,-0.51 -0.23,-0.01 -2.2e-4,-1e-4 z", - "department-63" : "m 350.25,319.87 c -2.41,0.1 -1.39,6.08 -4.36,2.69 -2.2,-1.55 -1.13,2.91 -3.36,2.6 -0.99,2.15 -2.4,5.06 -4.99,2.48 -3.53,1.71 0.74,5.9 1.02,8.31 0.33,2.26 -0.13,3.09 -1.85,4.34 -0.59,3.07 -2.87,5.1 -5.46,5.93 -0.78,1.08 -3.3,2.29 -0.7,4.14 1.84,2.94 6.68,6.33 3.76,10.01 -3.59,1.58 -0.37,5.2 0.63,7.47 -1.63,3.1 2.57,5.33 4.8,4.69 1.04,1.88 3.32,0.49 2.64,2.92 1.95,3.55 6.09,-0.43 8.67,2.01 3.48,0.74 2.44,6.76 6.82,5.67 2.39,-1.04 2.55,-4.68 5.97,-4.03 2.84,-0.11 5.33,-4.21 7.45,-3.45 1.17,-0.15 2.17,-1.54 3.06,0.31 2.88,1.39 5.17,-2.92 7.03,0.16 3.24,-0.64 2.05,6.51 5.21,2.85 1.13,-3.37 5.41,3.07 6.68,-1.35 0.83,-2.19 5.07,4.34 4.28,-0.59 0.72,-2.92 5.73,-4.1 3.45,-7.91 -0.98,-3.57 -2.63,-6.42 -6.17,-8.13 -2.69,-2.1 -1.82,-6.45 -4.74,-8.34 -0.45,-1.7 -2.19,-2.8 -0.35,-4.4 -0.69,-2.91 2.62,-4.84 -0.62,-6.96 -2.59,-1.57 -3.98,-4.12 -5.91,-6.12 -2.16,0.37 -6.24,1.62 -5.45,-1.98 -1.98,-2.68 -5.33,1.55 -7.73,-0.76 -2.66,-0.65 -5.11,0.01 -7.56,-0.72 -1.51,-1.52 -2.18,-2.56 -4.49,-2.07 -3.09,-0.49 -3.15,-3.91 -5.15,-5.29 0.27,-2.13 2.01,-5.11 -1.71,-4.35 l -0.47,-0.05 -0.43,-0.12 0,0 z", - "department-42" : "m 397.37,318.49 c -1.6,0.83 -3.4,1.29 -4.64,2.21 -1.3,0.59 1.02,2.59 0.48,3.98 0.61,1.85 -0.41,4.23 1.11,6.23 -1.61,2.5 2.37,7.25 -2.15,7.3 -1.09,-0.11 -1.49,1.09 -2.88,0.34 -2.32,2.56 2.22,3.36 1.74,5.81 -1.98,1.61 -0.24,4.65 -2.31,6.15 1.69,0.49 1.3,2.13 2.33,2.91 2.23,1.34 1.14,4.92 3.25,6.83 1.78,1.97 5.01,2.91 6.17,5.68 -1.24,2.45 2.85,3.93 0.67,5.95 0.89,3.06 -5.47,3.2 -3.23,7.04 0.42,3.41 2.25,-3.4 4.17,-0.43 0.87,1.44 1.19,2.02 2.38,0.77 1.23,1.18 1.39,0.75 2.25,-0.33 1.05,-0.89 3.38,0.13 2.65,-1.8 2.25,-0.56 4.93,-0.17 6.2,1.72 1.74,-1.96 5.45,1.48 2.47,2.65 0.55,1.23 1.98,1.3 0.84,2.91 0.86,2.54 3.62,-1.67 4.48,1.3 1.58,2.36 4.9,0.89 6.79,-0.08 -1.25,-1.91 1.2,-3.4 2.26,-5.02 1.49,-1.32 5.89,-1.48 4.47,-4.32 -0.52,-1.74 0.97,-3.48 -0.58,-5.25 -0.48,-1.69 -3.61,1.7 -3.93,-1.3 0.42,-2.1 -0.24,-3.68 -1.93,-4.86 -1.43,0.06 -2.67,-1.02 -4.29,-0.14 -2.32,-0.62 -2.91,-2.86 -5.1,-4.24 -1.42,-1.8 -2.51,-3.8 -0.78,-6.03 1.82,-2.31 -3.43,-0.74 -1.14,-3.43 0.94,-1.31 1.04,-3.98 1.15,-5.42 -2.5,-0.01 -3.12,-2.67 -2.32,-4.33 -1.63,-1.26 -2.43,-3.07 -4.07,-4.21 0.9,-0.54 3.97,0.36 2.35,-1.72 -1.31,0.09 -3.3,-2.79 -0.85,-2.47 1.97,-1.74 0.65,-5.53 4.11,-6 0.97,-0.45 2.45,1.37 2.78,-0.77 -0.25,-1.57 -2.38,-2.12 -0.65,-3.5 -1.51,-1.51 -2.16,1.22 -2.41,1.83 -1.97,-0.74 -4.16,3.26 -5.16,1 1.12,-2.05 -1.54,-0.14 -2.23,-1.49 -1.1,1.9 -3.25,0.89 -4.63,-0.3 -2.08,0.61 -5.43,3.53 -6.14,-0.27 -1.61,-0.39 -4.74,-0.44 -2.93,-2.93 0.29,-0.63 0.34,-2.13 -0.72,-1.99 z", - "department-69" : "m 433.73,316.51 c -1.23,0.46 -2.5,0.15 -2.78,2.07 -0.74,1.45 -2.37,-0.51 -2.67,-1.28 -0.69,1.49 -2.76,2.38 -3.71,0.45 -1.68,-1.33 -4.39,-0.82 -4.01,1.84 -0.71,1.65 0.63,2.41 1.38,3.48 -2.55,0.77 0.51,1.73 0.61,2.71 -0.41,1.66 -1.38,2.06 -2.7,1.09 -2.04,0.63 -3.43,2.17 -3.25,4.46 0.34,2.11 -3.89,1.45 -1.52,3.28 0.64,0.85 2.57,0.6 1.5,2.34 -0.59,0.49 -3.83,-0.49 -1.93,0.9 1.83,0.38 1.7,2.77 3.5,3.41 0.3,1.24 -1.23,2.13 0.17,3.34 0.85,1.23 3.47,0.4 1.96,2.6 -0.03,1.87 -0.27,3.49 -1.48,4.83 0.06,1.49 3.29,0.29 1.61,2.31 -1.06,1.85 -1.32,4.02 0.45,5.41 1.27,1.35 2.68,3.31 4.18,4.13 1.51,1.5 3.36,-0.41 4.88,1.05 1.7,-0.73 1.49,2.06 2.91,2.19 -1.19,1.71 0.21,5.2 2.42,3.21 1.24,-1.16 2.04,4.15 2.96,1.45 1.23,-1.41 3.83,-2.33 3.98,-4.32 -1.76,-0.7 -2.47,-2.54 -4.09,-3.51 1.84,-0.94 3.53,1.28 4.58,-0.77 1.51,-1.17 4.45,-0.14 5.27,-1.51 0.95,-0.25 2.74,0.97 2.03,-1.03 1.24,-1.85 2.79,-4.63 5.26,-4.54 0.24,-2.22 -3.33,-1.77 -3.23,-3.97 -1.59,-0.5 -1.14,-2.19 0.43,-1.77 0.7,-2.69 -4,-0.18 -5.55,-0.99 -1.61,0.21 -2.66,0.21 -2.4,-1.73 -0.63,-1.95 -1.32,-4.61 -3.64,-4.95 -0.96,0.68 -1.86,1.05 -1.38,-0.57 -0.83,-1.37 -2.55,-0.91 -3.49,-1.92 2.14,-2.03 -0.39,-5.26 0.95,-7.43 1.04,-0.99 -1.1,-2.32 0.59,-3.24 1.49,-1.45 2.32,-4.9 -0.84,-4.45 -2.61,-1.01 0.89,-5.07 -2.78,-5.24 -1.21,-1.33 2.19,-1.14 0.43,-2.68 -0.12,-0.26 -0.3,-0.58 -0.61,-0.66 z", - "department-43" : "m 379.31,374.73 c -1.62,2.39 -4.9,1.8 -6.71,0.33 -0.7,1.72 -0.87,1.21 -1.91,0.1 -0.8,1.98 -3.58,1.56 -4.38,3.23 -1.25,1.09 -2.57,1.35 -4.33,1.17 0.74,1.5 -1.58,1.78 -0.04,2.79 -2.08,1.77 1.79,1.15 2.36,1.2 -0.13,1.97 3.13,-0.54 2.89,1.98 -0.29,1.8 0.97,2.96 2.14,3.73 -0.86,2.28 -0.05,5.34 2.48,5.9 2.93,0.43 -0.37,2.07 -1.36,0.74 -1.49,0.56 1.82,1.51 0.26,2.94 -1.01,2.64 2.59,2.31 2.97,4.1 -2.04,1.24 0.26,1.73 1.03,2.74 1.8,0.69 0.7,3.92 2.11,5.44 0.56,1.74 1.53,5.67 3.68,3.09 2.13,0.18 4,-0.58 3.52,-3.06 1.72,-1.57 4.47,0.99 3.25,2.73 2.03,-0.35 4.24,-0.91 4.56,1.81 1.6,0.42 1.42,3.2 3.32,1.95 -0.31,0.86 -0.01,2.7 1.4,1.48 3.08,-0.04 2.22,-4.19 4.35,-5.07 0.8,1.72 0.74,-0.65 2.16,-0.3 0.91,-0.43 0.22,-3.47 2.51,-2.52 2.14,-0.66 5.33,0.63 5.55,-2.64 1.54,-1.36 1.15,-4.48 3.81,-3.54 1.57,0.05 2.24,-1.12 0.99,-2.15 -1.14,-2.94 5.69,-1.67 3.23,-3.83 -1.6,-1.11 -0.01,-3.44 1.47,-3.61 -1.01,-0.84 -1.65,-2.84 0.52,-2.06 0.75,0.25 1.93,2.57 1.79,0.63 -0.57,-2.5 2.93,-4.77 1.26,-7.19 -1.2,-1.98 -2.64,-2.48 -4.48,-1.26 -2.08,-0.82 0.53,-3 -1.95,-3.68 1.6,-1.09 1.44,-3.36 -0.89,-3.47 -2.17,2.19 -2.9,-2.58 -5.24,-0.98 -1.45,-1.18 -2.23,0.2 -2.36,1.14 -1.72,-0.24 -2.79,0.8 -3.72,1.87 -0.74,-1.86 -1.9,-0.59 -2.28,0.4 -0.52,-2.16 -2.78,-4.05 -4.23,-1.53 -0.3,1.52 -1.03,1.38 -1.49,0.05 -2.13,0.67 -3.37,-3.95 -4.67,-1.3 0.12,2.86 -4.25,0.82 -5.13,-0.4 -0.84,1.48 -2.99,4.23 -4.08,1.09 -0.06,-2.97 -3.34,-1.73 -4.39,-4.01 z", - "department-07" : "m 436.62,378.68 c -2.11,1.19 -5.05,1.82 -5.73,4.31 -0.61,0.74 -1.7,1.47 -0.63,2.83 -1.48,1.55 -5.39,0.21 -5.65,3.05 -0.4,2.17 -2.13,4.1 -1.51,6.11 -0.82,1.35 -2.2,-3.55 -3.34,-0.83 2.87,1.6 -1.37,1.64 -1.06,3.7 -0.07,1.01 2.58,2.11 0.3,2.78 -2.43,-0.04 -3.73,1.92 -2.22,3.92 -1.62,1.35 -4.39,-0.37 -4.36,2.53 -1.51,1.8 -1.89,5.12 -5.04,3.9 -1.64,0.68 -4.72,-0.35 -3.54,2.75 -1.69,0.44 -2.07,1.93 -3.57,0.7 -0.65,2.39 -1.67,4.38 -3.7,5.18 0.05,1.23 -0.23,2.66 0.56,3.58 -0.09,2.42 0.91,5.06 1.8,7.31 3.3,1.24 2.04,5.97 4.07,8.24 1.96,0.49 1.37,2.56 2.59,3.64 -1.74,0.94 0.2,3.57 -1,5.13 1.45,0.08 4.13,-2.2 4.71,0.49 2.27,-0.88 3.84,4.84 5.98,2.4 0.11,-2.69 3.06,-5.02 5.54,-4.01 -0.84,1.71 0.49,4.93 2.22,2.69 -1.12,-4.19 4.37,-2.87 5.2,-0.35 2.07,1.28 5.06,2.67 3.99,-1.18 -0.44,-2.49 0.5,-4.84 0.92,-7.23 2.57,-1.67 0.05,-4.72 1.41,-6.94 -1.34,-2.75 2.73,-3.36 2.63,-6.07 2.5,-3.08 -0.98,-6.81 0.47,-10.07 2,-1.59 2.83,-4.11 4.16,-6.22 -0.81,-2.28 2.55,-4.4 -0.11,-6.44 -1.37,-1.98 -0.41,-4.12 -0.17,-5.92 -1.82,-0.69 -0.96,-3.19 -2.25,-4.49 1.8,-2.26 -0.83,-5.08 0.05,-7.93 1.49,-3.08 -3.02,-4.17 -1.77,-7.12 l -0.36,-0.33 -0.59,-0.1 0,0 z", - "department-26" : "m 448.07,380.12 c -2.89,1.17 -5.09,3.5 -8.19,2.69 -0.39,2.66 -1.05,6.79 0.49,9.42 -1.96,1.97 0.32,3.64 0.34,5.76 2.35,1.37 -0.99,4.81 1.33,6.93 2.06,2.38 -0.62,5.13 -0.81,7.77 -1.22,2.58 -4.32,4.41 -3.69,7.71 1.66,3.46 0.06,6.59 -1.3,9.7 -3.02,0.93 -0.83,4.24 -2.03,6.3 0.95,3.33 -2.55,6.12 -1.92,9.81 1.2,3.03 7.51,-0.99 7.1,4.18 0.14,2.04 0.67,4.67 2.58,1.79 2.97,-0.92 6.04,-2.27 9.06,-3.52 1.12,3.67 4.14,-0.81 5.13,-0.14 -0.85,1.68 -0.59,3.54 -0.5,5.19 1.36,1.14 3.35,1.14 4.16,-0.1 1.72,1.86 4.28,0.89 5.95,1.95 0.03,1.94 0.09,3.52 2.41,3.44 1.06,4.04 4.77,0.96 6.47,-0.43 -1.58,-2.47 1.9,-2.75 3,-1.1 1.64,-1.37 2.06,-2.86 1.41,-5.21 1.53,-2.36 -2.87,-0.24 -1.73,-2.96 -1.59,-0.67 -0.77,-1.18 -0.59,-2.32 -2.51,0.48 -4.35,-1.04 -6.35,-0.89 -1.23,-1.45 -2.87,-1.53 -2.12,-3.69 -1.62,-1.67 -0.01,-2.82 1.69,-1.61 2.12,-0.83 -1.87,-1.85 -0.65,-3.64 -0.28,-2.93 4.33,0.48 6.05,0.59 1.73,0.39 1.15,-2.66 3.01,-2.35 -1.71,-1.67 -3.84,-2.97 -1.6,-5.43 1.79,-1.45 -0.55,-5.71 2.99,-3.98 1.94,0.82 3.33,-0.86 4.9,-1.06 1.29,-0.88 2.08,-3.19 -0.35,-2.44 -2.24,0.57 -3.91,-2.09 -6.41,-1.58 -1.16,-1.43 -2.84,-3.52 -4.34,-3.81 0.14,1.78 -6.09,-0.53 -3.44,-2.33 -1.37,-2.79 0.85,-6.84 0.11,-10.1 0.96,-2.47 -1.42,-5.35 0.09,-7.37 -2.07,0.93 -4.59,4.84 -6.88,1.6 -1.84,0.62 -4.04,-0.31 -5.88,-1.61 -1.29,0.02 -2.1,2.02 -3.13,0.34 2.95,-1.62 2.73,-5.57 1.54,-8.29 2.1,-1.71 -0.25,-3.63 -2.12,-2.9 0.27,-1.74 0.99,-4.37 -1.59,-2.47 -1.31,0.06 -1.04,-2.86 -3.02,-2.37 -0.42,-0.45 -0.36,-1.52 -1.19,-1.46 z m -1.27,60.35 c 2.68,0.18 1.93,3.2 4.79,3.14 -1.88,1.51 -2.98,3.63 -4.06,5.91 -1.76,-1.35 -5.66,0.15 -4.33,-3.15 -1.66,-0.66 1.47,-2.81 1.37,-4.36 0.67,-0.62 1.73,-0.72 2.23,-1.54 z", - "department-84" : "m 446.86,440.69 c -1.95,0.68 -2.59,2.23 -3.24,3.95 -1.54,1.08 0.24,1.84 -0.38,3.25 0.79,1.16 2.95,0.74 4.3,1.12 1.33,-1.76 1.41,-4.26 3.76,-4.92 -0.23,-0.92 -2.69,-0.73 -2.57,-2.42 -0.66,-0.27 -1.12,-0.97 -1.86,-0.99 z m -10.7,6.69 c -1.75,0.63 -4.36,-0.72 -3.75,2.23 -0.47,1.96 1.22,3.5 1.32,5.13 2.22,-0.26 1.8,3.29 1.6,4.89 -0.71,1.78 -0.16,4.41 1.97,3.57 1.39,1.79 2.8,3.83 3.94,5.76 0.11,1.52 -2.28,0.28 -1.54,2.26 -0.27,1.54 -4.74,2.54 -1.78,2.92 1.98,0.36 4.26,0.33 5.81,1.82 2.69,0.61 4.43,2.7 6.08,4.74 0.55,2.14 2.45,3.17 4.31,4.09 2.3,2.43 5.12,0.03 7.83,1.23 2.38,1.21 4.48,2.96 6.96,4.03 2.69,1.26 6.11,1.9 8.79,0.34 1.35,-1.61 3.7,-0.97 4.73,-3.09 0.97,-1.51 -1.94,-2.24 -1.96,-3.86 -1.56,-1.86 -3.42,-4.41 -6.24,-2.8 -2.07,0.95 -0.48,-2.95 0.61,-3.43 0.51,-1.33 1.55,-2.66 -0.1,-3.23 -0.29,-2.08 -4.3,-0.54 -3.06,-3.3 0.45,-2.01 1.86,-3.87 1.45,-6.01 -1.1,0.12 -2.63,0.07 -2.14,-1.74 0.53,-2.35 -2.66,-1.28 -2.71,-3.51 -1.05,-0.88 -3.35,-0.4 -2.48,-2.73 -0.01,-3.12 -4.03,-0.26 -5.3,-2.66 -1.51,-1.06 -0.98,1.74 -2.66,0.68 -2.01,-0.15 -3.06,-1.35 -2.27,-3.12 -1.69,-0.64 1.81,-3.73 -0.28,-2.95 -1.07,2.14 -3.56,1.91 -4.6,0.21 -2.41,0.78 -4.55,2.65 -7.11,2.79 -1.53,-0.33 -4,4.19 -3.94,0.55 -0.37,-2.16 -0.51,-5.06 -3.51,-4.81 z", - "department-13" : "m 436.6,474.08 c -0.74,1.85 -4.74,2.73 -4.06,4.51 1.26,0.66 -1.41,1.72 -0.12,3.06 0.08,2.7 -2.74,5.11 -1.37,7.86 -2.28,-0.28 -6.4,-2.34 -7.04,1.21 -2.02,1.17 -2.34,4.33 0.25,4.07 -0.26,2.18 -2.99,1.15 -3.24,3.2 -2.53,0.88 -3.65,1.48 -5.33,3.13 -3.12,0.45 -3.32,4.69 0.25,3.69 2.78,0.47 5.55,1.05 8.35,0.35 2.37,-0.45 7.29,1.42 4.55,4.28 -0.6,3.55 5.03,2.05 7.33,2.58 1.71,0.43 5.71,0.01 2.7,-2.11 -3.88,-1.35 -2.85,-5.16 -3.05,-8.31 -0.04,-1.21 -2.55,-5.59 -0.42,-2.89 1.89,2.36 1,5.34 0.95,8.05 0.88,2.13 3.62,3.05 5.46,4.22 1.53,-0.81 -2.25,-2.45 0.5,-3.11 1.91,-1.46 4.03,-0.52 5.49,0.58 3.35,0.39 4.55,-4.15 1.3,-5.2 -0.68,-1.48 -0.16,-6.09 1.79,-3.06 2.23,-0.56 2.91,0.56 2.79,2.29 1.26,2.1 3.09,1.09 4.71,0.38 1.06,3.09 -3.48,5.94 -6.44,5.14 -4.78,-0.48 -3.49,6.19 0.68,5.18 2.9,-0.06 6.07,0.58 8.6,-1.26 3.09,-1.75 3.91,2.83 3.27,4.72 2.03,1.28 -2.35,4.61 1.58,4.55 2.59,-0.26 5.17,0.78 7.33,0.32 0.97,2.95 3.72,1.97 5.67,1.14 -0.33,-3.01 1.95,-4.41 4.07,-5.87 -0.58,-2.14 -2.28,-2.58 -3.96,-3.03 2.56,-1.22 -1.49,-6.49 2.6,-5.65 1.54,0.73 3.39,-0.95 1.08,-1.75 -1.32,-1.96 -3.23,-3.39 -1.84,-5.73 2.26,-2.81 -4.73,-2.76 -1.41,-4.42 -0.82,-3.37 2.37,-4.88 5.13,-5.19 1.46,-1.69 -2.03,-5.66 -3.21,-2.42 -1.87,0.81 -3.79,1.87 -5.79,2.74 -4.96,0.73 -9.29,-2.44 -13.26,-4.94 -3.21,-1.31 -6.53,0.84 -9.27,-1.96 -2.79,-0.81 -2.96,-3.66 -4.98,-5.35 -1.7,-2.34 -4.64,-3.03 -7.08,-4.31 -1.52,-0.14 -3,-0.57 -4.52,-0.71 z", - "department-83" : "m 517.2,482.16 c -2.21,0.45 -4.51,0.15 -4.56,3.03 -1.71,2.89 -5.34,-0.75 -6.7,-2.47 -3.07,-2.54 -3.41,4.73 -6.6,3.29 -1.58,1.5 -2.96,3.5 -4.46,4.67 -1.25,-1.47 -1.71,-3.25 -3.55,-3.95 0.03,-1.86 -1.87,-1.86 -1.91,-0.09 -1.33,1.02 -2.66,0.95 -3.16,-0.75 -1.91,-1.9 -4.18,0.89 -2.09,2.04 0.53,1.23 1.97,1.94 0.53,3.38 -2.84,-0.21 -5.92,2 -4.84,5.1 -3.44,1.27 3.35,1.25 1.35,3.57 -0.22,1.94 -1.24,3.31 0.74,4.69 0.22,1.73 4.1,2.93 0.81,3.75 -2.63,-1.28 -3.72,1.11 -2.27,3.16 -1.33,1.63 -0.65,2.88 1.29,2.7 1.09,1.33 2.34,3.31 -0.22,3.83 -2.89,1.3 -2.33,4.54 -1.48,6.82 1.05,1.11 2.71,1.01 3.71,1.52 -0.45,1.28 3.17,1.21 0.61,2.02 -2.2,1.64 1.53,2.03 2.31,3.24 1.87,0.49 2.01,-2.69 4.02,-1.64 0.25,-1.17 -3.62,-2.32 -0.77,-2.94 1.5,-0.75 1.25,1.72 3.11,0.9 1.98,-0.44 2.88,1.82 4.97,0.72 2.49,0.17 1.79,3.18 -0.25,3.1 1.03,0.17 3.75,1.02 4.22,-0.22 -1.87,-1.01 -0.43,-5.47 2.18,-4.51 2.27,-1.02 4.3,0.74 5.47,2.2 2.95,0.7 -0.7,-3.95 2.56,-4.14 1.82,-1.17 4.32,-0.11 5.81,-1.82 1.19,-1.87 3.53,-0.69 3.91,0.87 1.83,-0.26 1.02,-2.97 3.25,-2.97 -1.94,-1.52 0.52,-2.56 0.71,-4.09 -0.88,-1.35 -6.14,0.84 -4.2,-1.29 1.98,-0.49 3.13,-1.3 3.41,-3.27 3.09,-0.38 1.58,-4.33 3.42,-5.76 2.02,1.51 4.49,0.53 6.29,-0.38 1.97,-1.45 2.07,-3.69 -0.21,-4.86 0.39,-1.48 -0.82,-2.76 0.73,-4.13 0.32,-1.33 0.43,-3.31 -1.68,-2.51 -2.08,-0.91 -4.86,-2.77 -4.6,-5.2 1.21,-2.45 -1.26,-3.59 -2.82,-4.44 -1.3,-0.4 -2.5,0.43 -2.84,-1.45 -0.36,-2.95 -3.06,-1.75 -4.46,-0.37 0.04,-0.84 -0.83,-2.43 -1.72,-1.38 z", - "department-06" : "m 534.65,445.17 c -2.26,1.07 -5.06,2.58 -4.36,5.66 -3,-0.21 -3.04,3.43 -4.06,5.54 -1.08,2.46 0.95,4.86 2.25,6.92 -1.14,3.22 2.36,4.62 4.05,6.69 0.63,2.61 3.53,3.37 4.77,5.63 -2.57,2.29 -4.92,-3.17 -6.86,-0.03 -0.74,2.32 -3.13,1.4 -4.56,1.36 1.15,1.61 -2.67,2.88 0.34,3.69 1.19,1.89 -4.95,1.17 -2.32,3.78 0.53,1.35 2.49,-0.04 3.3,1.63 2.89,-0.16 1.89,3.58 2.03,5.2 1.45,1.97 3.65,3.89 6.12,3.69 1.22,2.02 -1.58,4.04 -0.48,6.02 -0.26,2.6 3.76,2.43 2.74,-0.52 1.75,-2.03 4.78,-1.82 7.05,-2.83 2.15,2.34 0.79,-2.94 1.42,-4.1 0.35,-2.64 3.85,-1.42 4.44,-3.92 1.43,-0.64 4.04,-1.22 4.41,0.38 0.69,-1.18 0.32,-2.51 2.45,-2.28 -0.13,-1.76 1.58,-4.07 3.07,-2.16 1.7,0.06 1.19,-2.66 3.34,-2.27 -0.27,-2.4 -3,-5.81 0.3,-7.3 1.54,-1.45 0.99,-4.2 3.51,-4.76 2.78,-1.39 1.89,-4.43 4.17,-6.12 1.59,-2.77 -3.27,-4.24 -1.5,-7.3 -1.21,-2.71 -2.61,1.55 -4.47,0.73 -2.22,0.84 -4.68,1.32 -6.76,2.38 -2.04,0.2 -3.62,-0.51 -4.81,-1.86 -2.43,0.52 -3.44,-1.96 -5.53,-2.49 -1.15,-2.34 -3.58,-0.83 -4.96,-2.82 -1.54,-1.59 -4.78,0.61 -4.95,-2.66 -1.4,-1.9 -2.37,-3.95 -3.93,-5.85 l -0.23,-0.02 -1.8e-4,10e-5 z", - "department-04" : "m 536.03,425.47 c -1.91,1.96 -3.88,3.46 -6.49,4.44 -1.02,2.88 -4.75,3.12 -5.32,6.34 -1.11,1.83 -1.21,3.9 -4.02,3.07 -3.01,-0.06 -6.66,-0.3 -8.11,-3.08 -0.64,-1.8 -3.43,-1.98 -2.19,0.22 -0.26,3.25 -2.7,-0.14 -4.23,1.68 -1.44,0.61 2.06,5.8 -1.43,5.09 -2.1,-2.16 -2.71,-5.63 -6.09,-5.69 -0.87,3.33 -6.54,3.63 -7.12,7.81 -0.96,1.13 -2.01,2.66 -0.4,3.1 -0.61,1.4 0.72,5.52 -1.66,2.94 -0.44,-1.65 -2.49,-3.59 -2.83,-0.6 1.02,1.86 2.62,3.82 3.95,5.12 -2.91,0.83 -6.3,-2.29 -9.28,0.12 -0.78,0.38 -3.94,0.37 -2.37,1.8 0.52,0.59 -1.17,0.62 -1.27,-0.25 -1.21,-2.36 -3.58,-0.6 -2.43,1.22 -2.05,0.82 -5.12,3.55 -2.92,5.69 3.34,-0.23 0.15,4.71 -0.09,6.55 -0.21,2.32 3.26,0.85 3.55,3.17 2.24,1.52 -3.59,5.18 -1.33,6.48 2.81,-2.13 5.06,0.73 6.7,2.59 0.57,1.46 2.26,4.38 3.61,1.7 2.13,0.13 4.41,4.24 5.38,0.42 1.94,-1.62 1.55,2.48 3.59,2.29 0.43,1.7 2.31,4.04 2.93,1.23 2.03,-0.76 2.24,-3.96 4.52,-2.9 1.73,-1.32 3.93,-6.5 5.92,-2.58 1.76,2.61 6.67,4.01 6.46,-0.53 1.66,-0.48 3.88,-1.21 5.41,-0.9 0.99,2.9 3.19,-2.27 4.59,0.48 1.62,-0.3 5.25,-1.56 1.66,-2.44 0.5,-1.52 2.15,-2.44 0.07,-3.65 2.45,0.82 5.17,0.99 6.43,-1.88 1.98,-0.91 4.27,3.34 5.6,0.53 -2.39,-1.94 -3.94,-3.66 -5.54,-6.13 -1.97,-1.55 -3.7,-3.16 -3.01,-5.85 -1.63,-2.1 -3.46,-4.86 -1.89,-7.35 0.29,-2.57 2.02,-4.78 3.68,-5.75 -0.2,-4 5.64,-3.6 4.5,-7.78 -0.28,-2.01 3.78,-1.57 1.15,-3.33 -2.21,-1.59 -4,-5.51 -0.76,-7.08 1.56,-1.02 4.77,-6.03 1.11,-6.32 z", - "department-05" : "m 505.98,394.66 c -0.92,0.25 -1.63,1.24 -1.1,2.16 0.19,0.48 0.58,1.51 -0.28,1.51 -1.03,0.5 -0.62,1.96 -1.08,2.79 -0.5,0.85 0.81,1.35 1.44,1.52 1.22,0.46 2.5,-0.16 3.7,-0.25 0.54,0.61 -0.39,1.36 0.2,1.99 0.46,0.55 -0.24,1.49 0.61,1.76 1.28,0.11 1.04,1.22 0.99,2.19 0.04,1.33 -0.36,2.63 -0.12,3.94 -0.53,0.79 -1.69,0.39 -2,-0.4 -0.51,-1.19 -2.09,-0.47 -2.63,0.32 -1,0.97 -2.33,-0.4 -3.46,0.21 -0.85,0.38 -1.73,-1.03 -2.42,-0.12 -0.98,1 -2.08,1.88 -3.19,2.74 -0.6,-0.52 -1.36,-2.29 -1.99,-0.92 -0.19,0.45 -0.47,0.63 -0.95,0.63 -0.5,0.26 -1.64,0.37 -1.59,1.05 0.28,0.44 1.46,0.83 1.02,1.47 -0.54,0.3 -1.13,0.65 -1.29,1.26 -0.7,-0.05 -1.3,0.89 -1.97,0.42 -0.72,-0.21 -1.09,0.98 -1.85,0.43 -0.58,0.09 -1.28,-0.82 -1.74,-0.36 0.25,1.1 -0.94,2.04 -0.76,3.1 0.52,0.18 0.81,0.66 0.78,1.23 -0.53,0.61 -1.46,0.99 -1.58,1.94 -0.18,0.9 -1.25,0.06 -1.79,0.32 -0.68,0.37 -1.24,1.41 -2.12,0.79 -0.93,-0.21 -2.04,-0.85 -2.95,-0.39 -0.57,0.89 0.83,2.18 -0.26,2.82 -0.65,0.74 -0.7,1.84 -1.37,2.59 -0.33,0.63 -0.72,1.79 0.31,1.98 1.01,0.26 1.61,1.36 2.24,2.13 -0.07,0.59 -1.06,0.18 -1.47,0.37 -0.6,0.27 -0.26,1.22 -0.74,1.67 -0.29,0.65 -1.01,0.59 -1.49,0.18 -0.57,-0.34 -1.27,-0.05 -1.74,-0.61 -0.9,-0.62 -2,-0.67 -3.03,-0.83 -0.44,-0.35 -1.26,-0.9 -0.84,0.18 0.34,0.85 -0.18,1.94 0.35,2.71 0.46,0.27 1.64,0.66 1.06,1.38 -0.5,0.81 -1.41,0.3 -2.05,-0.05 -0.52,-0.37 -1.25,0.09 -0.87,0.7 0.33,0.77 0.86,1.66 0.62,2.5 -0.66,0.38 0.12,0.97 0.62,0.79 0.61,0.08 0.48,1.09 1.17,1.15 0.27,0.47 0.79,0.78 1.25,0.32 0.66,-0.57 1.26,0.29 1.64,0.72 1.26,0.36 2.77,-0.21 3.93,0.31 -0.15,0.66 -1.33,1.39 -0.16,1.75 0.4,0.17 0.78,0.55 0.44,0.97 -0.13,0.75 0.67,1.6 1.38,1.06 0.44,-0.36 1.29,0.39 0.73,0.76 -0.45,0.57 -0.47,1.41 -0.01,1.94 -0.06,0.96 -0.14,2.01 0.32,2.89 0.74,-0.36 1.48,-0.84 2.32,-1.03 0.89,-0.54 2.04,-0.3 3.03,-0.47 1.36,0.7 2.9,1.36 4.48,1.28 0.82,-0.57 -0.52,-1.06 -0.97,-1.25 -0.83,-0.92 -1,-2.37 -2.18,-3.02 -0.89,-0.61 -0.47,-1.72 -0.01,-2.44 0.2,-0.82 1.38,-0.21 1.78,0.12 0.44,0.5 0.07,1.39 0.76,1.79 0.27,0.34 1.29,1.11 1.39,0.28 -0.46,-0.7 -0.4,-1.72 0.04,-2.4 0.24,-0.63 -0.28,-0.96 -0.8,-0.99 -0.4,-0.58 -0.19,-1.66 0.53,-1.93 1.11,-0.98 1.03,-2.64 1.93,-3.7 0.84,-0.83 2.18,-1.02 2.91,-1.96 0.3,-0.69 1.08,-1.23 1.8,-1.37 0.77,0.34 0.76,-0.99 0.72,-1.47 0.2,-0.8 1.42,-0.33 1.96,-0.19 0.77,0.29 1.87,0.6 1.76,1.64 -0.03,0.5 0.41,0.7 0.8,0.64 0.65,1.23 1.63,2.21 2.33,3.38 0.67,0.53 1.08,-0.73 1.28,-1.18 0.53,-1.39 -0.98,-2.61 -0.83,-3.89 0.95,-0.06 1.68,-0.79 2.53,-1.06 0.55,0.33 1.53,1.41 2.02,0.36 0.44,-0.73 0.48,-1.61 -0.08,-2.27 0.17,-0.42 0.83,-0.77 1.24,-0.86 0.91,1 1.94,1.96 2.46,3.23 0.51,0.3 1.22,-0.11 1.7,0.41 0.56,0.61 1.25,1.09 2.14,1 1.98,0.14 3.96,0.2 5.94,0.29 0.53,-0.84 0.08,-2.27 1.05,-2.94 1.09,-0.75 1.13,-2.18 1.48,-3.28 1.39,0.19 2.51,-0.88 3.23,-1.94 0.77,-0.23 0.49,-1.3 1.27,-1.53 0.82,-0.72 1.93,-0.86 2.92,-1.25 0.49,-0.42 0.51,-1.23 1.32,-1.26 0.83,-0.36 1.14,-1.4 1.93,-1.78 0.77,0.27 1.79,0.29 2.08,-0.66 0.66,-1.38 2.4,-1.81 3.71,-1.06 0.39,0.18 1.29,0.5 1.12,-0.27 0.09,-1.44 -0.99,-2.46 -1.92,-3.38 -0.16,-1.25 0.2,-2.81 -0.7,-3.82 0.26,-0.63 1.23,-1.27 0.5,-1.95 -0.48,-0.56 -0.7,-1.27 -1.5,-1.47 -0.9,-0.29 -1.99,-1.36 -2.93,-0.65 -1.03,0.93 -2.61,0.14 -3.63,-0.46 -1.39,-1.22 -3.06,-2.05 -4.52,-3.16 -0.14,-0.64 0.04,-1.36 -0.18,-2.01 0.26,-0.67 0.64,-1.39 0.32,-2.14 -0.46,-0.77 -0.27,-1.65 -0.34,-2.48 -0.67,-1.47 -2.82,-0.12 -3.68,-1.29 -0.42,-1.05 0.19,-2.49 -0.93,-3.24 -0.45,-0.58 -0.89,-1.29 -0.84,-2.02 -0.58,-0.55 -1.68,-0.52 -2.38,-0.21 -0.4,0.9 -1.61,1.62 -2.44,0.8 -0.83,-0.16 -1.61,0.86 -1.3,1.66 0.16,0.65 0.15,1.68 -0.74,1.69 -0.9,0.39 -1.54,-0.53 -2.43,-0.47 -0.85,-0.07 -1.72,-0.21 -2.49,-0.62 0.67,-1.13 -0.23,-2.74 -1.37,-3.11 -0.83,0.45 -1.99,0.92 -2.79,0.12 -0.24,-0.12 -0.29,-0.52 -0.63,-0.43 z", - "department-38" : "m 464.21,344.5 c -2.79,1.9 -2.68,8.48 -7.27,6.99 -0.9,-2.78 -3.83,-2.24 -5.03,-0.76 -2.02,0.29 1.51,1.68 1.08,3.08 2.47,0.08 3.5,3.16 0.44,2.72 -1.73,1.6 -3.23,3.88 -3.85,5.57 -1.57,-1.3 -1.06,1.72 -2.92,0.29 -3.28,-0.47 -4.55,3.17 -7.48,1.48 -1.5,1.31 5.74,3.47 2.07,5.5 -2.26,2.06 -5.1,3.74 -4.23,6.93 0.77,2.57 -0.06,8.04 4.48,6.03 2.27,2 6.34,-5.1 8.45,-0.76 1.77,0.21 1.71,3.96 3.93,1.45 1.68,0.13 -1.09,4.61 1.72,3.03 1.9,0.92 2.02,2.4 0.5,3.24 1.61,2.88 0.73,6.17 -0.85,8.65 1.08,-0.16 3.1,-1.79 4.37,0.45 2.36,0.7 4.24,0.15 6.23,1.33 0.84,-0.27 3.02,-1.03 3.81,-2.77 2.64,0.63 -1.49,2.67 0.72,4.47 0.38,3.59 -0.09,7.56 -0.56,11.3 0.4,1.45 0.41,2.4 -0.01,3.62 1.24,0.79 4,2.16 3.74,0.13 2.61,1.83 4.3,5.05 7.54,4.72 2.17,2.94 5.3,0.26 5.21,-2.58 1.66,1.44 8.14,-0.42 5.75,-2.57 -0.07,-1 2.61,-2.26 3.54,-2.4 2.26,2.99 3.89,-3.83 6.67,-1.32 2.19,0.23 3.45,-0.22 5.31,-1.27 0.97,1.39 3.24,2.32 2.54,-0.45 1.1,-3.23 -1.77,-5.43 -1.86,-8.01 -3.37,1.84 -6.82,-1.82 -3.61,-4.41 -0.13,-1.84 0.52,-3.31 1.32,-4.86 -1.82,-0.13 -3.26,-1.51 -5.13,-0.74 1.43,-2.69 -1.8,-4.98 -0.71,-7.76 -0.38,-2.56 4.12,-3.93 2.03,-6.04 0.5,-3.14 -3.24,-5.89 -6.15,-5.13 -1.66,-1.14 -3.77,-5.23 -5.46,-1.87 -0.31,1.87 -0.63,3.21 -0.4,4.62 -2.15,1.23 -4.77,-3.87 -7.68,-2.52 -0.95,-2.94 -2.79,-6.19 -4.33,-9.02 -1.66,-2.41 -2.31,-5.84 -4.73,-7.23 -0.04,-3.77 -5.4,-5.53 -5.81,-9.3 0.88,-1.39 -2.2,-3.36 -3.39,-3.83 z", - "department-73" : "m 486.16,340.96 c -0.45,0.45 0.31,1.19 0.03,1.77 -0.43,2.29 -1.49,4.41 -1.88,6.69 -0.26,1.38 -0.01,2.88 -0.3,4.22 -0.62,0.31 0.02,1.17 -0.58,1.57 -0.45,1.17 -1.58,0.73 -2.55,0.64 -0.84,0.07 0.16,1.14 -0.18,1.7 -0.39,0.69 -1.23,1.27 -0.9,2.19 0.16,0.81 -0.73,0.85 -1.28,0.92 -0.46,0.22 -0.52,0.84 -0.99,1.02 -0.1,0.57 -0.89,1.04 -0.26,1.63 0.76,1.32 2.36,2.45 2.11,4.11 0.23,0.33 0.74,0.34 0.74,0.83 0.84,0.69 0.84,1.99 1.51,2.8 0.86,0.69 -0.26,2.79 1.33,2.79 0.69,-0.42 1.75,-0.43 2.21,0.36 0.86,0.8 2.15,0.9 3.12,1.6 0.57,0.15 0.69,0.71 1.06,1.03 0.59,0.02 1.32,-1.15 0.42,-1.31 -0.57,-0.83 0.26,-1.71 0.62,-2.42 0.32,-0.63 -0.18,-1.37 -0.02,-1.93 0.76,-0.47 1.65,-0.69 2.47,-1.04 0.43,0.56 1.01,1.07 1.58,1.38 0.13,0.76 0.39,1.57 1.25,1.79 0.96,0.51 2.24,-0.49 3,0.51 0.5,0.17 1.21,-0.47 1.46,0.31 0.64,1.59 2.48,2.51 2.66,4.29 -0.29,0.15 -0.79,0.54 -0.21,0.73 0.85,0.23 0.12,1.35 0.11,1.91 -0.05,0.98 -1.42,0.76 -1.63,1.63 -0.67,0.52 -0.97,1.32 -0.71,2.16 0.28,0.8 -0.51,1.41 -0.41,2.16 0.41,0.87 0.74,1.73 1.41,2.45 0.62,1.01 -0.59,1.95 -0.5,2.93 0.52,0.56 1.11,-0.22 1.49,-0.5 0.92,-0.1 1.37,0.91 2.13,1.15 0.63,-0.3 1.62,-0.2 1.66,0.68 -0.1,1.41 1.8,2.18 2.81,1.25 0.65,-0.79 1.23,0.33 1.67,0.84 0.46,0.64 0.68,1.43 0.45,2.15 0.54,0.74 1.75,0.36 2.53,0.62 0.86,0.16 1.92,1 2.66,0.13 0.38,-0.92 -0.65,-2.23 0.57,-2.71 0.35,-0.45 0.85,-0.56 1.27,-0.15 0.94,0.49 1.73,-0.4 2.13,-1.14 0.91,-0.24 1.86,0.12 2.72,0.29 0.81,-0.21 1.62,-0.66 2.1,-1.32 0.99,-0.68 2.46,0.1 3.22,-1.02 0.35,-0.43 0.97,-0.89 1.45,-0.3 0.85,0.52 2.11,0.47 2.52,1.51 0.72,0.63 1.87,0.09 2.61,-0.25 0.41,-0.56 -0.74,-1.63 0.24,-1.82 0.89,-0.31 2.18,-0.09 2.35,-1.31 0.28,-0.94 0.93,-1.7 1.94,-1.85 1,-0.19 1.96,-0.56 2.92,-0.94 0.28,0.29 0.54,1.02 1.07,0.58 0.47,-0.87 0.96,-2.03 2.06,-2.12 0.86,-0.78 0.12,-2.12 -0.06,-3.06 -0.11,-0.72 -1,-1.93 0.07,-2.33 0.68,-0.07 0.41,-0.73 0.59,-1.12 0.98,-0.99 1.63,-2.36 1.9,-3.7 -0.59,-0.97 -1.87,-1.22 -2.71,-1.86 -0.94,-0.95 -0.87,-3.04 -2.54,-3.15 -0.56,-0.01 -0.92,-0.42 -0.89,-0.96 -0.58,-0.7 -1.85,-0.56 -2.18,-1.57 -0.64,-1.44 -0.23,-3.2 -1.06,-4.6 -0.34,-1.1 0.49,-2.08 0.76,-3.02 -0.69,-0.83 -1.62,-1.51 -2.76,-1.31 -0.88,0.14 -0.91,-0.82 -1.25,-1.33 -0.99,-0.62 -2.63,-0.33 -3.11,-1.66 -0.83,-0.95 -1.39,-2.07 -1.33,-3.37 -0.05,-0.49 -0.09,-1.83 -0.91,-1.34 -0.91,0.06 -1.72,0.7 -1.99,1.6 -0.42,0.52 -0.86,1.4 -1.45,1.52 -0.4,-0.17 -1.27,-0.31 -0.7,-0.87 0.23,-0.66 -0.51,-1.2 -0.28,-1.88 -0.34,-0.89 -0.91,-2.04 -1.95,-2.2 -0.89,-0.13 -2.19,0.76 -2.83,-0.15 -0.09,-0.52 -0.37,-0.96 -0.88,-1.06 -0.72,-0.81 -1.07,-2.03 -1.15,-3.07 0.63,0.06 1.62,-0.31 1.26,-1.11 -0.35,-1.05 -1.53,-1.04 -2.36,-1.47 -0.67,-0.01 -0.86,0.94 -1.52,1.08 -0.85,0.88 -1.48,2.09 -1.51,3.29 -0.72,0.95 -0.91,2.24 -1.97,2.95 -0.76,0.61 -1.69,1.28 -1.54,2.39 -0.21,0.67 -0.99,1.04 -1.01,1.82 -0.44,0.97 -0.54,2.37 -1.86,2.41 -1.14,0.38 -2.33,0.53 -3.53,0.54 -0.06,-0.45 0.01,-1.66 -0.76,-1.32 -0.31,0.13 -0.76,0.69 -1.03,0.56 -0.25,-0.91 0.24,-2.16 -0.62,-2.79 -0.14,-0.81 -1.14,-1.57 -1.94,-1.34 -0.21,0.5 -0.78,0.26 -1.03,-0.06 -0.76,0.04 -0.24,1.32 -0.76,1.53 -0.34,-0.65 -1.25,-0.37 -1.8,-0.73 -0.47,-0.07 -0.73,0.7 -1.2,0.25 -0.48,-0.36 -1.21,-0.4 -1.7,-0.51 0.01,-0.61 -0.44,-1.04 -0.93,-1.29 0.04,-0.57 0.55,-1.77 -0.49,-1.68 -0.47,-0.1 -0.19,-0.97 -0.81,-1.05 -0.66,-0.37 -1.22,0.91 -1.76,0.14 -0.38,-0.36 -0.12,-1.3 -0.92,-1.18 -1.02,-0.5 -0.45,-1.96 -0.7,-2.86 -0.23,-1.29 -0.31,-2.65 -0.65,-3.91 -0.34,-0.35 -0.97,-0.38 -1.43,-0.38 z", - "department-74" : "m 522.73,306.41 c -1.97,0.51 -4.09,-0.11 -6.02,0.54 -1.69,0.88 -2.87,2.78 -4.92,2.88 -1.61,0.19 -3.71,0.06 -4.62,1.7 -1.07,1.16 -2.72,2.21 -2.73,3.97 0.1,0.69 1.48,0.71 0.93,1.55 -0.41,0.84 0.21,1.93 0.9,2.4 0.42,0.09 0.95,-0.58 1.26,0.01 0.37,0.53 0.48,1.32 -0.23,1.62 -1.53,1.19 -3.48,2.08 -4.62,3.7 0.15,0.96 -1.06,1.44 -1.7,1.89 -0.92,0.54 -2.12,0.67 -2.99,-0.02 -0.94,-0.11 -1.74,0.7 -2.72,0.57 -1.73,-0.1 -3.26,0.92 -4.93,1 -0.77,0.2 -1.52,0.85 -1.16,1.71 0.19,0.63 -0.32,1.15 -0.97,1 -0.99,0.19 -1.36,-0.93 -2.04,-1.36 -0.25,0.5 -0.16,1.27 -0.57,1.8 -0.32,1.76 -0.11,3.58 -0.18,5.37 -0.05,1.02 1.4,1.33 1.1,2.4 -0.08,0.89 -0.37,2.18 0.97,1.91 0.75,0.22 0.29,1.37 0.52,1.94 0.31,1.44 0.48,2.91 0.5,4.37 0.07,0.67 0.88,0.58 1.19,0.96 -0.06,0.61 0.65,1.43 1.18,0.8 0.34,-0.42 1.1,-0.12 1.48,0.06 -0.19,0.54 0.13,1.08 0.73,0.94 0.45,0.32 -0.03,1.12 0.02,1.58 0.26,0.43 0.87,0.53 0.99,1.06 0.58,0.39 1.43,1.09 2.13,0.73 0.22,-0.52 0.78,-0.22 1.09,0 0.59,0.21 1.53,0.05 1.32,-0.78 -0.01,-0.66 0.68,-0.27 0.9,0.03 0.57,0.28 0.97,-0.69 1.55,-0.21 0.84,0.25 1.11,1.08 1.58,1.67 0.61,0.22 0.16,1.19 0.32,1.69 -0.08,0.68 0.71,0.6 0.85,0.07 0.5,-0.09 1,0.52 0.86,1.04 0.4,0.69 1.5,0.24 2.16,0.27 0.76,-0.24 1.79,-0.22 2.32,-0.85 0.55,-0.82 0.59,-1.89 1.06,-2.69 0.59,-0.47 1.08,-1.17 0.58,-1.84 1.1,-1.12 2.6,-2.01 3.15,-3.59 0.44,-0.46 0.57,-1.04 0.46,-1.64 0.43,-1.24 1.14,-2.4 2.27,-3.1 0.24,-0.19 0.68,-1.23 1.02,-0.66 0.87,0.56 2.4,0.81 2.5,2.07 0.05,0.67 -0.39,0.98 -1.01,0.85 -0.65,0.38 0.05,1.31 0.13,1.86 0.25,0.92 1.4,1.05 1.58,2.03 0.48,0.87 1.65,0.01 2.41,0.12 0.73,-0.31 1.18,0.28 1.5,0.85 0.45,0.56 1.16,1.11 0.82,1.91 -0.09,0.58 0.7,0.95 0.24,1.52 -0.21,0.76 0.9,0.79 1.18,0.23 0.84,-0.71 0.9,-2.01 2.02,-2.43 1.02,-0.06 1.62,-1 1.61,-1.96 -0.09,-1.02 0.58,-2.66 1.85,-2.26 0.39,0.29 1.11,0.3 0.98,-0.35 0.01,-0.41 0.22,-0.99 0.72,-0.64 1.66,0.72 3.32,-0.42 4.67,-1.3 1.07,-1.02 1.17,-2.69 2.2,-3.72 0.24,-1.07 0.13,-2.38 -0.92,-2.98 -0.31,-0.29 0.4,-0.66 0.03,-1.04 -1.08,-1.72 -2.7,-3.09 -3.82,-4.78 -0.93,-0.47 -1.81,1.29 -2.7,0.56 -0.35,-0.84 0.72,-1.72 0.05,-2.53 0.03,-0.72 1.46,-1.61 0.49,-2.23 -0.76,-0.34 -1.61,-0.31 -2.36,-0.72 -0.84,-0.04 -2.06,-0.19 -2.06,-1.31 0.09,-1.22 0.81,-2.32 0.63,-3.59 0.03,-1.74 2.08,-2.69 2.14,-4.38 -0.61,-2.1 -2.81,-3.32 -3.41,-5.34 0.58,-0.82 1.83,-1.33 1.69,-2.56 0.1,-0.89 0.32,-2.26 -0.88,-2.5 -2.33,-0.82 -4.77,-1.84 -7.27,-1.85 z", - "department-71" : "m 412,260.36 c -2.93,0.55 -4.26,2.21 -6.96,2.68 -1.28,2.48 2.3,4.5 -0.5,6.99 -1.43,0.66 -3.07,3.09 -0.49,1.44 1.9,1.91 -1.31,5.49 2.35,6.61 2.41,2.48 -3.47,2.49 -1.06,5.02 0.77,3.39 -3.9,1.03 -5.18,3.67 -2.25,1.4 -4.63,2.62 -7.04,3.38 -0.31,-4.58 -4.86,-2.18 -7.6,-2.64 0.33,3.18 3.53,4.95 4.3,8.11 0.37,1.27 1.28,3.31 0.8,5.05 2.56,1.6 5.5,0.03 6.06,3.56 2.3,-0.67 6.83,0.19 5.63,3.81 -1.65,2.24 1.1,6.27 -0.41,7.48 -1.83,-0.26 -2.1,1.92 -4,2.06 1.17,2.28 -1.61,6.17 2.72,5.49 0.93,1.98 2.84,2.96 4.81,1.08 2.24,-1.83 4.53,2.66 6.18,-0.34 0.99,0.81 3.97,-0.12 2.52,2.07 1.82,0.5 3.17,-1.98 5.29,-1.84 0.91,-1.94 0.34,-5.84 2.53,-7.3 2.38,-0.25 4.64,4.02 6.14,0.44 0.69,1.02 2.58,2.86 3.18,0.21 1.5,-2.57 5.41,0.79 2.63,2.19 4.35,0.26 -0.17,5.73 3.79,5.35 1.63,-2.32 1.8,-5.62 3.02,-8.28 1.07,-3.54 2,-7.12 3.47,-10.47 -0.24,-4.22 3.76,-4.44 6.12,-2.01 2.73,0.91 5.4,-3.24 7.43,-0.63 0.71,4.46 5.42,3.07 8.23,1.96 3.48,-0.33 -0.18,-2.98 -1.2,-3.64 -0.19,-2.06 -0.14,-4 2.12,-4.12 -1.13,-2.06 2.54,-2.7 0.55,-4.54 0.27,-1.18 -1.25,-2.07 -0.87,-3.37 -1.29,-1.52 -2.14,-2.53 -0.54,-4.28 -1.91,-0.7 -4.07,-3.41 -0.68,-3.56 1.47,-0.64 5.77,0.15 2.85,-1.99 -1.77,-0.79 -1.54,-3.02 -3.84,-2.16 -2.27,0.63 -1.51,-5.03 -4.1,-2.86 0.12,-2.06 -1.07,-4.73 -3.5,-2.61 -2.78,0.86 -4.3,2.07 -6.4,-0.46 -1.94,0.4 -2.39,2.11 -4.89,0.86 -2.61,0.33 -5.24,2.44 -8.14,3.19 -1.76,-0.3 -4.71,2.29 -4.23,-1.06 -3.18,-0.15 -5.08,-3.48 -5.63,-5.52 -2.23,0.19 -4.16,-1.65 -6.41,-2.36 0.94,-2.91 -1.62,-1.37 -2.5,-0.96 0.79,-4 -4.82,-1.4 -5.2,-5.1 -0.71,0.24 -0.8,-0.59 -1.34,-0.6 z", - "department-03" : "m 355.26,283.59 c -2.47,0.46 -4.86,3.44 -6.02,4.72 -1.76,-0.99 -3.8,2.31 -4.59,-0.78 -1.76,0.08 -2.97,3.69 -5.04,3.94 1.97,2.84 -4.43,0.31 -1.55,2.39 0.4,1.42 -1.37,2.94 0.6,3.99 1.55,3.09 -3.65,5.08 -5.37,3.61 -2.24,1.35 -6.48,-0.24 -7.16,3.06 -1.54,1.23 -3.6,4.68 -1.43,6.74 2.23,0.25 1.54,1.18 0.45,2.24 0.46,1.75 3.06,2.36 3.77,1.35 1.79,0.78 0.58,3.48 2.71,2.33 2.32,1.7 3.03,4.85 4.13,7.52 1.59,1.1 1.36,3.94 4.21,3.81 2.2,-0.4 1.29,-4.32 4.06,-4.34 -0.38,-2.36 1.13,-2.81 2.64,-1.17 2.87,2.05 0.78,-4.7 4.25,-3.15 2.6,-0.56 4.31,1.53 2.01,3.27 -0.51,2.53 2.71,1.85 2.18,4.56 1.6,1.64 4.19,2.18 6.12,1.98 0.53,3.71 5.09,1.32 7.41,2.58 2.46,-0.35 4.25,2.07 6.4,-0.15 2.05,-0.87 3.81,1.48 3.14,3.62 2.97,-0.38 6.89,-1.86 7.42,2.51 1.3,0.31 3.13,3.55 3.29,0.55 1.79,-0.98 4.46,0.16 5.67,-2.24 -1.33,-3.25 -0.2,-6.45 -1.49,-9.65 1.17,-1.65 -1.28,-4.71 -0.7,-6.42 1.4,-0.12 2.34,-1.59 4.2,-1.58 1.27,-1.45 2.99,-2.22 4.25,-3.49 2.82,-0.46 -0.34,-5.16 1.28,-7.19 1.51,-3 -3.08,-4.88 -5.16,-3.65 -1.18,-1.3 -1.26,-3.58 -3.47,-2.38 -1.93,-1.04 -3.95,-1.45 -2.9,-4.14 -1.14,-2.8 -2.34,-5.73 -4.5,-8.23 0.48,-2.03 -3.61,-4.95 -2.1,-1.56 -0.34,1.45 -3.05,0.68 -1.66,2.91 -1.17,0.41 -2.72,0.17 -3.32,2.29 -3.21,0.75 -0.8,-5.19 -4.58,-3.84 -1.04,2.99 -3.56,1.08 -4.7,-0.26 -2.1,1.25 -4.73,3.83 -6.34,0.2 -2.17,-1.67 -4.84,-2.89 -5.84,-5.6 -0.73,-0.27 -1.51,-0.18 -2.26,-0.35 z", - "department-58" : "m 361.05,231.75 c -1.61,0.98 -3.32,2.58 -5.23,1.22 -1.54,0.66 -5.16,0.31 -5.72,1.84 1.58,2.33 4.2,5.39 3.03,8.27 -0.46,2.34 -4.01,5.74 -0.25,7.04 1.92,1.64 3.66,3.16 3.28,5.91 2.2,3.19 1.4,7.61 2.45,10.69 2.84,1.44 0.59,4.96 1.6,7.25 -1.99,2.66 1.02,5.99 -1.24,8.7 -1.75,2.29 0.81,5.12 3.16,5.53 1.64,1.06 3.28,4.95 5.39,2.27 1.52,-1.93 3.16,-1.38 4.16,0.57 1.96,0.7 3.24,-3.41 4.93,-1.11 0.68,1.01 0.94,1.95 1.13,3.28 1.84,0.37 2.58,-2.94 4.39,-2.04 -0.61,-1.82 -0.49,-2.4 1.36,-2.38 -0.2,-1.17 -0.22,-3.61 1.45,-1.97 2.29,2.03 7.01,-1.91 8.02,2.31 1.41,2.29 3.54,-1.84 5.75,-1.47 1.68,-2.02 4.85,-2.71 6.51,-3.23 -0.22,-2.14 -1.12,-3.85 1.59,-4.65 -0.2,-2.28 -4.24,-3.86 -1.97,-6.79 0.18,-2.41 -4.07,0.3 -1.77,-2.02 2.77,-1.18 2.72,-4.62 1.41,-6.48 -0.21,-2.71 3.29,-1.57 3.61,-3.64 2.41,0.12 4.36,-0.55 4.66,-3.1 0.33,-2.07 -2.28,-4.7 -4.14,-3.18 -2.16,-1.91 1.5,-6.7 -2.23,-6.47 -2.06,-0.11 -3.88,3.63 -5.15,0.03 -0.32,-1.35 -0.05,-4.35 -2.03,-2.79 -1.29,0.05 -2.91,2.04 -2.96,-0.58 1.08,-0.8 1.65,-3.07 -0.35,-2.77 -1.09,1.35 -0.9,4.62 -3.13,2.61 -0.88,-1.42 -3.65,0.48 -4.06,-2.21 -1.01,-1.24 -3.05,-2.54 -4.54,-2.45 -1.62,0.35 -0.42,-3.16 -2.49,-3.09 -1.47,-0.17 -1.9,-4.94 -2.3,-1.85 0.35,2 -0.34,3.67 -2.39,2.1 -2.63,-1.51 -3.86,4.14 -5.82,1.03 -1.87,-1.04 -4.17,1.13 -5,-2 -2.26,0.34 -4.45,-1.48 -4.25,-4 -0.17,-0.32 -0.55,-0.4 -0.88,-0.38 z", - "department-89" : "m 374.12,178.1 c -1.36,2.82 -5.36,0.91 -7.76,1.83 -2.91,0.12 -7.22,-0.23 -8.27,2.98 0.14,3.17 1.58,6.21 -2.22,8.02 -3.13,1.63 -1.03,2.94 1.17,4.04 2.28,2.02 1.91,5.48 4.92,6.98 0.09,2.23 1.57,5.13 -1.56,6.65 -2.34,1.36 -4.04,3.95 -2.14,6.31 -0.68,1.5 0.04,4.08 -2.76,4.29 -2.25,0.39 -7.34,0.64 -4.79,4.05 2.45,0.93 4.06,4.45 3.33,7.05 1.14,3.61 5.07,3.17 7.39,1.37 1.4,1.71 1.46,5.08 4.64,4.36 1.07,1.7 2.94,2.2 4.19,1.56 2.83,2.78 4.94,-2.42 8.04,-0.36 2.24,0.32 0.05,-5.91 2.11,-2.26 1.33,1.79 2.94,3.05 3.85,4.95 3.33,-1.09 4.42,4.4 7.1,3.73 1.63,0.4 3.4,2.47 3.61,-0.47 1.06,-2.78 3.75,-0.39 1.71,1.41 -0.27,3 5.9,-2.28 4.47,2.93 0.46,3.12 3.19,1.32 4.4,0.59 4.42,-0.6 -2.45,-5.06 1.49,-6.94 2.21,-1.57 -0.41,-5.47 2.78,-6.83 1.14,-2.73 3.9,-5.69 3.26,-8.58 1.88,-0.52 1.26,-1.92 0.64,-3.48 1.6,-1.09 4.66,-1.22 3.88,-4.34 0.07,-2.34 -0.26,-3.73 -2.7,-3.42 -3.53,-2.05 4.19,-4.69 -0.03,-5.12 -1.97,-0.1 -2.62,-5.1 -3.28,-1.27 -2.05,-2.67 -2.92,2.59 -5.45,0.23 -2.35,0.79 -5.27,0.01 -8.15,0.79 0.15,-1.59 0.88,-6.21 -1.65,-3.46 -2.36,-1.38 1.3,-2.55 -1.24,-3.58 -0.94,-2.75 -2.25,-5.79 -4.33,-7.09 0.87,-2.25 -1.27,-2.36 -1.7,-0.43 -3.07,1.65 -2.16,-4.29 -5.46,-2.45 0.07,-1.1 1.54,-2.74 1.12,-4.43 -0.2,-2.34 -3.48,-5.41 -5.2,-7.74 -2.07,-0.04 -3.97,0.46 -4.78,-1.75 -0.22,-0.05 -0.43,-0.1 -0.65,-0.14 z", - "department-77" : "m 360.11,130.7 c -0.75,1.23 -0.27,2.29 -2.33,1.67 -1.38,-0.38 -1.84,2.1 -2.56,0.07 -2.14,0.21 -4.49,1.91 -6.24,0.1 -2.04,-1.53 -3.2,3.4 -5.16,0.88 -1.56,1.65 -2.68,-3.86 -4.86,-1.22 -1.42,0.6 -1.4,2.29 -1.08,2.9 -0.79,0.91 -3.3,2.12 -0.93,2.41 0.92,1.64 0.15,3.36 1.66,4.95 -0.21,1.86 -2.5,3.75 -0.77,5.03 -0.42,1.69 1.07,3.83 0.45,5.54 1.88,0.5 -0.47,2.18 -0.41,3.35 -1.82,0.99 1.36,3.93 -1.65,3.64 -0.82,0.84 0.31,2.38 -1.22,3.04 1.7,1.22 -0.11,2.87 -0.29,4.11 -0.83,2.76 -0.35,5.7 -0.38,8.61 1.13,0.77 2.32,2.24 0.22,2.19 -1.67,0.77 -3.86,1.83 -3.71,4.1 -3.26,-0.23 0.46,3.05 -0.39,4.73 1.93,0.89 5.35,1.9 4.16,4.93 0.05,1.63 -0.21,2.35 -1.8,2.26 -2.59,2.58 2.06,2.09 3.18,0.95 1.95,0.94 4.16,-0.38 5.89,1.16 1.74,-0.08 3.98,-1.65 3.26,-2.69 2.16,-0.61 3.3,-0.11 2.62,2.03 1.99,0.05 3.64,-2.23 5.85,-2.23 1.28,-2.5 4.18,-3.1 5.17,-5.95 -1.75,-1.86 -0.91,-4.39 0.11,-6.51 2.23,0.08 3.58,-0.87 5.81,-1.29 2.4,1.59 4.47,-0.91 6.89,0.03 1.85,0.05 2.21,-2.32 4.09,-1.22 1.02,-1.56 -1.94,-1.95 -0.46,-3.63 -1.01,-1.71 -0.67,-2.54 1.28,-3.16 -0.64,-1.19 -1.85,-3.14 0.59,-2.27 3.2,-0.16 -0.39,-3.09 2.44,-3.84 0.11,-1.36 2.11,-1.25 2.34,-2.32 -1.35,-1.35 -2.61,-1.35 -4.33,-0.87 -0.83,-1.72 0,-2.93 0.73,-4.28 -0.27,-1.41 0.18,-2.58 -1.57,-2.81 -0.08,-1.26 -2.46,0.08 -1.43,-1.87 0.29,-0.92 3.06,-1.11 0.77,-1.96 -2,-1.6 4.65,-0.07 2.85,-3.04 -0.62,0.26 -2.18,0.96 -1.62,-0.5 -2.19,-0.35 -3.93,-1.72 -3.63,-4.09 -1.91,1.44 -2.54,-0.3 -3.11,-1.76 -2.53,1.6 -2.02,-2.84 -4.2,-3.33 -1.26,-1.06 -2.94,-1.79 -1.15,-3.4 -0.57,-2.97 -1.82,-4.38 -5.07,-4.44 z", - "department-10" : "m 415.76,157.34 c -2.6,0.51 -5.55,-0.05 -7.71,1.48 -2.64,-2.28 -2.21,2.93 -5.08,1.84 -1.93,0.67 -1.61,4.36 -4.3,3.88 -0.4,1.61 -1.36,1.64 -2.59,1.72 1.3,3.01 -1.42,4.79 -3.84,3.13 -2.09,-1.39 -6.82,1.14 -6.65,-2.55 -0.6,-0.93 -2.3,-0.55 -2.52,-2.29 -2.04,-2.28 -2.83,1.06 -4.5,1.77 -0.06,1.25 0.93,2.82 -1.41,3.08 -3.5,-1.29 1.33,2.83 -1.65,2.81 -1.9,0.54 0.78,2.64 -0.38,3.85 2.1,0.63 -0.62,5.56 2.52,3.51 3.16,-0.12 4.15,3.44 6.03,5.22 0.01,1.47 3.08,2.04 0.93,3.9 2.08,0.85 -3.12,4.07 0.15,3.27 2.29,-0.8 2.03,4.35 4.19,2.52 1.08,-0.14 0.3,-2.78 1.94,-1.13 0.93,0.76 -0.96,2.98 1.14,2.23 2.34,1.66 1.67,5.24 3.89,6.96 2.43,1.45 -2.11,1.84 0.59,3.02 0.73,-0.46 1.14,-2.22 1.92,-0.23 0.37,1.61 -1.44,4.62 1.62,3.35 1.95,0.01 2.99,-0.54 4.79,0.26 0.99,-3.03 2.57,1.82 4.01,-0.76 0.84,-1.92 1.99,-0.84 2.76,-0.15 -0.14,-1.03 0.29,-2.65 1.27,-1.4 -0.33,2.78 3.95,3.53 3.81,0.39 2.92,-0.59 5.93,0.14 8.85,-0.56 2.39,0.31 2.85,-0.77 1.49,-2.56 2.05,-2.2 4.43,-1.32 6.94,-0.84 2.63,-1.11 0.34,-3.51 -1.25,-4.11 2.37,-0.23 3.32,-3.91 6.03,-1.87 3.03,1.11 1.67,-2.97 2.47,-4.56 1.68,-1.76 -0.94,-2.47 -0.07,-3.99 1.1,-2.25 -0.53,-3.76 -1.25,-5.67 2.38,-2.25 -3.94,-1.43 -2.88,-4.17 -1.47,-0.37 -2.51,-0.25 -2.96,-1.8 0.24,-1.72 -4.18,-2.97 -1.75,-4.03 0.72,-2.19 1.43,-3.93 -1.16,-5.04 -2.33,-0.81 -3.68,3.05 -5.35,0.57 -2.15,0.43 -4.7,-0.92 -6.23,-2.52 -2.9,-1.25 -2.44,-3.78 -2.05,-6.39 -0.16,-1 -0.29,-2.51 -1.75,-2.14 z", - "department-51" : "m 405.08,111.51 c -1.06,0.78 -0.74,4.64 -2.69,2.03 -2.26,-0.62 -3.69,-3.04 -5.85,-0.46 -0.76,1.47 -0.53,3.07 -2.6,1.59 -2.67,0.5 -5.66,1.55 -7.69,3.27 1.02,2.06 1.46,4.73 0.89,6.32 2.55,-0.42 1.18,3.01 3.85,2.11 0.48,4.28 -5.3,-0.05 -6.19,3.06 -0.39,1.65 2.79,4.09 -0.6,4.59 -2.26,3.23 5.49,0.01 3.06,3.78 -2.35,0.83 -2.21,3.44 -4.02,4.55 -0.04,2.3 -3.69,1.38 -3.38,4.24 -1.75,1.12 0.58,4.63 -2.54,3.99 -2.46,-0.16 -1.14,0.3 -0.32,1.22 0.08,0.89 -3.17,1.69 -1.26,2.59 2.53,0.21 3.88,3.9 1.46,5.7 0.25,2.2 1.1,2.12 2.94,1.45 1.92,0.52 2.98,4.27 5.46,4.81 -0.12,4.68 6.56,0.97 8.91,3.79 3.18,-0.68 -0.17,-4.93 3.46,-4.46 0.45,-2.04 3.42,-1.33 3.65,-3.97 0.75,-2.28 4.33,-0.39 4.38,-3.49 1.36,-0.34 2.79,1.39 3.81,-0.56 2.71,0.28 5.46,-1.6 7.64,0.42 0.89,2.81 -1.6,6.2 2.08,7.6 1.6,3.05 5.89,1.61 7.51,3.56 1.84,-1.76 4.32,-2.12 5.98,-0.45 1.91,-1.07 7.38,1.87 5.1,-2.02 -2.42,-2.79 6.05,-2.46 2.44,-5.4 -1.35,-0.11 -4.14,-0.27 -1.58,-1.69 1.66,-0.63 3.72,1.24 5.25,-0.9 2.3,1.31 5.6,-0.99 4.11,-3.45 -1.93,-1.13 -3.33,-3.27 -5.05,-4.35 0.2,-1.89 3.07,-2.43 1.04,-4.46 -0.24,-2.76 1.96,-3.93 4.51,-4.61 2.25,-1.35 -0.39,-2.44 -0.39,-3.09 2.85,-0.57 0.54,-4.33 -1.51,-2.09 2.09,-1.98 1.44,-5.68 -0.12,-8.2 -0.96,-1.63 -1.81,-3.48 0.73,-4.04 -0.24,-1.82 -2.4,-2.81 -3.5,-3.66 -2.15,0.23 -1.49,3.78 -3.82,1.54 -2.45,0 -5.77,-1.84 -7.92,0.23 -2.68,0.36 -2.07,-5.98 -5.47,-3.2 -2.64,0.89 -6.12,0.77 -7.24,-2.32 -2.8,0.56 -4.24,-2.36 -6.09,-4.01 -2.61,-1.4 -5.28,-1.58 -8.44,-1.57 z", - "department-02" : "m 388.2,68.13 c -1.08,1.13 -2.82,3.24 -4.4,1.16 -2.84,-2.2 -4.67,3.68 -7.97,1.02 -2.67,-1.47 -4.82,2.26 -7.41,-0.08 -2.13,-0.29 -5.92,2.27 -2.52,2.96 -2.98,2.53 -3.74,6.36 -5.63,9.48 -1.75,0.96 2.24,2.4 -0.4,3.91 1.95,1.43 2.51,4.94 2.65,7.7 -1.5,0.24 -0.31,2.46 -1.01,3.2 2.8,2.14 0.67,5.53 0.21,7.42 1.3,1.39 -0.62,2.75 2.02,3.19 1.86,2.58 -4.01,-0.19 -2.57,2.99 0.21,2.78 -1.91,6.35 -4.84,5.03 -3.19,2.38 3.18,2.33 1.82,4.68 0.73,2 -0.93,3.6 1.68,4.15 1.16,1.34 2.5,-0.57 2.39,2.15 3.19,1.07 -5.03,3.79 0.04,3.92 2.54,0.03 3.91,4.01 2.15,5.73 2.04,1.28 3.84,3.72 5.3,5.32 1.97,-1.81 1.27,4.11 3.47,1.27 1.13,0.14 0.62,4.1 3.08,3.73 1.02,1.15 2.26,2.18 2.67,-0.16 1.3,-1.34 1.82,-3.4 3.99,-3.73 1.01,-2.49 2.46,-4.36 4.65,-6 0.1,-2.93 -6.07,0.28 -3.5,-3.33 4.06,-0.79 -1.61,-3.63 1.16,-5.63 1.74,-0.53 6.13,1.2 5.33,-1.72 -2.24,0.27 -1.72,-2.21 -3.92,-2.36 2.32,-2 -2.35,-5.73 0.53,-7.34 2.85,-0.42 5.37,-3.57 8.29,-1.65 -0.29,-1.73 3.19,-4.87 4.55,-2.85 1.43,0.76 4.63,3.46 4.24,0.06 0.75,-1.54 -0.52,-3.16 0.75,-4.21 -1.86,-2.09 0.18,-3.94 0.86,-5.41 -1.97,-0.87 0.95,-3.51 -1.67,-4.78 -1.57,-3.69 5.08,0.31 4.01,-3.96 1.21,-2.05 5.54,-3.68 5.14,-6.49 -2.5,-0.39 -0.05,-2.22 -0.82,-3.84 1.25,-2 2.5,-4.89 -0.05,-6.15 1.79,-3.26 -2.77,-4.61 -5.35,-3.57 -2.14,-1.09 -7,-0.34 -5.08,-4.21 -1.57,-0.94 -4.83,3.39 -5.36,0.08 -2.78,-0.3 -5.86,-1.9 -8.53,-1.67 z", - "department-59" : "m 335.57,0.12 c -3.45,1.43 -6.99,2.74 -10.76,2.39 -2.72,1.29 -8.66,1.44 -9.11,3.85 2.44,2.79 3.25,6.62 4.77,9.94 0.43,4.77 5.56,3.66 8.58,4.42 2.32,1.45 -4.63,1.65 -1.51,3.98 2.44,0.67 -1.2,3.42 2.07,2.61 2.93,3.85 6.72,1.92 9.95,3.5 2.19,-0.65 4.1,-0.87 5.68,0.87 0.41,-1.85 2.1,-1.38 0.62,-3.01 2.05,-2.57 7.25,2.09 2.69,2.82 -1.83,1.68 0.07,3.54 -0.61,5.52 2.34,0.14 3.9,-1 3.93,1.59 2.5,-1.01 7,0.2 5.64,3.54 1.27,0.39 3.92,-0.75 2.32,1.89 -3.74,0.21 -4.27,4.12 -0.66,5.49 2.67,1.86 -0.52,2.17 0.31,4.28 2.66,0.03 5.42,1.44 5.6,3.59 -3.49,-0.01 -0.66,2 -1.8,3.32 -2.94,0.76 0.82,2.08 -1.93,3.52 1.19,2.22 -2.19,4.81 1.75,6.08 2.76,1.37 5.33,-1.11 8.08,0.5 2.78,-2.8 7.12,1.76 9.94,-1.66 1.88,-2.21 4.77,3.11 6.2,-0.72 3.06,-1.45 6.64,0.94 9.78,1.44 0.46,3.12 6.54,-3.53 4.81,1.34 0,2.28 5.16,2.43 7.07,2.12 1.13,-1.37 -0.83,-4.12 2.33,-4.63 2.68,-0.88 0.57,-5.07 -0.84,-5.54 -3.3,1 -0.12,-4.14 0.06,-5.58 2.39,-1.25 2.41,-3.76 -0.41,-4.14 -0.6,4.11 -2.68,-3.09 -5.06,-3.38 -1.96,-3.39 -6.66,2.37 -9.45,-1.06 -3.02,-1.09 -5.18,0.58 -6.36,2.66 -3.42,-1.36 -0.95,-6.36 -2.22,-9.19 -1.09,-3.5 -4.72,-3.12 -7.3,-3.15 1.15,-5.24 -5.66,2.5 -7.97,-1.03 -3.9,-1.63 -1.34,-6.5 -3.82,-9.41 1.83,-3.67 -3.12,-4.71 -3.84,-8.29 -2.91,-1.52 -7.12,1 -10.06,2.09 -0.33,4.97 -4.26,1.63 -6.9,0.96 -1.64,-3.04 -3.74,-6.42 -7.35,-5.98 -1.29,-2.74 -2.17,-6.28 -0.14,-8.73 -2.25,-2.77 -2.84,-5.71 -4.09,-8.81 z m 28.08,54.5 0.01,0.01 -0.01,-0.01 z", - "department-62" : "m 313.33,5.46 c -4.94,0.63 -9.82,2.03 -14.3,4.19 -2.31,2.03 -4.44,4.39 -7.41,5.25 0.4,3 1.9,6.23 -0.01,9.07 -1.39,2.89 0.06,6.1 -0.08,9.15 0.12,1.92 1.85,2.89 0.02,4.03 0.23,3.04 -1.19,6.37 -0.33,9.17 2.74,1.63 4.65,4.95 7.93,2.3 3.81,-2.29 6.82,4.56 9.77,1.72 1.01,1.14 -1.99,2.68 0.88,2.9 2.1,1.36 5.3,1.26 4.69,4.15 0.88,1.54 2.94,0.71 3.92,1.37 1.81,-1.07 3.99,-1.33 5.74,-1.4 1.16,1.12 1.77,-0.42 1.57,-0.98 1.33,-0.36 1.77,3.47 2.74,0.75 1.51,-1.51 6.22,0.91 4.51,2.46 -2.54,0.07 -6.33,4.05 -3.27,5.63 1.73,2.15 1.55,-3.53 4.22,-2.43 1.09,-0.01 1.95,2.52 2.26,-0.06 2.83,-0.7 -0.14,2.46 2.59,2.02 1.28,-0.01 4.09,2 4.68,1.23 -1.22,-1.42 0.73,-3.47 2.15,-1.5 3.8,-0.04 -3.11,6.76 1.65,4.07 2.16,-2.39 3.64,-1.2 4.04,1.36 2.23,-1.54 4.16,-0.79 6.67,-1.69 1.7,0.68 3.25,0.84 2.92,-1.52 2.01,-0.93 -0.86,-3.26 1.69,-4.17 -3.08,-1.56 3.06,-1.88 0.19,-3.89 0.22,-1.46 4.13,-1.5 1.13,-2.69 -0.34,-2.78 -7.17,-0.62 -4.12,-4.27 0.8,-2.23 -5.36,-4.49 -3.06,-6.23 1.03,-0.79 5.01,-2.22 2.55,-3.36 -2.01,2.19 -1.83,-1.12 -1.83,-2.28 -1.69,-2.27 -3.83,-0.79 -5.87,-1.11 1.15,-3.86 -4.88,0.62 -3.97,-3.05 1.99,-1.08 -1.84,-2.64 0.61,-4.04 1.4,-1.06 3.51,-1.23 1.17,-2.9 -1.51,-1.43 -4.89,0 -2.23,1.47 -1.85,-0.59 -1.52,3.3 -3.1,0.89 -1.9,-1.78 -4.14,1.01 -6.2,-0.92 -1.66,1.28 -2.66,-1.12 -4.47,0.08 -1.69,-1.59 -4.29,-2.33 -5.63,-3.51 2,-1.35 -3.65,-3.85 0.56,-4.64 3.01,-2.03 -3.3,-1.35 -4.61,-1.78 -3.99,-1.02 -3.27,-5.59 -5.16,-8.44 -1.11,-2.34 -2,-6.31 -5.19,-6.38 z", - "department-08" : "m 440.07,60.88 c -1.81,2.16 -4.2,3.74 -5.88,5.87 0.42,3.23 -0.62,6.85 -4.6,6.61 -2.61,1.4 -5.4,3.78 -8.53,2.23 -2.57,-0.31 -6.87,-3.07 -8.21,0.49 -1.09,2.27 2.57,2.05 1.26,4.47 -0.9,1.91 -2.03,4.96 -1.4,6.42 2.68,1.57 -1.58,4.47 -2.94,5.51 -2.03,1.01 -1.06,5.37 -4.36,3.7 -3.54,0.85 2.51,3.79 -0.29,5.51 1.51,0.87 0.58,2.56 -0.65,3.44 -0.53,1.71 1.98,3.37 -0.03,4.16 0.01,4.05 5.16,0.95 6.98,2.81 3.3,0.55 4.18,4.27 7.37,4.91 1.8,0.07 3.13,4.15 6,2.59 2.07,-0.07 4.96,-2.29 5.47,0.74 0.38,2.71 2.61,2.41 4.09,0.8 2.57,1.18 5.4,0.24 7.56,1.64 0.31,-2.7 3.11,-2.45 4.13,-0.68 1.4,-1.13 3.89,-1.64 4.64,-3.09 -2.15,-1.79 -0.62,-5.71 2.04,-5.88 0.24,-1.22 -1.21,-1.95 0.54,-2.89 0.24,-2.32 -1.77,-3.52 -2.04,-5.72 1.86,-0.63 0.83,-2.98 2.1,-3.97 -0.49,-2.87 2.16,-0.91 2.97,0.03 2.69,-1.68 3.87,3.39 6.05,0.41 0.28,-2.43 4.57,-1.6 3.3,-4.01 -0.97,-0.75 -4.08,1.55 -3.04,-1.15 1.75,-1.77 -2.34,-4.79 -3.97,-3 -1.63,-0.09 -2.52,-1.03 -3.35,-1.82 -2.04,-0.2 -1.16,-4.65 -4.28,-3.56 -2.09,-0.97 -3.75,-3.12 -6.22,-1.46 -1.91,0.12 -3.56,-0.3 -2.44,-2.42 -2.07,-2.68 2.55,-6.08 -1.42,-8.03 -4.13,-0.79 1.05,-4.77 -0.06,-7.24 0.2,-2.35 3.01,-3.4 2.16,-5.95 -1.43,-0.71 -2.14,0.48 -2.93,-1.47 z", - "department-55" : "m 466.47,97.47 c -1.56,1.83 -3.96,2.91 -5.49,4.69 -1.73,-0.62 -3.36,-2.29 -5.13,-1.66 -3.57,-3.74 -2.07,3.57 -4.83,4.43 1.86,1.88 2.97,4.89 1.69,6.85 0.61,2.43 -4.88,3.04 -2.52,6.02 2.38,3.31 -6.19,2.92 -2.28,6.6 -4.21,1.78 0.99,5.9 0.55,8.83 -0.1,1.57 -1.24,3.24 0.94,2.92 1.75,1.64 -1.92,3.15 0.48,3.93 0.25,3.59 -6.19,2.07 -5.18,5.89 1.08,1.97 -0.23,3.47 -1.14,4.72 1.38,2.47 5.49,3.27 5.15,6.61 0.23,1.76 -1.52,5.98 0.78,6.29 1.9,-2.79 1.64,2.85 3.89,1.37 2.31,2.74 5.53,4.67 8.96,5.55 2.27,1.43 4.35,3.02 5.92,5.23 2.69,2.59 4.85,-1.27 7.77,-0.65 1.95,-0.75 1.99,-2.61 4.21,-1.43 3.14,0.06 4.5,-5.18 1.4,-6.29 -3.87,-2.46 6.35,-3.69 1.46,-4.42 -1.47,-2.21 0.74,-5.44 -1.65,-7.38 0.52,-3.01 3.49,-5.5 2.03,-8.71 1.74,-1.41 -2.37,-3.07 0.56,-4.22 1.59,-0.69 4.2,-1.75 1.55,-3.18 -1.32,-1.7 3.57,-5.15 -0.4,-5.57 1.51,-1.93 -0.24,-3.53 -1.91,-2.99 -2.09,-1.69 1.38,-6.16 -1.64,-5.8 -0.54,-2.63 -0.07,-4.79 1.7,-6.78 -2.19,-0.64 -1.63,-2.43 -1.84,-4.23 -1.39,-1.72 -2.89,-6.03 -5.8,-3.74 -2.4,-0.05 -3.98,1.51 -4.61,0.54 -0.96,-0.51 -0.02,-0.62 -1.25,-1.61 0.46,-1.47 -0.85,-2.06 -0.1,-2.7 -0.17,-2.17 1.28,-0.21 0.11,-1.81 -0.06,-2.69 -0.83,-5.88 -3.37,-7.28 z", - "department-54" : "m 483.26,101.56 c -1.75,2.39 -6.72,-0.76 -7.03,2.38 -2.62,-1.44 -7.36,1.12 -6.17,4.43 0.74,4.88 5.26,0.58 8.1,1.48 2.96,1.01 3.57,5.58 4.1,7.38 3.12,1.31 -1.93,3.72 -0.52,5.95 -0.87,2.35 2.62,1.44 1.12,3.56 0.09,2.56 -0.17,4.4 2.68,4.39 0.95,1.44 -0.85,2.5 1.32,3.1 0.08,2.43 -2.65,4.77 0.06,6.73 -1.86,1.53 -5.42,2.68 -2.94,4.96 -0.32,3.14 0.42,6.53 -2.29,8.78 0.3,2.26 1.85,3.57 0.92,5.93 -0.21,2.42 4.1,2.54 0.74,3.73 -2.75,0.52 -2.79,3.37 -0.09,3.76 0.33,2.01 0.1,5.32 3,2.95 5.39,-1.2 1.3,5.69 5.29,7.31 -0.38,3.55 5.14,2.54 6.11,0.87 0.8,0.45 2.56,2.67 3.02,-0.32 0.4,-3.41 3.98,0.7 5.58,-2.34 2.07,-1.7 2.85,1.78 5.26,0.83 2.41,0.96 5.78,-1.97 8.72,-1.33 -0.11,-2.51 2.69,-4.44 3.49,-1.11 1.87,2.12 5.7,3.02 8.46,2.03 1.11,-2.51 3,0.55 4.43,-2.06 1.4,-3.3 8.67,-2.58 5.72,-7.33 -1.28,-1.26 -2.12,-2.52 -2.84,-3.74 -2.12,0.62 -3.12,-2.23 -5.19,-0.6 -3.43,-1.47 -6.2,-3.18 -9.79,-3.87 -0.04,-2.22 -3.9,-2.63 -5.43,-4.68 -2.97,-0.67 -5.52,-2.5 -8.38,-2.2 -1.35,-2.37 -4.49,-3.45 -2.73,-6.5 1.93,-3.82 -4.9,-3.21 -7.26,-3.68 -1.33,-1.55 -2.62,-2.04 -4.55,-3.04 0.53,-3.54 -7.57,-4.55 -4.54,-8.33 3.1,1.07 1.22,-3.19 3.24,-3.88 -1.85,-1.34 -2.22,-2.92 0.05,-3.88 0.24,-1.64 -0.87,-4.88 -1.53,-5.53 -2.45,-0.97 -0.9,-3.36 -2.63,-4.79 -0.94,-2.62 2.2,-6.94 -2.47,-7.44 -1.91,-1.02 -2.61,-3.63 -5,-3.91 z", - "department-57" : "m 503.4,104.95 c -3.5,0.04 -5.26,4.42 -8.98,3.78 -1.89,-0.4 -2.66,-4.83 -4.84,-2.71 4.17,0.85 -0.69,5.81 2.03,8.08 0.95,1.12 1.47,1.12 0.16,1.85 2.72,1.47 3.97,5.18 2.78,8.12 -3.16,1.23 2.9,3.39 -0.76,4.28 0.68,2.17 0.05,3.22 -2.29,2.94 -2.22,3.61 4.41,3.78 4.47,6.79 0.32,2.5 4.34,1.92 4.61,4.09 2.63,0.22 7.9,-0.18 8.05,3.09 -1.51,2.09 -1.02,3.76 1.16,4.61 -0.07,2.41 2.71,3.1 4.16,2.64 2.31,1.86 5.93,1.31 7.61,4.01 3.25,1.89 6.08,3.97 9.68,5.11 1.62,1.34 4.4,1.49 5.37,1.07 1.15,1.63 4.32,0.61 3.99,3.06 2.04,2.55 6.14,5.26 8.81,1.93 1.69,-2.04 5.6,-6.38 2.03,-8.09 -0.63,-2.26 4.24,-5.88 0.71,-8.42 -2.28,-1.08 -5.5,-4.67 -6.48,-0.31 -1.32,2.17 -2.68,0.9 -2.94,-0.66 -3.5,-1.06 4.07,-2.79 -0.09,-3.01 -2.21,-1.11 -5.81,-2.3 -5.04,-4.57 1.13,0.06 2.3,-2.29 3.7,-2.54 0.74,-1.99 0.82,-7.28 3.45,-6.47 0.09,2.59 1.3,4.57 3.75,4.84 3.24,0.28 5.22,3.37 8.36,2.73 2.95,-1.6 5.64,0.34 8.22,0.72 1.73,-1.99 3.39,-5.75 3.26,-7.88 -3.15,-1.08 -5.79,-2.77 -6.37,-6.36 -2.47,-1.1 -4.98,-1.26 -6.78,1.45 -3.22,2.32 -7.72,1.44 -11.17,-0.38 -0.64,3.79 -3.96,0.62 -3.06,-1.79 -1.61,-2.56 -5.77,-3.52 -8.36,-2.33 2.56,4.39 -5.29,4.06 -5.55,1.2 0.78,-2.3 -2.24,-2.11 -2.29,-4.46 -1.24,-2.84 -6.04,-4.38 -3.87,-7.88 -2.52,-2.26 -3.82,-6.64 -8.27,-6.11 -4.17,1.53 -5.59,-3.04 -9.23,-2.45 z", - "department-67" : "m 544.44,133.33 c -2.55,1.2 -1.86,5.34 -3.54,7.57 -2.79,-0.45 -3.98,5.32 -0.38,4.93 0.87,1.03 5.75,1.83 2.14,2.53 -1.78,1.5 1.91,2.4 0.8,3.44 3.07,0.38 2.8,-5.61 5.59,-2.68 1.27,0.5 2.75,1.06 3.36,2.31 3.21,1.88 -0.45,5.47 -1.04,7.67 0.4,1.75 3.37,1.12 1.47,2.94 -0.9,2.92 -2.34,6.34 -5.54,7.14 -1.52,-0.27 -6.22,0.31 -2.38,1.08 1.92,0.81 -2.32,1.02 0.26,2.27 -0.26,2.11 -1.22,5.21 -0.98,7.34 -1.59,2.69 3.49,1.95 4.06,2.53 1.12,2.38 5.28,1.06 5.74,4.01 2.04,-0.84 -0.91,2.57 1.9,1.72 3.01,0.58 6.32,2.58 6.2,5.56 1.67,1.12 3.39,4.4 5.2,1.29 0.87,-3.2 3.75,-5.3 4.22,-8.66 0.15,-2.7 3.74,-3.64 2.22,-6.76 -0.27,-3.01 1.17,-6.05 2.5,-8.7 1.39,-2.29 -0.7,-5.94 1.56,-8.31 1.96,-2.54 5.71,-3.61 6.25,-7.2 0.97,-1.38 2.5,-0.59 3.09,-2.39 3.71,-1.2 3.61,-5.01 5.11,-7.95 0.24,-2.03 5.28,-4.42 1.59,-4.91 -3.51,-0.14 -6.34,-2.15 -9.28,-3.81 -2.69,-1.53 -5.76,0.29 -8.43,-1.4 -2.54,1.19 -6.23,-0.86 -8.22,1.79 -0.69,2.41 -2.45,7.76 -5.69,4.83 -2.43,-2.51 -5.76,1.35 -8.43,-0.25 -1.12,-1.59 -3.01,-2.5 -4.57,-2.09 -2.06,-1.13 -5.18,-2.13 -4.56,-5.04 0.33,-0.23 0.21,-0.84 -0.21,-0.81 z", - "department-88" : "m 543.7,170.72 c -3.31,1.38 -6.33,2.9 -8.64,5.73 -1.29,0.67 -1.97,-1.71 -3,0.67 -1.48,2.53 -4.46,-1.14 -6.53,-0.37 -3.07,0.39 -1.42,-5.29 -4.45,-2.86 -1.72,1.06 0.93,4.33 -2.07,2.2 -1.78,0.74 -4.05,0.76 -5.72,1.72 -1.57,1.83 -1.69,-1.56 -3.59,-0.23 -1.77,0.14 -2.17,-3.2 -3.48,-0.63 -1.05,2.66 -5.79,-1 -5.2,1.97 -0.89,2.75 -2.59,1.71 -3.28,0.37 -0.1,2.4 -3.59,0.58 -5.16,1.87 -1.7,-0.72 0.13,-3.65 -2.1,-3.15 -3.28,-1.76 1.05,-7.74 -3.76,-6.9 -1.91,1.57 -3.93,0.03 -4.94,2.56 -1.62,0.54 -3.6,-1.45 -4.31,0.83 -0.98,2.28 -4.98,-0.54 -5.76,2.63 -1.49,-1.12 -4.76,0.24 -4.44,1.84 2.72,-0.76 -1.5,4.16 1.48,2.83 2.58,-2.8 4.27,0.92 5.47,2.86 0.99,2.29 2.44,-0.84 3.66,1.62 0.19,1.46 -0.14,2.91 2.21,2.73 1.05,0.81 2.84,3.4 0.16,2.99 -1.16,2.1 -0.8,4.9 -2.74,6.18 0.01,1.72 3.18,0.08 3.76,2.45 2.71,0.96 3.73,3.61 3.02,6.15 1.1,2.31 3.31,-2.88 3.5,0.86 1.43,3.89 3.56,-4.88 4.18,-0.76 -1.87,1.59 0.22,2.12 0.99,0.26 2.44,-0.34 2.63,-4.83 6.01,-3.79 2.78,-2.08 1.94,3.16 3.04,3.81 1.67,1.1 3.1,2.11 4.88,0.16 2.8,0.02 6.14,-1.3 7.82,1.99 0.57,3.89 4.42,1.42 5.62,-0.82 2.89,-1.35 3.54,3.7 6.5,4.05 2.19,0.9 3.46,2.55 5.11,3.85 2.21,-0.74 5.19,-1.96 3.36,-4.73 1.56,-1.66 0.35,-4.44 1.89,-6.56 0.98,-1.7 3.7,-2.62 3.88,-5.25 1.52,-1.58 3,-3.43 1.6,-5.14 1.49,-2.96 3.07,-5.84 4.54,-8.75 0.95,-1.35 2.26,-2.99 0.28,-4.02 -1.87,1.29 -5.67,-0.97 -2.92,-2.78 -2.18,-1.78 1.85,-5.54 -0.21,-7.07 -0.57,-0.2 -0.01,-1.38 -0.66,-1.38 z", - "department-52" : "m 446.82,158.96 c -1.69,0.91 -3.13,-0.45 -4.82,1.2 -1.12,-0.83 -4.57,-0.69 -3.54,0.9 2.8,-1.2 4.68,3.32 1.31,3.37 -2.26,0.28 -2.04,1.83 -1.08,2.97 1.74,4.14 -5.82,-1.2 -5.38,2.99 -0.5,1.16 -1.78,3.02 -1.22,3.88 2.37,0.94 2.16,4.62 5.26,4.46 -0.97,2.99 5.41,1.68 2.86,4.7 2.62,1.68 0.37,4.97 1.38,6.77 1.02,1.49 -1.35,3.52 -0.54,5.29 0.17,4.44 -5.3,-1.1 -6.39,2.93 -2.48,1.02 2.31,2.62 0.41,4.4 1.49,1.78 5.61,0.36 3.83,3.87 2.37,-0.59 4.42,1.86 1.79,3.34 0.65,2.75 2.75,-2.78 3.64,0.5 0.65,2.55 3.6,4.14 3.33,6.7 -1.31,0.89 -4.49,2.9 -1.32,2.84 1.47,1.51 -1.34,5.58 1.92,4.46 1.63,-2.16 2.42,0.63 2.94,1.7 1.79,1.42 3.81,1.4 4.82,-0.8 0.79,0.32 -0.13,2.53 1.75,2.49 0.96,1.39 3.18,1.14 1.74,3.15 0.89,2.65 3.78,-3.01 5.24,-0.13 1.75,-1.89 1.15,-6.06 4.57,-5.11 1.28,-1.4 3.49,1.3 4.33,-1.4 1.59,-1.92 1.63,2.72 3.95,1.22 2.18,-0.12 2.71,-1.17 2.09,-3.01 0.93,-1.34 1.22,-2.86 -0.38,-3.56 -0.59,-2.58 1.37,-2.98 3.06,-3.3 -0.71,-3.1 2.46,-1.42 3.57,-1.95 -0.16,-2.01 1.36,-3.53 2.99,-3.36 -0.29,-2.42 -2.17,-4.47 -4.19,-2.78 -1.26,-1.95 0.41,-5.52 -3.04,-6.35 -1,-1.34 -2.58,-2.41 -4.02,-2.13 -1.13,-1.43 1.6,-1.92 0.97,-3.42 1.1,-1.79 0.88,-4.33 2.89,-4.52 -0.46,-2.76 -4.86,-1.71 -3.68,-4.79 -1.34,-2.4 -3.06,0.93 -3.95,-2 -1.16,-2.97 -3.69,-4.38 -6.2,-2.11 -0.59,-1.91 1.12,-3.24 -1.32,-3.92 1.85,-0.41 3.47,-2.52 0.93,-3.26 -0.38,-1.87 -1.16,-2.02 -2.78,-2.58 -1.73,-3.16 -6.41,-1.82 -8.19,-4.99 -2.15,-0.46 -2.78,-2.81 -5.04,-3 -0.12,-2.21 -1.01,-1.61 -2.26,-0.66 -2.79,-0.35 1.41,-5.66 -2.22,-4.93 z", - "department-70" : "m 499.88,202.89 c -2.63,0.3 -4.89,2.11 -5.97,4.12 -0.94,0.91 -3.97,2.32 -2.12,-0.03 0.13,-1.92 -1.88,-0.34 -1.76,0.64 -1.02,1.34 -0.98,3.88 -3.06,3.55 -0.55,1.66 -1.23,4.46 -3.43,2.67 -1.42,0.7 -1.13,3.58 -3.32,2.54 -2.26,2.15 1.83,3.96 -0.2,6.21 1.24,3.12 -4.32,4.77 -5.32,1.82 -0.58,-0.92 -2.73,2.87 -4.37,1.01 -1.22,1.14 -4.49,-0.07 -3.8,2.59 -2.11,1.09 0.1,3.94 1.06,1.41 2.21,-1.57 4.14,3.91 2.96,5.69 -0.66,2.07 -2.95,2.72 -4.23,3.24 1.21,1.06 -1.76,2.05 0.86,1.83 2.25,0.29 -0.16,6.1 3.34,4.24 1.79,2.16 -1.88,5.33 1.36,5.71 1.44,2.16 3.91,4.38 6.57,2.71 2.27,-0.86 4.59,0.16 6.71,-1.75 2.79,-1.14 5.72,-4.18 8.47,-2.76 2.5,-0.09 4.56,-1.97 5.85,-3.76 1.83,0.46 2.61,-0.36 2.86,-1.77 2.63,-0.46 5.27,-1.6 5.54,-4.7 2.29,-1.29 5.83,-3.32 7.88,-0.71 1.23,-0.95 5.65,1.5 4.64,-1.81 -0.18,-2.44 4.57,1.54 3.74,-2.01 -0.12,-2.68 3.06,0.48 4.42,0.6 2.85,1.79 2.94,-3.34 1.04,-4.6 1.68,-2.26 -0.76,-5 -0.83,-7.47 -0.79,-2.86 4.43,-4.21 1.79,-6.71 -2.08,-2.66 -6.24,-2.87 -7.71,-6.14 -2.5,-2.92 -3.93,3.02 -6.8,2.39 -1.62,-1.8 -2.57,-4.88 -5.66,-4.53 -2.96,-0.21 -6.08,3.12 -8.15,0.41 -2.4,-0.51 0.23,-4.03 -2.37,-4.63 z", - "department-21" : "m 430.26,202.39 c -2.98,-0.36 -2.28,3.5 -2.89,4.09 -3.52,0.85 -7.72,-0.28 -10.91,1.13 0.12,1.91 0.16,3.7 -1.78,4.39 -1.43,2.57 2.23,2.59 2.78,2.96 0.78,2.82 0.56,7.26 -3.23,7.04 -0.11,2.16 1.99,3.62 -1,3.9 0.72,2.94 -2.41,6.52 -3.86,9.44 -2.44,2.06 0.03,6.34 -3.4,7.86 -0.01,1.52 1.54,3.57 2.08,4.44 2.08,-1.74 -0.71,3.97 0.05,5.35 0.76,2.06 4.84,0.48 4.74,3.88 -1.32,3.42 1.69,6.38 5.01,6.9 1.3,1.42 0.65,2.78 2.51,1.23 2.03,0.22 0.19,2.75 2.63,2.77 2.7,1.39 5.44,1.37 6.15,4.62 1.34,1.99 4.7,1.98 4.57,4.24 2.88,-1.34 6.42,-1.22 9.16,-3.33 2.31,-0.8 6.07,-0.86 8.14,-1.17 2.91,2.58 6.21,-1.12 9.25,-0.89 2.24,-0.61 1.63,-2.43 0.75,-3.34 1.62,-2.89 6.07,-2.65 6.78,-6.47 1.41,-2.73 2.01,-5.54 2.73,-8.48 0.14,-1.92 1.96,-2.74 -0.25,-3.51 0.43,-2.24 1.54,-5.31 -1.69,-5.06 -0.44,-1.89 -1.3,-4.9 -2.86,-4.55 0.22,-3.37 5.14,-1.91 4.96,-5.91 0.76,-2.96 -2.67,-7.08 -4.51,-2.82 -2.22,-0.25 -3.54,-1.43 -5.3,0.74 -2.39,1.02 -0.78,-3.81 -3.53,-3.94 -1.77,-1.18 -0.62,-3.19 -2.39,-0.9 -3.64,2.12 -4.58,-4.93 -7.28,-2.21 -2.89,-0.45 0.78,-4.91 -3.01,-5.07 0.9,-1.64 5.08,-3.23 1.85,-5.04 -1.35,-1.96 -2.46,-6.59 -4.91,-3.77 -2.57,-0.44 2.15,-3.15 -0.94,-3.86 -1.96,-0.39 -2.06,-0.68 -1.78,-2.38 -2.58,-1.59 -5.78,-1.16 -8.59,-2.28 l 0,0 z", - "department-25" : "m 524.75,232.72 c 0.6,3.47 -5.06,1.11 -4.41,4.65 -1.59,0.18 -4.21,0.28 -5.1,0.07 -2.83,-2.93 -7.31,0.27 -8.34,3.45 -1.29,2.51 -4.23,1.18 -5.23,3.59 -1.44,0.48 -2.41,0.42 -2.71,1.78 -2.17,0.44 -3.6,3.16 -6.39,2.02 -3.22,-0.12 -5.72,2.6 -8.74,3.57 -3.03,0.32 -3.9,3.34 -1.23,5.03 3.1,1.51 4.18,4.87 1.57,7.47 0.1,1.6 -1.31,3.03 -1.29,4.53 1.26,1.41 2.75,-3.16 3.11,0.11 0.9,2.49 4.55,-0.29 4.63,2.13 3.8,0.81 1.81,4.9 4.19,7.22 0.91,2.91 5.17,1.46 6.56,4.25 3.53,2.93 0.14,6.33 -2.84,7.54 -1.4,1.89 0.42,3.62 -1.39,5.19 -0.75,2.81 3.69,5.73 3.76,1.72 2.39,-2.03 4.37,-4.58 7.12,-6.18 2.26,-1.76 5.45,-2.91 6.57,-5.72 -0.74,-2.93 1.48,-6 -0.08,-9.15 0.11,-4.19 6.86,-3.29 9.42,-5.9 2.72,-1.98 2.28,-6.41 5.92,-7.6 2.76,-2.22 4.53,-5.44 7.39,-7.56 -0.61,-3.67 3.46,-4.22 4.78,-6.73 -0.15,-3.82 -4.97,0.07 -7.07,-1.46 0.7,-1.9 3.21,-4.13 1.45,-6.71 -0.76,-1.48 -0.67,-2.19 0.61,-2.92 -0.66,-3.47 -5.22,-3.74 -7.78,-2.34 -1.29,-1.12 -3.19,-0.98 -4.5,-2.06 z", - "department-2B" : "m 591.47,517.82 c -3.8,0.59 0.96,5.58 -2.34,7.11 0.41,2.37 -1.56,4.36 0.27,6.51 0.91,2.65 0.16,5.25 -1.21,7.52 -1.7,1.4 -2.28,-3.59 -4.88,-2.82 -2.72,-0.68 -5.78,0.73 -6.51,3.55 -0.96,3.57 -5.53,1.85 -7.86,3.52 -1.89,1.06 -3.87,1.71 -4.61,3.96 -1.27,0.02 -3.62,-0.97 -3.17,1.52 -0.83,1.46 -4.01,3 -1.97,4.89 -0.74,1.76 -0.34,3.49 -2.71,3.49 -0.21,1.44 -2.22,2.88 0.58,2.71 2.53,1.11 5.12,2.12 7.69,3.24 1.52,0.72 3.8,-1.59 3.24,1.35 1.14,3.16 4.05,4.22 6.73,6.16 3.36,0.28 1.41,5.5 4.55,6.47 1.71,1.96 0.79,6.36 4.83,5.7 0.18,2.3 0.59,4.8 0.39,7.09 3.14,0.81 -1.89,5.25 2.18,4.96 1.78,0.52 2.82,0.98 4.16,-0.94 3.62,-1.36 0.49,-5.59 2.73,-7.46 1.3,-1.69 2.64,-3.75 1.77,-5.45 1.89,-0.05 4.02,-2.43 3.98,-4.66 -3.67,0.56 1.98,-2.55 0.4,-4.61 0.47,-4.5 -0.6,-8.88 -1.01,-13.3 -0.14,-3.75 0.34,-7.67 -0.54,-11.31 -2.55,0.11 -3.67,-4.24 -3.35,-6.45 -0.43,-3.66 1.56,-7.1 1.67,-10.65 -0.63,-3.67 -1.07,-7.33 -1.55,-11 -0.76,-1.12 -2.26,-1.12 -3.47,-1.1 z", - "department-2A" : "m 553.92,559.49 c -0.76,0.55 -0.1,3.85 1.13,1.96 1.53,-0.6 3.16,1.13 1.04,1.7 0.18,1.06 4.56,1.95 3.28,3.75 -1.7,0.83 -4.95,1.13 -5.71,2.43 1.47,0.55 1.4,3.03 1,3.92 1.78,0.17 -1.16,0.99 0.63,1.63 0.63,1.3 2.89,1.78 3.93,2.6 2.01,-0.69 1.72,2.93 3.31,3.71 -1.37,1.54 -4.97,1.78 -3.83,4.58 -1,1.17 -4.84,0.3 -2.28,2.46 0.58,1.07 -0.7,3.38 1.57,2.3 2.41,0.81 4.08,-2.02 6.12,-1.18 1.97,1.46 -0.22,3.37 0.14,5 -2.75,0 1.8,1.85 -1.02,2.54 -3.01,0.03 -0.83,3.83 -3.9,3.99 -1.68,0.23 1.57,0.7 1.54,1.65 1.76,-0.59 3.68,-1.62 3.39,1.11 1.89,0.2 4.59,0.62 6.1,1.72 -1.54,1.28 -2.78,3.54 -5.39,3.37 -1.08,2.57 -0.44,5.65 2.26,6.65 0.47,1.48 3.07,1.49 4.07,2.79 2.06,-0.18 4.37,2.72 5.98,1.13 0.61,-0.03 -0.33,2.68 1.6,1.9 1.78,0.68 -1.94,3.73 1.39,3.43 1.92,2.48 5.07,2.16 5.35,-1.31 -0.28,-1.01 -2.21,1.4 -1.26,-0.4 -1.13,-2.4 4.15,-2.95 2.21,-5.91 -0.37,-2.45 4.29,-3.07 3.59,-5.68 -1.11,-1.47 -3.9,2.07 -2.85,-0.95 0.15,-2.4 3.01,0.56 2.82,-1.99 2.59,-0.18 0.07,-3.36 2.35,-4.13 0.15,-3.28 0.23,-6.85 -0.14,-10.22 -1.57,-1.53 -3.07,3.01 -4.83,0.98 -2.75,0.63 -3.37,-1.87 -1.99,-3.78 0.22,-1.35 -2.56,-0.55 -1.08,-2.17 -0.85,-2.32 1.32,-7.41 -2.67,-6.39 -2.45,-0.98 -0.65,-4.44 -2.73,-5.65 -2.85,-1.24 -1.36,-6.19 -4.82,-6.53 -1.64,-1.96 -4.77,-2 -5.5,-4.65 -1.21,-1.02 -0.51,-3.66 -2.85,-2.55 -2.75,-0.46 -5.3,-1.82 -7.74,-2.91 -1.28,-0.57 -2.84,-0.72 -4.21,-0.9 z", - "department-66" : "m 350.33,540.74 c -2.96,0.38 -4.31,2.8 -5.6,5.05 -3.53,0.71 -7.2,-0.41 -10.77,-0.57 -2.35,1.71 -6.82,-1.75 -7.77,1.56 0.2,2.13 1.85,4.41 0.81,6.44 -1.56,1.89 -4.34,1.3 -5.68,3.47 -1.35,1.08 -2.18,1.99 -3.65,0.52 -2.39,0.04 -5.76,-0.02 -7.25,1.69 -0.99,2.71 -4.23,1.36 -5.45,3.77 -3.15,-0.36 -6.54,2.28 -5.14,5.7 2.43,0.62 5.15,0.58 6.86,2.76 2.19,0.36 3.92,1.1 3.79,3.75 0.25,2.56 3.21,3.71 5.32,2.52 1.96,-1.04 2.2,-4.45 4.97,-3.96 2.58,-0.15 5.03,-1.38 7.33,0.7 1.62,1.14 4.07,1.03 4.94,3.03 1.26,1.86 4.32,3.14 5.35,0.56 1.73,0.75 6.82,2.34 4.14,-1.14 0.71,-2.52 4.05,-2.95 6.3,-2.62 1.56,-1.63 3.48,-3.18 5.81,-2.8 0.99,-2.12 3.1,-0.12 4.88,-0.88 1.63,1.07 2.93,3.67 5.54,2.51 3.2,-0.39 -1.16,-3.71 -1.44,-5.38 -2.92,-1.29 -2.81,-4.63 -3.06,-7.37 0.78,-2.2 -2.64,-2.22 -1.43,-4.12 2.29,1.97 1.16,-2.93 1.55,-4.24 0.36,-2.22 -0.89,-3.89 -3.17,-3.82 -1.26,-1.48 0.41,-4.01 -2.35,-4.33 -1.89,-0.44 -3.32,-1.87 -4.85,-2.81 z", - "department-01" : "m 445.43,302.59 c -1.44,3.02 -1.75,6.16 -3.18,9.18 -0.78,3.16 -1.85,6.34 -2.91,9.5 -0.74,1.88 -1.31,3.79 -0.09,5.37 -0.73,2.05 -2.97,3.67 -1.95,5.9 -1.67,2.26 0.87,5.73 -1.18,7.83 1.88,0.01 3.46,1.61 3.99,2.62 2.16,-1.53 3.89,1.88 4.07,3.41 0.92,1.26 -0.03,3.77 2.46,2.77 2.89,0.46 5.98,-0.89 8.76,0.39 1.35,2.24 3.89,2.93 5.42,0.31 1.18,-1.7 1.66,-5.65 4.09,-5.27 2.02,1.24 3.75,2.88 3.08,4.98 1.95,2.32 3.67,4.97 5.93,6.73 1.33,1.23 0.17,0.8 -0.53,0.61 0.61,1.8 3.11,2.49 3.34,4.83 0.97,0.84 1.38,-1.89 2.87,-1.59 -0.3,-1.63 1.67,-2.68 0.77,-4.34 3.81,0.96 3.71,-3.34 3.75,-5.95 0.89,-3.44 1.98,-6.82 2.27,-10.31 -1.07,-2.3 -1.36,-4.85 -1.09,-7.47 0.3,-1.5 0.9,-3.58 2.27,-1.4 2.48,1.01 0.53,-3.51 3.59,-2.7 2.71,-0.13 3.55,-3.26 1.37,-4.78 1.32,-2.8 5.95,-1.73 6.82,-4.09 -1.66,-3.05 4.61,-7.07 -0.2,-9.19 -2.62,-2.47 -4.13,2.14 -6.1,3.38 -0.9,2.11 -2.5,3.05 -3.65,4.53 -1.99,2.56 -5.47,0.79 -8.11,1.25 0.84,-3.04 -2.73,-3.43 -3.76,-4.72 -2.02,1.65 -3.16,4.49 -6.19,4.68 -2.73,0.46 -1.81,-2.02 -1.56,-3.51 -1.42,0.56 -1.69,-0.36 -2.26,-1.49 -0.06,1.35 -0.96,2.99 -0.83,0.6 -1.4,-1.01 -1.59,-2.59 -1.58,-3.72 -1.32,-0.93 -3.93,-1.28 -2.29,-3.07 -1.76,-1.43 -5.48,-1.31 -5.42,-4.72 -2.13,-0.62 -4.08,0.9 -6.23,1.42 -1.93,-0.36 -3.28,-2.81 -5.2,-1.46 0.07,-0.1 -0.3,-0.68 -0.54,-0.51 z", - "department-39" : "m 472.04,250.64 c -2.16,1.79 -1.36,5.28 -2.94,7.45 0.09,2.73 -2.31,4.73 -3.53,7.05 -3.03,-0.47 -5.35,3.74 -3.19,4.71 -2.06,0.47 -3.73,5.36 -0.52,4.7 1.33,0.76 0.69,4.17 3.48,3.21 1.68,-0.66 1.23,2.18 3.27,2.09 2.46,1.35 -0.2,2.67 -1.91,2.03 -2.06,-0.51 -4.46,1.94 -1.6,2.77 2.43,1.33 -1.33,3.03 1.08,4.08 0.89,2.1 1.19,3.82 2.13,6.05 -2.12,0.95 -0.43,3.73 -3.06,3.72 -1.86,2.41 0.74,4.14 2.3,5.69 -0.13,2.93 -6.18,0.76 -4.86,4.67 0.41,1.69 3.59,1.72 2.72,3.84 0.3,1.7 2.14,1.5 2.39,1.42 0.16,2.17 2.98,0.53 1.91,2.98 -0.9,3.13 3.87,1.82 4.85,0.12 1.46,-0.55 2.58,-4.59 4.24,-1.99 2.29,0.06 2.46,3.2 3.09,3.77 2.93,-0.04 7.08,0.91 8.5,-2.49 2.02,-1.97 3.8,-4.92 6.21,-7.02 2.27,-1.54 0.39,-4.74 2.54,-6.4 1.4,-1.49 3.11,-3.84 -0.06,-3.89 -2.06,-1.17 -3.31,-3.74 -0.87,-5.29 0.4,-1.53 -1.44,-3.09 0.76,-4.19 2.73,-1.36 6.13,-4.43 2.26,-6.76 -1.6,-2.02 -3.91,-2.65 -5.92,-3.04 -1.27,-2 -1.73,-3.98 -2.6,-5.89 -0.82,-0.25 1.22,-2.33 -1.1,-2.27 -1.84,-1.29 -4.2,-1.14 -5.91,-2.76 -0.62,-1.82 -0.09,-1.2 -1.26,-0.03 -2.05,2.08 -3.47,-2.98 -0.74,-2.02 0.76,-1.1 -0.4,-3.36 1.4,-4.52 2.37,-3.1 -2.64,-4.46 -3.59,-6.62 -0.37,-1.97 -2.06,-4.51 -3.97,-2.34 -2.56,0.88 -4.13,-1.12 -5.49,-2.82 z", - "department-68" : "m 549.43,183.82 c -2.25,1 -2.94,3.73 -3.79,5.81 -0.9,2.15 -3.75,4.26 -2.11,6.74 -0.93,2.22 -2.92,4.25 -3.93,6.64 -2.43,1.18 -3.51,3.7 -3.19,6.38 0.13,1.69 -1.55,2.36 -0.44,3.95 0.77,2.64 -4.62,1.97 -2.6,4.52 2.13,1.91 5.37,1.9 7.52,3.96 0.67,1.81 1.6,4.32 0.06,6.09 -1.78,1.43 -0.08,4 1.85,2.88 1.83,0.98 2.47,3.66 3.32,5.16 -0.72,2.04 1.34,2.1 2.39,2.44 -0.32,1.38 -1.23,4 1.33,3.32 1.03,1.33 2.07,1.29 3.35,0.31 2.56,-0.08 5.85,0.35 7.17,-2.31 -0.73,-1.24 -0.96,-2.18 0.78,-1.43 2.66,0.8 0.35,-2.42 2.52,-2.38 0.82,-0.85 -1.99,-1.47 0.03,-2.05 1.88,-1.02 4.21,-2.78 2.05,-4.99 -1.7,-1.63 -3.7,-3.88 -1.43,-6.04 0.91,-2.16 -1.41,-4.57 0.56,-6.71 0.67,-2 0.44,-4 1.78,-5.83 -0.03,-2.09 3.45,-4.94 0.43,-6.95 -3.06,-1.46 0.88,-6.62 -2.19,-7 -1.65,-0.56 -1.53,-2.31 -3.25,-2.51 -0.17,-1.94 -0.33,-3.93 -2.69,-4.35 -2.09,-1.1 -4.78,-1.23 -5.71,-3.58 0.07,-2.15 -2.48,-1.52 -3.79,-2.06 z", - "department-90" : "m 532.37,216.22 c -0.55,0.23 -0.49,0.97 -0.95,1.33 -0.62,0.8 -1.51,1.36 -1.95,2.3 -0.77,0.99 -0.8,2.48 -0.08,3.5 -0.03,0.67 0.48,1.24 0.41,1.93 -0.01,0.83 -0.07,1.76 0.62,2.36 0.29,0.29 0.48,0.66 0.1,0.97 -0.14,0.38 -0.57,0.43 -0.76,0.72 -0.05,0.5 0.53,0.78 0.56,1.29 0.18,0.47 0.52,0.85 0.75,1.28 0.26,0.15 0.87,0.53 0.4,0.81 -0.7,0.47 -0.05,1.72 0.76,1.5 0.78,0.02 1.57,-0.19 2.27,-0.46 0.8,0.18 1.42,0.82 1.45,1.64 0.04,0.86 1.41,0.54 1.43,1.42 0.01,0.47 0.26,1.11 -0.01,1.5 -0.5,0.35 -0.45,-0.64 -0.86,-0.74 -0.5,-0.2 -0.94,0.42 -0.64,0.85 0.2,0.34 -0.18,0.93 0.34,1.04 0.43,0.61 0.84,1.44 0.71,2.19 -0.36,0.5 0.42,0.64 0.75,0.45 0.83,-0.18 1.47,-0.8 2.26,-1.07 0.62,-0.6 -0.22,-1.42 -0.38,-2.05 -0.12,-0.36 -0.45,-1.06 0.17,-1.13 0.42,-0.08 0.81,-0.3 1.15,-0.48 0.96,0.2 1.82,0.91 2.86,0.71 1.1,-0.11 2.47,-0.62 2.45,-1.94 0.16,-1 -0.69,-1.62 -1.41,-2.13 -0.16,-0.46 -0.02,-1.09 -0.52,-1.4 -0.45,-0.55 -0.43,-1.71 -1.38,-1.73 -0.72,-0.12 -1.46,0.05 -1.95,0.59 -0.4,0.24 -0.3,-0.53 -0.6,-0.62 -0.31,-0.79 -0.34,-1.73 0.1,-2.47 0.16,-0.36 0.01,-1.1 0.63,-0.98 0.41,0.01 0.38,-0.37 0.4,-0.64 0.61,-1 -0.15,-2.14 -0.3,-3.13 0.23,-0.47 0.38,-1.05 -0.1,-1.44 -0.8,-1.1 -2.3,-1.18 -3.29,-2.06 -0.38,-0.36 -0.84,-0.58 -1.33,-0.6 -0.84,-0.67 -2.13,-0.38 -2.92,-1.15 -0.45,-0.63 -0.74,-1.4 -0.95,-2.13 -0.05,-0.04 -0.12,-0.05 -0.18,-0.04 z" - } - } - } - } - ); - - return Mapael; - -})); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/france_departments.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/france_departments.min.js deleted file mode 100644 index 96a9b51..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/france_departments.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("jquery-mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{france_departments:{width:600.08728,height:626.26221,getCoords:function(a,b){var c,d,e,f,g,h;return a<43.1571&&b>8.17199?(c=43.64246,d=181.3452,g=b*c+d,e=-65.77758,f=3346.37839,h=a*e+f):(c=45.48385,d=220.22005,g=b*c+d,e=-65.97284,f=3371.10748,h=a*e+f),{x:g,y:h}},elems:{"department-29":"m 37.28,156.11 c -1.42,1.23 -3.84,1.18 -3.99,3.49 -1.31,-2.24 -8,-0.27 -6.23,1.86 -0.83,0.29 -3.61,-0.09 -4.72,1.08 1.27,-3.15 -2.84,-2.76 -4.74,-1.32 -1.52,0.3 0.5,1.51 -1.67,1.26 -1.43,1.46 -5.78,-1.22 -5,1.7 2.01,2.28 -4.44,-1.17 -2.19,2.21 2.05,2.35 -1.91,-1.21 -3.2,0.17 -2.44,0.46 -5.9,3.28 -4.27,6.2 1.31,1.03 -2.45,2.79 -0.89,4.68 1.85,1.54 -1.54,4.66 1.85,4.99 2.29,0.7 2.49,-2.98 4.87,-0.96 3.08,0.74 5.89,-2.07 8.89,-2.74 1.93,-0.34 5.67,-2.04 6.34,-1.85 -2,1.78 -5.83,1.89 -6.41,4.93 -0.69,1.92 2.11,-0.67 2.33,1.07 1.34,-0.89 2.68,-1.87 3.94,-1.39 3.81,-2.03 -2.75,2.24 0.52,1.99 1.47,0.34 4.01,0.96 4.33,1.46 -1.94,0.3 -3.28,1.07 -4.57,-0.08 -2.38,0.71 -4.58,1.45 -6.63,0.05 -2.75,0.86 -5.75,0.61 -4.18,-2.84 -3.29,-0.24 -0.4,5.1 -3.79,3.67 -1.2,2.84 5.41,0.67 2.62,3.42 0.89,1.41 -0.15,5.78 1.86,2.76 0.83,-2.29 2.62,-4.57 5.09,-2.36 1.97,1.37 5.1,0.79 5.41,4 1.86,2.04 -0.29,6.23 -3,3.6 -3.95,0.62 -7.67,1.95 -11.58,2.45 -2.09,0.38 -5.98,-0.08 -4.41,2.7 2.53,0.06 4.87,1.62 7.03,1.82 2.62,-1.48 5.9,3.16 7.51,5.27 1.61,2.44 2.66,5.4 0.91,7.66 1.94,1.19 5.11,1.18 7.5,0.75 1.99,-0.45 3.16,-2.44 1.04,-3.28 -1.05,-1.98 0.82,-2.27 1.51,-0.45 3.34,0.23 -0.63,-4.11 0.69,-3.65 0.91,2.75 3.66,3.46 5.82,3.53 2.26,0.86 -0.02,-4.66 2.92,-2.01 2.11,1.7 2.69,4.22 4.57,6.13 2.01,0.11 4.17,0.12 6.01,-0.65 1.82,2.12 5.68,2.27 8.25,2.23 1.8,-1.51 -1.55,-4.66 0.95,-5.09 0.94,2.57 3.24,-0.19 3.58,-1.33 2.95,0.23 0.38,-3.13 2.08,-4.2 -0.21,-1.43 -0.64,-3.61 -2.53,-1.94 -1.44,2.09 -1.76,-1.59 -3.7,-1.52 -2.13,-1.41 -5.77,1.37 -6.1,-2.55 -0.44,-2.07 -2.04,-3.22 -2.32,-5.05 -2.23,-0.45 0.49,-4.53 2.59,-4.02 1.42,-1.43 5.76,-1.87 5.77,-3.15 -3.54,-1.5 2.53,-4.55 -0.88,-5.73 0.6,-1.35 -0.87,-3.79 -0.56,-5.72 -3.53,0.13 -1.65,-3.79 0.06,-4.6 -3.56,-1.53 -0.98,-4.21 0.33,-6.05 -1.3,-1.16 -2.22,-1.16 -1.99,-2.94 -3.12,-0.26 -3.41,-4.67 -2.3,-6.54 -0.38,-1.53 -3.23,-0.42 -4.45,-1.94 -2.01,-0.12 -5.18,-1.19 -4.7,2.29 -0.84,1.4 0.25,4.35 -1.82,2.22 -1.36,-0.49 -0.48,-3.38 -2.36,-1.3 -1.28,1.93 -1.52,-3.86 -1.99,-4.38 z m -9.88,28.66 0,0.02 0,-0.02 z","department-22":"m 77.67,146.73 c -2.58,0.94 -4.37,2.6 -5.78,4.84 1.21,-2.76 0.01,-6.18 -2.26,-2.58 -2.86,-0.54 -4.85,2.02 -7.32,2.35 0.05,-2.38 -5.14,-2.89 -4.97,-0.27 -1.65,0.69 -2.79,2.55 -0.54,3.83 1.42,1.41 -3.19,1.12 -1.21,3.58 0.75,2.79 -2.62,-0.53 -2.95,1.74 -2.03,2.25 0.93,5.14 2.73,6.11 -0.89,1.81 3.77,1.87 0.94,3.62 -2.27,1.33 -1.69,4.1 0.71,4.68 -2.37,0.99 -3.54,4.66 -0.18,4.93 -0.75,1.8 0.34,4.07 1.35,3.89 -2.23,1.45 2.07,3.31 -1.02,4.81 -1.32,1.63 3.39,3.81 -0.37,3.46 -0,1.68 3.4,-0.17 4.6,0.64 2.17,-1.15 0.09,3.47 2.84,1.65 2.78,-2.51 5.12,2.28 8.16,0.11 1.28,-1.21 4.21,0.16 3.71,-2.72 2.36,-2.11 5.53,-0.32 6.55,2.07 3.1,-1.66 5.66,1.79 8.52,1.44 1.09,1.13 1.31,4.63 2.54,1.67 1.77,0.69 4.7,-2.67 4.36,1 -1.42,1.92 -0.06,5.98 2.29,3.25 2.15,-1.33 3.24,-3.52 3.71,-5.84 -1.55,-1.8 3.03,-1.29 4.1,-2.17 2.56,0.5 2.84,5.71 5.3,2.6 2.48,-0.52 4.76,-2.21 4.35,-5.23 2.66,1.35 0.38,-3.98 3.68,-3.07 2.3,0.76 0.88,-1.21 2.74,-1.68 0.93,-2.46 3.26,2.1 3.88,-0.74 2.87,-0.05 0.28,-3.49 2.75,-3.67 -0.67,-1.88 -0.1,-4.12 -0.62,-6.07 1.57,-1.46 2.25,-5.3 0.59,-6.78 -0.36,1.32 -2.86,3.56 -2.08,0.75 -0.58,-2.28 -2.24,-1.04 -3,-0.66 -0.39,-2.19 -3.7,-1.69 -4.26,-4.29 -2.01,-0.96 -0.92,3.96 -2.61,1.33 -0.93,2.11 -1.72,-1.85 -2.25,-2.64 -0.23,-2.69 -5.02,3.57 -3.11,-0.38 2.12,-1.4 -0.5,-4.55 -1.42,-1.9 -1.94,1.15 -2.92,1.92 -4.85,1.1 -2.9,-0.12 0.52,1.54 -2.1,2.49 -3.58,0.78 -5.19,5.69 -8.5,5.48 0.49,3.36 -2.74,-0.19 -2.06,-1.81 -2.95,-1.1 -4.73,-3.24 -4.7,-6.38 -2,-2 -5.44,-3.63 -5.11,-6.81 -0.95,-1.07 -6.79,-1.08 -3.38,-3.09 0.47,-2.76 -4.12,-1.19 -3.66,1.11 -0.44,1.73 -2.27,2.41 -0.65,0.39 1.33,-1.47 1.44,-4.62 0.53,-6.14 z","department-56":"m 78.99,190.76 c -3.41,-1.13 -2.2,3.92 -5.32,2.9 -1.41,0.4 -1.19,1.61 -2.99,0.82 -1.13,0.79 -2.69,-0.38 -3.4,-0.47 -0.84,-2.28 -6.08,2.96 -4.76,-1.3 -1.92,-0.69 -4.61,-0.08 -6.81,-0.32 -2.56,1.49 -6.48,1.43 -6.89,4.97 1.66,0.45 1.27,1.18 1.54,2.72 2.29,1.28 1.38,6.71 5.21,4.85 2.27,-0.57 4.21,1.54 5.35,2.54 1.09,-1.75 3.9,-1.39 3.21,0.95 0.1,1.55 -1.11,2.84 -0.3,4.77 -2.2,-0.71 -3.03,4.58 -5.67,1.76 -1.43,0.94 1.23,2.98 -0.19,4.47 0.79,3.11 4.25,6.81 7.21,3.89 -1.96,-1.82 1.17,-1.04 2.08,-2.79 1.53,-1.34 1.85,-1.47 0.72,0.46 -0.96,1.01 -3.43,3.3 -0.38,3.09 1.49,0.45 3.45,4.36 4.77,2.88 -0.27,-2.53 3.83,-3.05 1.1,-5.44 1.05,0.63 2.71,-0.96 2.12,1.15 2.98,0.99 -0.94,3.03 -2.44,3.55 -2.08,3.14 3.5,3.77 1.75,6.92 -0.29,1.59 0.31,5.9 2.13,4.03 -1.68,-0.96 -1.89,-7.61 0.51,-4.94 -0.5,1.26 4.8,0.74 3.44,-1.25 0.35,-0.76 1.34,3.45 1.43,0.83 0.89,1.74 3.91,2.47 1.59,0.06 -0.51,-1.47 -0.02,-3.03 -0.87,-4.45 1.76,1.65 1.37,4.11 4.01,4.31 0.21,-1.28 1.88,-0.67 1.78,-2.23 1.83,0.46 2.89,-0.48 3.79,-0.93 2.28,0.82 -0.59,1.71 2.06,2.43 1.57,0.52 0.39,-4.11 1.62,-1.05 -0.46,2.03 -2.17,6.08 -4.56,4.17 -1.51,0.14 -2.97,0.56 -4.53,-0.67 -3.37,0.66 2.51,2.11 2.17,4.25 2.28,1.57 4.95,-1.33 7.46,-0.04 0.09,-2.03 1.34,-0.88 2.36,-1.71 -1.31,-1.38 4.01,-1.27 0.96,-0.1 0.22,1.93 4.41,-1.17 5.9,0.75 1.01,1.43 4.31,0.26 4.44,1.04 -2.33,0.43 -6.75,-0.69 -5.01,3.23 1.5,1.03 2.59,-3.6 4.01,-0.77 1.99,-0.12 4.3,0.38 4.4,-2.43 0.29,-2.58 2.25,-0.15 3.16,-0.22 1.19,-1.05 2.3,-1.01 2.74,0.42 1.6,-0.29 0.66,-3.06 3.03,-2.61 0.96,-1.59 -0.11,-4.05 1.01,-5.76 -1.21,-2.25 -1.75,-4.67 -1.62,-7.13 1.06,-1.01 4.05,-0.69 1.57,-1.96 -1.94,-0.06 -2.1,-1.17 -0.12,-1.66 0.89,-1.32 3.49,-4.07 1.04,-4.6 -2.47,1.93 -2.55,-3.4 -0.68,-4.04 -0.57,-3.25 -3.22,-4.81 -6.13,-5.41 -2.4,0.4 -4.25,0.1 -2.46,-2.49 0.6,-2.26 5.5,-0.56 4.09,-3.23 -1.75,-0.22 -3.84,2.7 -3.33,-0.63 0.01,-3.41 -3.32,-2.88 -4.84,-1.45 -0.88,-3.11 -3.48,-4.72 -6.36,-3.01 -2.15,-0.01 0.26,2.97 -2.05,3.88 -0.09,2.06 -3.87,4.92 -5.31,3.84 -1.21,-1.39 2.06,-7.27 -1.57,-5.21 -1.38,0.54 -2.88,0.33 -3.62,2.06 -0.18,-2.38 -1.59,-4.23 -4.05,-3.7 -1.5,-2.53 -4.89,-0.74 -6.39,-1.56 -0.77,-1.17 -1.33,-2.65 -3.1,-2.43 z","department-35":"m 134.53,157.78 c -2.29,1.25 -4.29,0.31 -6.19,1.59 -0.35,1.67 -2.93,2.17 -1.16,4.31 0.18,1.71 3.99,2.25 1.51,3.04 0.71,1.27 0.98,3.59 2.33,1.22 1.69,2.12 0.9,4.75 -0.11,6.67 -1.16,1.66 0.84,3.78 -0.19,5.68 1.34,1.46 -2.11,1.58 -0.78,3.48 0.21,2.25 -2.03,-0.13 -2.56,2.08 -1.42,-0.68 -2.58,-1.61 -3.47,0.21 -1.19,0.31 -0.39,2.42 -2.44,1.14 -3.01,-0.11 -1.06,4.1 -3.56,3.46 -0.04,2.21 -0.64,4.46 -2.86,4.2 0.62,1.53 1.56,3.49 1.75,5.16 0.54,-2.03 5.23,-1.03 2.52,0.76 -2.33,-0.69 -5.1,2.03 -3.97,3.88 2.89,-0.33 6.41,0.27 7.93,3.03 1.44,1.66 0.87,2.99 -0.39,4.33 0.11,1.6 0.84,3.69 2.2,1.35 0.71,-0.77 0.83,2.07 1.01,2.45 -1.23,1.26 -2.05,2.91 -3.28,3.92 1.71,0.13 3.61,2.39 0.59,2.1 -2.68,1.22 0.26,4 -0.22,5.86 2.34,-0.34 4.15,-1.76 6.12,-3.07 0.06,2.7 3.03,-0.8 4.56,-0.57 2.43,-1.1 5.63,0.82 7.84,-0.63 3.6,0.5 2.72,-4.87 6.32,-4.78 1.62,-0.77 5.16,-0.84 3.73,-3.31 2.85,-0.62 4.57,1.21 6.54,2.5 1.91,0.57 5.04,2.11 4.63,-1.3 1.15,-1.21 0.6,-2.9 1.92,-3.9 0.7,-1.81 1.08,-4.73 2.39,-6.4 1.07,-2.4 6.58,0.52 5.22,-3.48 -0.09,-3.31 -1.44,-6.24 -2.22,-9.58 0.1,-2.96 -2.26,-6.23 0.02,-8.8 1.83,-2.19 0.74,-5.58 -0.28,-8.01 0.55,-2.21 1.33,-6.39 -2.22,-6.48 -2.56,-0.06 -6.32,-3.21 -7.21,0.93 -2.37,0.79 -4.8,5.49 -7.02,1.82 -2.57,-0.44 -4.28,-3.63 -3.95,-6.18 -0.99,-1.91 -2.39,-5.92 -4.86,-2.88 -3.41,0.04 -8.02,2.16 -10.43,-0.96 -1.67,-2.06 2.03,-3.1 0.24,-4.85 z","department-44":"m 152.12,215.29 c 0.59,4.69 -7.52,2.23 -7.55,6.92 -2.45,2.92 -6.64,1.42 -9.84,1.79 -2.21,0.47 -4.62,2.21 -6.1,1.16 -2.15,1.71 -5.77,2.38 -4.86,5.66 -0.41,1.99 0.14,5.32 -2.78,5.46 0.29,3.39 -2.45,-0.35 -3.39,1.23 -1.97,-0.43 -3.4,-1.22 -3.87,1.43 -1.39,3.38 -7.86,-1.72 -6.53,3.45 1.04,0.36 3.95,1.27 1.26,1.45 -1.78,0.18 -4.38,-0.42 -5.51,2.1 0.81,1.67 6.76,3.88 3.55,5.8 -1.04,-0.85 -4.89,-1.36 -1.91,0.14 1.73,1.23 3.86,1.82 5.03,0.15 2.77,0.79 5.25,4.76 7.99,1.3 2.33,-2.98 5.67,-3.71 9.18,-3.56 3.26,1.31 7.02,1.76 9.14,4.89 0.59,1.56 5.82,2.63 2.15,2.16 -4.08,-0.08 -5.45,-5.45 -9.25,-4.42 -2.59,-1.44 -6.59,-0.45 -8.62,1.17 0.15,2.98 1.07,6.99 -2.64,7.63 1.56,2.78 6.83,0.77 8.69,4.16 2.99,2.74 4.83,7.09 8.9,8.42 0.9,1.88 5.53,0.57 5.08,3.59 3.08,0.7 6.82,2.86 9.67,1.11 2.13,-1.29 -2.55,-2.42 -0.14,-3.94 -2.91,-1.74 -0.81,-8.5 2.35,-5.93 0.6,2.44 -0.71,8.47 3.28,5.3 3.57,-0.9 -1,-7.35 3.9,-6.19 0.83,-0.5 2.39,-4.6 3.91,-1.32 1.06,2.31 6.94,2.33 4.03,-0.72 -1.16,-2.43 -6.27,-0.49 -4.19,-3.49 1.19,-2.09 4.14,-3.59 2.27,-6.58 -0.11,-2.99 -2.79,0.14 -3.66,-2.47 -0.42,-1.81 -2.18,-3.14 -3.54,-3 1.51,-3.16 6.07,-2.52 8.85,-3.95 3.12,-0.79 9.37,1.47 9.71,-3.23 -1.08,-2.47 -1.12,-5.9 -4.66,-5.46 -2.8,0.23 -7.97,-1.25 -5.65,-4.79 1.85,-0.34 7.04,1.35 6.32,-1.48 -2.96,-1.34 -7.7,-2.06 -7.06,-6.38 -0.89,-2.42 -4.47,-2.43 -3.18,-5.19 -2.78,-1.29 -5.51,-2.7 -8.1,-4.12 -0.73,-0.11 -1.47,-0.12 -2.19,-0.28 z","department-50":"m 131.13,90.31 c -1.88,0.95 -0.8,4.82 1.86,4.23 3.56,1.9 1.73,6.62 0.2,9.04 2.05,2.45 3.1,5.7 3,9 0.14,1.74 2.63,0.2 3.07,2.34 0.75,1.03 1.85,2.12 2.19,0.36 1.37,1.6 -1.38,2.27 1.05,3.66 1.37,1.28 0.99,6.4 3.69,4.06 1.9,0.29 2.45,1.19 0.04,0.86 -1.6,1.67 0.46,4.57 0.89,5.74 -2.97,1.02 -0.03,4.32 -0.89,6.45 0.25,4.18 2.26,-2.3 3.97,0.71 -3,-1.64 -2.73,4.63 -1.52,5.52 -1.39,1.53 -0.75,4.59 -2.48,6.57 2.85,1.89 0.3,6.73 3.77,8.41 0.72,3.65 6.47,2.47 6.87,4.86 -3.09,-0.67 -6.13,1.28 -9.29,0.14 2.12,2.48 1.69,5.44 3.35,8.16 0.49,2.03 2.9,1.69 3.89,3.28 2.85,0.97 3.52,-2.95 6.22,-3.35 0.5,-4.19 4.83,-0.16 7.12,-0.52 2.46,0.21 4.49,2.11 6.88,1.58 1.14,-3.4 4.72,2.61 6.05,-1.83 2.14,-1.71 4.11,-4.11 4,-6.8 -2.86,-1.65 2.62,-4.05 -1.04,-4.65 -1.19,-1.03 -1.99,-2.17 -3.44,-2.39 0.65,-1.72 0.69,-2.24 -1.24,-1.46 -2.15,-1.56 -3.83,-1.87 -6.18,-1.16 -1.5,-0.55 -4.16,0.68 -4.02,-2.14 -1.26,-0.78 -4.15,-1.48 -1.38,-2.84 0.99,-1.27 1.76,-1.9 2.97,-1.76 1.12,-1.18 3.8,-4.02 0.24,-2.9 -1.76,-0.83 1.02,-4.16 2.87,-2.17 3.08,-0.43 3.89,-3.82 6.01,-5.35 -2.27,-0.59 1.2,-4.39 -1.22,-5.32 -2.09,1.3 -1,0.15 0.07,-0.89 -1.07,-1.07 -4.55,-2.49 -1.49,-2.88 2.17,-1.47 -0.09,-4.82 -1.5,-1.9 -3.17,0.81 -5.99,-2.78 -7.94,-5.02 -1.69,-1.95 2.34,-3.94 -0.73,-4.53 -0.02,-1.64 -2.94,0.31 -1.33,-2.17 1.04,-2.89 -2.27,-4.45 -3.47,-6.64 -1.37,-1.99 -4.59,-6.54 -0.56,-7.31 0.17,-1.79 2.56,-1.35 1.09,-3.59 -0.43,-3.65 -3.79,-3.85 -6.83,-3.94 -3.88,-1.03 -4.69,4.08 -8.52,3.07 -3.16,1.2 -5.48,-1.83 -8.81,-1.65 -2.47,0.02 -3.19,-2.65 -5.7,-1.92 -0.51,-0.38 -1.01,-1.1 -1.74,-0.94 z","department-53":"m 208.55,167.1 c -1.01,1 0.05,3.16 -1.88,3.54 -1.52,-1.01 -2.64,-0.44 -3.16,1.13 -2.16,0.27 -4.3,-2.6 -6.35,-0.72 -2.51,0.71 -4.34,2.89 -6.91,3.52 -1.47,-0.07 -0.73,-3.05 -2.63,-1.24 -1.44,-0.25 -1.57,0.24 -1.23,1.52 -1.95,1.91 -3.12,-1.9 -4.31,-1.2 -0.57,-2.91 -4.17,-1.79 -5.68,-3.27 -1.71,1.43 -3.54,2.05 -5.24,0.23 -1.62,1.36 -0.04,4.11 -0.87,5.96 1,2.8 1.94,6.2 -0.3,8.68 -1.8,2.64 0.64,5.51 0.63,8.4 0.26,2.57 1.34,4.89 2.01,7.32 0.27,1.9 0.56,4.67 -2.4,4.46 -3.58,-1.21 -3.75,3.46 -4.8,5.71 -0.32,2.32 -3.14,4.44 -1.31,6.55 2.18,1.99 5.34,0.43 7.83,1.57 1.63,0.66 3.95,1.05 3.53,-1.27 2.64,-0.54 3.9,3.91 6.54,1.42 2.25,1.91 5.27,1.85 7.94,2.38 1.76,-0.55 3.96,-1.63 5.33,-1.8 0.74,-3.63 3.49,1.65 5.63,-0.72 3.1,-0.49 -0.69,-2.25 -1.75,-2.95 -1.24,-2.55 5.38,-2.7 2.17,-4.78 -2.1,-2.18 2.21,-3.41 3.9,-3.25 2.7,-2.12 -2.9,-5 -0.82,-7.18 1.54,-1.12 5.56,-0.07 4.23,-2.96 2.04,-1.51 -2.56,-3.7 0.57,-5.19 2.14,-0.95 4.31,-2.8 2.75,-5.2 0.4,-1.84 1.4,-3.83 0.29,-5.45 0.84,-2.27 2.74,-2.67 4.64,-3.69 0.49,-2.31 0.11,-5.38 -2.99,-3.91 -2.18,-0.9 -2.07,-4.02 -1.67,-5.52 -0.9,-1.11 -2.32,-1.86 -3.72,-2.1 z","department-49":"m 163.22,217.21 c -0.83,2.37 -1.6,5.33 1.37,5.86 1.81,2.08 0.91,5.95 4.42,6.63 2.22,0.05 6.13,2.61 1.99,3.38 -1.68,0.33 -6.88,-1.51 -4.42,1.8 -0.28,3.95 5.62,1.28 7.64,2.98 2.45,0.74 1.41,5.07 2.67,6.48 -2.29,2.93 -6.35,1.4 -9.46,1.86 -2.75,1.47 -6.15,1.11 -8.63,2.95 -2.19,2.35 2.81,0.48 2.57,3.2 0.31,2.29 2.55,1.71 3.57,1.87 1.63,2.89 1.11,5.74 -1.65,7.56 -1.38,3.05 3.73,1.85 4.64,4.57 0.65,0.86 -1.19,3.33 1.44,2.98 2.09,1.51 5.06,-0.93 6.83,0.87 2.12,0.24 3.87,3.37 5.76,0.52 2.61,-0.75 5.23,0.76 7.87,-0.16 3.45,0.68 4.18,-2.89 4.98,-5 2.46,-1.53 5.74,1.7 7.32,-1.15 3.52,-0.32 7.2,-1.11 10.47,-0.77 1.05,1.17 -2.26,1.94 0.29,2.63 2.66,0.88 1.49,-3.86 4.67,-2.23 0.32,-1.55 1.08,-6.07 4.26,-4.7 1.02,-3.55 0.54,-7.68 3.15,-10.63 1.2,-1.75 2.78,-3.33 2.02,-5.32 0.89,-2.49 1.94,-4.87 2.33,-7.52 -2.3,-1.25 2.95,-6.06 -1.28,-5.83 -1.14,3.4 -4.78,-0.25 -6.77,-0.21 -1.89,-1.86 -5.83,-3.95 -7.59,-1.47 -2.9,0.48 -5.51,-3.13 -2.87,-5.2 -1.31,-0.36 -3.53,1.25 -5.3,-0.11 -1.96,-0.38 -3.12,0.57 -3.07,-1.96 -1.12,-2.87 -4.12,0.14 -5.77,-2.2 -1.77,-0.71 -0.8,2.61 -3.03,1.75 -3.13,1.53 -6.89,1.32 -10.17,-0.06 -1.72,-2.25 -3.57,1.59 -5.08,-1.25 -0.8,-0.99 -3.72,-1.84 -2.9,0.37 -3.4,0.17 -6.97,-0.89 -10.18,-1.14 -0.72,-0.44 -1.37,-0.99 -2.14,-1.36 z","department-85":"m 161.28,265.2 c -0.97,1.7 -1.54,3.91 -3.7,2.64 -1.76,1.98 1.21,6.33 -3.05,6.68 -4.15,2.13 -1.3,-4.19 -2.86,-6.14 -3.81,-0.88 -3.43,4.2 -2.06,6.39 -1.18,1.59 2.88,3.89 -0.56,4.36 -2.8,1.01 -5.58,-1.25 -8.45,-1.27 -0.94,-1.21 -1.09,-3.22 -3.4,-2.64 -2.06,0.15 -1.35,-2.2 -3.49,-1.71 -2.48,-1.21 -5.24,-7.8 -7.15,-2.42 -0.59,3.85 -5.53,4.8 -4.91,9.21 0.37,4.17 5.72,4.87 7.16,8.67 2.67,2.58 4.99,5.43 6.65,8.8 0.87,1.89 0.24,6.13 2,6.75 0.16,-1.73 0.12,-2.45 1.07,-0.5 1.66,2.86 6.15,2.45 7.02,5.1 3.4,-0.42 6.93,0.3 7.04,4.36 1.27,2.81 4.49,-1.27 6.02,1.84 2.09,-0.13 3,3.11 4.96,3.02 -0.36,-3.97 4.41,-1.93 6.48,-3.3 1.71,-1.96 4.7,-2.5 6.81,-2.37 -1.17,1.68 -0.83,3.92 1.65,2.75 2.07,-0.36 4.04,-2.66 5.25,0.14 2.09,1.8 3.55,-0.97 5.61,-0.12 1.62,-1.38 3.3,-2.9 5.04,-3.72 0.18,-2.56 -3.47,-1.87 -3.87,-1.44 -0.63,-2.59 1.8,-5.29 -0.47,-7.7 0.94,-1.38 2.03,-1.54 1.08,-3.45 0.09,-2.1 -0.29,-4.13 -1.61,-5.22 0.65,-2.15 -1.16,-2.52 -0.79,-4.52 -1.57,-1.94 -3.3,-3.94 -1.89,-6.5 -1.72,-1.62 -5.39,-2.92 -5.22,-6.11 0.38,-2.29 -3.29,-2.9 -3.68,-5.31 -1.81,-2.01 -4.49,-1.74 -7.1,-1.32 -3.49,-1.03 -6.73,-2.66 -9.6,-4.96 z","department-79":"m 211.41,263.54 c -3.47,1 -7.46,-0.24 -10.55,2.01 -1.54,0.87 -3.61,1.5 -3.45,-0.55 -2.89,-0.11 -3.46,3 -4.1,4.64 -2.76,1.84 -6.3,1.53 -9.35,1.02 -2.77,-0.37 -6.01,2.62 -2.55,4.27 1.05,2.29 0.26,5.24 3.5,6.22 3.7,1.27 0.35,4.83 3.08,6.91 1.95,2.46 1.89,5.88 3.13,8.43 0.79,2.29 0.53,5.23 -0.6,6.69 2.08,1.92 -1.04,5.98 0.79,6.87 2.26,-2.05 4.86,2.6 1.35,3.21 -1.82,2.1 -4.84,2.03 -7.01,3.55 -1.92,3.7 2.7,4.91 3.24,8.13 1.44,0.37 2.62,0.88 2.81,2.1 3.32,-0.93 5.83,3.57 8.63,3.01 2.89,1.17 6.03,0.6 8.47,3.22 3.7,-0.54 3.87,6.56 7.56,4.57 1.73,-2.11 1.24,-5.98 4.87,-5.81 1.63,-2.21 4.23,-2.49 6.45,-1.63 1.55,-1.48 2.11,-4.78 -0.83,-4.33 -3.29,-1.46 -1.71,-5.49 -0.5,-7.4 1.75,-0.97 0.56,-7.43 -1.84,-3.75 -2.3,2.89 -5.28,-1.21 -4.22,-3.39 -2.48,-2.03 -1.19,-5.37 -2.68,-7.99 1.33,-2.02 1.71,-4.55 3.11,-6.42 -0.55,-0.92 -2.28,-2.13 -2.08,-2.45 -3.66,1.58 0.19,-4.05 1.24,-5.25 2.3,-2.33 -3.14,-3.07 -0.93,-5.56 1.44,-1.85 -3.47,-1.82 -0.33,-2.92 3.33,-0.16 0.56,-1.18 -0.24,-2.53 0.5,-2.54 0.1,-5.85 -1.91,-7.36 -1.96,-0.52 -0.38,-5.88 -4.15,-4.77 -2.43,-0.12 2.22,-3.17 -0.9,-2.74 z","department-17":"m 175.73,312.62 c -2.1,1.05 -4.89,0.98 -6.33,3.16 -2.59,0.12 1.24,4.72 -2.26,5.02 -2,0.79 -4.42,5.17 -2.11,6.01 2.93,0 2.49,3.17 4.17,4.84 0.72,1.37 3.67,5.65 0.03,4.87 -2.18,0.36 1.95,2.77 0.48,4.24 1.55,2.23 0.05,3.13 -1.55,3.46 -0.38,1.57 -2.23,1.63 -0.92,3.81 0.7,3.56 3.92,5.46 6.53,7.53 -3.66,-0.31 -5.1,-4.96 -7.98,-5.25 -3.89,-1.1 -3.52,4.91 -2.88,6.67 2.74,-1.46 4.76,2.94 7.48,3.54 3.34,1.31 3.69,5.42 7.19,6.15 4.09,3 7.55,7.17 8.5,12.27 0.26,3.76 5.67,2.29 7.12,1.56 -1.08,5.27 6.99,0.78 7.08,5.12 0.92,1.82 -0.24,5.87 1.93,6.53 3.38,-1.84 5.25,4.16 8.91,4.29 2.53,1.16 3.84,-3.72 5.99,-0.43 0.42,-1.35 1.41,-3.02 1.97,-3.79 -0.43,-1.67 1.72,-4.75 -1.44,-5.53 -1.82,-0.53 -4.59,0.36 -3.27,-2.54 -1.47,-1.11 -5.11,-3.27 -7.08,-1.29 -2.02,-1.16 -0.75,-3.34 0.78,-3.22 -1.02,-0.53 -4.64,-2.27 -1.19,-3.33 4.28,-0.66 -2.5,-4.27 0.56,-5.26 2.44,-2.46 -2.28,-2.77 -2.54,-4.29 2.17,-2.32 -2.75,-3.59 -3.55,-5.14 -2.87,0.92 -0.97,-2.62 0.33,-2.63 -2.65,-1.14 -0.44,-4.4 -1.57,-5.27 -2.89,0.77 -1.45,-2.34 0.53,-2.18 1.34,-1.34 4.68,-0.44 6.11,-2.14 2.35,-0.74 2.26,3.5 4.57,1.02 2.44,-0.29 1.26,-3.78 2.59,-5.17 -1.46,-1.93 -1.99,-4.68 1.15,-4.47 0.21,-2.43 -3.03,-4.09 -3.83,-6.1 -0.81,-1.69 -4.49,-0.9 -5.2,-3.54 -1.75,0.56 -3.25,0.45 -4.22,-0.82 -1.42,1.85 -1.72,-1.94 -2.91,-0.25 -3.3,-0.03 -3.97,-4.4 -7.72,-2.73 0.56,-2.08 -4.7,-2.08 -3.15,-4.59 -0.87,-1.66 -4.22,-2.08 -2.44,-4.29 -0.3,-2.54 -4.15,-5.59 -5.48,-2.93 -1.22,-0.57 -5.78,1.4 -3.85,-1.55 0.3,-0.71 0.63,-1.62 -0.55,-1.38 z m -24.48,7.33 c -2.5,0.03 -3.87,1.14 -1.7,3.09 3.95,0.17 7.19,2.31 10.9,3.68 3.89,-1.05 -3.64,-4.87 -5.82,-4.1 0.29,-2.41 -4.61,1.24 -3.83,-1.48 1.5,1.02 1.83,-1.02 0.46,-1.19 z m 4.27,13.72 c -0.7,1.54 2.03,3.7 0.87,5.86 3.02,2.81 6.53,5.8 7.08,10.16 2.32,-1.62 3.28,-6.49 0.08,-7.91 -0.51,-2.29 -0.47,-5.1 -3.54,-5.11 -1.46,-1 -2.65,-2.71 -4.49,-2.99 z","department-33":"m 170.37,365.5 c -2.88,2.39 -3.66,6.38 -3.67,9.99 -0.06,6.47 -0.57,12.93 -1.99,19.26 -0.93,8.17 -1.59,16.38 -2.58,24.55 0.15,2.18 -1.38,7.44 -0.06,8.1 -0.08,-3.31 1.98,-7.54 4.36,-8.96 1.97,1.72 7.34,5.74 3.76,7.49 -2.73,1.04 -6.38,-2.36 -6.38,2.52 -1.52,2.69 -2.74,7 -1.06,9.24 2.84,-0.63 5.96,-2.27 7.61,-3.75 2.03,1.26 5.7,0.92 3.77,4.43 -2.89,4.65 3.5,-0.33 5.45,2.23 3.86,1.51 7.87,-3.74 11.26,-0.84 -1.42,4.09 4.44,3.2 5.19,6.56 1.94,1.37 4.07,0.77 4.89,3.31 2.18,0.86 -1.21,6.6 3.33,5.68 2.58,1.12 6.14,0.42 4.75,-3.03 1.75,-3.72 3.17,3 5.62,1.04 3.5,-1.1 3.84,-4.91 0.95,-7.06 1.78,-1.99 6.6,-1.58 3.43,-5.47 1.27,-2.35 -1.77,-5.16 1.09,-7.2 -1.95,-2.11 4.08,0.01 3.42,-3.48 2.15,-0.49 2.85,-2.17 2.61,-3.54 1.82,1.01 2.01,-3.15 -0.54,-1.86 -1.24,-1.31 -2.01,-2.64 0.2,-3.47 -0.33,-1.44 2,-1.21 2.56,-1.67 0.96,3.46 0.77,-3.24 2.88,-0.59 3.44,-0.12 -2.08,-5.38 2.19,-5.6 -0.3,-3.57 -4.29,-0.98 -5.16,1.24 -2.94,-0.94 -4.42,-0.02 -6.92,-0.52 -0.48,-1.95 -5.24,-0.86 -1.96,-2.84 3,-2.61 -1.26,-5.76 1.74,-8.21 0.18,-2.65 3.61,-7.86 -1.4,-8.03 -1.8,0.66 -3.02,1.85 -4.53,-0.13 -2.79,3.68 -7.23,0.65 -9.47,-1.85 -1.02,0.81 -2.89,-3.34 -3.74,-0.02 -1.83,-2.9 -1.15,-5.89 -1.94,-8.56 -2.49,-1.97 -7.58,0.6 -7.16,-4.13 -0.99,3.32 -7.86,-1.7 -5.65,3.47 1.12,5.25 -0.04,11.74 4.13,15.79 1.6,0.97 5.46,1.4 5.09,3.59 -1.14,-1.76 -5.95,-2.2 -2.42,0.16 0.89,1.86 0.32,4.86 0.46,6.96 -0.86,-3.57 -0.31,-7.65 -4.4,-9.5 -4,-3.65 -3.81,-9.3 -4.62,-14.2 -0.83,-4.14 -2.82,-8.05 -6.26,-10.61 -1.82,-3.68 -6.55,-3.9 -8.36,-7.63 -0.3,-0.84 1.03,-2.73 -0.47,-2.88 z","department-40":"m 169.77,433.93 c -1.39,4.09 -9.03,1.92 -8.11,7.38 -1.02,7.04 -1.81,14.11 -3.21,21.09 -1.27,6.3 -2.02,12.7 -3.64,18.93 -1,6.23 -2.25,12.44 -3.8,18.55 2.58,-1.5 3.77,4.05 6.97,1.91 3.34,1.32 5.68,-3.95 8.44,-2.39 2.07,1.33 0.83,1.91 -0.48,2.62 2.25,0.71 3.66,-2.53 5.72,-0.83 1.43,1.01 3.09,-0.31 2.14,-1.78 2.65,0.58 4.62,-1.18 7.1,-0.71 0.89,-0.91 2.56,-0.97 3.4,-1.93 1.42,1.18 2.14,3.21 3.39,1.18 1.9,-0.75 2.12,-1.21 2.41,0.33 1.62,2.42 3.07,-1.23 4.2,0.55 1.35,-0.65 5.1,-4.97 5.14,-2 -2.25,3.45 3.32,-1.25 4.51,1.48 1.42,-0.66 5.29,-2.61 3.41,-4.06 -2.62,-1.1 2.2,-2.69 0.51,-4.53 -0.4,-2.09 3.75,-3.09 1.72,-4.6 0.25,-1.62 -1.17,-3.73 0.82,-4.32 -0.1,-1.59 -0.15,-2.99 -0.15,-4.15 -3.84,-1.04 1.14,-3.46 2.82,-3.81 1.4,0.08 1.6,0.86 2.46,-0.49 1.85,-0.5 2.29,-3.87 4,-0.74 -0.03,1.42 -1.08,2.56 1.12,3.35 3.85,1.54 0.42,-3.68 2.06,-5.19 -1.31,-3.01 1.52,-6.01 2.73,-8.67 -3.45,-0.68 -6.76,-2.36 -10.44,-2.46 -3.14,0.72 -0.38,-5.12 -3.37,-6.17 -1.68,-2.94 -3.31,0.33 -2.44,2.4 -1.45,2.03 -6.15,0.75 -7.76,-0.49 0.06,-2.43 0.64,-4.45 -1.66,-5.74 -0.75,-1.94 -4.67,-0.97 -4.92,-3.99 -2.01,-1.55 -5.69,-1.4 -4.21,-4.64 -1.24,-2.31 -3.79,0.2 -5.94,-0.34 -3.05,3.71 -7.01,-1.41 -10.49,1 -4.03,1.42 2.63,-4.52 -0.65,-5.54 -1.61,0.68 -2.43,-1.07 -3.83,-1.21 z","department-64":"m 211.2,495.72 c -1.9,1.07 -4.71,-0.23 -5.99,2.39 -1.98,0.52 -4.11,-1.44 -6.18,0.45 -1.47,-0.65 2.04,-3.79 -1.1,-2.24 -1.84,1.1 -3.29,3.13 -5.1,2.48 -1.96,1.45 -5,-2.73 -6.29,0.37 -1.3,-1.42 -2.42,-3.2 -3.7,-1.06 -1.86,0.3 -2.9,1.44 -5.06,0.79 -0.86,1.97 -4.19,-0.71 -3.64,2.4 -2.25,0.68 -5.49,-1.09 -7.26,1.32 -3.27,-0.97 2.34,-1.26 -0.09,-2.53 -2.18,-3.25 -4.64,2.8 -7.39,1.71 -2.74,0.92 -5.67,0.14 -7,-2.21 -3.51,1.11 -4.76,4.93 -7.06,7.37 -1.86,2.09 -5.86,0.94 -7.14,3.17 0.39,1.82 2.63,2.08 2.45,4.31 2.16,-0.79 5.47,-0.83 4.92,2.37 1.44,2.55 2.98,-0.5 3.6,-1.51 2.37,0.53 4.98,1.17 7.12,1.91 1.21,3.15 -0.34,6.66 -1.84,9.39 -3.7,1.82 -0.21,5.81 2.82,5.62 2.52,-0.18 0.25,-6.64 4.3,-5.38 -2.77,2.45 0.66,4.77 3.15,4.41 2.76,1.62 4.75,2.53 7.73,3.53 2.51,0.74 4.11,3.68 7.28,2.92 2.81,1.52 7.35,-3.02 7.16,2.26 -1.02,2.96 3.25,2.28 4.34,4.46 1.78,1.41 3.01,6.8 5.13,3.41 1.29,-2.94 5.1,2.52 7.14,-0.85 1.53,-1.11 3.1,-1.71 2.2,-4.29 -2.14,-2.89 3.19,-3.06 1.08,-6.08 -0.73,-2.21 1.82,-2.45 1.78,-4.48 3.8,1.19 0.42,-4.25 3.06,-5 2.06,-1.26 1.63,-4.46 4.21,-4.01 0.61,-1.33 0.15,-2.87 1.47,-3.33 2.68,-2.17 -1.51,-4.94 1.51,-6.75 3.94,0.18 -1.17,-3.74 0.89,-5.91 -0.71,-3.82 -1.88,1.82 -3.23,0.54 -0.52,-1.85 0.16,-3.46 1.54,-4.09 -0.91,-1.78 -0.41,-4.39 -2.84,-4.92 0.66,-3.73 -2.6,-1.04 -3.99,-2.95 z","department-65":"m 216.99,494.91 c -1.84,0.25 -2.8,4.03 -0.53,4.11 1.88,1.3 0.29,3.67 2.23,4.92 -1.93,0.09 -2.67,2 -1.81,3.38 0.3,1.54 2.42,-3.88 2.78,-0.62 0.04,1.77 -0.37,4.08 1.04,5.66 -0.74,1.52 -3.19,0.65 -3.23,3.06 1.46,1.22 1.22,2.8 0.07,4.31 -0.99,0.9 -1.52,1.78 -1.24,3.38 -1.18,1.4 -2.47,-0.59 -2.75,1.65 -0.31,2.34 -3.5,2.62 -2.83,5.08 -0.23,1.21 0.77,2.46 -1.27,2.75 -1.74,-1.03 -0.67,2.29 -2.47,2.46 -0.22,2.15 1.18,4.49 -1.44,5.52 0.13,2.35 0.39,5.58 3.33,6.26 1.51,1 2.85,2.84 4.69,1.37 -0.57,1.85 1.47,3.6 2.41,4.96 1.56,0.38 2.66,3.5 4.75,1.97 1.8,-0.64 3.96,-1.24 5.98,-1.71 2.21,-1.74 5.92,-0.18 6.53,2.47 2.16,1.45 2.84,-4.54 5.11,-1.48 1.05,2.42 6.1,0.26 2.72,-1.38 -0.47,-1.86 -0.16,-4.75 -0.08,-7.05 -0.01,-1.71 0.82,-4 2.68,-2.21 3.39,1.23 2.02,-4.26 4.56,-5.2 1.78,-1.39 -1.78,-2.01 -0.27,-3.71 -0.3,-0.99 -0.83,-2.98 -1.65,-1.25 -1.08,0.21 -3.2,2.39 -2.44,-0.12 -0.09,-1.57 2.08,-1.37 1.06,-3.26 -1.4,-1.24 -3.29,-2.47 -4.49,-3.12 -2.02,-2.1 3.51,-3.46 2.42,-5.76 0.93,-0.47 4.3,-0.56 1.96,-2.04 0.32,-1.95 5.47,-3.77 2.06,-5.05 -2.3,-1.28 -4.63,-0.69 -6.84,-1.39 -2.1,2.1 -2.26,-2.3 -4.28,-0.93 -1.76,1.3 -0.81,-1.74 -2.47,-1.53 -0.55,-2.46 -4.01,1.85 -5.67,-0.21 0.62,-1.85 -3.42,-2.4 -1.35,-4.21 1.51,-1.16 -1.9,-2.45 -1.19,-4.22 -1.14,-1.21 -3.48,-0.65 -4.39,-2.66 -2.13,-0.62 -0.57,-4.95 -3.7,-4.22 z","department-32":"m 246.37,463.78 c -1.87,2.87 -5.69,0.08 -7.22,3.28 -1.88,1.49 -4.2,0.57 -5.81,2.33 -2.39,-0.54 -4.55,-3.39 -6.11,0.1 -0.16,1.89 -1.71,0.96 -1.7,-0.3 -2.5,0.36 -4.05,2.53 -2.63,4.96 0.01,3.29 -6.18,-0.5 -3.3,-1.85 -0.54,-2.21 -2.13,-1.97 -3.07,-0.29 -1.34,0.89 -1.71,2.04 -3.36,1.03 -1.68,0.34 -3.48,1.37 -4.38,2.76 1.22,0.28 3.13,1.71 1.37,2.42 1.01,1.6 0.51,3.2 -0.73,3.83 -0.07,2.44 2.42,4.6 -0.76,5.86 -1.18,1.63 0.66,4.33 -1.94,5.01 -0.42,1.69 2.27,1.13 1.62,3.13 2.18,-0.55 3.63,0.28 6.01,0.22 1.55,-0.54 3.47,-2.96 4.82,-0.45 0.15,2.77 2.68,4.35 4.51,5.25 2.48,-0.68 1.19,3.49 3.25,4.21 -0.48,0.88 -2.09,2.3 -0,3.14 1.28,0.27 0.25,2.29 2,2.07 2.01,0.08 3.81,-1.91 5.13,-0.1 0.83,0.3 0.34,2.73 2.13,1.32 1.65,-1.02 1.99,3.25 3.69,0.87 2.91,0.44 5.72,1.25 8.79,1.59 2.28,-1 2.83,-4 4.96,-4.85 -0.08,-1.97 1.2,-2.17 2.72,-1.09 2.04,-2.03 5.8,0.4 7.36,1.79 1.25,2.38 1.53,-1.44 1.56,-2.27 1.63,-0.08 0.78,-2.07 1.64,-3.14 -1.95,-1.43 1.97,-2.65 1.07,-4.39 -0.66,-1.2 0.97,-1.78 2.08,-0.85 0.33,-1.45 2.39,-1.29 3.2,-2.18 2.33,0.7 0.78,-3.33 -0.81,-2.33 -0.96,-0.86 -0.26,-2.97 -2.3,-2.06 -1.55,-0.33 0.33,-2.07 -1.76,-1.78 -1.88,-0.75 0.92,-3.18 -2.09,-3.14 -1.61,-1.44 -2.45,-4.37 -4.36,-5.15 -3.35,1.69 1.17,-3.08 -1.5,-3.24 0.76,-1.49 -1.03,-2.76 -0.22,-4.22 -1.16,-1.24 -2.92,-1.03 -4.29,-1.63 -2.35,1.17 -1.75,-1.94 -0.23,-2.55 1.5,-1.23 1.3,-2.73 1.39,-4.08 3.53,-0.83 -1.38,-2.38 -2.33,-0.22 -1.18,0.08 -0.41,-3.33 -2.53,-1.63 -1.28,0.69 -2.36,3.52 -3.35,0.81 -0.67,-0.82 -1.46,-1.92 -2.53,-2.18 z","department-47":"m 230.07,418.5 c -0.81,0.77 -0.9,3.82 -1.83,1.38 -1.82,-0.02 -3.21,2.14 -3.88,3.3 1.04,0.9 2.08,1.66 3.3,1.8 -0.04,1.51 -1.7,2.55 -2.03,4.05 -1.55,0.64 -2.55,2.47 -3.24,3.29 -3.01,0.59 -4.44,4.14 -2.78,6.75 -1.33,1.76 2.46,5.68 -1.08,5.69 -2.16,-0.16 -3.67,2.4 -1.25,3.45 1.89,2.62 -1.53,5.28 -3.79,5.58 -0.01,1.94 -0.52,5.85 2.43,4.84 2.83,-0.58 4.82,1.94 7.53,1.7 1.96,-0.36 2.73,1.43 1.07,2.55 -0.51,2.08 -4.01,5.95 -0.67,6.93 1.39,-0.27 1.71,-1.54 2.32,0.34 1.42,0.2 1.56,-3.84 3.99,-2.43 2.21,2.53 4.49,0.26 7.07,0 2.57,-0.7 3.69,-3.71 6.77,-2.71 1.7,-0.39 3.39,-2.44 4.44,0.28 1.31,3.29 3.19,-0.23 4.88,-1.16 0.36,-1.62 1.13,-2.69 2.56,-3.54 -1.25,-2.97 5.51,1.65 4.18,-2.52 -0.96,-0.29 -2.25,-1.68 -0.22,-2.14 2.35,-0.03 2.05,-4.03 2.4,-5.78 -1.23,-1.07 -4.15,-1.71 -2.2,-3.71 -0.38,-1.68 1.32,-4.27 2.55,-1.77 1.53,0.85 4.19,-0.22 5.25,-0.41 0.48,-2.12 -0.42,-3.89 -1.57,-5.33 0.06,-1.97 -1.67,-5.18 -1.15,-6.13 2.23,0.07 5.01,-2.93 1.78,-3.93 -1.73,-2.48 -5.12,-2.94 -6.92,-0.28 -2.08,2.1 -3.89,-1.44 -2.14,-3.04 0.26,-1.39 -1.37,-4.01 -2.62,-1.92 -2.44,1.01 -5.83,0.37 -7,-0.95 -2.41,-0.18 -2.86,2.94 -5.17,1.62 -2.31,0.8 -5.39,2.91 -7.69,0.67 0.42,-2.17 -0.14,-6.16 -2.93,-6.02 -0.81,0.25 -1.86,0.44 -2.38,-0.43 z","department-31":"m 290.02,474.31 c -1.06,1.38 -2.08,2.2 -3.14,1.27 -0.58,4.46 -6.27,-1.79 -5.29,3.06 -1.9,-0.93 -3.5,1.28 -0.64,0.98 2.48,2.1 -3.77,2.63 -4.93,4.19 -2.22,1.21 -0.1,-1.87 -2.62,-1.46 -1.27,-3.41 -2.92,1.42 -4.53,-1.01 -1.38,1.57 -7.9,0.39 -4.49,3.87 1.19,2.36 4.47,2.68 3.64,5.37 2.67,0.06 0.55,2.9 3.52,1.95 0.58,0.93 0.66,2.79 2.12,2.09 2.71,3.12 -2.63,3.32 -4.16,4.93 -1.1,-1.53 -1.56,1.15 -1.34,1.61 0.44,1.44 -2.97,2.2 -1.16,3.88 -0.09,2.59 -2.4,2.6 -1.68,5.18 -1.9,1.75 -3.41,-2.85 -6.25,-2.48 -1.97,-0.25 -2.83,1.49 -4.6,-0.2 -0.73,3 -3.35,2.98 -4.53,6.1 -1.7,0.77 -1.89,0.75 -1.75,2.05 -1.29,1.74 -3.85,2.87 -2.67,4.97 -1.64,0.77 -2.86,0.43 -2.8,2.37 -2.19,1.55 -3.92,4.34 -0.36,4.93 1.97,0.94 4.52,4.07 1.77,4.79 -1.3,4.88 3.7,-2.96 3.72,1.66 0.49,1.32 -0.65,2.24 1.07,3.28 -2.79,1.64 -2.18,9.05 -6.68,5.6 -1.73,2.41 -1.93,7.77 -0.38,10.18 1.27,3.59 5.97,0.17 8.88,1.83 2.51,-1.92 -1.95,-5.09 0.25,-7.4 -0.76,-3.42 2.9,-4.02 4.93,-2.32 1.62,-0.12 4.31,1.32 2.68,-1.53 -0.93,-1.79 -1.4,-4.59 1.53,-4.74 -1.15,-3.31 5.98,-1.18 5.47,-5.37 -2.22,-1.5 -0.83,-5.26 0.13,-6.33 2.45,2.03 0.85,-3.56 3.56,-1.87 1.66,-2.07 2.75,0.56 4.53,0.43 1.14,1.96 2.46,4.41 4.04,1.37 2.25,-2.5 -5.64,-2.56 -1.56,-4.98 1.91,-0.32 6.85,-0.7 5.84,-3.41 -3.62,0.11 -4.71,-4.72 -0.54,-4.92 1.7,1.78 3.23,3.99 3.46,6.31 3.43,1.14 2.88,-2.05 2.74,-4.44 1.24,-0.74 2.86,2.59 3.98,0.85 2.05,0.25 3.31,3.93 3.51,0.42 1.87,-1.02 3.37,-2.54 3.2,-4.86 1.65,-0.79 5.11,0.92 3.61,-2.58 0.23,-2.56 3.55,-6.11 4.18,-1.52 0.52,0.87 1.91,-3.3 3.78,-0.91 2.24,0.69 2.87,-1.22 1.62,-2.8 0.91,-0.95 2.23,-3.84 -0.03,-2.5 -1.07,2.43 -6.09,-0.82 -6.91,-3.1 -0.98,-3.43 -6.75,-3 -7.98,-6.29 2.91,-1.68 0.76,-3.48 -1.25,-4.16 3.26,-0.53 0.29,-2.11 -0.5,-3.7 0.64,-3.06 -3.23,-3.07 -3.17,-5.79 -1.79,-0.87 -1.06,-3.76 -1.85,-4.82 z","department-09":"m 281,514.26 c -1.93,0.45 -2.81,3.42 -0.61,3.74 0.47,1.06 3.65,0.84 1.91,2.92 -1.78,0.48 -2.86,1.94 -5,1.65 -1.94,-0.47 -2.72,3.01 -0.2,2.59 2.24,0.58 1.95,2.32 0.27,3.21 -1.24,2.42 -2.69,-0.31 -3.19,-1.7 -1.18,-0.65 -2.35,-0.74 -3.49,-1.68 -1.21,1.5 -3.6,0.41 -3.5,3.08 -0.69,0.69 -2.14,-1.23 -2.07,0.85 0.78,1.23 -1.59,1.79 -0.08,3.25 -1.18,1.45 2.43,1.96 0.17,3.11 -0.33,2.96 -5.7,1.12 -4.88,4.08 -1,0.73 -3.51,0.76 -1.93,2.67 -0.14,2.58 1.36,4.98 3.85,6.04 1.3,1.43 2.44,-0.82 3.84,0.84 2.2,0.69 5.28,-0.08 6.42,2.49 -0.04,2.84 2.56,2.9 4.54,2 2.27,0.7 5.31,-0.62 6.28,1.97 2.47,1.03 1.46,6.42 4.53,5.84 0.33,-1.46 -0.02,-3.65 2.25,-2.77 2.58,-1.67 3.67,2.32 6.42,1.51 1.59,0.01 4.16,0.09 3.44,2.23 1.96,0.82 4.9,1.1 6.14,-0.77 0.17,-1.61 2.36,0.02 3.34,-1.21 1.09,-1.15 1.09,-3.64 3.34,-2.57 1.75,-1.21 4.32,-0.24 5.87,-0.95 0.4,-2.48 -3.41,-3.46 -4.42,-5.35 -2.08,0.81 -4.89,2.28 -6.69,-0.08 -1.29,-0.72 0.48,-2.24 -1.27,-3.27 -1.88,-0.45 -2.07,-2.21 -0.54,-3.2 2.84,0.11 5.65,-1.41 4.42,-4.62 -1.62,-0.54 -3.31,-2.15 -0.6,-2.68 1.86,-1.01 -0.44,-3.29 0.61,-4.77 -1.01,-0.87 -2.68,-1.46 -1.18,-2.69 -0.07,-1.43 -0.47,-4.45 -2.45,-3.41 -0.92,1.43 -0.96,-2.2 -2.67,-1.24 -2.3,-0.25 -5.38,-1.98 -6.1,-3.66 0.91,-1.6 -0.72,-3.91 -1.67,-5.05 -0.92,0.6 -1.38,4.39 -1.98,1.49 -1.2,-0.67 -2.47,-1.05 -3.16,-0.2 -0.47,-1.65 -2.24,-0.25 -2.45,-1.94 -1.91,1 1.34,4.52 -1.22,4.39 -1.46,2.03 -3.74,-0.79 -2.75,-2.52 -1.34,-0.95 -2.09,-3.13 -3.54,-3.63 z","department-11":"m 322.74,505.07 c -2.05,0.87 -0.82,6.47 -3.43,3.37 -1.24,-1.83 -5.19,2.71 -5.61,-1.17 -0.96,-1.29 -3.24,1.91 -4.87,-0.09 -1.63,-0.8 -2.35,3.52 -2.64,0.63 -0.96,-2.44 -1.93,-1.82 -2.84,-0.31 -0.91,1.07 -1.52,2.84 -0.93,4.7 -1.36,0.65 -4.52,-0.56 -3.73,2 -2.59,1.87 -0.87,4.71 -0.49,7.11 -1.27,1.72 2.24,1.99 3.14,3.2 1.19,0.53 2.27,1.21 2.96,0.05 1.12,0.9 1.35,2.64 3.05,1.69 2.12,0.9 2.09,4.11 1.18,5.21 3.13,0.75 0.58,4.42 2.61,6.09 -0.39,0.99 -3.64,-0.55 -2.72,1.47 3.15,0.22 2.69,5.73 -0.43,5.57 -2.23,-0.56 -4.71,2.43 -1.69,3.29 1.21,1.07 1.25,2.2 0.94,3.14 2.17,2.52 4.98,0.67 7.49,0.33 1.51,2.48 4.82,3.48 4.44,6.58 1.77,-0.41 3.17,-3.16 4.49,-3.39 3.31,0.6 4.11,-3.13 3.04,-5.57 -1.83,-2.22 -0.3,-4.53 2.45,-3.77 2.55,1.09 4.79,-0.72 7.38,0.01 2.84,0.15 6.37,1.82 8.78,-0.17 0.65,-3.39 5.24,-6.04 7.54,-2.78 1.85,0.63 5.78,4.21 6.08,0.38 -0.45,-2.41 3.52,0.65 2.08,-2.31 -2.01,-0.09 -2.51,-4.47 -0.81,-3.38 -1.64,2.12 0.92,2.66 1.07,0.34 -0.46,-2.15 2.38,-4.6 1.05,-6.15 -2.36,0.27 -1.35,-5.67 0.64,-3.13 -2.54,0.73 1.01,4.03 1.12,0.84 1.32,-2.4 3.72,-4.96 4.13,-7.43 -1.48,-1.18 -2.13,-3.67 -4.25,-2.51 -1.21,-1.56 -3.82,-0.43 -5.13,-2.43 -2.87,1.08 -0.98,-4.2 -4.12,-2.08 -1.35,-0.41 -2.91,-0.78 -3.72,-1.82 -0.39,1.7 -3.42,0.2 -2.88,2.31 -1.03,1.88 -2.16,4.69 -4.29,2.05 -1.21,-0.21 -0.6,-4.63 -2.32,-1.66 -2.18,1.62 -3.12,-0.12 -3.87,-2.12 -3.09,-0.03 -1.41,-4.42 0.31,-5.1 -2.19,-1.27 -5.18,-2.28 -7.77,-1.42 -1.98,2 -4.51,-1.63 -6.72,-1.15 -0.21,-0.07 -0.4,-0.62 -0.72,-0.42 z","department-34":"m 390.74,470.95 c -2.99,-0.26 -2.82,5.22 -4.91,4.05 -0.85,-0.82 -3.55,2.9 -1.7,3.78 -2.23,1.02 -3.63,-1.19 -4.2,-2.93 -1.16,0.9 -4.89,3.4 -3.25,0.24 -0.72,-2.79 -3.95,-1 -5.3,0 -2.69,-1.07 -4.43,1.99 -3.3,4.01 -2.19,2.21 -5.5,0.8 -7.8,-0.28 -1.78,1.11 -0.38,3.61 -0.42,5.05 -1.55,1.49 1.67,5.37 -2.24,4.09 -1.98,-1.46 -4.85,0.46 -4.95,2.6 -2.71,0.38 -5.15,2.58 -7.61,2.47 -1.2,-2.9 -5.65,-2.66 -5.41,0.83 -0.2,2.13 -0.02,4.29 2.09,5.91 -1.23,1.35 0.72,3.85 -1.77,4.6 -0.84,1.05 -3.22,1.42 -1.8,2.86 -2.1,0.55 -3.27,4.78 -0.38,4.9 0.41,3.09 3.29,3.1 4.71,0.7 1.12,1.12 0.35,3.34 2.55,3.76 2.97,1.15 1.66,-5.18 5.05,-4.27 1.09,-0.26 0.38,-2.58 1.62,-0.55 1.21,1.33 3.32,1.66 5.28,1.1 -0.81,3.2 2.64,2.34 4.33,4 1.73,-0.69 2.59,1.52 4.38,0.6 1.39,1.92 3.62,4.56 5.52,1.34 2.58,-2.15 5.39,-4.64 8.99,-3.22 1.68,-2.14 3.28,-4.7 5.33,-6.66 2.9,-0.94 5.12,-2.93 7.63,-4.62 1.32,-0.52 2.38,-2.93 0.36,-1.17 -0.86,0.97 -3.9,2.82 -4.09,1.95 2.86,-0.54 3.94,-3.18 5.35,-4.98 2.22,-0.89 3.15,-3.57 5.97,-3.69 2.76,-1.69 5.46,-2.2 8.14,-1.32 3.13,-2.28 2.15,-5.6 0.6,-8.52 -0.42,-1.85 -2.64,-1.51 -3.41,-3.24 -1.72,-0.64 -2.58,-4.02 -5.12,-2.47 -0.36,-1.17 1.06,-3.05 -1.22,-3.23 -1.16,-1.21 -1.48,-2.47 -3.51,-1.47 -2.48,1.54 -3.44,-1.7 -1.82,-3.25 0.15,-1.49 -1.98,-1.29 -2.11,-2.79 -0.5,-0.22 -1.04,-0.13 -1.56,-0.19 z", -"department-81":"m 317.26,455.8 c -1.38,0.45 -1.96,1.61 -3.59,0.76 -0.3,1.95 -3.52,3.22 -5.56,2.27 -1.35,-1.6 -1.97,-0.02 -0.95,1.04 -0.95,0.36 -4.67,-1.27 -3.47,1.46 -0.16,1.66 -2.33,-1.92 -2.18,0.76 -1.1,0.98 -2.79,-1.57 -4.48,-0.74 -2.96,-0.67 -1.32,3.31 0.16,3.83 0.79,1.92 -1.89,3.01 -2.42,4.25 -1.32,0.93 -1.16,3.17 -3.54,1.88 -3.23,0.63 2.44,1.72 -0.33,3.16 -1.29,2.54 1.59,4.57 1.92,6.82 3.43,0.3 1.18,4.78 4.33,5.68 1.56,1.28 -3.01,2.06 -0.13,2.25 2.4,0.02 1.46,2.84 -0.02,3.51 0.41,1.89 3.59,2.46 5.14,3.73 3.27,0.27 2.72,5.06 6.14,5.64 1.57,0.82 3.54,1.72 3.47,-0.75 2.28,-0.44 1.4,2 0.21,3 0.06,1.82 2.22,2.93 2.93,4.31 2.14,0.3 3.89,-2.52 5.16,0.35 2.18,0.85 0.37,-3.47 2.64,-4.11 1.88,0.14 4.42,2.05 6.83,2.16 2.71,-2.86 6.35,1.58 9.11,-0.98 1.2,-0.64 2.07,-1.84 2.78,-2.36 -0.59,-1.87 0.29,-4.05 -1.8,-5.38 -0.4,-2.17 -0.06,-5.25 1.22,-6.85 1.68,0.37 3.78,1.08 4.87,2.68 2.13,-1.79 6.04,-1.49 7.35,-3.74 0.82,-2 0.39,-5.04 -2.37,-4.51 -1.51,-1.26 -3.19,-1.55 -4.19,0.39 -2.37,0.97 -5.11,-0.89 -6.55,-2.85 -1.52,-2.15 -3.76,-4.35 -2.85,-6.85 -1.52,-0.96 -0.28,-3.74 -2.85,-4.01 -0.47,-0.84 1.76,-2.39 -0.4,-3.07 -0.29,-2.52 -2.16,-4.07 -4.11,-4.88 -0.57,-2.53 -3.81,-3.32 -5.31,-4.22 -0.15,-2.48 -4.32,0.72 -4.86,-1.12 1.44,0.14 3.17,-1.78 0.74,-1.46 -0.91,0.39 -2.23,-1.71 -3,-2.06 z","department-82":"m 270.52,443.01 c -2.14,1.16 -4.19,2.19 -6.63,2.16 -1.8,1.76 -1.62,-2.78 -3.54,-0.83 0.31,1.77 -1.92,4.88 1.19,4.85 2.39,1.55 0.09,4.21 -0.3,6.31 -0.44,1.21 -4,0.94 -1.6,2.01 1.97,0.84 -0.06,4.23 -1.88,2.4 -1.71,-1.22 -1.76,0.34 -2.14,1.6 -2.88,-0.32 -2.21,4.49 -0.81,4.92 0.76,-1.3 4.97,-1.27 3.43,0.36 -1.84,1.04 -0.66,3.8 -2.94,4.81 -1.25,0.84 -0.68,2.87 0.84,1.84 1.82,0.52 5.75,1.1 3.97,3.56 1.04,0.67 0.69,2.25 0.98,2.38 1.77,0.78 -1.98,4.07 1.01,3.39 2.26,-0.43 4.92,-0.42 6.74,-1.49 1.27,0.58 2.39,0.31 3.28,-0.35 1.56,0.75 2.53,2.41 3.56,2.88 1.74,-0.62 2.22,-2.04 4.12,-2 1.89,-0.5 1.91,-2.44 -0.22,-2.07 -1.95,-1.13 1.52,-1.46 1.74,-1.49 -0.38,-2.02 1.51,-2.5 2.7,-1.14 2.06,1 2.76,-3.06 4.11,-1.34 0.99,-1.05 2.54,-1.76 3.38,-2.23 -0.31,-0.89 -2.82,-2.03 -0.52,-2.27 3.19,1.02 3.39,-3.02 5.79,-4.18 1.52,-1.98 -2.9,-3.42 -1.35,-5.63 1.94,-1.07 4.17,0.24 5.66,0.61 0.71,-1.21 1.03,-1.65 2.08,-0.63 0.24,-1.33 0.21,-2.59 2.09,-1.85 1.1,0.24 2.24,0.41 1.15,-0.79 0.51,-1.8 4.19,2 3.66,-0.96 -0.31,-2.1 -2.39,0.61 -2.47,-1.31 -3.3,-1.19 0.65,-3.45 1.77,-4.89 0.21,-2.45 -4.44,-0.16 -4.38,-2.98 0.49,-1.88 -1.6,-1.91 -2.4,-1.54 -1.21,-0.58 -1.91,1.84 -3.15,0.41 -2.28,-0.21 -4.04,4.15 -5.85,2.74 -0.79,-2.47 -3.62,0.05 -1.56,1.51 0.31,2.35 -3.95,2.36 -3.07,-0.25 -2.24,-2.68 -3.51,1.69 -5.86,2.39 -1.45,2.53 -2.73,-0.71 -4.63,-0.48 -0.83,-1.02 1.91,-4.61 -0.86,-3.31 -1.97,2.14 -4.17,-0.81 -5.73,-2.04 -1.54,-0.03 -2.07,-2.27 -2.71,-3.05 0.48,-0.77 3.85,-1.24 1.34,-2.04 z","department-12":"m 344.82,407.22 c -2.14,2.24 -4.92,3.53 -5.91,6.44 -0.2,3.05 -2.88,4.6 -2.81,7.85 -2.78,1.77 -2.83,6.44 -7.03,4.76 -2.85,0.81 -3.66,-2.92 -6.7,-0.63 -2.79,-0.18 -0.5,4.84 -3.68,4.44 -1,2.09 -4.35,0.18 -4.99,0.68 -2.27,1.36 -4.93,3.35 -6.47,5.56 -0.5,0.74 -1.33,-2.39 -1.72,0.49 -3.55,0.2 0.23,4.71 0.28,6.73 2.91,2.12 -2.27,3.27 -0.47,5.85 1.39,1.46 5.91,0.06 3.8,3.53 -3.1,-0.35 -2.94,5.1 0.37,3.8 0.84,2.24 2.93,2.1 3.97,0.28 0.64,-0.72 3.02,-0.92 4.38,-1.29 0.38,2.53 5.59,1.47 2.9,3.68 1.7,0.61 3.86,-0.93 4.36,1.52 3.19,-0.21 4.33,4.36 7.18,4.97 1.07,2.25 3.3,4.6 2.21,6.63 2.23,0.9 1.85,3.49 2.9,4.9 -1.38,2.72 2.8,5.25 4.08,7.58 2.19,1.85 5.01,1.88 6.77,-0.28 2.08,1.32 5.71,0.5 5.44,3.99 1.27,0.35 3.33,-1.02 4.93,0.31 1.97,-0.43 -0.03,-3.71 1.21,-5.08 -2.26,-3.18 1.08,-5.37 3.72,-2.96 2.82,0.94 5.31,-0.91 4.29,-3.64 1.04,-3.15 6.02,0.38 5.11,-4.28 0.93,-2.39 7.18,-5.33 2.04,-7.25 -1.51,-0.47 -2.97,-0.34 -3.42,-2.06 -1.73,1.9 -3.93,-2.51 -0.51,-1.95 0.48,-1.6 1.14,-3.68 2.65,-4.73 -0.68,-4.43 -9.42,2.3 -6.63,-3.08 -1.18,-1.25 -3.15,-1.32 -3.65,-2.81 -2.6,0.85 1.8,-4.01 -0.75,-5.21 -0.72,-3.41 2.21,-7.15 -2.14,-9.54 -0.76,-2.6 0.83,-5.86 -2.52,-7.49 -2.49,-2.83 -5.19,-5.99 -4.63,-9.9 -1,-0.3 1.62,-2.72 -0.79,-2.1 -2.92,-0.77 -0.83,-7.54 -5.15,-5.36 -2.76,2.56 0.68,-4.65 -2.57,-4.34 z","department-46":"m 289.52,399.9 c -1.93,0.63 -3.22,2.08 -5.19,2.51 -0.55,2.48 1.91,5.04 0.2,6.77 1.53,1.17 0.68,2.13 -0.64,2.71 -0.49,1.39 -2.82,1.08 -2.03,3.22 -2.04,0.31 -3.93,1.87 -1.84,3.73 -0.63,1.48 -1.5,2.57 -2.96,3.19 -1.15,2.55 -6.2,0.92 -4.86,4.75 -0.81,1.54 -2.94,2.2 -2.41,4.25 -2.21,-0.14 -3.42,2.82 -5.02,1.78 1.06,2.16 1.42,4.31 1.76,6.68 1.42,0.87 1.66,2.27 1.65,3.98 1.08,0.06 4.12,-1.76 2.93,0.81 -1.71,0.25 -2.37,1.31 -0.78,2.24 0.3,2.25 3.42,1.16 3.62,3.37 1.9,1.69 3.3,-0.16 5.08,-0.35 0.72,1.57 -2.26,4.22 0.76,4.02 1.46,0.62 1.81,2.15 3.19,0.31 1.85,-0.6 3.07,-3.05 4.33,-3.46 2.43,-0.2 1.29,4.21 3.91,2.83 1.72,-1.05 -1.79,-4.67 1.45,-4.27 1,-0.03 1.35,3.17 2.11,1.18 -1.32,-1.83 1.53,0.24 1.9,-1.51 1.38,-1.16 3.1,-1.29 4.45,-0.92 0.2,-1.96 1.81,0.11 2.71,-1.11 1.67,0.1 4.18,-1.49 1.89,-2.9 -0.47,-2.26 -2.34,-4.82 -1.67,-6.85 1.76,-0.03 1.59,-1.88 3.42,-1.54 2.32,-1.45 3.8,-3.77 6.26,-4.75 1.66,-0.78 4.05,1.82 5.11,-0.84 2.37,0.13 1.47,-2.41 -0.05,-3.14 -0.16,-1.64 0.62,-3.82 -1.82,-3.9 0.88,-2.1 0.95,-4.43 1.69,-6.42 -0.75,-2.19 -3.06,-3.63 -3.78,-5.98 -0.22,-1.15 1.69,-2.17 -0.2,-3.09 0.38,-3.82 -4.01,-3.64 -6.05,-1.43 -0.4,-1.8 -2.37,-1.92 -3.03,-0.03 -1.66,0.66 -3.24,2.7 -4.53,1.71 -1.67,0.61 -1.38,-2.93 -3.39,-2.7 -0.94,-2.08 -2.85,-4.19 -5.2,-4.37 -1.54,-0.53 -2.13,1.38 -2.99,-0.49 z","department-24":"m 247.71,356.64 c -1.33,1.72 -2.15,5.44 -4.37,3.98 -1.29,2.19 0.65,6.02 -2.78,7.22 -1.07,1.73 -1.22,3.17 -3.43,2.89 -1.35,1.3 -2.7,2.47 -3.69,2.4 1.31,1.44 -2.43,1.19 -1.92,3.33 -1.11,2.86 2.21,7.18 -2.16,7.82 -1.72,1.11 -2.1,4.21 -4.37,4.44 -1.83,-1.85 -4.84,-0.09 -5.58,2.19 -1.71,0.92 1.62,1.85 -0.97,2.36 -2.09,3.33 4.38,0.08 4.2,3.85 0.13,2.45 -1.7,4.67 -1.9,7.15 -2.34,1.81 1.75,4.57 -1.01,6.63 -1.98,1.62 -0.57,1.93 1.18,2.08 1.5,2.41 4.72,0.24 7.34,1.24 1.58,-2.14 3.57,-4.36 5.67,-1.25 -1.59,1.46 -2.98,1.82 -1.65,4.38 2.67,1.95 3.57,5.11 3.66,7.87 2.89,2.27 5.83,-2.31 8.31,-0.64 1.5,-0.14 1.73,-2.6 3.78,-2.17 1.74,-0.66 1.71,2.87 4.06,1.59 2.32,0.27 4.87,-3.2 5.62,0.33 1.53,0.48 -2.2,5.61 1.71,4.55 1.86,-2.63 5.57,-3.37 7.55,-0.26 1.61,0.15 2.83,4.14 2.8,0.73 3.09,-1.47 0.93,-6.06 5.03,-5.87 2.1,-1.49 4.63,-2.68 4.89,-5.07 -3.18,-2.94 3.24,-2.15 2.07,-5.03 1.39,-0.77 2.75,-1.97 3.62,-3.12 -2.55,-1.45 1.11,-2.89 -0.92,-4.95 -0.82,-1.88 -0.06,-3.23 0.88,-4.14 -1.12,-2.13 -3.92,-5.19 -1.35,-6.5 -1.47,-1.44 -7.7,-0.59 -6.45,-3.12 3.25,-2.31 -3.9,-1.43 -1.21,-3.75 2.08,-0.54 1.75,-2.32 -0.17,-2.44 -0.66,-1.42 -0.44,-4.25 1.4,-4.42 0.7,-1.32 4.27,-4.12 0.61,-3.76 -2.11,-1.25 -0.47,-1.95 0.2,-2.77 -1.16,-1.12 -2.39,-0.61 -3.26,-2.06 -1.89,0.78 -2.29,-1.48 -4.2,-1.06 -0.44,-1.95 3.54,-4.4 -0.69,-4.44 -2.48,1.66 -3.1,-3.01 -4.18,-4.31 -2.45,-0.69 -5.34,1.33 -6.92,-0.8 -0.28,1.94 -2.24,3.99 -3.3,1.71 -4.01,-0.32 1.3,-5.83 -3.25,-6.54 -2.23,1.7 -3.48,-1.31 -4.85,-0.28 z","department-16":"m 252.54,327.65 c -2.29,0.72 -1.44,3.44 -4.4,2.98 -1.27,1.85 -4.05,0.47 -4.98,-1.39 -0.68,-3.54 -5.06,1.6 -1.79,2.2 -0.58,3.13 -3.4,1.11 -5.1,0.91 -3.14,1.37 -5.19,-1.3 -7.86,-1.81 -1.52,1.5 -2.93,-1.91 -4.66,0.15 -1.97,-0.37 -2.45,3.38 -5.06,2.24 -1.93,0.04 0.82,2.24 -1.2,2.74 0.87,2.68 -3.95,2.15 -2.09,4.68 -0.28,1.91 -3.6,0.31 -2.2,2.53 -0.11,1.44 2.16,2.96 -0.03,4.42 -0.09,1.53 -0.09,4.77 -2.18,3.4 -1.96,2.42 -3.18,-3.47 -5.22,-0.43 -2.04,1.16 -4.38,0.45 -6.15,1.89 -2.73,1.16 0.38,1.62 1.39,1.98 -2.76,2.08 2.9,5.14 -0.46,5.78 -1.46,1.75 0.17,2.05 1.51,1.62 1.01,2.19 5.21,3.29 2.97,5.77 2.34,0.08 4.85,3.05 1.84,4.29 -0.18,1.67 3.8,4.33 0.08,4.95 -3.11,0.84 0.04,2.57 1.34,2.89 -0.62,0.79 -3.1,1.95 -1.06,3.18 2.2,-2.04 4.86,0.36 7.25,0.92 -0.44,1.96 0.03,3.48 2.36,2.77 1.73,0.17 2.65,2.07 3.44,2.83 1.42,-1.43 3.54,-1.84 5.23,-0.38 1.69,-1.46 2.03,-3.29 3.72,-4.47 1.1,-1.12 3.55,-1.27 2.27,-3.69 -1.79,-2.79 1.03,-5.85 1.8,-7.57 0.23,-1.21 1.54,0.42 2.16,-1.12 1.02,-1.12 2.42,-1.8 3.66,-1.6 0.38,-3.16 4.03,-3.24 3.74,-6.43 -0.64,-1.42 -0.09,-4.56 1.85,-3.02 1.5,-1.35 2.27,-4.04 4,-5.85 1.03,-2.13 3.92,-2.7 3.46,-5.45 1.36,-0.67 3.4,1.91 3.05,-0.98 1.5,-1.75 2.07,-3.92 1.46,-6.01 -0.57,-2.93 3.18,0.64 4.34,-1.8 2.69,-1.02 0.69,-6.52 -1.66,-5.43 -1.88,-0.53 -3.24,-3.11 -1.94,-5.21 -0.3,-3.28 -2.38,-2.24 -4.88,-2.46 z","department-86":"m 220.19,259.01 c -2.67,1.11 -1.14,6.66 -4.7,5.46 -1.12,2.67 -0.28,6.33 2.34,7.3 1.21,2.8 -0.12,6.86 2.81,8.58 -0.34,0.88 -4.74,0.94 -2.01,2.12 1.66,0.91 -1.21,4.66 1.86,5.01 0.17,2.88 -3.53,4.96 -3.39,7.51 2.34,-1.74 2.86,1.09 4.01,2.56 -2.36,1.41 -1.42,4.19 -3.11,6.09 1.11,2.79 0.46,6.03 2.68,8.32 -0.98,2.26 1.88,5.6 3.64,2.56 3.26,-2.86 4.22,4.09 1.42,5.44 -1.17,2.3 -1.1,6.6 2.78,6.31 1.76,0.42 -1.54,4.9 1.9,4.82 2.58,2.29 6.42,0.33 9.24,2 3.12,-1.13 -1.64,-3.61 1.54,-4.88 2.93,-0.45 3.66,4.64 7.15,2.55 2.65,-1.24 4.01,-4.64 7.5,-3.07 5.18,0.43 -2.68,-6.17 1.99,-6.32 0.93,-3.5 4.73,-3.96 7.28,-4.09 1.27,-2.3 2.21,-5.88 5.59,-4.54 3.05,-1.23 4.82,-4.66 1.43,-6.65 -0.96,-2.09 -0.63,-5.43 -4.09,-4.96 -2.4,-0.38 -3.1,-2.52 -5.49,-3.06 -4.32,-2.56 0.87,-7.41 -2.39,-10.17 -3.73,-2.36 -3.49,-7.19 -7.25,-9.59 -1.82,-2.65 -1.18,-7.21 -5.41,-7.83 -3.82,-1.6 1.37,4.35 -2.65,2.83 -3.22,-0.17 -6.05,2.2 -9.36,1.21 -5,0.41 0.09,-6.41 -3.44,-7.54 -1.02,-1.75 -5.86,1.14 -3.94,-2.42 -1.49,-2.05 -5.43,-1.78 -6.57,-4.86 -0.36,-0.36 -0.83,-0.61 -1.33,-0.67 z","department-37":"m 248.48,223.77 c -1.42,3.62 -6.45,2.73 -8.2,5.37 -1.46,1.36 -3.9,-2.72 -3.72,0.4 1.37,1.11 1.66,4.33 -0.82,2.81 -1.82,-1.23 -6.06,-3.74 -5.96,0.05 -1.81,2.38 0.79,4.4 -1.19,6.79 -1.59,2.5 -0.38,5.84 -2.27,7.78 -1.62,2.49 -3.61,4.89 -3.44,8.06 -0.62,2.26 -1.45,6.53 1.54,7.19 1.25,-0.87 1.94,2.54 3.31,0.71 0.97,1.11 -0.63,5.21 2.13,3.2 1.8,-1.1 1.89,1.61 3.57,1.4 0.89,2.11 -1.82,7.48 2.05,6.94 1.94,-0.66 4.56,0.68 6.7,-0.98 1.61,-0.96 6.42,0.73 3.58,-2.33 -0.63,-2.85 4.7,0.45 5.56,1.73 0.59,2.71 0.86,5.99 3.94,7.28 1.95,1.88 1.63,7.78 6,6.31 1.43,1.23 2.54,1.03 3.52,-0.09 1.84,-0.7 -1.13,-3.48 0.89,-4.6 0.94,-2.88 0.5,-6.24 2.1,-8.75 -0.51,-3.01 1.88,-5.04 4.77,-5.05 2.3,-0.22 4.18,2.32 5.36,-0.8 1.09,-2.04 2.29,-3.59 3.83,-4.89 -0.17,-3.29 -2.68,-5.86 -4.09,-8.7 -1.3,-3.91 -5.06,-1e-4 -7.13,-2.72 -1.96,-2.54 1.63,-6.07 -1.07,-8.64 1.91,-0.4 1.97,-2.18 -0.13,-2.78 -0.17,-1.99 -3.11,-4.5 -0.71,-6.14 -0.62,-1.2 -2.55,-4.44 -3.27,-1.51 -0.57,-2.17 -2.63,-4.19 -4.63,-1.88 -3.07,2.82 -2.07,-3.8 -2.27,-4.29 -2.95,-0.2 -5.98,-1.05 -8.71,-0.82 -1.21,0.63 -0.51,-1.11 -1.23,-1.05 z","department-72":"m 231.9,172.51 c -2.61,0.34 -4.43,1.91 -6.19,3.04 -1.38,0.48 -2.05,1.94 -3.42,2.6 -0.33,3.05 -3.2,-1.34 -4.33,0.83 -1.43,1.08 -5.63,0.06 -4.24,2.95 -3.08,-0.79 0.86,3.38 -1.37,4.58 -0.86,1.81 1.85,4.28 -0.94,5.2 -2.01,1.1 -4.73,3.07 -1.86,4.9 -0.99,1.29 0.02,2.59 -0.74,3.79 -2.44,-0.68 -6.78,1.67 -3.4,3.85 0.73,2.09 1.76,4.48 -1.53,4.5 -2.58,-0.44 -3.89,2.42 -1.36,3.52 0.5,2.29 -5.19,2.01 -2.45,4.82 3.47,-0.45 1.48,4.86 3.4,5.98 2.31,-1.32 4.91,2 6.78,-0.52 3.29,0.6 -2.46,2.42 0.25,4.06 0.74,1.66 3.87,2.49 4.49,0.08 2.3,1.12 4.71,0.48 6.02,2.83 1.69,1.36 4.05,0.33 5.35,2.19 1.62,-0.93 1.69,-2.65 3.94,-1.78 2.54,-0.05 4.67,2.82 7.14,2.4 0.9,-1.5 -2.93,-3.52 -0.02,-4.31 1.04,1.34 2.82,2.12 3.33,-0.2 2.31,-0.39 4.79,-1.35 6.51,-2.6 -2.85,-2.23 1.58,-5.3 3.79,-5.52 0.46,-1.4 2.4,-3.52 3.78,-4.83 -1.44,-1.85 -0.29,-6.03 1.78,-3.82 -1.09,-2.59 3.21,-2.96 0.58,-5.37 0.08,-1.7 1.43,-3.61 -1.11,-3.97 -1.64,-2.45 2.4,-1.51 1.74,-3.29 -2.05,-0.4 1.4,-1.62 0.89,-2.96 2.29,0.52 3.2,-1.49 0.55,-1.94 -2.01,-0.09 -3.25,-2.56 -5.32,-1.22 -2.38,-0.82 -2.49,-6.22 -5.36,-4.81 0.79,2.39 -2.74,0.17 -4.1,0.37 -1.11,-1.06 -2.58,-1.99 -2.45,-3.6 -1.86,0.23 -5.36,-0.71 -4.94,-3.08 -0.44,-3.4 0.09,-8.02 -4.58,-8.58 l -0.59,-0.08 2e-5,0 z","department-61":"m 236.9,140.22 c -1.37,2.93 -4.44,0.95 -5.77,0.51 -0.7,2.09 -2.92,0.83 -4.24,2.34 -1.35,-2.77 -4.38,-0.25 -5.26,1.87 -3.09,0.73 -4.56,4.12 -8.22,4.12 0.6,2.97 -3.23,-1.05 -4.99,-0.78 -2.07,-0.19 -4.42,-1.53 -4.55,1.51 -1.86,-0.97 -4.38,-5.01 -6.99,-1.88 -2.67,0.7 -5.63,2.58 -8.38,0.81 -1.94,-0.21 0.58,2.41 -2,2.73 -2.21,0.79 -4.81,2.48 -5.8,4.18 1.64,0.47 4.03,2.64 4.89,3.81 -2.6,1.08 -0.04,3.17 -0.37,4.16 -0.1,3.46 -3.63,4.61 -4.76,7.47 1.29,1.59 1.78,3.06 3.56,2.81 -0.2,2.49 3.05,0.83 2.04,-0.77 2.19,0.16 3.37,-1.72 3.97,1.42 2.29,-1.26 4.74,-2.16 6.49,-3.76 2.15,-0.24 4.6,-0.72 6.51,1.02 1.07,-1.63 2.35,-2.41 3.95,-1.42 1.83,-1.07 -0.27,-4.47 3.02,-3.12 1.81,1.18 3.45,2.14 1.99,3.87 0.35,2.25 1.92,4.62 4.47,2.94 1.72,0.65 -0.84,6.99 2.46,4.03 1.16,0.36 3.03,2.09 3.43,-0.38 1.63,-0.81 2.66,-2.19 4.04,-2.85 0.28,-1.38 5.31,-3.16 7.52,-1.96 3.9,1.26 2.59,5.53 3.26,8.6 -0.11,2.92 4.56,1.76 5.41,3.53 -0.07,1.99 3.35,3.78 5.67,2.91 3.19,-3.99 3.88,7.21 7.66,3.4 3.17,-1.53 -1.64,-4 -0.17,-6.33 -3.57,-0.8 0.8,-4.69 3.13,-4.08 2.2,-1.01 6.03,-4.76 3.83,-6.66 -0.95,-2.15 2.33,-4.5 -0.88,-5.72 0.72,-2.4 -4.26,-1.56 -3.98,-4.43 -1.88,-0.39 0.25,-5.19 -3.06,-4.1 -0.43,-1.15 -0.37,-2.32 -1.89,-2.36 3.89,-2.53 -0.45,-5.72 -3.19,-6.87 -1.23,-0.78 -2.92,-1.32 -1.88,-2.86 -1.36,-1.19 -1.22,-3.67 -3.26,-1.5 -2.58,-0.67 -7.27,0.22 -7.13,-3.52 0.64,-0.73 0.75,-2.65 -0.53,-2.7 z","department-27":"m 242.33,106.21 c -2.25,1.4 -4.46,3.12 -7.27,3.2 -3.13,0.01 -1.44,3.96 -0.97,5.79 -0.25,1.42 -0.2,3.07 0.05,4.32 1.56,-2.67 4.74,1.16 1.61,1.68 -3.49,1.51 3.09,2.25 1.65,4.56 -0.6,1.84 0.47,2.5 1.82,3.11 -1.56,1.19 -0.91,2.9 -0.68,4.31 -3.08,-0.3 -1.43,3.4 0.78,3.14 1.11,2.25 -1.15,5.22 -2.03,7.57 1.97,1.86 5.79,2.95 8.17,1.67 1.68,-0.94 2.06,2.46 2.78,2.55 -1.38,3.04 5.18,3.21 5.92,5.84 1.68,1.55 -0.55,2.63 -0.78,3.74 1.84,0.46 1,3.47 3.6,1.89 2.3,-0.06 2.09,-4.03 4.58,-2.4 2.21,-1.11 4.77,-0.84 6.52,-3.04 1.78,1 3.18,0.1 2.69,-1.95 1.73,0.3 3.34,2.1 5.52,1.18 1.73,0.91 5.58,0.54 5.97,-1.71 -2.26,-3.14 2.59,-4.24 4.24,-5.72 -0.13,-1.58 -1.51,-4.22 1.43,-3.88 0.74,-0.67 -0.33,-1.93 0.53,-2.57 -1.47,0.74 -2.69,-0.27 -1.44,-1.58 -1.04,-1.31 -2.12,-4.8 0.61,-3.44 1.11,-1.2 0.8,-1.98 2.49,-1.09 3.37,-0.07 4.6,-2.86 5.45,-5.81 0.13,-2.58 1.39,-4.89 2.52,-6.95 1.56,-1.59 3.56,2.74 3.6,-0.58 -1.93,-1.54 -0.62,-5.1 -2.69,-7.09 -0.94,-2.78 -3.12,-0.33 -5.23,-1.99 -1.74,0.33 -2.23,-3.11 -4.08,-1.45 -2.23,-1.34 -5.13,-1.37 -7.71,-1.23 -0.89,1.39 -2.82,1.34 -2.49,3.35 -1.48,1.47 -1.23,4.8 -4.4,3.5 -1.42,0.9 -3.69,0.83 -4.18,2.58 -2.63,-0.42 -3.44,1.09 -2.81,3.24 -1.76,0.32 -3.16,0.76 -4.2,-0.95 -1.28,0.44 -0.68,-4.41 -2.73,-1.94 -0.92,0.95 -1.47,-2.05 -3.03,-1.54 0.47,-2.75 5.09,0.66 3.34,-3.08 -0.36,-1.37 -2.02,1.31 -1.95,-1 -2.7,-0.13 -3.88,-2.85 -6.72,-1.29 -2.27,1 -3.56,-0.22 -5.16,-1.45 -2.66,0.51 -3.03,-3.16 -5.33,-3.52 z","department-14":"m 231.23,109.9 c -4.06,0.09 -6.85,2.84 -9.55,5.38 -3.34,2.06 -7.05,3.56 -10.99,3.85 -1.95,1.92 -3.54,-1.01 -5.94,-1.28 -2.67,-1.83 -5.65,-1.96 -8.71,-2.47 -2.52,-0.48 -5.06,0.57 -7.64,-0.13 -3.42,-0.41 -7.08,-0.38 -10.19,-1.98 -1.94,-1.82 -4.91,-0.74 -7.32,-0.9 -3.6,0.27 -1.56,4.12 -3.38,5.89 0.35,2.42 2.43,4.3 4.66,5.41 1.29,2.26 4.25,1.82 4.95,-0.81 0.89,1.47 2.18,1.84 0.71,3.15 -2.85,2.72 2.74,3.63 1.8,6.79 0.25,1.58 -1.34,2.53 0.39,3.45 -2.56,1.47 -4.13,6.64 -7.82,4.57 -1.7,0.05 -2.56,3.86 0.25,2.27 1.68,0.8 -1.5,3.01 -2.33,3.69 -1.18,-0.64 -2.61,2.05 -3.44,2.77 1.51,0.52 3.07,1.11 2.99,2.92 1.94,0.53 4.35,0.57 6.32,-0.18 1.55,1.73 4.66,1.77 5.78,1.31 0.33,1.85 2.06,-2.55 3.65,-1.79 1.67,-0.4 2.88,-1.72 1.91,-3.16 2.07,-1.17 2.99,1.93 4.94,0.32 1.69,0.63 2.6,-1.47 4.44,-1.14 2.02,-2.53 4.71,-0.49 6.27,0.75 0.09,2.25 1.52,-0.03 1.58,-1.02 2.72,0.42 5.75,0.47 7.89,2.34 0.72,-2.21 4.15,-0.58 5.38,-3.06 1.98,-1.59 4.45,-2.16 5.53,-4.57 1.56,-0.47 2.62,-1.63 3.42,0.6 1.16,-0.33 2.13,-1.63 3.58,-1.13 0.5,-2.08 1.78,-0.88 2.61,-0.44 1.61,0.55 3,0.24 4,-1.29 0.95,1.22 2.59,1.22 2.01,-0.7 1.28,-2.16 0.25,-3.37 -2.04,-3.81 -1.78,-1.67 1.38,-2.37 1.39,-3.02 -1.93,-1.58 2.62,-4.1 -0.98,-4.39 -0.16,-2.06 0.6,-4.48 -2.13,-4.95 -3.24,-2.19 4.22,-2.19 0.79,-4.43 -0.9,-0.04 -3.11,2.04 -1.98,-0.25 -0.33,-1.14 -1.2,-1.29 -0.01,-2.61 -1.49,-1.67 0.64,-7.09 -2.8,-5.97 z","department-76":"m 285.08,67.51 c -1.66,1.28 -3.92,-0.27 -5.32,2.21 -2.55,2.82 -5.75,4.75 -9.23,6.16 -2.69,2.07 -6.27,0.91 -9.1,2.49 -3.04,0.83 -5.97,2.2 -9.16,2.2 -4.64,-0.08 -8.38,2.85 -12.2,5.03 -3.19,1.24 -5.65,3.53 -8.97,4.44 -4.45,0.63 -4.32,5.58 -6.08,8.7 -1.33,2.41 -3.69,6.09 0.02,7.66 2.71,1.09 5.28,1.25 8.39,1.98 3.84,1.23 7.92,-4.2 10.87,-0.97 1.02,1.67 2.99,3.04 4.68,1.44 -0.81,3.45 3.88,2.23 5.92,1.74 1.25,0.7 1.48,-1.8 1.82,0.62 0.74,1.56 3.24,0.12 3.81,1.84 1.65,-0.96 2.48,4.22 -0.34,2.48 -3.28,0.03 0.21,1.48 0.51,2.68 2.73,-3.35 2.83,4.25 5.77,2.84 2.8,-0.27 -0.27,-3.85 3.3,-3.41 1.82,-0.28 2.83,-2.57 4.57,-2.23 0.36,-1.37 4.68,0.8 4.04,-2.57 1.27,-2.05 1.52,-4.08 4.3,-5.05 2.08,0.14 5.31,0.85 7.56,1.4 2.14,-0.45 3.59,3.15 6.18,2.19 2.06,0.69 2.28,-3.97 4.3,-4.86 1.52,-1.49 -0.75,-3.01 -1.45,-0.94 -2.42,-0.89 0.93,-2.53 -0.81,-3.95 0.3,-1.61 -2.27,-1.27 -1.03,-2.58 -0.73,-1.35 1.8,-2.21 -0.04,-3.48 1.02,-1.01 3.32,-5.11 0.67,-2.57 -2.48,-0.31 0.5,-3.34 1.11,-4.23 -0.07,-1.57 3.34,-0.34 1.01,-2.16 -2.4,-2.69 -1.34,-6.85 -4.28,-9.1 -3.65,-1.5 -5.37,-5.07 -8.6,-7.13 -2.03,-0.46 -0.42,-2.8 -2.2,-2.85 z","department-60":"m 299.82,88.06 c -0.68,1.53 -2.52,3 -2.62,4.61 0.88,0.83 2.72,-2.26 2.36,0.47 -2.03,0.88 -1.5,2.81 -1.5,4.35 -1.65,1.28 0.75,1.64 0.2,3.03 0.54,1.64 1.83,2.54 0.02,4.14 0.78,1.65 2.88,-1.94 3.18,0.81 -0.81,1.88 -3.2,3.3 -3.32,5.72 1.83,-0.19 -0.44,1.38 1.38,2.1 1.48,2.13 0.75,4.92 2.41,6.82 0.2,2.27 -1.63,1.56 -2.48,0.39 -2.21,-0.34 -2.49,2.24 -0.48,2.81 -0.83,1.16 -0.47,2.78 1.13,3 2.38,-0.91 4.68,1.32 7.04,0.62 2.19,-0.63 4.26,-0.42 6.14,-1.88 1.82,-1.52 2.59,1.29 4.7,0.92 0.24,2.48 3.26,-1.11 3.69,1.4 -0.75,1.55 3.2,0.09 3.21,-1.39 1.69,-0.21 1.93,2.59 3.71,1.86 2.57,0.22 4.8,1.97 6.25,3.43 0.62,-1.34 1.71,-1.33 1.95,0.34 1.46,2.81 2.94,-2.02 4.79,0.35 1.09,0.96 1.32,2.68 2.73,1.05 0.38,2.06 2.62,0.41 2.41,-0.61 2.06,-2.04 3.56,2.74 5.7,0.23 1.37,0.79 3.07,-1.58 3.55,0.59 0.9,-2.08 4.02,0.32 3.84,-2.61 0.97,-1.2 1.9,-2.09 3.15,-2.84 -1.43,-0.2 -1,-3.93 -2.02,-1.23 0.12,2.36 -0.59,-0.15 -0.51,-1.14 -0.98,-0.34 -1.96,-0.8 -2.82,-1.45 1.46,-1.59 0.58,-5.08 -1.78,-5.51 -1.64,-1.93 1.32,-3.14 3,-2.37 2.78,-1.33 1.45,-5.56 2.96,-6.93 1.83,1.02 3.46,-1.08 0.88,-1.43 -2.12,-0.58 0.91,-1.96 -1.18,-3 -0.31,-1.21 1.9,-1.71 1.13,-3.46 1.11,-2.28 -2.26,-3.66 -0.83,-5.46 -1.28,-1.35 1.28,-1.82 0.48,-3.31 0.33,-2.37 -2.35,1.17 -1.98,-1.22 -1.06,0.07 -2.21,3.33 -3.26,0.83 -1.15,-1.16 -2.97,0.6 -2.46,1.87 -0.95,-1.04 -2.28,-2.96 -3.61,-2.19 0.98,1.2 1.14,2.51 -0.39,1.26 -0.14,2.4 -4.2,0.61 -3.1,3.55 -0.54,2.6 -5.29,-1.86 -5.5,1.9 0.32,2.24 -2.85,2.23 -2.21,0.03 -1.14,-1.83 -2.74,1.59 -3.58,-0.97 -1.21,-1.4 -2.44,-1.07 -3.66,-0.6 -0.85,-3.25 -4.16,-1.53 -6.1,-3.1 -0.93,-1.42 -3.34,-0.98 -4.87,-2.04 -2.87,-0.39 -5.38,1.28 -8.22,0.91 -0.21,-2.15 -3.87,-1.59 -4.92,-1.24 -1.09,-1.54 -2.79,1.74 -4.47,0.11 -1.06,-0.76 -1.06,-1.17 -0.69,-2.16 -0.99,-0.72 -2.08,-1.47 -3.42,-1.36 z","department-80":"m 292.25,47.76 c -3.3,0.48 -3.7,7.09 -0.18,7.88 1.08,1.67 4.2,2.74 3.06,4.24 -2.73,-1.29 -6.63,-3.63 -7.9,0.8 -0.08,3.06 -3.29,5.38 -4.22,7.27 1.37,-0.11 3.64,-1.46 3.18,1.37 3.11,1.87 5.05,5.06 7.98,7.06 3.9,1.29 3.89,5.38 5.12,8.61 0.56,2.66 4.89,3.47 4.09,5.66 1.46,2.82 4.15,-0.88 5.54,0.73 2.25,-2 4.72,2.18 7.27,1.01 2.7,-0.93 5.98,-1.02 8.68,0.5 1.84,-0.03 3.1,2.73 5.49,1.65 1.93,0.79 2.11,3.17 3.94,1.57 2.03,0.38 2.41,3.33 4.24,1.67 1.8,-0.87 1.46,4.54 3.03,1.36 0.02,-3.92 4.11,-1.35 5.69,-2.17 -0.71,-2.24 0.89,-2.61 2.47,-2.96 0.23,-1.49 2.58,-0.96 0.98,-2.41 1.05,-1.53 0.91,1.46 2.09,-0.25 0.9,2.74 1.49,1.35 3.01,0.23 1.35,0.58 3.49,2.16 3.45,-0.59 1.21,0.66 3.53,0.99 2.21,-1.27 0.39,-2.05 -3.23,-2.65 -0.99,-4.12 0.13,-1.56 -2.17,-2.32 -0.06,-3.42 -0.06,-1.95 2.47,-2.66 2.02,-5.11 0.89,-1.27 2.86,-3.19 2.9,-4.11 -2.64,0.29 0.37,-2.52 -2.05,-2.42 -2.22,-1.41 -5.14,-3.16 -7.9,-1.23 -1.34,-2.15 -4.91,2.97 -5.09,0.51 1.42,-1.44 -0.8,-3.49 -2.15,-1.79 -0.94,1.46 -4.33,1.85 -2.41,-0.4 3.11,-2.33 -2.99,-5.63 -2.46,-2.07 1.41,1.98 -2.63,-0.12 -3.46,-0.4 -1.61,-0.21 -3.12,-0.74 -2.69,-2.12 -1.34,-0.69 -1.48,3.04 -2.43,0.22 -3.21,-2.44 -3.38,5.35 -5.85,1.64 -1.72,-1.93 1.49,-5.21 3.99,-5.44 1.33,-2.2 -4.48,-3.79 -5.35,-1.18 -0.74,-1.34 -1.37,-2.06 -1.64,-0.43 -2.88,-0.65 -5.6,0.07 -8.2,1.37 -1.11,-1.55 -3.47,0.2 -3.68,-2.58 1.41,-3.13 -8.2,-2.22 -4.92,-5.34 -0.16,-2.3 -3.14,1.95 -4.11,-1.07 -2.18,-2.39 -5.42,-2.15 -7.98,-0.54 -2.27,1.67 -2.44,-2.55 -4.75,-1.91 z","department-95":"m 297.89,122.77 c -1.93,0.92 -1.82,3.28 -2.24,5.06 -0.18,1.39 -0.88,2.57 -1.71,3.66 -1.18,2.5 3.25,0.35 3.28,2.76 0.67,1.03 2.44,0.71 2.86,-0.15 1.62,0.83 1.89,-1.96 3.5,-0.67 1.15,0.5 1.54,1.3 0.91,2.4 0.05,1.46 1.28,0.91 1.47,-0.15 1.23,-1.85 1.56,1.36 3.2,0.93 1.81,-0.33 2.63,2.19 4.51,1.19 1,-0.65 2.03,-0.32 2.94,-0.74 0.27,0.84 -0.01,2.32 1.49,2.09 1.39,0.41 0.73,2.42 2.34,2.4 -0.26,0.82 -0.29,3.2 0.91,1.57 0.86,-1.05 2.61,-1.25 3.07,-2.57 1.17,0.19 2.33,0.34 3.34,-0.64 1.5,0.48 3.52,2.04 5,0.44 1.28,-0.6 2.07,-1.91 3.13,-2.67 -1.04,-1.28 1.15,-1.17 1.41,-2.36 0.47,-0.74 -0.21,-1.51 0.41,-2.34 -0.57,-0.87 -1.19,-1.72 -1.74,-2.51 -0.76,0.04 -0.35,1.66 -1.56,0.99 -1.63,0.01 0.09,-1.59 -1.48,-1.79 -0.96,-0.62 -1.98,-0.38 -2.67,-1.33 -1.15,-0.06 -2.21,-0.73 -3.09,-0.09 -0.52,-1.59 -2.64,-3.14 -3.11,-0.65 -0.81,0.43 -3.97,1.21 -2.53,-0.5 -0.87,-1.58 -3.19,1.28 -3.56,-1.01 -1.15,-0.35 -2.65,-0.19 -3.11,-1.46 -1.37,0.13 -2.53,1.17 -3.72,1.84 -1.32,-0.26 -2.69,0.49 -4.1,0.64 -1.33,0.67 -2.12,-0.84 -3.46,0.08 -0.96,-1.47 -2.91,-0.73 -4.2,-0.81 -0.5,-0.95 -2.12,-1.82 -0.57,-2.52 0.13,-0.53 -0.36,-1.09 -0.9,-1.1 z","department-78":"m 292.32,132.84 c -1.68,0.81 -3.67,0.76 -5.14,1.83 -1.97,-1.3 -0.99,2.02 -0.1,2.67 0.55,0.79 -1.34,2.61 0.69,2.07 1.64,-0.39 0.59,0.65 0.37,1.44 0.56,0.92 0.3,2.44 1.88,2.64 -0.09,1.26 1.67,1.89 0.48,3.08 1.64,0.66 2.24,2.6 1.48,4.19 -1.03,2.01 0.99,3.08 1.85,4.34 -0.58,1.19 -2.9,3.12 -0.68,3.75 -0.47,1.26 0.09,2.42 1.54,2.47 0.18,1.99 1.68,2.21 3.27,2.53 -0.41,1.11 -0.51,2.96 1.4,2.43 1.42,0.39 2.18,2 1.59,3.43 0.23,1.67 0.57,3.89 2.53,3.87 0.36,1.68 3.78,2.12 3.77,0.29 -0.23,-1.35 1.17,-2.66 1.54,-4.05 1.67,-0.97 -2.33,-2.06 -0.18,-2.66 1.44,0.17 3.44,0.88 3.57,-1.25 0.08,-1.12 0.7,-1.71 1.35,-2.36 -0.8,-1.15 -2.97,-2.42 -1.13,-3.55 0.61,-1.71 3.54,-1.04 3.46,-3.33 -0.81,-1.48 0.7,-1.23 1.5,-1.61 0.73,-1.13 2.67,-0.43 2.55,-1.99 1.23,0.53 1.88,-0.53 0.53,-1.07 -0.97,-1.07 -3.27,-1.54 -2.66,-3.59 -0.02,-1.82 0.75,-3.53 2.25,-4.55 0.27,-1.43 0.56,-2.46 -1.03,-2.77 0.42,-2.23 -2.99,-1.71 -2.63,-3.73 -1.61,-0.09 -3.2,1.35 -4.8,0.6 -1.14,-1.79 -3.8,-0.64 -4.79,-2.64 -0.79,0.03 -1.9,3.2 -2.31,1.04 -0.6,-0.85 0.89,-2.23 -0.76,-2.51 -1.37,-1.91 -2.01,1.2 -3.59,0.52 -1.03,1.41 -3.22,0.49 -3.58,-1.01 -1.62,-1.22 -2.88,0.79 -4.21,-0.53 z","department-28":"m 287.11,142.32 c -2.1,1.04 1.22,5.31 -2.55,5.04 -3.13,0.47 -2.25,4.05 -2.79,5.7 -2.08,1.39 -4.66,0.71 -6.89,0.79 -1.67,0.17 -4.55,-2.91 -4.14,0.39 -0.94,1.3 -4.08,-0.75 -3.86,1.85 -2.43,0.08 -5.51,1.27 -7.37,1.58 -1.08,1.71 -3.78,2.6 -2.33,4.99 0.77,3.5 4.78,4.24 6.38,7.09 -0.22,2.23 -1.98,4.13 0.4,5.86 -1.32,2.12 -2.68,4.96 -5.61,5.63 -2.31,-0.78 -5.36,3.02 -2.13,3.95 -1.7,2.27 2.62,5.08 0.17,6.87 0.96,1.32 5.87,1.56 4.27,3.23 -2.59,-0.41 -2.61,3.43 0.12,2 1.93,-0.18 2.86,0.02 4.27,-1.38 2.46,-1.17 2.35,1.12 0.44,1.89 0.94,1.94 5.72,-0.14 5.24,3.16 2.38,1.44 2.98,5.53 5.88,5 2.46,1.01 5.04,1.84 7.07,-0.1 2.12,0.96 1.21,-4.35 3.42,-1.33 2.91,1.91 0.9,-4.73 4.83,-2.76 1.99,-0.3 2.54,-3.35 5.19,-2.24 2.89,0.64 5.49,-1.07 8.22,-1.66 2.33,-1.48 0.35,-5.82 3.98,-5.14 -0.56,-1.06 0.03,-1.81 0.2,-2.18 -1.12,-2.33 1.98,-4.62 -0.13,-6.47 1.22,-2.57 0.51,-6.45 -1.46,-7.17 0.98,-3.67 -3.12,-0.53 -4.61,-2.82 -3.57,-1.35 -1.08,-6.34 -4.19,-7.79 -2.86,0.53 -0.05,-3.49 -3.13,-2.7 -2.21,-2.24 -5.44,-5.53 -2.5,-8.36 -1.41,-1.65 -2.75,-3.31 -1.37,-5.55 -0.35,-2.12 -1.91,-3.29 -1.97,-5.44 -0.63,-1.06 -1.8,-1.83 -3.04,-1.94 z","department-75":"m 326.98,144.71 c -1.27,-0.06 -2.46,0.68 -3.27,1.54 -0.47,-0.15 -0.85,0.06 -1.23,0.25 -0.65,0.03 -1.66,1.18 -0.69,1.52 0.81,0.18 0.93,1.2 1.8,1.35 1.65,0.28 3.42,1.43 5.03,0.39 1.03,-0.88 2.21,0.62 3.32,0.28 0.54,-0.43 0.6,-1.27 -0.33,-1.23 -0.68,-0.16 -1.14,-0.33 -1.46,-0.06 -0.34,-1.13 -0.06,-2.23 -0.93,-3.14 -0.12,-1.14 -1.17,-0.96 -2.05,-0.92 l -0.18,0 -0.03,3e-4 z","department-93":"m 336.5,137.58 c -0.46,0.33 -1.14,0.34 -1.42,0.97 -0.75,1.19 -2.15,1.71 -3.14,2.62 -0.82,-0.03 -1.72,-0.07 -2.53,-0.25 -0.64,-0.37 -1.29,-1.34 -2.07,-0.64 -0.6,0.3 -1.08,1.1 -1.81,0.59 -0.35,-0.19 -1.46,-0.42 -1.19,0.3 0.56,0.53 2.05,0.32 2.05,1.33 -0.06,0.69 -1.13,1.34 -0.68,2.02 1.05,0.43 2.37,-0.21 3.33,0.37 0.27,0.54 0.5,1.08 0.89,1.55 0.18,0.57 -0.13,1.72 0.86,1.53 1.07,-0.15 2.16,-1.04 3.23,-0.34 1.04,0.72 2.32,1.35 3.05,2.37 -0.11,0.74 1.41,0.94 1.04,0.05 -0.24,-0.71 -0.92,-1.55 -0.78,-2.26 0.67,-0.23 -0.04,-0.79 -0.4,-0.86 0.27,-0.43 -0.26,-0.81 -0.29,-1.14 0.41,-0.57 1.31,-0.71 1.23,-1.58 -0.09,-0.8 0.8,-1.4 0.35,-2.19 -0.23,-0.84 -1.06,-1.46 -1.25,-2.26 0.77,-0.61 0.45,-1.99 -0.49,-2.17 z","department-94":"m 332.85,147.49 c -0.56,0.21 -2.03,0.43 -2.18,1.01 0.31,0.21 1.82,-0.09 1.77,0.51 0.02,0.58 -0.23,1.64 -1.05,1.16 -1.03,-0.16 -2.09,-1.01 -3.03,-0.14 -0.7,0.5 -1.59,0.2 -2.33,0.5 -0.4,1.12 0.01,2.46 -0.66,3.53 -0.23,0.79 0.87,0.44 1.11,0.99 0.42,0.39 0.99,0.13 1.33,-0.1 0.46,0.44 -0.1,1.74 0.84,1.68 0.59,-0.25 1.17,-0.38 1.79,-0.16 1.34,-0.05 2.64,-0.54 3.94,-0.71 0.51,0.63 0.39,1.61 1.15,2.11 0.31,0.19 0.6,0.29 0.75,0.66 0.59,0.31 1.26,-0.47 0.77,-0.99 -0.01,-0.93 1.56,-1.44 0.88,-2.44 0.49,-0.32 0.24,-1.11 0.85,-1.28 0.43,-0.58 -0.47,-0.6 -0.83,-0.71 -0.34,-0.52 0.66,-1.17 0.14,-1.69 0.12,-0.8 -1.11,-0.7 -1.2,-1.46 -1.03,-1.05 -2.25,-2.13 -3.71,-2.49 -0.1,-0.01 -0.2,-0.01 -0.31,0 z","department-92":"m 324.24,141.53 c -2,0.52 -3.26,2.41 -5.06,3.32 -1.07,0.77 -1.1,2.2 -0.99,3.39 -0.4,0.4 -0.48,0.98 -0.25,1.53 0.01,0.71 0.73,0.52 1.15,0.65 0.16,0.65 0.67,1.01 1.28,1.14 0.25,0.33 0.49,0.67 0.86,0.85 0.32,0.72 0.72,1.57 1.66,1.53 0.78,-0.01 1.11,0.83 1.08,1.46 0.36,0.27 0.92,-0.2 1.18,0.31 0.73,-0.09 0.08,-1 0.1,-1.43 0.14,-0.72 0.7,-1.47 0.38,-2.22 -0.12,-0.62 0.28,-1.24 0.24,-1.78 -0.96,-0.79 -2.46,-0.33 -3.22,-1.42 -0.37,-0.47 -1.1,-0.68 -1.44,-1.08 0.22,-1.13 1.41,-1.83 2.5,-1.7 0.39,-0.7 1.58,-0.82 1.76,-1.68 -0.35,-0.89 1.37,-1.42 0.54,-2.3 -0.48,-0.39 -1.16,-0.56 -1.77,-0.58 z","department-91":"m 320.25,153.32 c -0.58,0.51 -0.49,1.56 -1.65,1.15 -1.09,0.27 -1.38,1.31 -2.58,1.12 0.11,1.05 -0.02,2.93 -1.5,3.32 -1.61,-0.22 -1.97,1.45 -2.84,2.24 0.58,0.86 2.2,1.77 1.79,2.96 -1.64,0.36 -0.55,3.52 -2.55,3.44 -0.79,0.15 -3.39,-0.81 -2.43,0.71 1.02,0.53 2.16,1.11 0.51,1.61 -0.86,0.93 -0.75,2.41 -1.65,3.25 0.14,1.24 1.76,2.59 0.46,3.92 0.71,0.75 2.78,0.14 2.06,1.92 1.07,1.28 -0.54,2.43 0.19,3.85 0.08,0.92 -1.54,1.43 -0.06,2.16 1.67,1.02 3.4,-0.35 5.09,-0.44 0.79,-1.48 2.15,0.97 2.97,-0.44 -0.22,-1.14 1.58,-0.26 1.55,-1.49 0.43,-1.63 2.01,-0.33 2.65,0.23 -0.12,0.95 0.48,1.61 1.08,0.67 0.98,0.38 1.68,0 2.09,-1.03 1.19,-0.35 1.89,2.24 3.4,1.07 0.49,-0.63 -0.03,-1.81 1.37,-1.59 1.11,-0.46 0.12,-2.39 1.77,-2.49 0.99,-0.33 0.83,-1.84 2.2,-1.42 0.62,-0.47 2.15,-0.38 0.97,-1.39 -1.69,-0.77 -1.16,-2.85 -1,-4.34 0.63,-1.35 -0.62,-2.47 -0.1,-3.88 0.63,-1.33 0.75,-2.86 1.78,-3.97 -0.3,-0.67 -1.97,-1.85 -0.32,-2.16 1.12,-0.7 -0.81,-1.91 0.75,-2.52 1.46,0.63 1.85,-1.77 0.18,-1 -1.09,-0.51 -1.76,-1.71 -2.13,-2.88 -1.08,-0.05 -2.24,1 -2.98,0.91 -0.9,-0.56 -2.37,0.31 -3.35,-0.26 0.08,-0.81 -0.25,-1.5 -1.11,-1.09 -0.9,-1.03 -1.16,0.24 -1.83,0.61 -0.49,-0.5 -1.91,-0.11 -1.24,-1.2 -0.57,-1.05 -2.44,-1.17 -3.52,-1.52 z","department-45":"m 320.43,181.91 c -1.93,3.75 -6.85,2.12 -9.9,4.16 -1.95,2.44 0.54,6.83 -3.34,8.04 -0.15,3.54 -2.85,4.96 -6.06,5.24 -2.92,1.1 -6.42,-0.72 -8.49,2.39 -1.57,0.69 -5.05,0.19 -3.17,3.06 1.8,0.69 1.81,1.21 0.63,2.66 -1.69,2.43 4.05,3.22 1.25,6.02 -2.34,2.28 -0.38,4.59 0.09,7.04 1.76,1.74 4.95,-1.17 6.29,2.07 1.03,2.45 2.79,7.52 5.89,3.78 1.72,-3.2 5.45,1.69 8.15,-0.49 3.31,-0.11 8.68,-1.55 10.42,2.55 3,0.8 5.42,3.73 8.74,2.17 2.13,1.16 4.32,2.3 6.96,2.83 1.97,1.01 3.09,6.61 5.84,4.26 -0,-3.62 2.76,-1.68 4.41,-0.43 2.59,0.81 2.19,-2.3 2.2,-3.37 1.94,-0.4 6.46,-0.48 3.87,-3.36 0.34,-3.56 -2.17,-6.48 -4.41,-8.39 0.34,-3.92 6.29,-1.58 7.84,-4.63 1.26,-2.84 -2.35,-5.65 1.12,-7.77 4,-1.7 4.51,-6.41 1.51,-9.33 -2.16,-2.35 -2.73,-6.91 -6.87,-6.87 -1.86,0.13 -5.92,3.75 -6.03,-0.07 -2.63,1.14 -5.36,4.25 -8.22,1.8 -2.17,-0.24 -6.58,1.49 -7.34,0.08 2.67,-1.6 4.53,-6.27 0.45,-7.38 -2.86,-1.04 -1.71,-5.28 -5.43,-4.57 -1.53,-1.38 -4.89,2.52 -5.34,-1.02 -0.33,-0.2 -0.71,-0.32 -1.06,-0.48 z","department-41":"m 266.29,195.63 c -2.06,2.95 -7.43,0.3 -8.5,3.42 -1.9,1 -2.23,2.67 -0.22,3.62 0.19,3.26 0.26,5.82 -1.16,8.6 -4.07,-1.69 0.07,5.24 -3.5,5.91 -0.99,3.4 -6.81,3.06 -5.94,7 2.53,-0.22 6.07,1.21 9.36,0.87 2.33,-0.38 3.21,0.87 2.33,3.13 -0.6,3 2.08,2.14 3.12,0.52 2.68,-0.46 3,3.47 5.15,1.95 3.31,1.92 -0.52,5.3 2.24,7.5 2.87,2.54 0.27,5.57 1.51,8.9 -2.12,3.16 1.39,5.4 4.47,4.52 3.84,-0.06 2.69,7.22 7.32,5.56 1.87,-1.68 3.74,-3.34 6.46,-2 0.88,-3.66 5.55,-2.27 8.48,-2.51 2.88,0.7 4.8,4.16 8.08,3.56 2.17,-0.93 0.23,-5.2 4,-4.24 2.53,1.03 9.23,0.49 7.7,-3.24 -2.46,-1.98 -1.75,-6.33 1.55,-6.48 1.62,0.43 3.89,1.9 3.49,-1.2 0.4,-2.84 -2.55,-3.04 -1.96,-5.71 -0.66,-1.86 -5.5,-1.35 -2.85,-4.03 2.3,-0.71 6.5,-3.18 2.67,-5.2 -3.4,-0.6 -6.94,-0.37 -10.34,0.3 -2.3,0.89 -5.75,-3.14 -6.32,0.82 -3.73,2.59 -5.33,-2.8 -6.15,-5.3 -2.21,-2.59 -5.58,2.04 -6.3,-1.81 -0.8,-1.62 0.46,-2.55 -1.18,-3.79 1.15,-2.66 3.49,-5.56 -0.29,-7.32 0.2,-1.64 2.39,-4.45 -1.04,-3.94 -1.34,-0.61 -4.15,-1.65 -3.51,1.01 -2.97,0.88 -5.87,1.72 -8.76,0.26 -3.05,-0.48 -3.65,-3.81 -5.67,-5.58 -0.41,-3.18 -5.31,-0.86 -5.28,-3.08 0.5,-0.52 3.23,-1.6 1.02,-2.02 z","department-36":"m 292.75,252.32 c -0.22,1.96 -4.71,0.36 -3.09,3.11 -2.43,-0.72 -5.02,-1.03 -6.59,1.34 -2.69,0.52 -2.88,2.56 -1.18,4.37 -0.27,2.79 -3.21,4.19 -4.35,6.82 -1.44,3.03 -4.42,-1.33 -6.53,0.46 -3.18,0.46 -2.88,3.92 -3.68,6.03 -1.05,3.06 -0.95,6.5 -2.13,9.41 1.56,2.64 -2,4.95 -4.07,2.91 -3.4,-0.16 1.5,2.15 0.47,4.03 -1.36,3.26 -0.89,7.48 3.29,8.02 1.63,1.02 1.82,2.51 4.05,2.13 3.15,0.49 2.87,3.8 3.42,5.86 3.01,0.61 1.99,2.49 1.57,4.47 1.47,-0.43 1.97,1.71 3.8,0.38 1.85,0.34 2.68,-2.93 4.56,-0.65 1.37,1.89 2.88,2.94 4.14,0.35 1.12,-1.38 3.37,-4.31 4.14,-1.21 1.33,-0.81 3.52,-2.34 3.35,0.47 1.47,0.6 2.78,-3.28 3.75,-0.32 2.88,0.93 1.17,-5.91 4.57,-3.2 2.52,2.22 5.64,-0.66 8.59,0.82 2.5,1.04 7.68,2.32 7.46,-1.55 4.04,-2.02 -1.08,-5.26 0.41,-8.47 1.23,-2.22 0.34,-4.16 -1.32,-5.77 1.29,-2.28 -5.15,-3.19 -2.63,-5.41 3.7,-2.03 -4.12,-5.08 0.13,-6.45 0.15,-1.85 5.09,-3.55 1.3,-4.36 -3.14,-0.2 -1.71,-2.81 -0.75,-4.45 0.55,-3.16 -4.43,-3.11 -2.28,-6.14 0.71,-2.59 -1.84,-0.34 -2.34,-2.38 -2.14,-1.4 -4.51,2.29 -6.97,0.12 -1.89,-0.3 -3.87,-1.35 -1.68,-3.08 2.9,-1.88 1.03,-5.37 -2,-5.37 -1.57,-1.11 -2.26,-2.41 -4.45,-1.38 -1.18,-0.07 -1.7,-1.07 -2.98,-0.88 z", -"department-18":"m 323.87,229.07 c -2.35,0.13 -9.34,2.52 -5.77,4.83 3.63,-0.55 1.32,4.29 3.95,4.19 1.09,2.3 -0.24,7.95 -2.97,4.02 -2.53,0.84 -4.38,3.27 -2.23,5.76 1.94,2.35 0.54,4.87 -2.44,4.09 -2,0.97 -4.54,0.79 -6.09,-0.04 -3.26,0.8 0.48,4.8 -3.11,4.5 -2.3,-0.84 -0.78,2.92 -3.07,3.74 -2.13,3.21 4.52,3.78 6.54,2.69 2.19,-2.06 2.95,2.09 4.74,0.99 0.13,1.95 -1.78,4.73 1.47,5.08 2.39,1.98 -3.09,7.46 2.34,7.01 1.98,2.06 -4.63,4.48 -3.1,6.87 3.2,0.9 1.23,3.63 0.29,5.24 0.67,1.68 4.73,1.92 3.03,4.22 4.54,2.34 -0.65,6.57 2.07,9.85 1.42,2.13 -0.12,3.45 -1.35,4.8 0.97,3.01 6.38,2.02 6.61,-1.43 1.68,-1.43 2.79,-4.1 5.74,-3.71 2.61,-0.19 8.61,0.85 7.95,-3.28 -1.28,-1.97 -0.29,-4.02 -0.99,-5.76 1.11,-0.26 2.76,0.38 2.1,-1.66 2.77,0.03 3.8,-5.99 6.55,-2.38 4.02,-0.1 5.48,-4.84 9.43,-5.17 5.09,1.19 4.04,-5.2 3.91,-8.3 0.71,-2.84 1.27,-6.86 -1.24,-8.77 -0.49,-3.87 -0.61,-7.69 -2.18,-11.39 0.6,-4.25 -6.27,-4.24 -4.71,-8.26 2.14,-3.02 2.74,-7.4 -0.15,-10.16 -1.82,-0.35 -3.52,2.23 -5.06,-0.44 -2.66,-2.76 -1.08,3.94 -4.37,2.1 -2.06,-1.93 -3.82,-6.36 -7.51,-5.63 -1.58,-0.2 -3.8,-3.83 -5.86,-1.15 -1.78,-0.24 -2.82,-2.01 -4.51,-2.45 z","department-23":"m 301.06,306.59 c -2.18,-0.09 -0.48,5.24 -3.46,3.84 -1.17,-2.86 -2.05,0.79 -3.59,0.42 -1.13,-0.79 -0,-3.31 -1.73,-1.25 -1.24,0.55 -2.36,1.38 -2.36,-0.7 -1.54,-0.88 -2.18,2.59 -3.79,3.02 -0.98,0.84 -2.88,2.44 -0.45,2.76 0.29,1.69 -1.79,2.6 -0.56,4.04 -2.11,0.16 0.28,2.07 -1.84,2.35 -1.71,2.37 1.37,3.88 3.12,3.98 -0.87,1.98 3.03,2.32 1.47,4.18 0.81,1.46 2.68,2.16 2.08,4.13 0.59,1.41 -1.07,3.49 1.38,3.72 1.8,2.32 -4.92,2.97 -1.35,4.46 1.26,1.18 3.64,-2.06 4.21,0.35 0.31,1.19 0.8,2.47 -1.06,2.08 -1.31,1.78 2.07,3.75 3.94,3.02 1.79,0.62 3.88,-3.62 3.75,-0.15 0.21,1.27 2.24,2.17 2.82,1.56 1.47,1.11 3.83,3.39 1.98,4.77 0.21,1.09 -0.08,4.28 1.82,2.42 1.13,0.08 1.99,-1.04 3.2,-0.95 0.33,-2.76 3.75,-2.96 4.66,-0.46 1.35,-0.17 2.6,0.94 3.34,-0.03 1.49,1.32 3.49,2.43 4.82,3.44 0.2,2.09 4,0.09 3.38,-1.73 2.36,-0.58 5.37,1.33 6.38,-2.1 -1.37,-1.09 -2.62,-1.96 -3.06,-3.78 -1.55,-1.24 -1.59,-2.93 0.65,-2.9 0.54,-1.38 1.04,-2.45 2.73,-1.85 0.62,-1.79 3.09,-2.23 2.56,-4.51 0.36,-1.75 3.84,-1.53 2.12,-3.52 1.2,-2.89 -2.25,-4.14 -2.04,-6.95 -0.08,-2.21 1.4,-4.81 -1.02,-6.11 0.02,-2.5 -1.86,-3.91 -2.39,-6.08 -1.13,-1.7 -3.1,0.63 -2.89,-2.06 -0.52,-1.65 -1.48,-0.92 -2.17,-0.16 -2.13,-0.72 -3.54,-2.45 -1.59,-4.12 -3.08,0.61 -1.54,-4.21 -4.75,-3.19 -2.85,-0.75 -5.52,1.57 -8.05,0.18 -2.39,-0.94 -4.83,-0.98 -7.12,-1.05 -1.87,0.89 -3.74,0.71 -4.87,-1.08 l -0.28,-0.01 10e-6,10e-5 z","department-87":"m 281.04,310.22 c -0.51,0.05 -1.17,0.12 -1.14,0.78 -0.25,1 -1.41,1.2 -2.23,0.78 -0.91,-0.55 -1.46,0.97 -2.37,0.47 -0.41,-0.24 -0.15,-1.36 -0.88,-1.06 -0.15,0.36 -0.49,0.69 -0.87,0.31 -0.42,-0.56 -1.48,-0.46 -1.39,0.36 -0.29,0.51 -0.98,0.78 -0.95,1.46 -0.55,0.47 -1.05,-0.38 -1.56,-0.48 -1.22,-0.29 -2.83,0.17 -3.07,1.56 0.1,1.34 -1.16,2.36 -1.14,3.65 -1.12,-0.21 -2.43,-0.58 -3.48,-0.02 -0.57,-0.29 -1.43,-0.46 -1.55,0.41 -0.29,0.71 -1.42,0.57 -1.53,1.41 -0.45,0.32 -0.59,0.81 -0.41,1.28 -0.57,0.79 -2.14,-0.04 -2.35,1.21 -0.11,1.15 1.52,1.66 1.49,2.82 0.45,0.61 -0.22,1.55 0.51,2.07 0.3,0.78 -1.04,0.68 -1.22,1.21 0.1,0.73 1.16,1.32 0.57,2.1 -0.2,0.88 -0.43,1.82 -0.37,2.7 0.55,0.71 1.53,1.06 1.85,1.96 0.6,0.29 0.77,-1.11 1.42,-0.47 0.52,0.57 1.56,1 1.37,1.9 0.17,0.33 0.61,0.45 0.5,0.91 0.25,0.56 0.69,1.22 0.15,1.8 -0.4,0.33 -0.69,0.93 -0.79,1.33 -1.08,0.03 -1.62,1.44 -2.79,1.15 -0.74,0.09 -1.45,-0.83 -2.12,-0.41 -0.07,0.49 0.25,0.98 0.12,1.53 -0.13,0.54 0.63,1.01 0.41,1.49 -0.44,0.28 -0.27,0.69 -0.21,1.04 -0.23,1.22 -1.06,2.19 -1.62,3.25 -0.26,0.54 0.17,1.51 -0.39,1.85 -0.92,-0.16 -1.85,-1.49 -2.8,-0.78 -0.33,0.63 -0.36,1.44 0.03,2.02 -0.07,0.89 -1.28,0.52 -1.72,1.1 -0.39,0.39 -0.56,0.91 -1.06,1.2 -0.36,0.39 -0.09,1.12 -0.8,1.16 -0.53,0.7 0.73,1.29 1.05,1.78 1.12,0.48 2.72,-0.73 3.83,0.16 0.41,0.49 0.74,1.16 1.39,1.34 0.08,1.16 -0.5,2.25 -0.79,3.32 0.28,0.85 0.98,1.77 1.99,1.46 0.49,0.16 0.41,1.27 1.18,1.08 1.27,-0.42 1.02,-2.31 2.06,-2.9 0.55,0.27 0.58,1.69 1.39,1.27 0.5,-0.37 1.3,-0.2 1.85,-0.57 0.8,-0.12 1.59,0.64 2.37,0.08 1.2,-0.25 2.21,0.92 2.02,2.08 -0.09,0.92 0.66,1.5 1.35,1.88 0.41,0.32 0.61,1.42 1.32,0.86 0.49,-0.58 1.3,-0.68 1.86,-0.14 0.33,0.35 1.23,0.52 1.23,1.08 -0.69,0.87 -1.91,1.66 -1.92,2.87 0.34,0.84 1.26,0.35 1.87,0.21 0.56,0.26 0.58,0.97 0.93,1.33 0.84,-0.26 2.33,-0.56 2.49,0.7 0.19,0.63 0.87,0.23 0.77,-0.27 0.67,-0.31 0.04,-1.73 0.98,-1.81 0.57,0.07 0.21,-0.87 0.71,-0.67 0.95,0.21 1.74,1.1 2.68,1.15 0.76,-1.2 1.96,-2.1 2.52,-3.45 0.35,-0.6 1.02,-0.45 1.52,-0.23 0.86,-0.13 0.35,-1.3 0.75,-1.74 0.56,-0.03 0.98,-0.4 1.21,-0.85 0.63,0.05 0.58,1.16 1.29,0.85 0.37,-0.17 0.08,-0.99 0.68,-0.63 0.79,0.46 1.82,0.91 2.6,0.18 0.48,-0.4 0.34,-1.43 1.2,-1.3 1.25,0.1 2.05,-1.03 2.55,-1.98 0.73,-0.73 1.34,-1.82 2.34,-2.13 0.74,0.12 1.5,-0.28 1.86,-0.87 0.93,-0.17 1.13,-1.16 1.48,-1.85 0.37,-0.07 0.64,0.49 1.11,0.2 0.61,0.2 0.96,1.44 1.71,0.76 0.42,-0.5 1.1,0.52 1.33,-0.26 -0.03,-0.66 0.6,-0.53 1.03,-0.64 0.45,-0.2 0.16,-0.77 -0.12,-0.88 -0.02,-0.51 -0.84,-0.68 -0.83,-1.1 0.48,-0.35 0.14,-0.82 -0.21,-1.07 0.24,-0.6 0.41,-1.25 0.01,-1.83 -0.05,-0.55 1.2,0 0.86,-0.75 -0.45,-0.79 -0.3,-1.85 -1.25,-2.36 -0.47,-0.29 -0.97,-0.56 -1.37,-0.86 -0.42,0.28 -0.85,0.21 -1.19,-0.2 -0.57,-0.6 -1.85,-0.61 -1.72,-1.7 0.17,-0.43 0.1,-1.78 -0.62,-1.22 -0.17,0.44 -0.43,0.74 -0.89,0.86 -0.71,0.92 -2.04,0.24 -2.93,0.86 -0.49,0.28 -0.9,0.12 -1.15,-0.31 -0.68,-0.45 -1.84,-0.44 -2.21,-1.23 0.21,-0.61 -0.04,-1.24 -0.49,-1.61 0.25,-0.59 1.1,-0.28 1.36,-0.78 0.47,0.27 0.94,-0.21 0.51,-0.63 -0.6,-0.41 0.17,-1.39 -0.62,-1.58 -0.8,-0.29 -1.69,0.05 -2.03,0.8 -0.73,0.21 -1.51,-0.02 -1.97,-0.63 -0.45,-0.19 -1.31,-0.18 -0.96,-0.92 0.42,-1.4 2.91,-1.11 2.81,-2.77 -0.02,-0.79 -0.76,-1.12 -1.46,-1.02 -0.74,-0.49 -0.23,-1.62 0.01,-2.28 0.07,-0.84 -0.67,-1.62 -0.2,-2.45 -0.01,-0.95 -1.08,-1.21 -1.63,-1.75 -0.29,-0.44 -0.89,-1.12 -0.22,-1.54 0.59,-0.47 -0.22,-1.14 -0.7,-1.29 -0.29,-0.51 -0.96,-0.67 -1.32,-1.01 0.65,-0.4 0.49,-1.69 -0.42,-1.53 -0.93,0.06 -2.05,-0.18 -2.28,-1.2 -0.52,-0.39 -1.08,-1.35 -0.53,-1.94 0.31,-0.58 0.65,-1.21 1.38,-1.2 0.66,-0.47 -0.77,-0.84 -0.18,-1.34 0.43,-0.32 0.7,-0.79 0.48,-1.28 -0.02,-0.63 0.42,-1.1 0.86,-1.45 0.24,-0.83 0.18,-2.06 -0.9,-2.22 -0.7,-0.32 -0.2,-1.35 -0.83,-1.79 -0.85,-0.67 -1.34,-1.98 -2.45,-2.23 l -0.03,0.01 z","department-19":"m 313.35,352.38 c -1.86,0.13 -2.22,1.42 -2.96,2.7 -1.7,-0.45 -2.02,1.25 -3.41,1.04 0.1,2.65 -3.23,3.39 -4.97,1.84 -1.53,1.04 -2.82,2.64 -4.95,2.95 -1.42,1.63 -2.47,3.68 -4.63,4.05 -0.78,2.4 -3.28,0.32 -4.72,1.32 -0.15,-2.02 -2.14,1.24 -2.3,2.01 -1.89,-1.15 -2.49,2.34 -3.89,3.21 -1.28,0.53 -3.65,-2.27 -4.12,0.75 -1.21,1.38 2.97,2.44 0.01,3.18 -0.68,2.09 4.29,0.8 2.12,3.47 -1.5,0.61 -1.7,2.64 -3.24,3.07 -0.37,1.74 -0.74,3.8 1.62,4.02 0.64,1.56 -3.73,2.47 -1.44,3.5 2.52,-0.79 2.31,2.08 0.75,2.84 2.1,1.86 4.91,0.57 6.95,2.2 -1.97,1.83 -0.08,4.96 1.55,6.77 1.57,0.57 3.76,-3.02 4.88,-0.71 2.49,-1.36 5.15,0.9 6.6,2.82 0.89,1.66 2.62,2.3 3.51,3.98 0.84,-0.76 2.22,0.94 2.83,-0.95 1.95,-0.25 4.19,-4.21 5.12,-0.84 2.18,-2.19 5.35,-1.42 8,-1.89 1.92,-1.72 -3.18,-4.39 -0.13,-5.96 1.44,-0.92 3.38,-0.83 2.82,-3.25 -0.27,-1.27 3.56,-2.56 1.06,-3.66 -2.12,-2.49 1.31,-4.07 2.09,-6.03 1.52,-1.54 3.08,-3.21 4.69,-4.48 0.47,-1.62 0.7,-3.32 -0.12,-4.93 2.48,-0.49 5.95,4.22 7.88,1.25 -2.68,-1.36 -0.86,-4.01 -0.65,-6.27 0.65,-2.61 -0.12,-4.5 -1.81,-6.42 -0.37,-1.09 0.41,-2.79 1.03,-3.68 2.2,0.41 0.72,-2.34 1.39,-3.43 -0.08,-1.62 -1.77,-3.7 -2.72,-1.42 -1.49,2.45 -5.53,-1.84 -5.69,2.21 -1.2,1.04 -3.48,1.86 -3.57,-0.45 -2.4,-0.22 -2.77,-1.54 -4.33,-2.87 -0.57,1 -2.92,0.03 -3.77,-0.11 0.11,-0.94 -1.07,-1.2 -1.5,-1.83 z","department-15":"m 334.72,370.94 c -1.28,1.82 -1.55,4.58 0.43,5.9 -1.81,2.51 -4.37,0.04 -6.57,-1.17 -2.6,-1.06 0.22,2.76 -1.15,4.1 -0.02,1.86 -2.79,1.83 -3.22,3.86 -1.83,1.13 -3.51,3.59 -4.24,5.64 0.35,1.77 2.71,2.41 0.56,3.82 -1.95,0.87 -0.07,4.99 -2.89,4.16 -3.55,0.88 -0.82,4.03 -0.22,5.71 -0.43,1.88 -4.6,-0.03 -2.81,2.9 -0.04,1.62 2.21,2.57 0.46,3.91 0.13,3.08 4.46,4.57 3.6,7.69 -0.92,1.52 -0.85,3.76 -1.46,5.32 3.14,-0.54 0.43,4.14 3.05,4.94 0.99,0 -0.12,-3.03 2.23,-2.19 1.58,-0.83 4.01,-1.56 4.43,0.74 2.75,-0.34 6.48,0.85 7.12,-2.96 2.85,-1.73 1.71,-5.71 4.3,-7.33 -0.14,-2.33 1,-4.52 2.76,-5.39 0.66,-1.77 2.62,-2.11 3.53,-3.79 2.71,0.19 1.23,4.39 2.14,5.14 1.36,-1.39 4.37,-1.42 3.78,1.12 0.34,1.62 0.97,4.51 2.8,3.48 0.84,2.32 -0.52,5.11 1.01,7.65 0.5,1.69 1.9,2.45 2.17,0.12 0.35,-2.14 2.27,-2.85 1.68,-4.93 0.92,-1.91 0.56,-5.47 2.78,-5.83 -0.12,-1.77 1.65,-6.61 3.22,-3.03 1.26,2.36 3.56,-0.59 3.31,-2.05 0.59,-1.14 0.92,-2.65 1.95,-1.09 1.6,-1 4.29,-1.63 3.3,-3.81 1.88,-0.88 -1.23,-1.49 -1.31,-2.37 -2.47,-0.36 0.7,-4.16 -1.68,-4.86 0.04,-1.43 3.56,1.01 2.84,-0.76 -3.52,-0.25 -3.97,-3.78 -3.79,-6.72 -2.86,-0.25 -0.48,-5.68 -3.84,-4.2 -1,0.06 -0.92,-1.73 -2.53,-0.75 -1.83,0.05 -2.03,-0.79 -0.71,-1.66 -1.98,-0.82 1.54,-2.18 -0.51,-2.67 -1.63,1.16 -2.03,4.92 -4.8,3.76 -3.45,-0.77 -2.59,-5.89 -6.01,-5.8 -1.98,-1.95 -3.93,0.16 -6.22,-0.38 -1.82,0.76 -1.98,-2.81 -2.23,-3.3 -2,0.21 -2.37,-1.95 -4.2,-1.04 -0.86,-1.4 -2.85,0.57 -2.19,-1.65 -0.21,-0.26 -0.61,-0.13 -0.87,-0.22 z","department-30":"m 402.45,438.56 c -1.2,2.08 -2.01,3.99 -4.41,4.18 -0.91,2.13 4,4.03 1.37,6.32 -0.45,1.86 3.55,2.45 0.94,3.7 -0.76,1.99 0.11,3.59 0.97,5.15 -2.84,-2.29 -3.24,4.22 -6.65,2.09 -2.84,1.31 -5.14,-3.82 -7.86,-2.71 -1.9,-0.09 0.68,4.12 -2.36,3.87 -3.59,-0.21 -7.54,0.01 -9.81,-3.3 -3.88,-0.94 -1.76,4.82 -5.2,4.63 -0.2,1.99 1.7,1.26 2.49,1.37 0.64,2.2 6.26,1.35 5.12,4.79 -0.92,1.9 -5.78,3.67 -3.13,5.83 2.48,-0.75 3.13,1.64 2.84,3.17 1.93,-1.62 4.32,-2.9 4.52,0.69 1.23,0.34 3.7,1.07 1.85,-0.84 1.05,-1.8 2.07,-3.7 4.36,-3.11 -0.01,-3.76 5,-4.67 6.38,-1.85 2.32,1.17 -2.54,5.3 1.82,4.76 1.89,-0.76 3.45,-1.45 3.7,1.02 2.53,0.02 1.7,2.08 1.81,3.51 2.89,-1.55 4.4,2.61 6.33,3.87 2.8,0.69 3.15,4.82 3.78,7.11 -0.67,2.22 -2.4,3.52 -4.18,3.93 1.03,2.15 2.04,4.41 2.86,6.75 1.85,2.05 3.54,0.51 3.74,-1.66 2.08,-0.46 3.52,-1.72 3.36,-3.55 0.97,2.31 4.15,-0.86 5.01,-1.94 1.98,0.27 2.78,-2.49 0.23,-2.01 -0.41,-2.17 1.81,-4.53 3.24,-5.76 1.92,-1.29 6.52,3.05 5.01,-1.07 0.59,-2.7 2.29,-5.32 1.74,-7.95 1.25,-0.84 -1.73,-1.91 0.74,-2.53 2.32,-1.47 3.71,-3.79 6.04,-5.21 0.4,-1.57 0.8,-2.1 2,-2.68 -1.38,-1.85 -2.67,-6.36 -5.46,-5.62 -1.54,-2.69 0.63,-6.1 -0.98,-8.69 -2.44,0.11 -1.5,-4.81 -4.22,-4.74 -2.14,-0.69 -5.48,-5.75 -7.17,-2.57 0.92,4.08 -4.49,2.27 -2.46,-0.85 -1.91,-1.19 -5.21,1.01 -5.19,3.34 -1.4,3.16 -4.03,-1.21 -5.4,-1.88 -1.7,0.52 -1.47,-2.53 -3.73,-1.05 -1.71,1.8 -2.68,-0.11 -1.46,-1.57 -0.15,-1.56 -0.74,-2.62 0.35,-3.62 -1.57,-1 -0.67,-2.78 -2.91,-3.32 z","department-48":"m 373.48,404.94 c -1.47,0.89 -3.46,3.53 -5.12,1.98 -0.01,1.49 -1.57,1.93 -1.04,3.5 -1.43,1.81 -3.11,1.2 -3.88,-0.85 -2.88,-0.45 -1.07,4.27 -3.39,4.9 -1.4,1.6 -1.16,4.02 -1.76,5.9 0.45,1.49 -1.64,2.13 -1.6,3.92 -1.61,2.48 1.66,4.55 3.09,6.26 2.11,1.84 -1.38,5.67 2.08,6.72 1.92,1.77 1.3,4.27 0.7,6.32 -0.81,2.08 2.13,3.68 0.68,5.63 -1.2,1 -0.69,2.92 0.49,1.55 -0.34,2.49 4.49,1.53 3.22,4.04 -0.61,3.08 3.16,-0.47 4.71,0.57 2.33,-0.24 2.39,2.9 4.55,3.55 1.02,2.18 4.4,1.65 6.21,1.9 1.73,0.64 4.49,-0.1 3.28,-2.39 -0.17,-1.71 2.49,-2.35 3.14,-0.7 2.15,-0.14 3.4,3.16 5.36,2.3 1.4,-0.48 2.81,0.78 3.7,-1.01 1.48,-0.27 0.79,-2.83 2.56,-1.71 0.48,-1.13 -1.37,-1.78 -0.45,-3.23 -0.32,-1.45 2.55,-2.77 -0.12,-3.02 -0.49,-1.4 -1.27,-2.69 0.33,-3.79 -0.9,-1.25 -2.65,-3.18 -2.62,-4.42 1.46,-1.07 3.7,-0.89 3.95,-3.34 1.21,-1.8 0.03,-4.2 -0.54,-6.13 -0.14,-2.55 -3.1,-2.32 -3.01,-4.96 -0.51,-1.42 -0.74,-3.3 -1.23,-4.8 0.21,-0.99 -1.02,-2.2 -0.2,-3.43 -0.96,-0.75 -2.32,-0.83 -1.55,-2.36 -1.84,1.16 -1.86,-1.71 -3.45,-2.23 0.02,-3.18 -3.5,-0.79 -4.63,-2.01 2.18,-2.04 -3.67,-4.45 -2.82,-1.23 0.29,3.23 -3.33,0.7 -4.65,2.81 -2.12,0.38 -2.38,-3.83 -3.37,-5.42 -0.69,-1.57 0.03,-3.98 -2.15,-4.28 l -0.25,-0.51 -0.23,-0.01 -2.2e-4,-1e-4 z","department-63":"m 350.25,319.87 c -2.41,0.1 -1.39,6.08 -4.36,2.69 -2.2,-1.55 -1.13,2.91 -3.36,2.6 -0.99,2.15 -2.4,5.06 -4.99,2.48 -3.53,1.71 0.74,5.9 1.02,8.31 0.33,2.26 -0.13,3.09 -1.85,4.34 -0.59,3.07 -2.87,5.1 -5.46,5.93 -0.78,1.08 -3.3,2.29 -0.7,4.14 1.84,2.94 6.68,6.33 3.76,10.01 -3.59,1.58 -0.37,5.2 0.63,7.47 -1.63,3.1 2.57,5.33 4.8,4.69 1.04,1.88 3.32,0.49 2.64,2.92 1.95,3.55 6.09,-0.43 8.67,2.01 3.48,0.74 2.44,6.76 6.82,5.67 2.39,-1.04 2.55,-4.68 5.97,-4.03 2.84,-0.11 5.33,-4.21 7.45,-3.45 1.17,-0.15 2.17,-1.54 3.06,0.31 2.88,1.39 5.17,-2.92 7.03,0.16 3.24,-0.64 2.05,6.51 5.21,2.85 1.13,-3.37 5.41,3.07 6.68,-1.35 0.83,-2.19 5.07,4.34 4.28,-0.59 0.72,-2.92 5.73,-4.1 3.45,-7.91 -0.98,-3.57 -2.63,-6.42 -6.17,-8.13 -2.69,-2.1 -1.82,-6.45 -4.74,-8.34 -0.45,-1.7 -2.19,-2.8 -0.35,-4.4 -0.69,-2.91 2.62,-4.84 -0.62,-6.96 -2.59,-1.57 -3.98,-4.12 -5.91,-6.12 -2.16,0.37 -6.24,1.62 -5.45,-1.98 -1.98,-2.68 -5.33,1.55 -7.73,-0.76 -2.66,-0.65 -5.11,0.01 -7.56,-0.72 -1.51,-1.52 -2.18,-2.56 -4.49,-2.07 -3.09,-0.49 -3.15,-3.91 -5.15,-5.29 0.27,-2.13 2.01,-5.11 -1.71,-4.35 l -0.47,-0.05 -0.43,-0.12 0,0 z","department-42":"m 397.37,318.49 c -1.6,0.83 -3.4,1.29 -4.64,2.21 -1.3,0.59 1.02,2.59 0.48,3.98 0.61,1.85 -0.41,4.23 1.11,6.23 -1.61,2.5 2.37,7.25 -2.15,7.3 -1.09,-0.11 -1.49,1.09 -2.88,0.34 -2.32,2.56 2.22,3.36 1.74,5.81 -1.98,1.61 -0.24,4.65 -2.31,6.15 1.69,0.49 1.3,2.13 2.33,2.91 2.23,1.34 1.14,4.92 3.25,6.83 1.78,1.97 5.01,2.91 6.17,5.68 -1.24,2.45 2.85,3.93 0.67,5.95 0.89,3.06 -5.47,3.2 -3.23,7.04 0.42,3.41 2.25,-3.4 4.17,-0.43 0.87,1.44 1.19,2.02 2.38,0.77 1.23,1.18 1.39,0.75 2.25,-0.33 1.05,-0.89 3.38,0.13 2.65,-1.8 2.25,-0.56 4.93,-0.17 6.2,1.72 1.74,-1.96 5.45,1.48 2.47,2.65 0.55,1.23 1.98,1.3 0.84,2.91 0.86,2.54 3.62,-1.67 4.48,1.3 1.58,2.36 4.9,0.89 6.79,-0.08 -1.25,-1.91 1.2,-3.4 2.26,-5.02 1.49,-1.32 5.89,-1.48 4.47,-4.32 -0.52,-1.74 0.97,-3.48 -0.58,-5.25 -0.48,-1.69 -3.61,1.7 -3.93,-1.3 0.42,-2.1 -0.24,-3.68 -1.93,-4.86 -1.43,0.06 -2.67,-1.02 -4.29,-0.14 -2.32,-0.62 -2.91,-2.86 -5.1,-4.24 -1.42,-1.8 -2.51,-3.8 -0.78,-6.03 1.82,-2.31 -3.43,-0.74 -1.14,-3.43 0.94,-1.31 1.04,-3.98 1.15,-5.42 -2.5,-0.01 -3.12,-2.67 -2.32,-4.33 -1.63,-1.26 -2.43,-3.07 -4.07,-4.21 0.9,-0.54 3.97,0.36 2.35,-1.72 -1.31,0.09 -3.3,-2.79 -0.85,-2.47 1.97,-1.74 0.65,-5.53 4.11,-6 0.97,-0.45 2.45,1.37 2.78,-0.77 -0.25,-1.57 -2.38,-2.12 -0.65,-3.5 -1.51,-1.51 -2.16,1.22 -2.41,1.83 -1.97,-0.74 -4.16,3.26 -5.16,1 1.12,-2.05 -1.54,-0.14 -2.23,-1.49 -1.1,1.9 -3.25,0.89 -4.63,-0.3 -2.08,0.61 -5.43,3.53 -6.14,-0.27 -1.61,-0.39 -4.74,-0.44 -2.93,-2.93 0.29,-0.63 0.34,-2.13 -0.72,-1.99 z","department-69":"m 433.73,316.51 c -1.23,0.46 -2.5,0.15 -2.78,2.07 -0.74,1.45 -2.37,-0.51 -2.67,-1.28 -0.69,1.49 -2.76,2.38 -3.71,0.45 -1.68,-1.33 -4.39,-0.82 -4.01,1.84 -0.71,1.65 0.63,2.41 1.38,3.48 -2.55,0.77 0.51,1.73 0.61,2.71 -0.41,1.66 -1.38,2.06 -2.7,1.09 -2.04,0.63 -3.43,2.17 -3.25,4.46 0.34,2.11 -3.89,1.45 -1.52,3.28 0.64,0.85 2.57,0.6 1.5,2.34 -0.59,0.49 -3.83,-0.49 -1.93,0.9 1.83,0.38 1.7,2.77 3.5,3.41 0.3,1.24 -1.23,2.13 0.17,3.34 0.85,1.23 3.47,0.4 1.96,2.6 -0.03,1.87 -0.27,3.49 -1.48,4.83 0.06,1.49 3.29,0.29 1.61,2.31 -1.06,1.85 -1.32,4.02 0.45,5.41 1.27,1.35 2.68,3.31 4.18,4.13 1.51,1.5 3.36,-0.41 4.88,1.05 1.7,-0.73 1.49,2.06 2.91,2.19 -1.19,1.71 0.21,5.2 2.42,3.21 1.24,-1.16 2.04,4.15 2.96,1.45 1.23,-1.41 3.83,-2.33 3.98,-4.32 -1.76,-0.7 -2.47,-2.54 -4.09,-3.51 1.84,-0.94 3.53,1.28 4.58,-0.77 1.51,-1.17 4.45,-0.14 5.27,-1.51 0.95,-0.25 2.74,0.97 2.03,-1.03 1.24,-1.85 2.79,-4.63 5.26,-4.54 0.24,-2.22 -3.33,-1.77 -3.23,-3.97 -1.59,-0.5 -1.14,-2.19 0.43,-1.77 0.7,-2.69 -4,-0.18 -5.55,-0.99 -1.61,0.21 -2.66,0.21 -2.4,-1.73 -0.63,-1.95 -1.32,-4.61 -3.64,-4.95 -0.96,0.68 -1.86,1.05 -1.38,-0.57 -0.83,-1.37 -2.55,-0.91 -3.49,-1.92 2.14,-2.03 -0.39,-5.26 0.95,-7.43 1.04,-0.99 -1.1,-2.32 0.59,-3.24 1.49,-1.45 2.32,-4.9 -0.84,-4.45 -2.61,-1.01 0.89,-5.07 -2.78,-5.24 -1.21,-1.33 2.19,-1.14 0.43,-2.68 -0.12,-0.26 -0.3,-0.58 -0.61,-0.66 z","department-43":"m 379.31,374.73 c -1.62,2.39 -4.9,1.8 -6.71,0.33 -0.7,1.72 -0.87,1.21 -1.91,0.1 -0.8,1.98 -3.58,1.56 -4.38,3.23 -1.25,1.09 -2.57,1.35 -4.33,1.17 0.74,1.5 -1.58,1.78 -0.04,2.79 -2.08,1.77 1.79,1.15 2.36,1.2 -0.13,1.97 3.13,-0.54 2.89,1.98 -0.29,1.8 0.97,2.96 2.14,3.73 -0.86,2.28 -0.05,5.34 2.48,5.9 2.93,0.43 -0.37,2.07 -1.36,0.74 -1.49,0.56 1.82,1.51 0.26,2.94 -1.01,2.64 2.59,2.31 2.97,4.1 -2.04,1.24 0.26,1.73 1.03,2.74 1.8,0.69 0.7,3.92 2.11,5.44 0.56,1.74 1.53,5.67 3.68,3.09 2.13,0.18 4,-0.58 3.52,-3.06 1.72,-1.57 4.47,0.99 3.25,2.73 2.03,-0.35 4.24,-0.91 4.56,1.81 1.6,0.42 1.42,3.2 3.32,1.95 -0.31,0.86 -0.01,2.7 1.4,1.48 3.08,-0.04 2.22,-4.19 4.35,-5.07 0.8,1.72 0.74,-0.65 2.16,-0.3 0.91,-0.43 0.22,-3.47 2.51,-2.52 2.14,-0.66 5.33,0.63 5.55,-2.64 1.54,-1.36 1.15,-4.48 3.81,-3.54 1.57,0.05 2.24,-1.12 0.99,-2.15 -1.14,-2.94 5.69,-1.67 3.23,-3.83 -1.6,-1.11 -0.01,-3.44 1.47,-3.61 -1.01,-0.84 -1.65,-2.84 0.52,-2.06 0.75,0.25 1.93,2.57 1.79,0.63 -0.57,-2.5 2.93,-4.77 1.26,-7.19 -1.2,-1.98 -2.64,-2.48 -4.48,-1.26 -2.08,-0.82 0.53,-3 -1.95,-3.68 1.6,-1.09 1.44,-3.36 -0.89,-3.47 -2.17,2.19 -2.9,-2.58 -5.24,-0.98 -1.45,-1.18 -2.23,0.2 -2.36,1.14 -1.72,-0.24 -2.79,0.8 -3.72,1.87 -0.74,-1.86 -1.9,-0.59 -2.28,0.4 -0.52,-2.16 -2.78,-4.05 -4.23,-1.53 -0.3,1.52 -1.03,1.38 -1.49,0.05 -2.13,0.67 -3.37,-3.95 -4.67,-1.3 0.12,2.86 -4.25,0.82 -5.13,-0.4 -0.84,1.48 -2.99,4.23 -4.08,1.09 -0.06,-2.97 -3.34,-1.73 -4.39,-4.01 z","department-07":"m 436.62,378.68 c -2.11,1.19 -5.05,1.82 -5.73,4.31 -0.61,0.74 -1.7,1.47 -0.63,2.83 -1.48,1.55 -5.39,0.21 -5.65,3.05 -0.4,2.17 -2.13,4.1 -1.51,6.11 -0.82,1.35 -2.2,-3.55 -3.34,-0.83 2.87,1.6 -1.37,1.64 -1.06,3.7 -0.07,1.01 2.58,2.11 0.3,2.78 -2.43,-0.04 -3.73,1.92 -2.22,3.92 -1.62,1.35 -4.39,-0.37 -4.36,2.53 -1.51,1.8 -1.89,5.12 -5.04,3.9 -1.64,0.68 -4.72,-0.35 -3.54,2.75 -1.69,0.44 -2.07,1.93 -3.57,0.7 -0.65,2.39 -1.67,4.38 -3.7,5.18 0.05,1.23 -0.23,2.66 0.56,3.58 -0.09,2.42 0.91,5.06 1.8,7.31 3.3,1.24 2.04,5.97 4.07,8.24 1.96,0.49 1.37,2.56 2.59,3.64 -1.74,0.94 0.2,3.57 -1,5.13 1.45,0.08 4.13,-2.2 4.71,0.49 2.27,-0.88 3.84,4.84 5.98,2.4 0.11,-2.69 3.06,-5.02 5.54,-4.01 -0.84,1.71 0.49,4.93 2.22,2.69 -1.12,-4.19 4.37,-2.87 5.2,-0.35 2.07,1.28 5.06,2.67 3.99,-1.18 -0.44,-2.49 0.5,-4.84 0.92,-7.23 2.57,-1.67 0.05,-4.72 1.41,-6.94 -1.34,-2.75 2.73,-3.36 2.63,-6.07 2.5,-3.08 -0.98,-6.81 0.47,-10.07 2,-1.59 2.83,-4.11 4.16,-6.22 -0.81,-2.28 2.55,-4.4 -0.11,-6.44 -1.37,-1.98 -0.41,-4.12 -0.17,-5.92 -1.82,-0.69 -0.96,-3.19 -2.25,-4.49 1.8,-2.26 -0.83,-5.08 0.05,-7.93 1.49,-3.08 -3.02,-4.17 -1.77,-7.12 l -0.36,-0.33 -0.59,-0.1 0,0 z","department-26":"m 448.07,380.12 c -2.89,1.17 -5.09,3.5 -8.19,2.69 -0.39,2.66 -1.05,6.79 0.49,9.42 -1.96,1.97 0.32,3.64 0.34,5.76 2.35,1.37 -0.99,4.81 1.33,6.93 2.06,2.38 -0.62,5.13 -0.81,7.77 -1.22,2.58 -4.32,4.41 -3.69,7.71 1.66,3.46 0.06,6.59 -1.3,9.7 -3.02,0.93 -0.83,4.24 -2.03,6.3 0.95,3.33 -2.55,6.12 -1.92,9.81 1.2,3.03 7.51,-0.99 7.1,4.18 0.14,2.04 0.67,4.67 2.58,1.79 2.97,-0.92 6.04,-2.27 9.06,-3.52 1.12,3.67 4.14,-0.81 5.13,-0.14 -0.85,1.68 -0.59,3.54 -0.5,5.19 1.36,1.14 3.35,1.14 4.16,-0.1 1.72,1.86 4.28,0.89 5.95,1.95 0.03,1.94 0.09,3.52 2.41,3.44 1.06,4.04 4.77,0.96 6.47,-0.43 -1.58,-2.47 1.9,-2.75 3,-1.1 1.64,-1.37 2.06,-2.86 1.41,-5.21 1.53,-2.36 -2.87,-0.24 -1.73,-2.96 -1.59,-0.67 -0.77,-1.18 -0.59,-2.32 -2.51,0.48 -4.35,-1.04 -6.35,-0.89 -1.23,-1.45 -2.87,-1.53 -2.12,-3.69 -1.62,-1.67 -0.01,-2.82 1.69,-1.61 2.12,-0.83 -1.87,-1.85 -0.65,-3.64 -0.28,-2.93 4.33,0.48 6.05,0.59 1.73,0.39 1.15,-2.66 3.01,-2.35 -1.71,-1.67 -3.84,-2.97 -1.6,-5.43 1.79,-1.45 -0.55,-5.71 2.99,-3.98 1.94,0.82 3.33,-0.86 4.9,-1.06 1.29,-0.88 2.08,-3.19 -0.35,-2.44 -2.24,0.57 -3.91,-2.09 -6.41,-1.58 -1.16,-1.43 -2.84,-3.52 -4.34,-3.81 0.14,1.78 -6.09,-0.53 -3.44,-2.33 -1.37,-2.79 0.85,-6.84 0.11,-10.1 0.96,-2.47 -1.42,-5.35 0.09,-7.37 -2.07,0.93 -4.59,4.84 -6.88,1.6 -1.84,0.62 -4.04,-0.31 -5.88,-1.61 -1.29,0.02 -2.1,2.02 -3.13,0.34 2.95,-1.62 2.73,-5.57 1.54,-8.29 2.1,-1.71 -0.25,-3.63 -2.12,-2.9 0.27,-1.74 0.99,-4.37 -1.59,-2.47 -1.31,0.06 -1.04,-2.86 -3.02,-2.37 -0.42,-0.45 -0.36,-1.52 -1.19,-1.46 z m -1.27,60.35 c 2.68,0.18 1.93,3.2 4.79,3.14 -1.88,1.51 -2.98,3.63 -4.06,5.91 -1.76,-1.35 -5.66,0.15 -4.33,-3.15 -1.66,-0.66 1.47,-2.81 1.37,-4.36 0.67,-0.62 1.73,-0.72 2.23,-1.54 z","department-84":"m 446.86,440.69 c -1.95,0.68 -2.59,2.23 -3.24,3.95 -1.54,1.08 0.24,1.84 -0.38,3.25 0.79,1.16 2.95,0.74 4.3,1.12 1.33,-1.76 1.41,-4.26 3.76,-4.92 -0.23,-0.92 -2.69,-0.73 -2.57,-2.42 -0.66,-0.27 -1.12,-0.97 -1.86,-0.99 z m -10.7,6.69 c -1.75,0.63 -4.36,-0.72 -3.75,2.23 -0.47,1.96 1.22,3.5 1.32,5.13 2.22,-0.26 1.8,3.29 1.6,4.89 -0.71,1.78 -0.16,4.41 1.97,3.57 1.39,1.79 2.8,3.83 3.94,5.76 0.11,1.52 -2.28,0.28 -1.54,2.26 -0.27,1.54 -4.74,2.54 -1.78,2.92 1.98,0.36 4.26,0.33 5.81,1.82 2.69,0.61 4.43,2.7 6.08,4.74 0.55,2.14 2.45,3.17 4.31,4.09 2.3,2.43 5.12,0.03 7.83,1.23 2.38,1.21 4.48,2.96 6.96,4.03 2.69,1.26 6.11,1.9 8.79,0.34 1.35,-1.61 3.7,-0.97 4.73,-3.09 0.97,-1.51 -1.94,-2.24 -1.96,-3.86 -1.56,-1.86 -3.42,-4.41 -6.24,-2.8 -2.07,0.95 -0.48,-2.95 0.61,-3.43 0.51,-1.33 1.55,-2.66 -0.1,-3.23 -0.29,-2.08 -4.3,-0.54 -3.06,-3.3 0.45,-2.01 1.86,-3.87 1.45,-6.01 -1.1,0.12 -2.63,0.07 -2.14,-1.74 0.53,-2.35 -2.66,-1.28 -2.71,-3.51 -1.05,-0.88 -3.35,-0.4 -2.48,-2.73 -0.01,-3.12 -4.03,-0.26 -5.3,-2.66 -1.51,-1.06 -0.98,1.74 -2.66,0.68 -2.01,-0.15 -3.06,-1.35 -2.27,-3.12 -1.69,-0.64 1.81,-3.73 -0.28,-2.95 -1.07,2.14 -3.56,1.91 -4.6,0.21 -2.41,0.78 -4.55,2.65 -7.11,2.79 -1.53,-0.33 -4,4.19 -3.94,0.55 -0.37,-2.16 -0.51,-5.06 -3.51,-4.81 z","department-13":"m 436.6,474.08 c -0.74,1.85 -4.74,2.73 -4.06,4.51 1.26,0.66 -1.41,1.72 -0.12,3.06 0.08,2.7 -2.74,5.11 -1.37,7.86 -2.28,-0.28 -6.4,-2.34 -7.04,1.21 -2.02,1.17 -2.34,4.33 0.25,4.07 -0.26,2.18 -2.99,1.15 -3.24,3.2 -2.53,0.88 -3.65,1.48 -5.33,3.13 -3.12,0.45 -3.32,4.69 0.25,3.69 2.78,0.47 5.55,1.05 8.35,0.35 2.37,-0.45 7.29,1.42 4.55,4.28 -0.6,3.55 5.03,2.05 7.33,2.58 1.71,0.43 5.71,0.01 2.7,-2.11 -3.88,-1.35 -2.85,-5.16 -3.05,-8.31 -0.04,-1.21 -2.55,-5.59 -0.42,-2.89 1.89,2.36 1,5.34 0.95,8.05 0.88,2.13 3.62,3.05 5.46,4.22 1.53,-0.81 -2.25,-2.45 0.5,-3.11 1.91,-1.46 4.03,-0.52 5.49,0.58 3.35,0.39 4.55,-4.15 1.3,-5.2 -0.68,-1.48 -0.16,-6.09 1.79,-3.06 2.23,-0.56 2.91,0.56 2.79,2.29 1.26,2.1 3.09,1.09 4.71,0.38 1.06,3.09 -3.48,5.94 -6.44,5.14 -4.78,-0.48 -3.49,6.19 0.68,5.18 2.9,-0.06 6.07,0.58 8.6,-1.26 3.09,-1.75 3.91,2.83 3.27,4.72 2.03,1.28 -2.35,4.61 1.58,4.55 2.59,-0.26 5.17,0.78 7.33,0.32 0.97,2.95 3.72,1.97 5.67,1.14 -0.33,-3.01 1.95,-4.41 4.07,-5.87 -0.58,-2.14 -2.28,-2.58 -3.96,-3.03 2.56,-1.22 -1.49,-6.49 2.6,-5.65 1.54,0.73 3.39,-0.95 1.08,-1.75 -1.32,-1.96 -3.23,-3.39 -1.84,-5.73 2.26,-2.81 -4.73,-2.76 -1.41,-4.42 -0.82,-3.37 2.37,-4.88 5.13,-5.19 1.46,-1.69 -2.03,-5.66 -3.21,-2.42 -1.87,0.81 -3.79,1.87 -5.79,2.74 -4.96,0.73 -9.29,-2.44 -13.26,-4.94 -3.21,-1.31 -6.53,0.84 -9.27,-1.96 -2.79,-0.81 -2.96,-3.66 -4.98,-5.35 -1.7,-2.34 -4.64,-3.03 -7.08,-4.31 -1.52,-0.14 -3,-0.57 -4.52,-0.71 z","department-83":"m 517.2,482.16 c -2.21,0.45 -4.51,0.15 -4.56,3.03 -1.71,2.89 -5.34,-0.75 -6.7,-2.47 -3.07,-2.54 -3.41,4.73 -6.6,3.29 -1.58,1.5 -2.96,3.5 -4.46,4.67 -1.25,-1.47 -1.71,-3.25 -3.55,-3.95 0.03,-1.86 -1.87,-1.86 -1.91,-0.09 -1.33,1.02 -2.66,0.95 -3.16,-0.75 -1.91,-1.9 -4.18,0.89 -2.09,2.04 0.53,1.23 1.97,1.94 0.53,3.38 -2.84,-0.21 -5.92,2 -4.84,5.1 -3.44,1.27 3.35,1.25 1.35,3.57 -0.22,1.94 -1.24,3.31 0.74,4.69 0.22,1.73 4.1,2.93 0.81,3.75 -2.63,-1.28 -3.72,1.11 -2.27,3.16 -1.33,1.63 -0.65,2.88 1.29,2.7 1.09,1.33 2.34,3.31 -0.22,3.83 -2.89,1.3 -2.33,4.54 -1.48,6.82 1.05,1.11 2.71,1.01 3.71,1.52 -0.45,1.28 3.17,1.21 0.61,2.02 -2.2,1.64 1.53,2.03 2.31,3.24 1.87,0.49 2.01,-2.69 4.02,-1.64 0.25,-1.17 -3.62,-2.32 -0.77,-2.94 1.5,-0.75 1.25,1.72 3.11,0.9 1.98,-0.44 2.88,1.82 4.97,0.72 2.49,0.17 1.79,3.18 -0.25,3.1 1.03,0.17 3.75,1.02 4.22,-0.22 -1.87,-1.01 -0.43,-5.47 2.18,-4.51 2.27,-1.02 4.3,0.74 5.47,2.2 2.95,0.7 -0.7,-3.95 2.56,-4.14 1.82,-1.17 4.32,-0.11 5.81,-1.82 1.19,-1.87 3.53,-0.69 3.91,0.87 1.83,-0.26 1.02,-2.97 3.25,-2.97 -1.94,-1.52 0.52,-2.56 0.71,-4.09 -0.88,-1.35 -6.14,0.84 -4.2,-1.29 1.98,-0.49 3.13,-1.3 3.41,-3.27 3.09,-0.38 1.58,-4.33 3.42,-5.76 2.02,1.51 4.49,0.53 6.29,-0.38 1.97,-1.45 2.07,-3.69 -0.21,-4.86 0.39,-1.48 -0.82,-2.76 0.73,-4.13 0.32,-1.33 0.43,-3.31 -1.68,-2.51 -2.08,-0.91 -4.86,-2.77 -4.6,-5.2 1.21,-2.45 -1.26,-3.59 -2.82,-4.44 -1.3,-0.4 -2.5,0.43 -2.84,-1.45 -0.36,-2.95 -3.06,-1.75 -4.46,-0.37 0.04,-0.84 -0.83,-2.43 -1.72,-1.38 z","department-06":"m 534.65,445.17 c -2.26,1.07 -5.06,2.58 -4.36,5.66 -3,-0.21 -3.04,3.43 -4.06,5.54 -1.08,2.46 0.95,4.86 2.25,6.92 -1.14,3.22 2.36,4.62 4.05,6.69 0.63,2.61 3.53,3.37 4.77,5.63 -2.57,2.29 -4.92,-3.17 -6.86,-0.03 -0.74,2.32 -3.13,1.4 -4.56,1.36 1.15,1.61 -2.67,2.88 0.34,3.69 1.19,1.89 -4.95,1.17 -2.32,3.78 0.53,1.35 2.49,-0.04 3.3,1.63 2.89,-0.16 1.89,3.58 2.03,5.2 1.45,1.97 3.65,3.89 6.12,3.69 1.22,2.02 -1.58,4.04 -0.48,6.02 -0.26,2.6 3.76,2.43 2.74,-0.52 1.75,-2.03 4.78,-1.82 7.05,-2.83 2.15,2.34 0.79,-2.94 1.42,-4.1 0.35,-2.64 3.85,-1.42 4.44,-3.92 1.43,-0.64 4.04,-1.22 4.41,0.38 0.69,-1.18 0.32,-2.51 2.45,-2.28 -0.13,-1.76 1.58,-4.07 3.07,-2.16 1.7,0.06 1.19,-2.66 3.34,-2.27 -0.27,-2.4 -3,-5.81 0.3,-7.3 1.54,-1.45 0.99,-4.2 3.51,-4.76 2.78,-1.39 1.89,-4.43 4.17,-6.12 1.59,-2.77 -3.27,-4.24 -1.5,-7.3 -1.21,-2.71 -2.61,1.55 -4.47,0.73 -2.22,0.84 -4.68,1.32 -6.76,2.38 -2.04,0.2 -3.62,-0.51 -4.81,-1.86 -2.43,0.52 -3.44,-1.96 -5.53,-2.49 -1.15,-2.34 -3.58,-0.83 -4.96,-2.82 -1.54,-1.59 -4.78,0.61 -4.95,-2.66 -1.4,-1.9 -2.37,-3.95 -3.93,-5.85 l -0.23,-0.02 -1.8e-4,10e-5 z","department-04":"m 536.03,425.47 c -1.91,1.96 -3.88,3.46 -6.49,4.44 -1.02,2.88 -4.75,3.12 -5.32,6.34 -1.11,1.83 -1.21,3.9 -4.02,3.07 -3.01,-0.06 -6.66,-0.3 -8.11,-3.08 -0.64,-1.8 -3.43,-1.98 -2.19,0.22 -0.26,3.25 -2.7,-0.14 -4.23,1.68 -1.44,0.61 2.06,5.8 -1.43,5.09 -2.1,-2.16 -2.71,-5.63 -6.09,-5.69 -0.87,3.33 -6.54,3.63 -7.12,7.81 -0.96,1.13 -2.01,2.66 -0.4,3.1 -0.61,1.4 0.72,5.52 -1.66,2.94 -0.44,-1.65 -2.49,-3.59 -2.83,-0.6 1.02,1.86 2.62,3.82 3.95,5.12 -2.91,0.83 -6.3,-2.29 -9.28,0.12 -0.78,0.38 -3.94,0.37 -2.37,1.8 0.52,0.59 -1.17,0.62 -1.27,-0.25 -1.21,-2.36 -3.58,-0.6 -2.43,1.22 -2.05,0.82 -5.12,3.55 -2.92,5.69 3.34,-0.23 0.15,4.71 -0.09,6.55 -0.21,2.32 3.26,0.85 3.55,3.17 2.24,1.52 -3.59,5.18 -1.33,6.48 2.81,-2.13 5.06,0.73 6.7,2.59 0.57,1.46 2.26,4.38 3.61,1.7 2.13,0.13 4.41,4.24 5.38,0.42 1.94,-1.62 1.55,2.48 3.59,2.29 0.43,1.7 2.31,4.04 2.93,1.23 2.03,-0.76 2.24,-3.96 4.52,-2.9 1.73,-1.32 3.93,-6.5 5.92,-2.58 1.76,2.61 6.67,4.01 6.46,-0.53 1.66,-0.48 3.88,-1.21 5.41,-0.9 0.99,2.9 3.19,-2.27 4.59,0.48 1.62,-0.3 5.25,-1.56 1.66,-2.44 0.5,-1.52 2.15,-2.44 0.07,-3.65 2.45,0.82 5.17,0.99 6.43,-1.88 1.98,-0.91 4.27,3.34 5.6,0.53 -2.39,-1.94 -3.94,-3.66 -5.54,-6.13 -1.97,-1.55 -3.7,-3.16 -3.01,-5.85 -1.63,-2.1 -3.46,-4.86 -1.89,-7.35 0.29,-2.57 2.02,-4.78 3.68,-5.75 -0.2,-4 5.64,-3.6 4.5,-7.78 -0.28,-2.01 3.78,-1.57 1.15,-3.33 -2.21,-1.59 -4,-5.51 -0.76,-7.08 1.56,-1.02 4.77,-6.03 1.11,-6.32 z","department-05":"m 505.98,394.66 c -0.92,0.25 -1.63,1.24 -1.1,2.16 0.19,0.48 0.58,1.51 -0.28,1.51 -1.03,0.5 -0.62,1.96 -1.08,2.79 -0.5,0.85 0.81,1.35 1.44,1.52 1.22,0.46 2.5,-0.16 3.7,-0.25 0.54,0.61 -0.39,1.36 0.2,1.99 0.46,0.55 -0.24,1.49 0.61,1.76 1.28,0.11 1.04,1.22 0.99,2.19 0.04,1.33 -0.36,2.63 -0.12,3.94 -0.53,0.79 -1.69,0.39 -2,-0.4 -0.51,-1.19 -2.09,-0.47 -2.63,0.32 -1,0.97 -2.33,-0.4 -3.46,0.21 -0.85,0.38 -1.73,-1.03 -2.42,-0.12 -0.98,1 -2.08,1.88 -3.19,2.74 -0.6,-0.52 -1.36,-2.29 -1.99,-0.92 -0.19,0.45 -0.47,0.63 -0.95,0.63 -0.5,0.26 -1.64,0.37 -1.59,1.05 0.28,0.44 1.46,0.83 1.02,1.47 -0.54,0.3 -1.13,0.65 -1.29,1.26 -0.7,-0.05 -1.3,0.89 -1.97,0.42 -0.72,-0.21 -1.09,0.98 -1.85,0.43 -0.58,0.09 -1.28,-0.82 -1.74,-0.36 0.25,1.1 -0.94,2.04 -0.76,3.1 0.52,0.18 0.81,0.66 0.78,1.23 -0.53,0.61 -1.46,0.99 -1.58,1.94 -0.18,0.9 -1.25,0.06 -1.79,0.32 -0.68,0.37 -1.24,1.41 -2.12,0.79 -0.93,-0.21 -2.04,-0.85 -2.95,-0.39 -0.57,0.89 0.83,2.18 -0.26,2.82 -0.65,0.74 -0.7,1.84 -1.37,2.59 -0.33,0.63 -0.72,1.79 0.31,1.98 1.01,0.26 1.61,1.36 2.24,2.13 -0.07,0.59 -1.06,0.18 -1.47,0.37 -0.6,0.27 -0.26,1.22 -0.74,1.67 -0.29,0.65 -1.01,0.59 -1.49,0.18 -0.57,-0.34 -1.27,-0.05 -1.74,-0.61 -0.9,-0.62 -2,-0.67 -3.03,-0.83 -0.44,-0.35 -1.26,-0.9 -0.84,0.18 0.34,0.85 -0.18,1.94 0.35,2.71 0.46,0.27 1.64,0.66 1.06,1.38 -0.5,0.81 -1.41,0.3 -2.05,-0.05 -0.52,-0.37 -1.25,0.09 -0.87,0.7 0.33,0.77 0.86,1.66 0.62,2.5 -0.66,0.38 0.12,0.97 0.62,0.79 0.61,0.08 0.48,1.09 1.17,1.15 0.27,0.47 0.79,0.78 1.25,0.32 0.66,-0.57 1.26,0.29 1.64,0.72 1.26,0.36 2.77,-0.21 3.93,0.31 -0.15,0.66 -1.33,1.39 -0.16,1.75 0.4,0.17 0.78,0.55 0.44,0.97 -0.13,0.75 0.67,1.6 1.38,1.06 0.44,-0.36 1.29,0.39 0.73,0.76 -0.45,0.57 -0.47,1.41 -0.01,1.94 -0.06,0.96 -0.14,2.01 0.32,2.89 0.74,-0.36 1.48,-0.84 2.32,-1.03 0.89,-0.54 2.04,-0.3 3.03,-0.47 1.36,0.7 2.9,1.36 4.48,1.28 0.82,-0.57 -0.52,-1.06 -0.97,-1.25 -0.83,-0.92 -1,-2.37 -2.18,-3.02 -0.89,-0.61 -0.47,-1.72 -0.01,-2.44 0.2,-0.82 1.38,-0.21 1.78,0.12 0.44,0.5 0.07,1.39 0.76,1.79 0.27,0.34 1.29,1.11 1.39,0.28 -0.46,-0.7 -0.4,-1.72 0.04,-2.4 0.24,-0.63 -0.28,-0.96 -0.8,-0.99 -0.4,-0.58 -0.19,-1.66 0.53,-1.93 1.11,-0.98 1.03,-2.64 1.93,-3.7 0.84,-0.83 2.18,-1.02 2.91,-1.96 0.3,-0.69 1.08,-1.23 1.8,-1.37 0.77,0.34 0.76,-0.99 0.72,-1.47 0.2,-0.8 1.42,-0.33 1.96,-0.19 0.77,0.29 1.87,0.6 1.76,1.64 -0.03,0.5 0.41,0.7 0.8,0.64 0.65,1.23 1.63,2.21 2.33,3.38 0.67,0.53 1.08,-0.73 1.28,-1.18 0.53,-1.39 -0.98,-2.61 -0.83,-3.89 0.95,-0.06 1.68,-0.79 2.53,-1.06 0.55,0.33 1.53,1.41 2.02,0.36 0.44,-0.73 0.48,-1.61 -0.08,-2.27 0.17,-0.42 0.83,-0.77 1.24,-0.86 0.91,1 1.94,1.96 2.46,3.23 0.51,0.3 1.22,-0.11 1.7,0.41 0.56,0.61 1.25,1.09 2.14,1 1.98,0.14 3.96,0.2 5.94,0.29 0.53,-0.84 0.08,-2.27 1.05,-2.94 1.09,-0.75 1.13,-2.18 1.48,-3.28 1.39,0.19 2.51,-0.88 3.23,-1.94 0.77,-0.23 0.49,-1.3 1.27,-1.53 0.82,-0.72 1.93,-0.86 2.92,-1.25 0.49,-0.42 0.51,-1.23 1.32,-1.26 0.83,-0.36 1.14,-1.4 1.93,-1.78 0.77,0.27 1.79,0.29 2.08,-0.66 0.66,-1.38 2.4,-1.81 3.71,-1.06 0.39,0.18 1.29,0.5 1.12,-0.27 0.09,-1.44 -0.99,-2.46 -1.92,-3.38 -0.16,-1.25 0.2,-2.81 -0.7,-3.82 0.26,-0.63 1.23,-1.27 0.5,-1.95 -0.48,-0.56 -0.7,-1.27 -1.5,-1.47 -0.9,-0.29 -1.99,-1.36 -2.93,-0.65 -1.03,0.93 -2.61,0.14 -3.63,-0.46 -1.39,-1.22 -3.06,-2.05 -4.52,-3.16 -0.14,-0.64 0.04,-1.36 -0.18,-2.01 0.26,-0.67 0.64,-1.39 0.32,-2.14 -0.46,-0.77 -0.27,-1.65 -0.34,-2.48 -0.67,-1.47 -2.82,-0.12 -3.68,-1.29 -0.42,-1.05 0.19,-2.49 -0.93,-3.24 -0.45,-0.58 -0.89,-1.29 -0.84,-2.02 -0.58,-0.55 -1.68,-0.52 -2.38,-0.21 -0.4,0.9 -1.61,1.62 -2.44,0.8 -0.83,-0.16 -1.61,0.86 -1.3,1.66 0.16,0.65 0.15,1.68 -0.74,1.69 -0.9,0.39 -1.54,-0.53 -2.43,-0.47 -0.85,-0.07 -1.72,-0.21 -2.49,-0.62 0.67,-1.13 -0.23,-2.74 -1.37,-3.11 -0.83,0.45 -1.99,0.92 -2.79,0.12 -0.24,-0.12 -0.29,-0.52 -0.63,-0.43 z", -"department-38":"m 464.21,344.5 c -2.79,1.9 -2.68,8.48 -7.27,6.99 -0.9,-2.78 -3.83,-2.24 -5.03,-0.76 -2.02,0.29 1.51,1.68 1.08,3.08 2.47,0.08 3.5,3.16 0.44,2.72 -1.73,1.6 -3.23,3.88 -3.85,5.57 -1.57,-1.3 -1.06,1.72 -2.92,0.29 -3.28,-0.47 -4.55,3.17 -7.48,1.48 -1.5,1.31 5.74,3.47 2.07,5.5 -2.26,2.06 -5.1,3.74 -4.23,6.93 0.77,2.57 -0.06,8.04 4.48,6.03 2.27,2 6.34,-5.1 8.45,-0.76 1.77,0.21 1.71,3.96 3.93,1.45 1.68,0.13 -1.09,4.61 1.72,3.03 1.9,0.92 2.02,2.4 0.5,3.24 1.61,2.88 0.73,6.17 -0.85,8.65 1.08,-0.16 3.1,-1.79 4.37,0.45 2.36,0.7 4.24,0.15 6.23,1.33 0.84,-0.27 3.02,-1.03 3.81,-2.77 2.64,0.63 -1.49,2.67 0.72,4.47 0.38,3.59 -0.09,7.56 -0.56,11.3 0.4,1.45 0.41,2.4 -0.01,3.62 1.24,0.79 4,2.16 3.74,0.13 2.61,1.83 4.3,5.05 7.54,4.72 2.17,2.94 5.3,0.26 5.21,-2.58 1.66,1.44 8.14,-0.42 5.75,-2.57 -0.07,-1 2.61,-2.26 3.54,-2.4 2.26,2.99 3.89,-3.83 6.67,-1.32 2.19,0.23 3.45,-0.22 5.31,-1.27 0.97,1.39 3.24,2.32 2.54,-0.45 1.1,-3.23 -1.77,-5.43 -1.86,-8.01 -3.37,1.84 -6.82,-1.82 -3.61,-4.41 -0.13,-1.84 0.52,-3.31 1.32,-4.86 -1.82,-0.13 -3.26,-1.51 -5.13,-0.74 1.43,-2.69 -1.8,-4.98 -0.71,-7.76 -0.38,-2.56 4.12,-3.93 2.03,-6.04 0.5,-3.14 -3.24,-5.89 -6.15,-5.13 -1.66,-1.14 -3.77,-5.23 -5.46,-1.87 -0.31,1.87 -0.63,3.21 -0.4,4.62 -2.15,1.23 -4.77,-3.87 -7.68,-2.52 -0.95,-2.94 -2.79,-6.19 -4.33,-9.02 -1.66,-2.41 -2.31,-5.84 -4.73,-7.23 -0.04,-3.77 -5.4,-5.53 -5.81,-9.3 0.88,-1.39 -2.2,-3.36 -3.39,-3.83 z","department-73":"m 486.16,340.96 c -0.45,0.45 0.31,1.19 0.03,1.77 -0.43,2.29 -1.49,4.41 -1.88,6.69 -0.26,1.38 -0.01,2.88 -0.3,4.22 -0.62,0.31 0.02,1.17 -0.58,1.57 -0.45,1.17 -1.58,0.73 -2.55,0.64 -0.84,0.07 0.16,1.14 -0.18,1.7 -0.39,0.69 -1.23,1.27 -0.9,2.19 0.16,0.81 -0.73,0.85 -1.28,0.92 -0.46,0.22 -0.52,0.84 -0.99,1.02 -0.1,0.57 -0.89,1.04 -0.26,1.63 0.76,1.32 2.36,2.45 2.11,4.11 0.23,0.33 0.74,0.34 0.74,0.83 0.84,0.69 0.84,1.99 1.51,2.8 0.86,0.69 -0.26,2.79 1.33,2.79 0.69,-0.42 1.75,-0.43 2.21,0.36 0.86,0.8 2.15,0.9 3.12,1.6 0.57,0.15 0.69,0.71 1.06,1.03 0.59,0.02 1.32,-1.15 0.42,-1.31 -0.57,-0.83 0.26,-1.71 0.62,-2.42 0.32,-0.63 -0.18,-1.37 -0.02,-1.93 0.76,-0.47 1.65,-0.69 2.47,-1.04 0.43,0.56 1.01,1.07 1.58,1.38 0.13,0.76 0.39,1.57 1.25,1.79 0.96,0.51 2.24,-0.49 3,0.51 0.5,0.17 1.21,-0.47 1.46,0.31 0.64,1.59 2.48,2.51 2.66,4.29 -0.29,0.15 -0.79,0.54 -0.21,0.73 0.85,0.23 0.12,1.35 0.11,1.91 -0.05,0.98 -1.42,0.76 -1.63,1.63 -0.67,0.52 -0.97,1.32 -0.71,2.16 0.28,0.8 -0.51,1.41 -0.41,2.16 0.41,0.87 0.74,1.73 1.41,2.45 0.62,1.01 -0.59,1.95 -0.5,2.93 0.52,0.56 1.11,-0.22 1.49,-0.5 0.92,-0.1 1.37,0.91 2.13,1.15 0.63,-0.3 1.62,-0.2 1.66,0.68 -0.1,1.41 1.8,2.18 2.81,1.25 0.65,-0.79 1.23,0.33 1.67,0.84 0.46,0.64 0.68,1.43 0.45,2.15 0.54,0.74 1.75,0.36 2.53,0.62 0.86,0.16 1.92,1 2.66,0.13 0.38,-0.92 -0.65,-2.23 0.57,-2.71 0.35,-0.45 0.85,-0.56 1.27,-0.15 0.94,0.49 1.73,-0.4 2.13,-1.14 0.91,-0.24 1.86,0.12 2.72,0.29 0.81,-0.21 1.62,-0.66 2.1,-1.32 0.99,-0.68 2.46,0.1 3.22,-1.02 0.35,-0.43 0.97,-0.89 1.45,-0.3 0.85,0.52 2.11,0.47 2.52,1.51 0.72,0.63 1.87,0.09 2.61,-0.25 0.41,-0.56 -0.74,-1.63 0.24,-1.82 0.89,-0.31 2.18,-0.09 2.35,-1.31 0.28,-0.94 0.93,-1.7 1.94,-1.85 1,-0.19 1.96,-0.56 2.92,-0.94 0.28,0.29 0.54,1.02 1.07,0.58 0.47,-0.87 0.96,-2.03 2.06,-2.12 0.86,-0.78 0.12,-2.12 -0.06,-3.06 -0.11,-0.72 -1,-1.93 0.07,-2.33 0.68,-0.07 0.41,-0.73 0.59,-1.12 0.98,-0.99 1.63,-2.36 1.9,-3.7 -0.59,-0.97 -1.87,-1.22 -2.71,-1.86 -0.94,-0.95 -0.87,-3.04 -2.54,-3.15 -0.56,-0.01 -0.92,-0.42 -0.89,-0.96 -0.58,-0.7 -1.85,-0.56 -2.18,-1.57 -0.64,-1.44 -0.23,-3.2 -1.06,-4.6 -0.34,-1.1 0.49,-2.08 0.76,-3.02 -0.69,-0.83 -1.62,-1.51 -2.76,-1.31 -0.88,0.14 -0.91,-0.82 -1.25,-1.33 -0.99,-0.62 -2.63,-0.33 -3.11,-1.66 -0.83,-0.95 -1.39,-2.07 -1.33,-3.37 -0.05,-0.49 -0.09,-1.83 -0.91,-1.34 -0.91,0.06 -1.72,0.7 -1.99,1.6 -0.42,0.52 -0.86,1.4 -1.45,1.52 -0.4,-0.17 -1.27,-0.31 -0.7,-0.87 0.23,-0.66 -0.51,-1.2 -0.28,-1.88 -0.34,-0.89 -0.91,-2.04 -1.95,-2.2 -0.89,-0.13 -2.19,0.76 -2.83,-0.15 -0.09,-0.52 -0.37,-0.96 -0.88,-1.06 -0.72,-0.81 -1.07,-2.03 -1.15,-3.07 0.63,0.06 1.62,-0.31 1.26,-1.11 -0.35,-1.05 -1.53,-1.04 -2.36,-1.47 -0.67,-0.01 -0.86,0.94 -1.52,1.08 -0.85,0.88 -1.48,2.09 -1.51,3.29 -0.72,0.95 -0.91,2.24 -1.97,2.95 -0.76,0.61 -1.69,1.28 -1.54,2.39 -0.21,0.67 -0.99,1.04 -1.01,1.82 -0.44,0.97 -0.54,2.37 -1.86,2.41 -1.14,0.38 -2.33,0.53 -3.53,0.54 -0.06,-0.45 0.01,-1.66 -0.76,-1.32 -0.31,0.13 -0.76,0.69 -1.03,0.56 -0.25,-0.91 0.24,-2.16 -0.62,-2.79 -0.14,-0.81 -1.14,-1.57 -1.94,-1.34 -0.21,0.5 -0.78,0.26 -1.03,-0.06 -0.76,0.04 -0.24,1.32 -0.76,1.53 -0.34,-0.65 -1.25,-0.37 -1.8,-0.73 -0.47,-0.07 -0.73,0.7 -1.2,0.25 -0.48,-0.36 -1.21,-0.4 -1.7,-0.51 0.01,-0.61 -0.44,-1.04 -0.93,-1.29 0.04,-0.57 0.55,-1.77 -0.49,-1.68 -0.47,-0.1 -0.19,-0.97 -0.81,-1.05 -0.66,-0.37 -1.22,0.91 -1.76,0.14 -0.38,-0.36 -0.12,-1.3 -0.92,-1.18 -1.02,-0.5 -0.45,-1.96 -0.7,-2.86 -0.23,-1.29 -0.31,-2.65 -0.65,-3.91 -0.34,-0.35 -0.97,-0.38 -1.43,-0.38 z","department-74":"m 522.73,306.41 c -1.97,0.51 -4.09,-0.11 -6.02,0.54 -1.69,0.88 -2.87,2.78 -4.92,2.88 -1.61,0.19 -3.71,0.06 -4.62,1.7 -1.07,1.16 -2.72,2.21 -2.73,3.97 0.1,0.69 1.48,0.71 0.93,1.55 -0.41,0.84 0.21,1.93 0.9,2.4 0.42,0.09 0.95,-0.58 1.26,0.01 0.37,0.53 0.48,1.32 -0.23,1.62 -1.53,1.19 -3.48,2.08 -4.62,3.7 0.15,0.96 -1.06,1.44 -1.7,1.89 -0.92,0.54 -2.12,0.67 -2.99,-0.02 -0.94,-0.11 -1.74,0.7 -2.72,0.57 -1.73,-0.1 -3.26,0.92 -4.93,1 -0.77,0.2 -1.52,0.85 -1.16,1.71 0.19,0.63 -0.32,1.15 -0.97,1 -0.99,0.19 -1.36,-0.93 -2.04,-1.36 -0.25,0.5 -0.16,1.27 -0.57,1.8 -0.32,1.76 -0.11,3.58 -0.18,5.37 -0.05,1.02 1.4,1.33 1.1,2.4 -0.08,0.89 -0.37,2.18 0.97,1.91 0.75,0.22 0.29,1.37 0.52,1.94 0.31,1.44 0.48,2.91 0.5,4.37 0.07,0.67 0.88,0.58 1.19,0.96 -0.06,0.61 0.65,1.43 1.18,0.8 0.34,-0.42 1.1,-0.12 1.48,0.06 -0.19,0.54 0.13,1.08 0.73,0.94 0.45,0.32 -0.03,1.12 0.02,1.58 0.26,0.43 0.87,0.53 0.99,1.06 0.58,0.39 1.43,1.09 2.13,0.73 0.22,-0.52 0.78,-0.22 1.09,0 0.59,0.21 1.53,0.05 1.32,-0.78 -0.01,-0.66 0.68,-0.27 0.9,0.03 0.57,0.28 0.97,-0.69 1.55,-0.21 0.84,0.25 1.11,1.08 1.58,1.67 0.61,0.22 0.16,1.19 0.32,1.69 -0.08,0.68 0.71,0.6 0.85,0.07 0.5,-0.09 1,0.52 0.86,1.04 0.4,0.69 1.5,0.24 2.16,0.27 0.76,-0.24 1.79,-0.22 2.32,-0.85 0.55,-0.82 0.59,-1.89 1.06,-2.69 0.59,-0.47 1.08,-1.17 0.58,-1.84 1.1,-1.12 2.6,-2.01 3.15,-3.59 0.44,-0.46 0.57,-1.04 0.46,-1.64 0.43,-1.24 1.14,-2.4 2.27,-3.1 0.24,-0.19 0.68,-1.23 1.02,-0.66 0.87,0.56 2.4,0.81 2.5,2.07 0.05,0.67 -0.39,0.98 -1.01,0.85 -0.65,0.38 0.05,1.31 0.13,1.86 0.25,0.92 1.4,1.05 1.58,2.03 0.48,0.87 1.65,0.01 2.41,0.12 0.73,-0.31 1.18,0.28 1.5,0.85 0.45,0.56 1.16,1.11 0.82,1.91 -0.09,0.58 0.7,0.95 0.24,1.52 -0.21,0.76 0.9,0.79 1.18,0.23 0.84,-0.71 0.9,-2.01 2.02,-2.43 1.02,-0.06 1.62,-1 1.61,-1.96 -0.09,-1.02 0.58,-2.66 1.85,-2.26 0.39,0.29 1.11,0.3 0.98,-0.35 0.01,-0.41 0.22,-0.99 0.72,-0.64 1.66,0.72 3.32,-0.42 4.67,-1.3 1.07,-1.02 1.17,-2.69 2.2,-3.72 0.24,-1.07 0.13,-2.38 -0.92,-2.98 -0.31,-0.29 0.4,-0.66 0.03,-1.04 -1.08,-1.72 -2.7,-3.09 -3.82,-4.78 -0.93,-0.47 -1.81,1.29 -2.7,0.56 -0.35,-0.84 0.72,-1.72 0.05,-2.53 0.03,-0.72 1.46,-1.61 0.49,-2.23 -0.76,-0.34 -1.61,-0.31 -2.36,-0.72 -0.84,-0.04 -2.06,-0.19 -2.06,-1.31 0.09,-1.22 0.81,-2.32 0.63,-3.59 0.03,-1.74 2.08,-2.69 2.14,-4.38 -0.61,-2.1 -2.81,-3.32 -3.41,-5.34 0.58,-0.82 1.83,-1.33 1.69,-2.56 0.1,-0.89 0.32,-2.26 -0.88,-2.5 -2.33,-0.82 -4.77,-1.84 -7.27,-1.85 z","department-71":"m 412,260.36 c -2.93,0.55 -4.26,2.21 -6.96,2.68 -1.28,2.48 2.3,4.5 -0.5,6.99 -1.43,0.66 -3.07,3.09 -0.49,1.44 1.9,1.91 -1.31,5.49 2.35,6.61 2.41,2.48 -3.47,2.49 -1.06,5.02 0.77,3.39 -3.9,1.03 -5.18,3.67 -2.25,1.4 -4.63,2.62 -7.04,3.38 -0.31,-4.58 -4.86,-2.18 -7.6,-2.64 0.33,3.18 3.53,4.95 4.3,8.11 0.37,1.27 1.28,3.31 0.8,5.05 2.56,1.6 5.5,0.03 6.06,3.56 2.3,-0.67 6.83,0.19 5.63,3.81 -1.65,2.24 1.1,6.27 -0.41,7.48 -1.83,-0.26 -2.1,1.92 -4,2.06 1.17,2.28 -1.61,6.17 2.72,5.49 0.93,1.98 2.84,2.96 4.81,1.08 2.24,-1.83 4.53,2.66 6.18,-0.34 0.99,0.81 3.97,-0.12 2.52,2.07 1.82,0.5 3.17,-1.98 5.29,-1.84 0.91,-1.94 0.34,-5.84 2.53,-7.3 2.38,-0.25 4.64,4.02 6.14,0.44 0.69,1.02 2.58,2.86 3.18,0.21 1.5,-2.57 5.41,0.79 2.63,2.19 4.35,0.26 -0.17,5.73 3.79,5.35 1.63,-2.32 1.8,-5.62 3.02,-8.28 1.07,-3.54 2,-7.12 3.47,-10.47 -0.24,-4.22 3.76,-4.44 6.12,-2.01 2.73,0.91 5.4,-3.24 7.43,-0.63 0.71,4.46 5.42,3.07 8.23,1.96 3.48,-0.33 -0.18,-2.98 -1.2,-3.64 -0.19,-2.06 -0.14,-4 2.12,-4.12 -1.13,-2.06 2.54,-2.7 0.55,-4.54 0.27,-1.18 -1.25,-2.07 -0.87,-3.37 -1.29,-1.52 -2.14,-2.53 -0.54,-4.28 -1.91,-0.7 -4.07,-3.41 -0.68,-3.56 1.47,-0.64 5.77,0.15 2.85,-1.99 -1.77,-0.79 -1.54,-3.02 -3.84,-2.16 -2.27,0.63 -1.51,-5.03 -4.1,-2.86 0.12,-2.06 -1.07,-4.73 -3.5,-2.61 -2.78,0.86 -4.3,2.07 -6.4,-0.46 -1.94,0.4 -2.39,2.11 -4.89,0.86 -2.61,0.33 -5.24,2.44 -8.14,3.19 -1.76,-0.3 -4.71,2.29 -4.23,-1.06 -3.18,-0.15 -5.08,-3.48 -5.63,-5.52 -2.23,0.19 -4.16,-1.65 -6.41,-2.36 0.94,-2.91 -1.62,-1.37 -2.5,-0.96 0.79,-4 -4.82,-1.4 -5.2,-5.1 -0.71,0.24 -0.8,-0.59 -1.34,-0.6 z","department-03":"m 355.26,283.59 c -2.47,0.46 -4.86,3.44 -6.02,4.72 -1.76,-0.99 -3.8,2.31 -4.59,-0.78 -1.76,0.08 -2.97,3.69 -5.04,3.94 1.97,2.84 -4.43,0.31 -1.55,2.39 0.4,1.42 -1.37,2.94 0.6,3.99 1.55,3.09 -3.65,5.08 -5.37,3.61 -2.24,1.35 -6.48,-0.24 -7.16,3.06 -1.54,1.23 -3.6,4.68 -1.43,6.74 2.23,0.25 1.54,1.18 0.45,2.24 0.46,1.75 3.06,2.36 3.77,1.35 1.79,0.78 0.58,3.48 2.71,2.33 2.32,1.7 3.03,4.85 4.13,7.52 1.59,1.1 1.36,3.94 4.21,3.81 2.2,-0.4 1.29,-4.32 4.06,-4.34 -0.38,-2.36 1.13,-2.81 2.64,-1.17 2.87,2.05 0.78,-4.7 4.25,-3.15 2.6,-0.56 4.31,1.53 2.01,3.27 -0.51,2.53 2.71,1.85 2.18,4.56 1.6,1.64 4.19,2.18 6.12,1.98 0.53,3.71 5.09,1.32 7.41,2.58 2.46,-0.35 4.25,2.07 6.4,-0.15 2.05,-0.87 3.81,1.48 3.14,3.62 2.97,-0.38 6.89,-1.86 7.42,2.51 1.3,0.31 3.13,3.55 3.29,0.55 1.79,-0.98 4.46,0.16 5.67,-2.24 -1.33,-3.25 -0.2,-6.45 -1.49,-9.65 1.17,-1.65 -1.28,-4.71 -0.7,-6.42 1.4,-0.12 2.34,-1.59 4.2,-1.58 1.27,-1.45 2.99,-2.22 4.25,-3.49 2.82,-0.46 -0.34,-5.16 1.28,-7.19 1.51,-3 -3.08,-4.88 -5.16,-3.65 -1.18,-1.3 -1.26,-3.58 -3.47,-2.38 -1.93,-1.04 -3.95,-1.45 -2.9,-4.14 -1.14,-2.8 -2.34,-5.73 -4.5,-8.23 0.48,-2.03 -3.61,-4.95 -2.1,-1.56 -0.34,1.45 -3.05,0.68 -1.66,2.91 -1.17,0.41 -2.72,0.17 -3.32,2.29 -3.21,0.75 -0.8,-5.19 -4.58,-3.84 -1.04,2.99 -3.56,1.08 -4.7,-0.26 -2.1,1.25 -4.73,3.83 -6.34,0.2 -2.17,-1.67 -4.84,-2.89 -5.84,-5.6 -0.73,-0.27 -1.51,-0.18 -2.26,-0.35 z","department-58":"m 361.05,231.75 c -1.61,0.98 -3.32,2.58 -5.23,1.22 -1.54,0.66 -5.16,0.31 -5.72,1.84 1.58,2.33 4.2,5.39 3.03,8.27 -0.46,2.34 -4.01,5.74 -0.25,7.04 1.92,1.64 3.66,3.16 3.28,5.91 2.2,3.19 1.4,7.61 2.45,10.69 2.84,1.44 0.59,4.96 1.6,7.25 -1.99,2.66 1.02,5.99 -1.24,8.7 -1.75,2.29 0.81,5.12 3.16,5.53 1.64,1.06 3.28,4.95 5.39,2.27 1.52,-1.93 3.16,-1.38 4.16,0.57 1.96,0.7 3.24,-3.41 4.93,-1.11 0.68,1.01 0.94,1.95 1.13,3.28 1.84,0.37 2.58,-2.94 4.39,-2.04 -0.61,-1.82 -0.49,-2.4 1.36,-2.38 -0.2,-1.17 -0.22,-3.61 1.45,-1.97 2.29,2.03 7.01,-1.91 8.02,2.31 1.41,2.29 3.54,-1.84 5.75,-1.47 1.68,-2.02 4.85,-2.71 6.51,-3.23 -0.22,-2.14 -1.12,-3.85 1.59,-4.65 -0.2,-2.28 -4.24,-3.86 -1.97,-6.79 0.18,-2.41 -4.07,0.3 -1.77,-2.02 2.77,-1.18 2.72,-4.62 1.41,-6.48 -0.21,-2.71 3.29,-1.57 3.61,-3.64 2.41,0.12 4.36,-0.55 4.66,-3.1 0.33,-2.07 -2.28,-4.7 -4.14,-3.18 -2.16,-1.91 1.5,-6.7 -2.23,-6.47 -2.06,-0.11 -3.88,3.63 -5.15,0.03 -0.32,-1.35 -0.05,-4.35 -2.03,-2.79 -1.29,0.05 -2.91,2.04 -2.96,-0.58 1.08,-0.8 1.65,-3.07 -0.35,-2.77 -1.09,1.35 -0.9,4.62 -3.13,2.61 -0.88,-1.42 -3.65,0.48 -4.06,-2.21 -1.01,-1.24 -3.05,-2.54 -4.54,-2.45 -1.62,0.35 -0.42,-3.16 -2.49,-3.09 -1.47,-0.17 -1.9,-4.94 -2.3,-1.85 0.35,2 -0.34,3.67 -2.39,2.1 -2.63,-1.51 -3.86,4.14 -5.82,1.03 -1.87,-1.04 -4.17,1.13 -5,-2 -2.26,0.34 -4.45,-1.48 -4.25,-4 -0.17,-0.32 -0.55,-0.4 -0.88,-0.38 z","department-89":"m 374.12,178.1 c -1.36,2.82 -5.36,0.91 -7.76,1.83 -2.91,0.12 -7.22,-0.23 -8.27,2.98 0.14,3.17 1.58,6.21 -2.22,8.02 -3.13,1.63 -1.03,2.94 1.17,4.04 2.28,2.02 1.91,5.48 4.92,6.98 0.09,2.23 1.57,5.13 -1.56,6.65 -2.34,1.36 -4.04,3.95 -2.14,6.31 -0.68,1.5 0.04,4.08 -2.76,4.29 -2.25,0.39 -7.34,0.64 -4.79,4.05 2.45,0.93 4.06,4.45 3.33,7.05 1.14,3.61 5.07,3.17 7.39,1.37 1.4,1.71 1.46,5.08 4.64,4.36 1.07,1.7 2.94,2.2 4.19,1.56 2.83,2.78 4.94,-2.42 8.04,-0.36 2.24,0.32 0.05,-5.91 2.11,-2.26 1.33,1.79 2.94,3.05 3.85,4.95 3.33,-1.09 4.42,4.4 7.1,3.73 1.63,0.4 3.4,2.47 3.61,-0.47 1.06,-2.78 3.75,-0.39 1.71,1.41 -0.27,3 5.9,-2.28 4.47,2.93 0.46,3.12 3.19,1.32 4.4,0.59 4.42,-0.6 -2.45,-5.06 1.49,-6.94 2.21,-1.57 -0.41,-5.47 2.78,-6.83 1.14,-2.73 3.9,-5.69 3.26,-8.58 1.88,-0.52 1.26,-1.92 0.64,-3.48 1.6,-1.09 4.66,-1.22 3.88,-4.34 0.07,-2.34 -0.26,-3.73 -2.7,-3.42 -3.53,-2.05 4.19,-4.69 -0.03,-5.12 -1.97,-0.1 -2.62,-5.1 -3.28,-1.27 -2.05,-2.67 -2.92,2.59 -5.45,0.23 -2.35,0.79 -5.27,0.01 -8.15,0.79 0.15,-1.59 0.88,-6.21 -1.65,-3.46 -2.36,-1.38 1.3,-2.55 -1.24,-3.58 -0.94,-2.75 -2.25,-5.79 -4.33,-7.09 0.87,-2.25 -1.27,-2.36 -1.7,-0.43 -3.07,1.65 -2.16,-4.29 -5.46,-2.45 0.07,-1.1 1.54,-2.74 1.12,-4.43 -0.2,-2.34 -3.48,-5.41 -5.2,-7.74 -2.07,-0.04 -3.97,0.46 -4.78,-1.75 -0.22,-0.05 -0.43,-0.1 -0.65,-0.14 z","department-77":"m 360.11,130.7 c -0.75,1.23 -0.27,2.29 -2.33,1.67 -1.38,-0.38 -1.84,2.1 -2.56,0.07 -2.14,0.21 -4.49,1.91 -6.24,0.1 -2.04,-1.53 -3.2,3.4 -5.16,0.88 -1.56,1.65 -2.68,-3.86 -4.86,-1.22 -1.42,0.6 -1.4,2.29 -1.08,2.9 -0.79,0.91 -3.3,2.12 -0.93,2.41 0.92,1.64 0.15,3.36 1.66,4.95 -0.21,1.86 -2.5,3.75 -0.77,5.03 -0.42,1.69 1.07,3.83 0.45,5.54 1.88,0.5 -0.47,2.18 -0.41,3.35 -1.82,0.99 1.36,3.93 -1.65,3.64 -0.82,0.84 0.31,2.38 -1.22,3.04 1.7,1.22 -0.11,2.87 -0.29,4.11 -0.83,2.76 -0.35,5.7 -0.38,8.61 1.13,0.77 2.32,2.24 0.22,2.19 -1.67,0.77 -3.86,1.83 -3.71,4.1 -3.26,-0.23 0.46,3.05 -0.39,4.73 1.93,0.89 5.35,1.9 4.16,4.93 0.05,1.63 -0.21,2.35 -1.8,2.26 -2.59,2.58 2.06,2.09 3.18,0.95 1.95,0.94 4.16,-0.38 5.89,1.16 1.74,-0.08 3.98,-1.65 3.26,-2.69 2.16,-0.61 3.3,-0.11 2.62,2.03 1.99,0.05 3.64,-2.23 5.85,-2.23 1.28,-2.5 4.18,-3.1 5.17,-5.95 -1.75,-1.86 -0.91,-4.39 0.11,-6.51 2.23,0.08 3.58,-0.87 5.81,-1.29 2.4,1.59 4.47,-0.91 6.89,0.03 1.85,0.05 2.21,-2.32 4.09,-1.22 1.02,-1.56 -1.94,-1.95 -0.46,-3.63 -1.01,-1.71 -0.67,-2.54 1.28,-3.16 -0.64,-1.19 -1.85,-3.14 0.59,-2.27 3.2,-0.16 -0.39,-3.09 2.44,-3.84 0.11,-1.36 2.11,-1.25 2.34,-2.32 -1.35,-1.35 -2.61,-1.35 -4.33,-0.87 -0.83,-1.72 0,-2.93 0.73,-4.28 -0.27,-1.41 0.18,-2.58 -1.57,-2.81 -0.08,-1.26 -2.46,0.08 -1.43,-1.87 0.29,-0.92 3.06,-1.11 0.77,-1.96 -2,-1.6 4.65,-0.07 2.85,-3.04 -0.62,0.26 -2.18,0.96 -1.62,-0.5 -2.19,-0.35 -3.93,-1.72 -3.63,-4.09 -1.91,1.44 -2.54,-0.3 -3.11,-1.76 -2.53,1.6 -2.02,-2.84 -4.2,-3.33 -1.26,-1.06 -2.94,-1.79 -1.15,-3.4 -0.57,-2.97 -1.82,-4.38 -5.07,-4.44 z","department-10":"m 415.76,157.34 c -2.6,0.51 -5.55,-0.05 -7.71,1.48 -2.64,-2.28 -2.21,2.93 -5.08,1.84 -1.93,0.67 -1.61,4.36 -4.3,3.88 -0.4,1.61 -1.36,1.64 -2.59,1.72 1.3,3.01 -1.42,4.79 -3.84,3.13 -2.09,-1.39 -6.82,1.14 -6.65,-2.55 -0.6,-0.93 -2.3,-0.55 -2.52,-2.29 -2.04,-2.28 -2.83,1.06 -4.5,1.77 -0.06,1.25 0.93,2.82 -1.41,3.08 -3.5,-1.29 1.33,2.83 -1.65,2.81 -1.9,0.54 0.78,2.64 -0.38,3.85 2.1,0.63 -0.62,5.56 2.52,3.51 3.16,-0.12 4.15,3.44 6.03,5.22 0.01,1.47 3.08,2.04 0.93,3.9 2.08,0.85 -3.12,4.07 0.15,3.27 2.29,-0.8 2.03,4.35 4.19,2.52 1.08,-0.14 0.3,-2.78 1.94,-1.13 0.93,0.76 -0.96,2.98 1.14,2.23 2.34,1.66 1.67,5.24 3.89,6.96 2.43,1.45 -2.11,1.84 0.59,3.02 0.73,-0.46 1.14,-2.22 1.92,-0.23 0.37,1.61 -1.44,4.62 1.62,3.35 1.95,0.01 2.99,-0.54 4.79,0.26 0.99,-3.03 2.57,1.82 4.01,-0.76 0.84,-1.92 1.99,-0.84 2.76,-0.15 -0.14,-1.03 0.29,-2.65 1.27,-1.4 -0.33,2.78 3.95,3.53 3.81,0.39 2.92,-0.59 5.93,0.14 8.85,-0.56 2.39,0.31 2.85,-0.77 1.49,-2.56 2.05,-2.2 4.43,-1.32 6.94,-0.84 2.63,-1.11 0.34,-3.51 -1.25,-4.11 2.37,-0.23 3.32,-3.91 6.03,-1.87 3.03,1.11 1.67,-2.97 2.47,-4.56 1.68,-1.76 -0.94,-2.47 -0.07,-3.99 1.1,-2.25 -0.53,-3.76 -1.25,-5.67 2.38,-2.25 -3.94,-1.43 -2.88,-4.17 -1.47,-0.37 -2.51,-0.25 -2.96,-1.8 0.24,-1.72 -4.18,-2.97 -1.75,-4.03 0.72,-2.19 1.43,-3.93 -1.16,-5.04 -2.33,-0.81 -3.68,3.05 -5.35,0.57 -2.15,0.43 -4.7,-0.92 -6.23,-2.52 -2.9,-1.25 -2.44,-3.78 -2.05,-6.39 -0.16,-1 -0.29,-2.51 -1.75,-2.14 z","department-51":"m 405.08,111.51 c -1.06,0.78 -0.74,4.64 -2.69,2.03 -2.26,-0.62 -3.69,-3.04 -5.85,-0.46 -0.76,1.47 -0.53,3.07 -2.6,1.59 -2.67,0.5 -5.66,1.55 -7.69,3.27 1.02,2.06 1.46,4.73 0.89,6.32 2.55,-0.42 1.18,3.01 3.85,2.11 0.48,4.28 -5.3,-0.05 -6.19,3.06 -0.39,1.65 2.79,4.09 -0.6,4.59 -2.26,3.23 5.49,0.01 3.06,3.78 -2.35,0.83 -2.21,3.44 -4.02,4.55 -0.04,2.3 -3.69,1.38 -3.38,4.24 -1.75,1.12 0.58,4.63 -2.54,3.99 -2.46,-0.16 -1.14,0.3 -0.32,1.22 0.08,0.89 -3.17,1.69 -1.26,2.59 2.53,0.21 3.88,3.9 1.46,5.7 0.25,2.2 1.1,2.12 2.94,1.45 1.92,0.52 2.98,4.27 5.46,4.81 -0.12,4.68 6.56,0.97 8.91,3.79 3.18,-0.68 -0.17,-4.93 3.46,-4.46 0.45,-2.04 3.42,-1.33 3.65,-3.97 0.75,-2.28 4.33,-0.39 4.38,-3.49 1.36,-0.34 2.79,1.39 3.81,-0.56 2.71,0.28 5.46,-1.6 7.64,0.42 0.89,2.81 -1.6,6.2 2.08,7.6 1.6,3.05 5.89,1.61 7.51,3.56 1.84,-1.76 4.32,-2.12 5.98,-0.45 1.91,-1.07 7.38,1.87 5.1,-2.02 -2.42,-2.79 6.05,-2.46 2.44,-5.4 -1.35,-0.11 -4.14,-0.27 -1.58,-1.69 1.66,-0.63 3.72,1.24 5.25,-0.9 2.3,1.31 5.6,-0.99 4.11,-3.45 -1.93,-1.13 -3.33,-3.27 -5.05,-4.35 0.2,-1.89 3.07,-2.43 1.04,-4.46 -0.24,-2.76 1.96,-3.93 4.51,-4.61 2.25,-1.35 -0.39,-2.44 -0.39,-3.09 2.85,-0.57 0.54,-4.33 -1.51,-2.09 2.09,-1.98 1.44,-5.68 -0.12,-8.2 -0.96,-1.63 -1.81,-3.48 0.73,-4.04 -0.24,-1.82 -2.4,-2.81 -3.5,-3.66 -2.15,0.23 -1.49,3.78 -3.82,1.54 -2.45,0 -5.77,-1.84 -7.92,0.23 -2.68,0.36 -2.07,-5.98 -5.47,-3.2 -2.64,0.89 -6.12,0.77 -7.24,-2.32 -2.8,0.56 -4.24,-2.36 -6.09,-4.01 -2.61,-1.4 -5.28,-1.58 -8.44,-1.57 z","department-02":"m 388.2,68.13 c -1.08,1.13 -2.82,3.24 -4.4,1.16 -2.84,-2.2 -4.67,3.68 -7.97,1.02 -2.67,-1.47 -4.82,2.26 -7.41,-0.08 -2.13,-0.29 -5.92,2.27 -2.52,2.96 -2.98,2.53 -3.74,6.36 -5.63,9.48 -1.75,0.96 2.24,2.4 -0.4,3.91 1.95,1.43 2.51,4.94 2.65,7.7 -1.5,0.24 -0.31,2.46 -1.01,3.2 2.8,2.14 0.67,5.53 0.21,7.42 1.3,1.39 -0.62,2.75 2.02,3.19 1.86,2.58 -4.01,-0.19 -2.57,2.99 0.21,2.78 -1.91,6.35 -4.84,5.03 -3.19,2.38 3.18,2.33 1.82,4.68 0.73,2 -0.93,3.6 1.68,4.15 1.16,1.34 2.5,-0.57 2.39,2.15 3.19,1.07 -5.03,3.79 0.04,3.92 2.54,0.03 3.91,4.01 2.15,5.73 2.04,1.28 3.84,3.72 5.3,5.32 1.97,-1.81 1.27,4.11 3.47,1.27 1.13,0.14 0.62,4.1 3.08,3.73 1.02,1.15 2.26,2.18 2.67,-0.16 1.3,-1.34 1.82,-3.4 3.99,-3.73 1.01,-2.49 2.46,-4.36 4.65,-6 0.1,-2.93 -6.07,0.28 -3.5,-3.33 4.06,-0.79 -1.61,-3.63 1.16,-5.63 1.74,-0.53 6.13,1.2 5.33,-1.72 -2.24,0.27 -1.72,-2.21 -3.92,-2.36 2.32,-2 -2.35,-5.73 0.53,-7.34 2.85,-0.42 5.37,-3.57 8.29,-1.65 -0.29,-1.73 3.19,-4.87 4.55,-2.85 1.43,0.76 4.63,3.46 4.24,0.06 0.75,-1.54 -0.52,-3.16 0.75,-4.21 -1.86,-2.09 0.18,-3.94 0.86,-5.41 -1.97,-0.87 0.95,-3.51 -1.67,-4.78 -1.57,-3.69 5.08,0.31 4.01,-3.96 1.21,-2.05 5.54,-3.68 5.14,-6.49 -2.5,-0.39 -0.05,-2.22 -0.82,-3.84 1.25,-2 2.5,-4.89 -0.05,-6.15 1.79,-3.26 -2.77,-4.61 -5.35,-3.57 -2.14,-1.09 -7,-0.34 -5.08,-4.21 -1.57,-0.94 -4.83,3.39 -5.36,0.08 -2.78,-0.3 -5.86,-1.9 -8.53,-1.67 z","department-59":"m 335.57,0.12 c -3.45,1.43 -6.99,2.74 -10.76,2.39 -2.72,1.29 -8.66,1.44 -9.11,3.85 2.44,2.79 3.25,6.62 4.77,9.94 0.43,4.77 5.56,3.66 8.58,4.42 2.32,1.45 -4.63,1.65 -1.51,3.98 2.44,0.67 -1.2,3.42 2.07,2.61 2.93,3.85 6.72,1.92 9.95,3.5 2.19,-0.65 4.1,-0.87 5.68,0.87 0.41,-1.85 2.1,-1.38 0.62,-3.01 2.05,-2.57 7.25,2.09 2.69,2.82 -1.83,1.68 0.07,3.54 -0.61,5.52 2.34,0.14 3.9,-1 3.93,1.59 2.5,-1.01 7,0.2 5.64,3.54 1.27,0.39 3.92,-0.75 2.32,1.89 -3.74,0.21 -4.27,4.12 -0.66,5.49 2.67,1.86 -0.52,2.17 0.31,4.28 2.66,0.03 5.42,1.44 5.6,3.59 -3.49,-0.01 -0.66,2 -1.8,3.32 -2.94,0.76 0.82,2.08 -1.93,3.52 1.19,2.22 -2.19,4.81 1.75,6.08 2.76,1.37 5.33,-1.11 8.08,0.5 2.78,-2.8 7.12,1.76 9.94,-1.66 1.88,-2.21 4.77,3.11 6.2,-0.72 3.06,-1.45 6.64,0.94 9.78,1.44 0.46,3.12 6.54,-3.53 4.81,1.34 0,2.28 5.16,2.43 7.07,2.12 1.13,-1.37 -0.83,-4.12 2.33,-4.63 2.68,-0.88 0.57,-5.07 -0.84,-5.54 -3.3,1 -0.12,-4.14 0.06,-5.58 2.39,-1.25 2.41,-3.76 -0.41,-4.14 -0.6,4.11 -2.68,-3.09 -5.06,-3.38 -1.96,-3.39 -6.66,2.37 -9.45,-1.06 -3.02,-1.09 -5.18,0.58 -6.36,2.66 -3.42,-1.36 -0.95,-6.36 -2.22,-9.19 -1.09,-3.5 -4.72,-3.12 -7.3,-3.15 1.15,-5.24 -5.66,2.5 -7.97,-1.03 -3.9,-1.63 -1.34,-6.5 -3.82,-9.41 1.83,-3.67 -3.12,-4.71 -3.84,-8.29 -2.91,-1.52 -7.12,1 -10.06,2.09 -0.33,4.97 -4.26,1.63 -6.9,0.96 -1.64,-3.04 -3.74,-6.42 -7.35,-5.98 -1.29,-2.74 -2.17,-6.28 -0.14,-8.73 -2.25,-2.77 -2.84,-5.71 -4.09,-8.81 z m 28.08,54.5 0.01,0.01 -0.01,-0.01 z","department-62":"m 313.33,5.46 c -4.94,0.63 -9.82,2.03 -14.3,4.19 -2.31,2.03 -4.44,4.39 -7.41,5.25 0.4,3 1.9,6.23 -0.01,9.07 -1.39,2.89 0.06,6.1 -0.08,9.15 0.12,1.92 1.85,2.89 0.02,4.03 0.23,3.04 -1.19,6.37 -0.33,9.17 2.74,1.63 4.65,4.95 7.93,2.3 3.81,-2.29 6.82,4.56 9.77,1.72 1.01,1.14 -1.99,2.68 0.88,2.9 2.1,1.36 5.3,1.26 4.69,4.15 0.88,1.54 2.94,0.71 3.92,1.37 1.81,-1.07 3.99,-1.33 5.74,-1.4 1.16,1.12 1.77,-0.42 1.57,-0.98 1.33,-0.36 1.77,3.47 2.74,0.75 1.51,-1.51 6.22,0.91 4.51,2.46 -2.54,0.07 -6.33,4.05 -3.27,5.63 1.73,2.15 1.55,-3.53 4.22,-2.43 1.09,-0.01 1.95,2.52 2.26,-0.06 2.83,-0.7 -0.14,2.46 2.59,2.02 1.28,-0.01 4.09,2 4.68,1.23 -1.22,-1.42 0.73,-3.47 2.15,-1.5 3.8,-0.04 -3.11,6.76 1.65,4.07 2.16,-2.39 3.64,-1.2 4.04,1.36 2.23,-1.54 4.16,-0.79 6.67,-1.69 1.7,0.68 3.25,0.84 2.92,-1.52 2.01,-0.93 -0.86,-3.26 1.69,-4.17 -3.08,-1.56 3.06,-1.88 0.19,-3.89 0.22,-1.46 4.13,-1.5 1.13,-2.69 -0.34,-2.78 -7.17,-0.62 -4.12,-4.27 0.8,-2.23 -5.36,-4.49 -3.06,-6.23 1.03,-0.79 5.01,-2.22 2.55,-3.36 -2.01,2.19 -1.83,-1.12 -1.83,-2.28 -1.69,-2.27 -3.83,-0.79 -5.87,-1.11 1.15,-3.86 -4.88,0.62 -3.97,-3.05 1.99,-1.08 -1.84,-2.64 0.61,-4.04 1.4,-1.06 3.51,-1.23 1.17,-2.9 -1.51,-1.43 -4.89,0 -2.23,1.47 -1.85,-0.59 -1.52,3.3 -3.1,0.89 -1.9,-1.78 -4.14,1.01 -6.2,-0.92 -1.66,1.28 -2.66,-1.12 -4.47,0.08 -1.69,-1.59 -4.29,-2.33 -5.63,-3.51 2,-1.35 -3.65,-3.85 0.56,-4.64 3.01,-2.03 -3.3,-1.35 -4.61,-1.78 -3.99,-1.02 -3.27,-5.59 -5.16,-8.44 -1.11,-2.34 -2,-6.31 -5.19,-6.38 z","department-08":"m 440.07,60.88 c -1.81,2.16 -4.2,3.74 -5.88,5.87 0.42,3.23 -0.62,6.85 -4.6,6.61 -2.61,1.4 -5.4,3.78 -8.53,2.23 -2.57,-0.31 -6.87,-3.07 -8.21,0.49 -1.09,2.27 2.57,2.05 1.26,4.47 -0.9,1.91 -2.03,4.96 -1.4,6.42 2.68,1.57 -1.58,4.47 -2.94,5.51 -2.03,1.01 -1.06,5.37 -4.36,3.7 -3.54,0.85 2.51,3.79 -0.29,5.51 1.51,0.87 0.58,2.56 -0.65,3.44 -0.53,1.71 1.98,3.37 -0.03,4.16 0.01,4.05 5.16,0.95 6.98,2.81 3.3,0.55 4.18,4.27 7.37,4.91 1.8,0.07 3.13,4.15 6,2.59 2.07,-0.07 4.96,-2.29 5.47,0.74 0.38,2.71 2.61,2.41 4.09,0.8 2.57,1.18 5.4,0.24 7.56,1.64 0.31,-2.7 3.11,-2.45 4.13,-0.68 1.4,-1.13 3.89,-1.64 4.64,-3.09 -2.15,-1.79 -0.62,-5.71 2.04,-5.88 0.24,-1.22 -1.21,-1.95 0.54,-2.89 0.24,-2.32 -1.77,-3.52 -2.04,-5.72 1.86,-0.63 0.83,-2.98 2.1,-3.97 -0.49,-2.87 2.16,-0.91 2.97,0.03 2.69,-1.68 3.87,3.39 6.05,0.41 0.28,-2.43 4.57,-1.6 3.3,-4.01 -0.97,-0.75 -4.08,1.55 -3.04,-1.15 1.75,-1.77 -2.34,-4.79 -3.97,-3 -1.63,-0.09 -2.52,-1.03 -3.35,-1.82 -2.04,-0.2 -1.16,-4.65 -4.28,-3.56 -2.09,-0.97 -3.75,-3.12 -6.22,-1.46 -1.91,0.12 -3.56,-0.3 -2.44,-2.42 -2.07,-2.68 2.55,-6.08 -1.42,-8.03 -4.13,-0.79 1.05,-4.77 -0.06,-7.24 0.2,-2.35 3.01,-3.4 2.16,-5.95 -1.43,-0.71 -2.14,0.48 -2.93,-1.47 z","department-55":"m 466.47,97.47 c -1.56,1.83 -3.96,2.91 -5.49,4.69 -1.73,-0.62 -3.36,-2.29 -5.13,-1.66 -3.57,-3.74 -2.07,3.57 -4.83,4.43 1.86,1.88 2.97,4.89 1.69,6.85 0.61,2.43 -4.88,3.04 -2.52,6.02 2.38,3.31 -6.19,2.92 -2.28,6.6 -4.21,1.78 0.99,5.9 0.55,8.83 -0.1,1.57 -1.24,3.24 0.94,2.92 1.75,1.64 -1.92,3.15 0.48,3.93 0.25,3.59 -6.19,2.07 -5.18,5.89 1.08,1.97 -0.23,3.47 -1.14,4.72 1.38,2.47 5.49,3.27 5.15,6.61 0.23,1.76 -1.52,5.98 0.78,6.29 1.9,-2.79 1.64,2.85 3.89,1.37 2.31,2.74 5.53,4.67 8.96,5.55 2.27,1.43 4.35,3.02 5.92,5.23 2.69,2.59 4.85,-1.27 7.77,-0.65 1.95,-0.75 1.99,-2.61 4.21,-1.43 3.14,0.06 4.5,-5.18 1.4,-6.29 -3.87,-2.46 6.35,-3.69 1.46,-4.42 -1.47,-2.21 0.74,-5.44 -1.65,-7.38 0.52,-3.01 3.49,-5.5 2.03,-8.71 1.74,-1.41 -2.37,-3.07 0.56,-4.22 1.59,-0.69 4.2,-1.75 1.55,-3.18 -1.32,-1.7 3.57,-5.15 -0.4,-5.57 1.51,-1.93 -0.24,-3.53 -1.91,-2.99 -2.09,-1.69 1.38,-6.16 -1.64,-5.8 -0.54,-2.63 -0.07,-4.79 1.7,-6.78 -2.19,-0.64 -1.63,-2.43 -1.84,-4.23 -1.39,-1.72 -2.89,-6.03 -5.8,-3.74 -2.4,-0.05 -3.98,1.51 -4.61,0.54 -0.96,-0.51 -0.02,-0.62 -1.25,-1.61 0.46,-1.47 -0.85,-2.06 -0.1,-2.7 -0.17,-2.17 1.28,-0.21 0.11,-1.81 -0.06,-2.69 -0.83,-5.88 -3.37,-7.28 z","department-54":"m 483.26,101.56 c -1.75,2.39 -6.72,-0.76 -7.03,2.38 -2.62,-1.44 -7.36,1.12 -6.17,4.43 0.74,4.88 5.26,0.58 8.1,1.48 2.96,1.01 3.57,5.58 4.1,7.38 3.12,1.31 -1.93,3.72 -0.52,5.95 -0.87,2.35 2.62,1.44 1.12,3.56 0.09,2.56 -0.17,4.4 2.68,4.39 0.95,1.44 -0.85,2.5 1.32,3.1 0.08,2.43 -2.65,4.77 0.06,6.73 -1.86,1.53 -5.42,2.68 -2.94,4.96 -0.32,3.14 0.42,6.53 -2.29,8.78 0.3,2.26 1.85,3.57 0.92,5.93 -0.21,2.42 4.1,2.54 0.74,3.73 -2.75,0.52 -2.79,3.37 -0.09,3.76 0.33,2.01 0.1,5.32 3,2.95 5.39,-1.2 1.3,5.69 5.29,7.31 -0.38,3.55 5.14,2.54 6.11,0.87 0.8,0.45 2.56,2.67 3.02,-0.32 0.4,-3.41 3.98,0.7 5.58,-2.34 2.07,-1.7 2.85,1.78 5.26,0.83 2.41,0.96 5.78,-1.97 8.72,-1.33 -0.11,-2.51 2.69,-4.44 3.49,-1.11 1.87,2.12 5.7,3.02 8.46,2.03 1.11,-2.51 3,0.55 4.43,-2.06 1.4,-3.3 8.67,-2.58 5.72,-7.33 -1.28,-1.26 -2.12,-2.52 -2.84,-3.74 -2.12,0.62 -3.12,-2.23 -5.19,-0.6 -3.43,-1.47 -6.2,-3.18 -9.79,-3.87 -0.04,-2.22 -3.9,-2.63 -5.43,-4.68 -2.97,-0.67 -5.52,-2.5 -8.38,-2.2 -1.35,-2.37 -4.49,-3.45 -2.73,-6.5 1.93,-3.82 -4.9,-3.21 -7.26,-3.68 -1.33,-1.55 -2.62,-2.04 -4.55,-3.04 0.53,-3.54 -7.57,-4.55 -4.54,-8.33 3.1,1.07 1.22,-3.19 3.24,-3.88 -1.85,-1.34 -2.22,-2.92 0.05,-3.88 0.24,-1.64 -0.87,-4.88 -1.53,-5.53 -2.45,-0.97 -0.9,-3.36 -2.63,-4.79 -0.94,-2.62 2.2,-6.94 -2.47,-7.44 -1.91,-1.02 -2.61,-3.63 -5,-3.91 z","department-57":"m 503.4,104.95 c -3.5,0.04 -5.26,4.42 -8.98,3.78 -1.89,-0.4 -2.66,-4.83 -4.84,-2.71 4.17,0.85 -0.69,5.81 2.03,8.08 0.95,1.12 1.47,1.12 0.16,1.85 2.72,1.47 3.97,5.18 2.78,8.12 -3.16,1.23 2.9,3.39 -0.76,4.28 0.68,2.17 0.05,3.22 -2.29,2.94 -2.22,3.61 4.41,3.78 4.47,6.79 0.32,2.5 4.34,1.92 4.61,4.09 2.63,0.22 7.9,-0.18 8.05,3.09 -1.51,2.09 -1.02,3.76 1.16,4.61 -0.07,2.41 2.71,3.1 4.16,2.64 2.31,1.86 5.93,1.31 7.61,4.01 3.25,1.89 6.08,3.97 9.68,5.11 1.62,1.34 4.4,1.49 5.37,1.07 1.15,1.63 4.32,0.61 3.99,3.06 2.04,2.55 6.14,5.26 8.81,1.93 1.69,-2.04 5.6,-6.38 2.03,-8.09 -0.63,-2.26 4.24,-5.88 0.71,-8.42 -2.28,-1.08 -5.5,-4.67 -6.48,-0.31 -1.32,2.17 -2.68,0.9 -2.94,-0.66 -3.5,-1.06 4.07,-2.79 -0.09,-3.01 -2.21,-1.11 -5.81,-2.3 -5.04,-4.57 1.13,0.06 2.3,-2.29 3.7,-2.54 0.74,-1.99 0.82,-7.28 3.45,-6.47 0.09,2.59 1.3,4.57 3.75,4.84 3.24,0.28 5.22,3.37 8.36,2.73 2.95,-1.6 5.64,0.34 8.22,0.72 1.73,-1.99 3.39,-5.75 3.26,-7.88 -3.15,-1.08 -5.79,-2.77 -6.37,-6.36 -2.47,-1.1 -4.98,-1.26 -6.78,1.45 -3.22,2.32 -7.72,1.44 -11.17,-0.38 -0.64,3.79 -3.96,0.62 -3.06,-1.79 -1.61,-2.56 -5.77,-3.52 -8.36,-2.33 2.56,4.39 -5.29,4.06 -5.55,1.2 0.78,-2.3 -2.24,-2.11 -2.29,-4.46 -1.24,-2.84 -6.04,-4.38 -3.87,-7.88 -2.52,-2.26 -3.82,-6.64 -8.27,-6.11 -4.17,1.53 -5.59,-3.04 -9.23,-2.45 z","department-67":"m 544.44,133.33 c -2.55,1.2 -1.86,5.34 -3.54,7.57 -2.79,-0.45 -3.98,5.32 -0.38,4.93 0.87,1.03 5.75,1.83 2.14,2.53 -1.78,1.5 1.91,2.4 0.8,3.44 3.07,0.38 2.8,-5.61 5.59,-2.68 1.27,0.5 2.75,1.06 3.36,2.31 3.21,1.88 -0.45,5.47 -1.04,7.67 0.4,1.75 3.37,1.12 1.47,2.94 -0.9,2.92 -2.34,6.34 -5.54,7.14 -1.52,-0.27 -6.22,0.31 -2.38,1.08 1.92,0.81 -2.32,1.02 0.26,2.27 -0.26,2.11 -1.22,5.21 -0.98,7.34 -1.59,2.69 3.49,1.95 4.06,2.53 1.12,2.38 5.28,1.06 5.74,4.01 2.04,-0.84 -0.91,2.57 1.9,1.72 3.01,0.58 6.32,2.58 6.2,5.56 1.67,1.12 3.39,4.4 5.2,1.29 0.87,-3.2 3.75,-5.3 4.22,-8.66 0.15,-2.7 3.74,-3.64 2.22,-6.76 -0.27,-3.01 1.17,-6.05 2.5,-8.7 1.39,-2.29 -0.7,-5.94 1.56,-8.31 1.96,-2.54 5.71,-3.61 6.25,-7.2 0.97,-1.38 2.5,-0.59 3.09,-2.39 3.71,-1.2 3.61,-5.01 5.11,-7.95 0.24,-2.03 5.28,-4.42 1.59,-4.91 -3.51,-0.14 -6.34,-2.15 -9.28,-3.81 -2.69,-1.53 -5.76,0.29 -8.43,-1.4 -2.54,1.19 -6.23,-0.86 -8.22,1.79 -0.69,2.41 -2.45,7.76 -5.69,4.83 -2.43,-2.51 -5.76,1.35 -8.43,-0.25 -1.12,-1.59 -3.01,-2.5 -4.57,-2.09 -2.06,-1.13 -5.18,-2.13 -4.56,-5.04 0.33,-0.23 0.21,-0.84 -0.21,-0.81 z","department-88":"m 543.7,170.72 c -3.31,1.38 -6.33,2.9 -8.64,5.73 -1.29,0.67 -1.97,-1.71 -3,0.67 -1.48,2.53 -4.46,-1.14 -6.53,-0.37 -3.07,0.39 -1.42,-5.29 -4.45,-2.86 -1.72,1.06 0.93,4.33 -2.07,2.2 -1.78,0.74 -4.05,0.76 -5.72,1.72 -1.57,1.83 -1.69,-1.56 -3.59,-0.23 -1.77,0.14 -2.17,-3.2 -3.48,-0.63 -1.05,2.66 -5.79,-1 -5.2,1.97 -0.89,2.75 -2.59,1.71 -3.28,0.37 -0.1,2.4 -3.59,0.58 -5.16,1.87 -1.7,-0.72 0.13,-3.65 -2.1,-3.15 -3.28,-1.76 1.05,-7.74 -3.76,-6.9 -1.91,1.57 -3.93,0.03 -4.94,2.56 -1.62,0.54 -3.6,-1.45 -4.31,0.83 -0.98,2.28 -4.98,-0.54 -5.76,2.63 -1.49,-1.12 -4.76,0.24 -4.44,1.84 2.72,-0.76 -1.5,4.16 1.48,2.83 2.58,-2.8 4.27,0.92 5.47,2.86 0.99,2.29 2.44,-0.84 3.66,1.62 0.19,1.46 -0.14,2.91 2.21,2.73 1.05,0.81 2.84,3.4 0.16,2.99 -1.16,2.1 -0.8,4.9 -2.74,6.18 0.01,1.72 3.18,0.08 3.76,2.45 2.71,0.96 3.73,3.61 3.02,6.15 1.1,2.31 3.31,-2.88 3.5,0.86 1.43,3.89 3.56,-4.88 4.18,-0.76 -1.87,1.59 0.22,2.12 0.99,0.26 2.44,-0.34 2.63,-4.83 6.01,-3.79 2.78,-2.08 1.94,3.16 3.04,3.81 1.67,1.1 3.1,2.11 4.88,0.16 2.8,0.02 6.14,-1.3 7.82,1.99 0.57,3.89 4.42,1.42 5.62,-0.82 2.89,-1.35 3.54,3.7 6.5,4.05 2.19,0.9 3.46,2.55 5.11,3.85 2.21,-0.74 5.19,-1.96 3.36,-4.73 1.56,-1.66 0.35,-4.44 1.89,-6.56 0.98,-1.7 3.7,-2.62 3.88,-5.25 1.52,-1.58 3,-3.43 1.6,-5.14 1.49,-2.96 3.07,-5.84 4.54,-8.75 0.95,-1.35 2.26,-2.99 0.28,-4.02 -1.87,1.29 -5.67,-0.97 -2.92,-2.78 -2.18,-1.78 1.85,-5.54 -0.21,-7.07 -0.57,-0.2 -0.01,-1.38 -0.66,-1.38 z","department-52":"m 446.82,158.96 c -1.69,0.91 -3.13,-0.45 -4.82,1.2 -1.12,-0.83 -4.57,-0.69 -3.54,0.9 2.8,-1.2 4.68,3.32 1.31,3.37 -2.26,0.28 -2.04,1.83 -1.08,2.97 1.74,4.14 -5.82,-1.2 -5.38,2.99 -0.5,1.16 -1.78,3.02 -1.22,3.88 2.37,0.94 2.16,4.62 5.26,4.46 -0.97,2.99 5.41,1.68 2.86,4.7 2.62,1.68 0.37,4.97 1.38,6.77 1.02,1.49 -1.35,3.52 -0.54,5.29 0.17,4.44 -5.3,-1.1 -6.39,2.93 -2.48,1.02 2.31,2.62 0.41,4.4 1.49,1.78 5.61,0.36 3.83,3.87 2.37,-0.59 4.42,1.86 1.79,3.34 0.65,2.75 2.75,-2.78 3.64,0.5 0.65,2.55 3.6,4.14 3.33,6.7 -1.31,0.89 -4.49,2.9 -1.32,2.84 1.47,1.51 -1.34,5.58 1.92,4.46 1.63,-2.16 2.42,0.63 2.94,1.7 1.79,1.42 3.81,1.4 4.82,-0.8 0.79,0.32 -0.13,2.53 1.75,2.49 0.96,1.39 3.18,1.14 1.74,3.15 0.89,2.65 3.78,-3.01 5.24,-0.13 1.75,-1.89 1.15,-6.06 4.57,-5.11 1.28,-1.4 3.49,1.3 4.33,-1.4 1.59,-1.92 1.63,2.72 3.95,1.22 2.18,-0.12 2.71,-1.17 2.09,-3.01 0.93,-1.34 1.22,-2.86 -0.38,-3.56 -0.59,-2.58 1.37,-2.98 3.06,-3.3 -0.71,-3.1 2.46,-1.42 3.57,-1.95 -0.16,-2.01 1.36,-3.53 2.99,-3.36 -0.29,-2.42 -2.17,-4.47 -4.19,-2.78 -1.26,-1.95 0.41,-5.52 -3.04,-6.35 -1,-1.34 -2.58,-2.41 -4.02,-2.13 -1.13,-1.43 1.6,-1.92 0.97,-3.42 1.1,-1.79 0.88,-4.33 2.89,-4.52 -0.46,-2.76 -4.86,-1.71 -3.68,-4.79 -1.34,-2.4 -3.06,0.93 -3.95,-2 -1.16,-2.97 -3.69,-4.38 -6.2,-2.11 -0.59,-1.91 1.12,-3.24 -1.32,-3.92 1.85,-0.41 3.47,-2.52 0.93,-3.26 -0.38,-1.87 -1.16,-2.02 -2.78,-2.58 -1.73,-3.16 -6.41,-1.82 -8.19,-4.99 -2.15,-0.46 -2.78,-2.81 -5.04,-3 -0.12,-2.21 -1.01,-1.61 -2.26,-0.66 -2.79,-0.35 1.41,-5.66 -2.22,-4.93 z","department-70":"m 499.88,202.89 c -2.63,0.3 -4.89,2.11 -5.97,4.12 -0.94,0.91 -3.97,2.32 -2.12,-0.03 0.13,-1.92 -1.88,-0.34 -1.76,0.64 -1.02,1.34 -0.98,3.88 -3.06,3.55 -0.55,1.66 -1.23,4.46 -3.43,2.67 -1.42,0.7 -1.13,3.58 -3.32,2.54 -2.26,2.15 1.83,3.96 -0.2,6.21 1.24,3.12 -4.32,4.77 -5.32,1.82 -0.58,-0.92 -2.73,2.87 -4.37,1.01 -1.22,1.14 -4.49,-0.07 -3.8,2.59 -2.11,1.09 0.1,3.94 1.06,1.41 2.21,-1.57 4.14,3.91 2.96,5.69 -0.66,2.07 -2.95,2.72 -4.23,3.24 1.21,1.06 -1.76,2.05 0.86,1.83 2.25,0.29 -0.16,6.1 3.34,4.24 1.79,2.16 -1.88,5.33 1.36,5.71 1.44,2.16 3.91,4.38 6.57,2.71 2.27,-0.86 4.59,0.16 6.71,-1.75 2.79,-1.14 5.72,-4.18 8.47,-2.76 2.5,-0.09 4.56,-1.97 5.85,-3.76 1.83,0.46 2.61,-0.36 2.86,-1.77 2.63,-0.46 5.27,-1.6 5.54,-4.7 2.29,-1.29 5.83,-3.32 7.88,-0.71 1.23,-0.95 5.65,1.5 4.64,-1.81 -0.18,-2.44 4.57,1.54 3.74,-2.01 -0.12,-2.68 3.06,0.48 4.42,0.6 2.85,1.79 2.94,-3.34 1.04,-4.6 1.68,-2.26 -0.76,-5 -0.83,-7.47 -0.79,-2.86 4.43,-4.21 1.79,-6.71 -2.08,-2.66 -6.24,-2.87 -7.71,-6.14 -2.5,-2.92 -3.93,3.02 -6.8,2.39 -1.62,-1.8 -2.57,-4.88 -5.66,-4.53 -2.96,-0.21 -6.08,3.12 -8.15,0.41 -2.4,-0.51 0.23,-4.03 -2.37,-4.63 z", -"department-21":"m 430.26,202.39 c -2.98,-0.36 -2.28,3.5 -2.89,4.09 -3.52,0.85 -7.72,-0.28 -10.91,1.13 0.12,1.91 0.16,3.7 -1.78,4.39 -1.43,2.57 2.23,2.59 2.78,2.96 0.78,2.82 0.56,7.26 -3.23,7.04 -0.11,2.16 1.99,3.62 -1,3.9 0.72,2.94 -2.41,6.52 -3.86,9.44 -2.44,2.06 0.03,6.34 -3.4,7.86 -0.01,1.52 1.54,3.57 2.08,4.44 2.08,-1.74 -0.71,3.97 0.05,5.35 0.76,2.06 4.84,0.48 4.74,3.88 -1.32,3.42 1.69,6.38 5.01,6.9 1.3,1.42 0.65,2.78 2.51,1.23 2.03,0.22 0.19,2.75 2.63,2.77 2.7,1.39 5.44,1.37 6.15,4.62 1.34,1.99 4.7,1.98 4.57,4.24 2.88,-1.34 6.42,-1.22 9.16,-3.33 2.31,-0.8 6.07,-0.86 8.14,-1.17 2.91,2.58 6.21,-1.12 9.25,-0.89 2.24,-0.61 1.63,-2.43 0.75,-3.34 1.62,-2.89 6.07,-2.65 6.78,-6.47 1.41,-2.73 2.01,-5.54 2.73,-8.48 0.14,-1.92 1.96,-2.74 -0.25,-3.51 0.43,-2.24 1.54,-5.31 -1.69,-5.06 -0.44,-1.89 -1.3,-4.9 -2.86,-4.55 0.22,-3.37 5.14,-1.91 4.96,-5.91 0.76,-2.96 -2.67,-7.08 -4.51,-2.82 -2.22,-0.25 -3.54,-1.43 -5.3,0.74 -2.39,1.02 -0.78,-3.81 -3.53,-3.94 -1.77,-1.18 -0.62,-3.19 -2.39,-0.9 -3.64,2.12 -4.58,-4.93 -7.28,-2.21 -2.89,-0.45 0.78,-4.91 -3.01,-5.07 0.9,-1.64 5.08,-3.23 1.85,-5.04 -1.35,-1.96 -2.46,-6.59 -4.91,-3.77 -2.57,-0.44 2.15,-3.15 -0.94,-3.86 -1.96,-0.39 -2.06,-0.68 -1.78,-2.38 -2.58,-1.59 -5.78,-1.16 -8.59,-2.28 l 0,0 z","department-25":"m 524.75,232.72 c 0.6,3.47 -5.06,1.11 -4.41,4.65 -1.59,0.18 -4.21,0.28 -5.1,0.07 -2.83,-2.93 -7.31,0.27 -8.34,3.45 -1.29,2.51 -4.23,1.18 -5.23,3.59 -1.44,0.48 -2.41,0.42 -2.71,1.78 -2.17,0.44 -3.6,3.16 -6.39,2.02 -3.22,-0.12 -5.72,2.6 -8.74,3.57 -3.03,0.32 -3.9,3.34 -1.23,5.03 3.1,1.51 4.18,4.87 1.57,7.47 0.1,1.6 -1.31,3.03 -1.29,4.53 1.26,1.41 2.75,-3.16 3.11,0.11 0.9,2.49 4.55,-0.29 4.63,2.13 3.8,0.81 1.81,4.9 4.19,7.22 0.91,2.91 5.17,1.46 6.56,4.25 3.53,2.93 0.14,6.33 -2.84,7.54 -1.4,1.89 0.42,3.62 -1.39,5.19 -0.75,2.81 3.69,5.73 3.76,1.72 2.39,-2.03 4.37,-4.58 7.12,-6.18 2.26,-1.76 5.45,-2.91 6.57,-5.72 -0.74,-2.93 1.48,-6 -0.08,-9.15 0.11,-4.19 6.86,-3.29 9.42,-5.9 2.72,-1.98 2.28,-6.41 5.92,-7.6 2.76,-2.22 4.53,-5.44 7.39,-7.56 -0.61,-3.67 3.46,-4.22 4.78,-6.73 -0.15,-3.82 -4.97,0.07 -7.07,-1.46 0.7,-1.9 3.21,-4.13 1.45,-6.71 -0.76,-1.48 -0.67,-2.19 0.61,-2.92 -0.66,-3.47 -5.22,-3.74 -7.78,-2.34 -1.29,-1.12 -3.19,-0.98 -4.5,-2.06 z","department-2B":"m 591.47,517.82 c -3.8,0.59 0.96,5.58 -2.34,7.11 0.41,2.37 -1.56,4.36 0.27,6.51 0.91,2.65 0.16,5.25 -1.21,7.52 -1.7,1.4 -2.28,-3.59 -4.88,-2.82 -2.72,-0.68 -5.78,0.73 -6.51,3.55 -0.96,3.57 -5.53,1.85 -7.86,3.52 -1.89,1.06 -3.87,1.71 -4.61,3.96 -1.27,0.02 -3.62,-0.97 -3.17,1.52 -0.83,1.46 -4.01,3 -1.97,4.89 -0.74,1.76 -0.34,3.49 -2.71,3.49 -0.21,1.44 -2.22,2.88 0.58,2.71 2.53,1.11 5.12,2.12 7.69,3.24 1.52,0.72 3.8,-1.59 3.24,1.35 1.14,3.16 4.05,4.22 6.73,6.16 3.36,0.28 1.41,5.5 4.55,6.47 1.71,1.96 0.79,6.36 4.83,5.7 0.18,2.3 0.59,4.8 0.39,7.09 3.14,0.81 -1.89,5.25 2.18,4.96 1.78,0.52 2.82,0.98 4.16,-0.94 3.62,-1.36 0.49,-5.59 2.73,-7.46 1.3,-1.69 2.64,-3.75 1.77,-5.45 1.89,-0.05 4.02,-2.43 3.98,-4.66 -3.67,0.56 1.98,-2.55 0.4,-4.61 0.47,-4.5 -0.6,-8.88 -1.01,-13.3 -0.14,-3.75 0.34,-7.67 -0.54,-11.31 -2.55,0.11 -3.67,-4.24 -3.35,-6.45 -0.43,-3.66 1.56,-7.1 1.67,-10.65 -0.63,-3.67 -1.07,-7.33 -1.55,-11 -0.76,-1.12 -2.26,-1.12 -3.47,-1.1 z","department-2A":"m 553.92,559.49 c -0.76,0.55 -0.1,3.85 1.13,1.96 1.53,-0.6 3.16,1.13 1.04,1.7 0.18,1.06 4.56,1.95 3.28,3.75 -1.7,0.83 -4.95,1.13 -5.71,2.43 1.47,0.55 1.4,3.03 1,3.92 1.78,0.17 -1.16,0.99 0.63,1.63 0.63,1.3 2.89,1.78 3.93,2.6 2.01,-0.69 1.72,2.93 3.31,3.71 -1.37,1.54 -4.97,1.78 -3.83,4.58 -1,1.17 -4.84,0.3 -2.28,2.46 0.58,1.07 -0.7,3.38 1.57,2.3 2.41,0.81 4.08,-2.02 6.12,-1.18 1.97,1.46 -0.22,3.37 0.14,5 -2.75,0 1.8,1.85 -1.02,2.54 -3.01,0.03 -0.83,3.83 -3.9,3.99 -1.68,0.23 1.57,0.7 1.54,1.65 1.76,-0.59 3.68,-1.62 3.39,1.11 1.89,0.2 4.59,0.62 6.1,1.72 -1.54,1.28 -2.78,3.54 -5.39,3.37 -1.08,2.57 -0.44,5.65 2.26,6.65 0.47,1.48 3.07,1.49 4.07,2.79 2.06,-0.18 4.37,2.72 5.98,1.13 0.61,-0.03 -0.33,2.68 1.6,1.9 1.78,0.68 -1.94,3.73 1.39,3.43 1.92,2.48 5.07,2.16 5.35,-1.31 -0.28,-1.01 -2.21,1.4 -1.26,-0.4 -1.13,-2.4 4.15,-2.95 2.21,-5.91 -0.37,-2.45 4.29,-3.07 3.59,-5.68 -1.11,-1.47 -3.9,2.07 -2.85,-0.95 0.15,-2.4 3.01,0.56 2.82,-1.99 2.59,-0.18 0.07,-3.36 2.35,-4.13 0.15,-3.28 0.23,-6.85 -0.14,-10.22 -1.57,-1.53 -3.07,3.01 -4.83,0.98 -2.75,0.63 -3.37,-1.87 -1.99,-3.78 0.22,-1.35 -2.56,-0.55 -1.08,-2.17 -0.85,-2.32 1.32,-7.41 -2.67,-6.39 -2.45,-0.98 -0.65,-4.44 -2.73,-5.65 -2.85,-1.24 -1.36,-6.19 -4.82,-6.53 -1.64,-1.96 -4.77,-2 -5.5,-4.65 -1.21,-1.02 -0.51,-3.66 -2.85,-2.55 -2.75,-0.46 -5.3,-1.82 -7.74,-2.91 -1.28,-0.57 -2.84,-0.72 -4.21,-0.9 z","department-66":"m 350.33,540.74 c -2.96,0.38 -4.31,2.8 -5.6,5.05 -3.53,0.71 -7.2,-0.41 -10.77,-0.57 -2.35,1.71 -6.82,-1.75 -7.77,1.56 0.2,2.13 1.85,4.41 0.81,6.44 -1.56,1.89 -4.34,1.3 -5.68,3.47 -1.35,1.08 -2.18,1.99 -3.65,0.52 -2.39,0.04 -5.76,-0.02 -7.25,1.69 -0.99,2.71 -4.23,1.36 -5.45,3.77 -3.15,-0.36 -6.54,2.28 -5.14,5.7 2.43,0.62 5.15,0.58 6.86,2.76 2.19,0.36 3.92,1.1 3.79,3.75 0.25,2.56 3.21,3.71 5.32,2.52 1.96,-1.04 2.2,-4.45 4.97,-3.96 2.58,-0.15 5.03,-1.38 7.33,0.7 1.62,1.14 4.07,1.03 4.94,3.03 1.26,1.86 4.32,3.14 5.35,0.56 1.73,0.75 6.82,2.34 4.14,-1.14 0.71,-2.52 4.05,-2.95 6.3,-2.62 1.56,-1.63 3.48,-3.18 5.81,-2.8 0.99,-2.12 3.1,-0.12 4.88,-0.88 1.63,1.07 2.93,3.67 5.54,2.51 3.2,-0.39 -1.16,-3.71 -1.44,-5.38 -2.92,-1.29 -2.81,-4.63 -3.06,-7.37 0.78,-2.2 -2.64,-2.22 -1.43,-4.12 2.29,1.97 1.16,-2.93 1.55,-4.24 0.36,-2.22 -0.89,-3.89 -3.17,-3.82 -1.26,-1.48 0.41,-4.01 -2.35,-4.33 -1.89,-0.44 -3.32,-1.87 -4.85,-2.81 z","department-01":"m 445.43,302.59 c -1.44,3.02 -1.75,6.16 -3.18,9.18 -0.78,3.16 -1.85,6.34 -2.91,9.5 -0.74,1.88 -1.31,3.79 -0.09,5.37 -0.73,2.05 -2.97,3.67 -1.95,5.9 -1.67,2.26 0.87,5.73 -1.18,7.83 1.88,0.01 3.46,1.61 3.99,2.62 2.16,-1.53 3.89,1.88 4.07,3.41 0.92,1.26 -0.03,3.77 2.46,2.77 2.89,0.46 5.98,-0.89 8.76,0.39 1.35,2.24 3.89,2.93 5.42,0.31 1.18,-1.7 1.66,-5.65 4.09,-5.27 2.02,1.24 3.75,2.88 3.08,4.98 1.95,2.32 3.67,4.97 5.93,6.73 1.33,1.23 0.17,0.8 -0.53,0.61 0.61,1.8 3.11,2.49 3.34,4.83 0.97,0.84 1.38,-1.89 2.87,-1.59 -0.3,-1.63 1.67,-2.68 0.77,-4.34 3.81,0.96 3.71,-3.34 3.75,-5.95 0.89,-3.44 1.98,-6.82 2.27,-10.31 -1.07,-2.3 -1.36,-4.85 -1.09,-7.47 0.3,-1.5 0.9,-3.58 2.27,-1.4 2.48,1.01 0.53,-3.51 3.59,-2.7 2.71,-0.13 3.55,-3.26 1.37,-4.78 1.32,-2.8 5.95,-1.73 6.82,-4.09 -1.66,-3.05 4.61,-7.07 -0.2,-9.19 -2.62,-2.47 -4.13,2.14 -6.1,3.38 -0.9,2.11 -2.5,3.05 -3.65,4.53 -1.99,2.56 -5.47,0.79 -8.11,1.25 0.84,-3.04 -2.73,-3.43 -3.76,-4.72 -2.02,1.65 -3.16,4.49 -6.19,4.68 -2.73,0.46 -1.81,-2.02 -1.56,-3.51 -1.42,0.56 -1.69,-0.36 -2.26,-1.49 -0.06,1.35 -0.96,2.99 -0.83,0.6 -1.4,-1.01 -1.59,-2.59 -1.58,-3.72 -1.32,-0.93 -3.93,-1.28 -2.29,-3.07 -1.76,-1.43 -5.48,-1.31 -5.42,-4.72 -2.13,-0.62 -4.08,0.9 -6.23,1.42 -1.93,-0.36 -3.28,-2.81 -5.2,-1.46 0.07,-0.1 -0.3,-0.68 -0.54,-0.51 z","department-39":"m 472.04,250.64 c -2.16,1.79 -1.36,5.28 -2.94,7.45 0.09,2.73 -2.31,4.73 -3.53,7.05 -3.03,-0.47 -5.35,3.74 -3.19,4.71 -2.06,0.47 -3.73,5.36 -0.52,4.7 1.33,0.76 0.69,4.17 3.48,3.21 1.68,-0.66 1.23,2.18 3.27,2.09 2.46,1.35 -0.2,2.67 -1.91,2.03 -2.06,-0.51 -4.46,1.94 -1.6,2.77 2.43,1.33 -1.33,3.03 1.08,4.08 0.89,2.1 1.19,3.82 2.13,6.05 -2.12,0.95 -0.43,3.73 -3.06,3.72 -1.86,2.41 0.74,4.14 2.3,5.69 -0.13,2.93 -6.18,0.76 -4.86,4.67 0.41,1.69 3.59,1.72 2.72,3.84 0.3,1.7 2.14,1.5 2.39,1.42 0.16,2.17 2.98,0.53 1.91,2.98 -0.9,3.13 3.87,1.82 4.85,0.12 1.46,-0.55 2.58,-4.59 4.24,-1.99 2.29,0.06 2.46,3.2 3.09,3.77 2.93,-0.04 7.08,0.91 8.5,-2.49 2.02,-1.97 3.8,-4.92 6.21,-7.02 2.27,-1.54 0.39,-4.74 2.54,-6.4 1.4,-1.49 3.11,-3.84 -0.06,-3.89 -2.06,-1.17 -3.31,-3.74 -0.87,-5.29 0.4,-1.53 -1.44,-3.09 0.76,-4.19 2.73,-1.36 6.13,-4.43 2.26,-6.76 -1.6,-2.02 -3.91,-2.65 -5.92,-3.04 -1.27,-2 -1.73,-3.98 -2.6,-5.89 -0.82,-0.25 1.22,-2.33 -1.1,-2.27 -1.84,-1.29 -4.2,-1.14 -5.91,-2.76 -0.62,-1.82 -0.09,-1.2 -1.26,-0.03 -2.05,2.08 -3.47,-2.98 -0.74,-2.02 0.76,-1.1 -0.4,-3.36 1.4,-4.52 2.37,-3.1 -2.64,-4.46 -3.59,-6.62 -0.37,-1.97 -2.06,-4.51 -3.97,-2.34 -2.56,0.88 -4.13,-1.12 -5.49,-2.82 z","department-68":"m 549.43,183.82 c -2.25,1 -2.94,3.73 -3.79,5.81 -0.9,2.15 -3.75,4.26 -2.11,6.74 -0.93,2.22 -2.92,4.25 -3.93,6.64 -2.43,1.18 -3.51,3.7 -3.19,6.38 0.13,1.69 -1.55,2.36 -0.44,3.95 0.77,2.64 -4.62,1.97 -2.6,4.52 2.13,1.91 5.37,1.9 7.52,3.96 0.67,1.81 1.6,4.32 0.06,6.09 -1.78,1.43 -0.08,4 1.85,2.88 1.83,0.98 2.47,3.66 3.32,5.16 -0.72,2.04 1.34,2.1 2.39,2.44 -0.32,1.38 -1.23,4 1.33,3.32 1.03,1.33 2.07,1.29 3.35,0.31 2.56,-0.08 5.85,0.35 7.17,-2.31 -0.73,-1.24 -0.96,-2.18 0.78,-1.43 2.66,0.8 0.35,-2.42 2.52,-2.38 0.82,-0.85 -1.99,-1.47 0.03,-2.05 1.88,-1.02 4.21,-2.78 2.05,-4.99 -1.7,-1.63 -3.7,-3.88 -1.43,-6.04 0.91,-2.16 -1.41,-4.57 0.56,-6.71 0.67,-2 0.44,-4 1.78,-5.83 -0.03,-2.09 3.45,-4.94 0.43,-6.95 -3.06,-1.46 0.88,-6.62 -2.19,-7 -1.65,-0.56 -1.53,-2.31 -3.25,-2.51 -0.17,-1.94 -0.33,-3.93 -2.69,-4.35 -2.09,-1.1 -4.78,-1.23 -5.71,-3.58 0.07,-2.15 -2.48,-1.52 -3.79,-2.06 z","department-90":"m 532.37,216.22 c -0.55,0.23 -0.49,0.97 -0.95,1.33 -0.62,0.8 -1.51,1.36 -1.95,2.3 -0.77,0.99 -0.8,2.48 -0.08,3.5 -0.03,0.67 0.48,1.24 0.41,1.93 -0.01,0.83 -0.07,1.76 0.62,2.36 0.29,0.29 0.48,0.66 0.1,0.97 -0.14,0.38 -0.57,0.43 -0.76,0.72 -0.05,0.5 0.53,0.78 0.56,1.29 0.18,0.47 0.52,0.85 0.75,1.28 0.26,0.15 0.87,0.53 0.4,0.81 -0.7,0.47 -0.05,1.72 0.76,1.5 0.78,0.02 1.57,-0.19 2.27,-0.46 0.8,0.18 1.42,0.82 1.45,1.64 0.04,0.86 1.41,0.54 1.43,1.42 0.01,0.47 0.26,1.11 -0.01,1.5 -0.5,0.35 -0.45,-0.64 -0.86,-0.74 -0.5,-0.2 -0.94,0.42 -0.64,0.85 0.2,0.34 -0.18,0.93 0.34,1.04 0.43,0.61 0.84,1.44 0.71,2.19 -0.36,0.5 0.42,0.64 0.75,0.45 0.83,-0.18 1.47,-0.8 2.26,-1.07 0.62,-0.6 -0.22,-1.42 -0.38,-2.05 -0.12,-0.36 -0.45,-1.06 0.17,-1.13 0.42,-0.08 0.81,-0.3 1.15,-0.48 0.96,0.2 1.82,0.91 2.86,0.71 1.1,-0.11 2.47,-0.62 2.45,-1.94 0.16,-1 -0.69,-1.62 -1.41,-2.13 -0.16,-0.46 -0.02,-1.09 -0.52,-1.4 -0.45,-0.55 -0.43,-1.71 -1.38,-1.73 -0.72,-0.12 -1.46,0.05 -1.95,0.59 -0.4,0.24 -0.3,-0.53 -0.6,-0.62 -0.31,-0.79 -0.34,-1.73 0.1,-2.47 0.16,-0.36 0.01,-1.1 0.63,-0.98 0.41,0.01 0.38,-0.37 0.4,-0.64 0.61,-1 -0.15,-2.14 -0.3,-3.13 0.23,-0.47 0.38,-1.05 -0.1,-1.44 -0.8,-1.1 -2.3,-1.18 -3.29,-2.06 -0.38,-0.36 -0.84,-0.58 -1.33,-0.6 -0.84,-0.67 -2.13,-0.38 -2.92,-1.15 -0.45,-0.63 -0.74,-1.4 -0.95,-2.13 -0.05,-0.04 -0.12,-0.05 -0.18,-0.04 z"}}}}),b}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.js deleted file mode 100644 index 8ce1c22..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.js +++ /dev/null @@ -1,151 +0,0 @@ -/*! - * - * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) - * Requires jQuery and Mapael - * - * Map of USA by state - * - * @source http://the55.net/_11/sketch/us_map - * - * @deprecated : this map will be definitely moved to 'mapael-maps' repository starting from the next major release (3.0.0). - * You can use instead https://github.com/neveldo/mapael-maps/blob/master/usa/usa_state.js - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery'), require('jquery-mapael')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery', 'mapael'], factory); - } else { - // Browser globals - factory(jQuery, jQuery.mapael); - } -}(function ($, Mapael) { - - "use strict"; - - $.extend(true, Mapael, - { - maps :{ - usa_states : { - width : 959, - height : 593, - latLngToGrid: function(lat, lng, phi1, phi2, midLng, scale) { - var pi =Math.PI; - var midLat = (phi1 + phi2) / 2; - var n, tmp1, tmp2, tmp3, x, y, p; - - n = (Math.sin(phi1 / 180 * pi) + Math.sin(phi2 / 180 * pi)) / 2; - tmp1 = Math.sqrt(Math.cos(phi1 / 180 * pi)) + 2 * n * Math.sin(phi1 / 180 * pi); - tmp2 = scale * Math.pow(tmp1 - 2 * n * Math.sin(midLat / 180 * pi),0.5) / n; - tmp3 = n * (lng - midLng); - p = scale * Math.pow(tmp1 - 2 * n * Math.sin(lat / 180 * pi),0.5) / n; - x = p * Math.sin(tmp3 / 180 * pi); - y = tmp2 - p * Math.cos(tmp3 / 180 * pi); - - return([x,y]); - }, - getCoords : function (lat, lon) { - var coords = {}, - xOffset, - yOffset, - scaleX, - scaleY, - phi1, - phi2, - midLng, - scale; - if(lat > 51) { // alaska - phi1= 15; - phi2= 105; - midLng = -134; - scale = 530; - coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale); - xOffset = 190; - yOffset = 543; - scaleX= 1; - scaleY= -1; - - } else if (lon < -140) { // hawaii - phi1= 0; - phi2= 26; - midLng = -166; - scale = 1280; - coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale); - xOffset = 115; - yOffset = 723; - scaleX= 1; - scaleY= -1; - } else { - xOffset = -17; - yOffset = -22; - scaleX = 10.05; - scaleY = 6.26; - - coords[0] = 50.0 + 124.03149777329222 * ((1.9694462586094064-(lat* Math.PI / 180)) * Math.sin(0.6010514667026994 * (lon + 96) * Math.PI / 180)); - coords[1] = 50.0 + 1.6155950752393982 * 124.03149777329222 * 0.02613325650382181 - 1.6155950752393982* 124.03149777329222 * (1.3236744353715044- (1.9694462586094064-(lat* Math.PI / 180)) * Math.cos(0.6010514667026994 * (lon + 96) * Math.PI / 180)); - } - return {x : (coords[0] * scaleX + xOffset), y : (coords[1] * scaleY + yOffset)}; - }, - elems : { - "HI" : "m 233.08751,519.30948 1.93993,-3.55655 2.26326,-0.32332 0.32332,0.8083 -2.1016,3.07157 -2.42491,0 z m 10.18466,-3.71821 6.14313,2.58657 2.10159,-0.32332 1.61661,-3.87987 -0.64664,-3.39488 -4.2032,-0.48498 -4.04153,1.77827 -0.96996,3.71821 z m 30.71563,10.023 3.7182,5.49647 2.42492,-0.32332 1.13163,-0.48498 1.45495,1.29329 3.71821,-0.16166 0.96997,-1.45495 -2.90991,-1.77827 -1.93993,-3.71822 -2.1016,-3.55654 -5.8198,2.9099 -0.64664,1.77828 z m 20.20765,8.89137 1.29329,-1.93994 4.68817,0.96996 0.64665,-0.48498 6.14312,0.64664 -0.32332,1.2933 -2.58658,1.45494 -4.36485,-0.32332 -5.49648,-1.6166 z m 5.33482,5.17315 1.93994,3.87987 3.07155,-1.13163 0.32333,-1.61662 -1.61661,-2.10159 -3.71821,-0.32332 0,1.29329 z m 6.95143,-1.13163 2.26326,-2.9099 4.68817,2.42492 4.36485,1.13163 4.36486,2.74824 0,1.93993 -3.55654,1.77828 -4.84985,0.96996 -2.42491,-1.45495 -4.84984,-6.62811 z m 16.65111,15.51947 1.61661,-1.29328 3.39489,1.61662 7.59807,3.55654 3.39489,2.10159 1.6166,2.42492 1.93994,4.36485 4.04153,2.58658 -0.32332,1.2933 -3.87987,3.23322 -4.20319,1.45495 -1.45495,-0.64664 -3.07157,1.77826 -2.42491,3.23323 -2.26326,2.9099 -1.77828,-0.16166 -3.55654,-2.58658 -0.32332,-4.52651 0.64664,-2.42492 -1.61661,-5.65814 -2.1016,-1.77828 -0.16166,-2.58658 2.26326,-0.96996 2.1016,-3.07156 0.48498,-0.96997 -1.61661,-1.77828 -0.32332,-2.1016 z", - "AK" : "m 158.07671,453.67502 -0.32332,85.35713 1.6166,0.96996 3.07157,0.16166 1.45494,-1.13162 2.58658,0 0.16167,2.9099 6.95143,6.78977 0.48499,2.58658 3.39488,-1.93994 0.64665,-0.16166 0.32332,-3.07156 1.45494,-1.61661 1.13164,-0.16166 1.93993,-1.45496 3.07156,2.1016 0.64665,2.90991 1.93993,1.13162 1.13163,2.42492 3.87988,1.77827 3.39488,5.98147 2.74823,3.87986 2.26326,2.74825 1.45496,3.7182 5.01149,1.77828 5.17317,2.10159 0.96996,4.36486 0.48498,3.07156 -0.96996,3.39489 -1.77828,2.26325 -1.61661,-0.8083 -1.45495,-3.07157 -2.74824,-1.45494 -1.77827,-1.13164 -0.80831,0.80831 1.45495,2.74825 0.16166,3.7182 -1.13163,0.48498 -1.93993,-1.93993 -2.10159,-1.29329 0.48498,1.61661 1.29328,1.77828 -0.8083,0.8083 c 0,0 -0.8083,-0.32332 -1.29328,-0.96997 -0.485,-0.64664 -2.1016,-3.39488 -2.1016,-3.39488 l -0.96997,-2.26326 c 0,0 -0.32332,1.29329 -0.96997,0.96996 -0.64665,-0.32332 -1.29329,-1.45494 -1.29329,-1.45494 l 1.77827,-1.93994 -1.45495,-1.45495 0,-5.0115 -0.8083,0 -0.8083,3.39488 -1.13164,0.485 -0.96996,-3.71822 -0.64665,-3.71821 -0.80831,-0.48498 0.32333,5.65815 0,1.13162 -1.45496,-1.29328 -3.55654,-5.98147 -2.1016,-0.48498 -0.64664,-3.71821 -1.61661,-2.9099 -1.61662,-1.13164 0,-2.26325 2.1016,-1.29329 -0.48498,-0.32332 -2.58658,0.64664 -3.39489,-2.42491 -2.58658,-2.90991 -4.84983,-2.58658 -4.04154,-2.58658 1.2933,-3.23322 0,-1.61661 -1.77828,1.61661 -2.9099,1.13163 -3.71821,-1.13163 -5.65815,-2.42491 -5.49647,0 -0.64664,0.48498 -6.46645,-3.87988 -2.1016,-0.32332 -2.74824,-5.8198 -3.55655,0.32332 -3.55655,1.45495 0.48499,4.52652 1.13162,-2.9099 0.96998,0.32332 -1.45496,4.36485 3.23322,-2.74824 0.64665,1.61661 -3.87987,4.36485 -1.29329,-0.32332 -0.48498,-1.93994 -1.29329,-0.8083 -1.29329,1.13163 -2.74824,-1.77827 -3.07157,2.1016 -1.77826,2.10159 -3.39489,2.1016 -4.68818,-0.16167 -0.48498,-2.10159 3.7182,-0.64665 0,-1.29328 -2.26326,-0.64666 0.96998,-2.42491 2.26325,-3.87987 0,-1.77827 0.16166,-0.80831 4.36486,-2.26326 0.96996,1.29329 2.74825,0 -1.29329,-2.58657 -3.71822,-0.32333 -5.01149,2.74824 -2.42492,3.39488 -1.77827,2.58659 -1.13163,2.26326 -4.20319,1.45494 -3.07157,2.58658 -0.323321,1.61662 2.263257,0.96997 0.808313,2.10158 -2.748249,3.23323 -6.466439,4.2032 -7.759747,4.20319 -2.101597,1.13162 -5.334818,1.13164 -5.334826,2.26325 1.778275,1.29329 -1.454954,1.45495 -0.484982,1.13163 -2.748238,-0.96997 -3.23322,0.16166 -0.808312,2.26326 -0.969963,0 0.323321,-2.42492 -3.556551,1.2933 -2.909899,0.96996 -3.394886,-1.29329 -2.909901,1.93993 -3.233224,0 -2.101597,1.2933 -1.616612,0.8083 -2.101595,-0.32332 -2.58658,-1.13163 -2.263257,0.64665 -0.969967,0.96996 -1.616613,-1.13162 0,-1.93994 3.071564,-1.29329 6.304787,0.64665 4.364853,-1.61662 2.101596,-2.10159 2.909902,-0.64665 1.778273,-0.80831 2.748241,0.16166 1.616612,1.2933 0.969963,-0.32332 2.263257,-2.74824 3.07157,-0.96998 3.39488,-0.64664 1.293294,-0.32332 0.646642,0.48498 0.808312,0 1.293284,-3.71821 4.041533,-1.45494 1.939936,-3.71821 2.263259,-4.52652 1.616615,-1.45495 0.323321,-2.58658 -1.616615,1.29329 -3.394893,0.64665 -0.646642,-2.42492 -1.293284,-0.32332 -0.969973,0.96996 -0.16166,2.90991 -1.454955,-0.16167 -1.454944,-5.8198 -1.293294,1.29328 -1.131624,-0.48498 -0.32332,-1.93993 -4.041533,0.16166 -2.101596,1.13163 -2.586578,-0.32332 1.454944,-1.45495 0.484981,-2.58658 -0.646641,-1.93994 1.454954,-0.96996 1.293284,-0.16166 -0.646642,-1.77828 0,-4.36485 -0.969963,-0.96997 -0.808312,1.45495 -6.143123,0 -1.454951,-1.29329 -0.646645,-3.87986 -2.101596,-3.55656 0,-0.96996 2.101596,-0.80831 0.161661,-2.1016 1.131628,-1.13162 -0.808305,-0.48498 -1.29329,0.48498 -1.131628,-2.74824 0.969967,-5.01151 4.526514,-3.23321 2.586575,-1.61662 1.939936,-3.7182 2.748249,-1.2933 2.586578,1.13164 0.323321,2.42492 2.424917,-0.32334 3.23322,-2.42491 1.616615,0.64665 0.969962,0.64664 1.616615,0 2.263259,-1.29329 0.808313,-4.36486 c 0,0 0.323321,-2.90989 0.969963,-3.39488 0.646642,-0.48498 0.969963,-0.96996 0.969963,-0.96996 l -1.131623,-1.93994 -2.58658,0.80831 -3.23323,0.8083 -1.939936,-0.48498 -3.556541,-1.77828 -5.011495,-0.16166 -3.556551,-3.7182 0.484981,-3.87987 0.646652,-2.42492 -2.101596,-1.77827 -1.939938,-3.71822 0.484983,-0.8083 6.789771,-0.48498 2.101596,0 0.969963,0.96996 0.646652,0 -0.16166,-1.61661 3.879862,-0.64664 2.586577,0.32332 1.454955,1.13163 -1.454955,2.1016 -0.484981,1.45494 2.748249,1.61662 5.011497,1.77827 1.778276,-0.96996 -2.263257,-4.36485 -0.969974,-3.23323 0.969974,-0.80831 -3.394891,-1.93993 -0.484983,-1.13164 0.484983,-1.6166 -0.808304,-3.87987 -2.909909,-4.68818 -2.424918,-4.20319 2.909909,-1.93994 3.233222,0 1.778276,0.64665 4.203192,-0.16166 3.718205,-3.55654 1.131633,-3.07157 3.718212,-2.42492 1.616604,0.96997 2.748239,-0.64665 3.718209,-2.1016 1.13164,-0.16166 0.96996,0.80832 4.52651,-0.16167 2.74824,-3.07156 1.13163,0 3.55655,2.42491 1.93993,2.1016 -0.48498,1.13163 0.64664,1.13163 1.61662,-1.61661 3.87987,0.32332 0.32332,3.7182 1.93994,1.45496 7.11309,0.64664 6.30479,4.20319 1.45494,-0.96996 5.17317,2.58658 2.10159,-0.64664 1.93994,-0.80832 4.84983,1.93994 4.36486,2.9099 z m -115.102797,28.93736 2.101596,5.33482 -0.161662,0.96997 -2.909902,-0.32333 -1.778273,-4.04153 -1.778273,-1.45494 -2.424919,0 -0.16166,-2.58659 1.778273,-2.42492 1.131629,2.42492 1.45495,1.45495 2.748241,0.64665 z m -2.58658,33.46387 3.718209,0.80831 3.718207,0.96996 0.808307,0.96998 -1.616612,3.7182 -3.071564,-0.16166 -3.394885,-3.55654 -0.161662,-2.74825 z m -20.692636,-14.06452 1.13163,2.58657 1.131628,1.61662 -1.131628,0.8083 -2.101597,-3.07156 0,-1.93993 0.969967,0 z m -13.7412027,73.07087 3.3948853,-2.26326 3.3948854,-0.96997 2.58658,0.32332 0.484983,1.61661 1.939935,0.48499 1.939934,-1.93993 -0.323322,-1.61661 2.748241,-0.64665 2.909902,2.58658 -1.131629,1.77827 -4.364852,1.13163 -2.748242,-0.48498 -3.718207,-1.13163 -4.3648533,1.45495 -1.616612,0.32332 -1.1316284,-0.64664 z m 48.9833487,-4.52651 1.616612,1.93993 2.101593,-1.61661 -1.454948,-1.2933 -2.263257,0.96998 z m 2.909902,3.07155 1.131624,-2.26325 2.101597,0.32332 -0.808303,1.93993 -2.424918,0 z m 23.602535,-1.93993 1.454954,1.77827 0.969974,-1.13162 -0.808313,-1.93994 -1.616615,1.29329 z m 8.72971,-12.44791 1.131633,5.8198 2.909899,0.80831 5.011495,-2.90991 4.364853,-2.58658 -1.6166,-2.42491 0.48498,-2.42492 -2.1016,1.29329 -2.909898,-0.80831 1.616605,-1.13162 1.939933,0.8083 3.87987,-1.77828 0.48499,-1.45494 -2.42492,-0.80831 0.8083,-1.93994 -2.74824,1.93994 -4.688172,3.55655 -4.849834,2.9099 -1.293294,1.13163 z m 42.35524,-19.88433 2.42492,-1.45495 -0.96997,-1.77828 -1.77827,0.96997 0.32332,2.26326 z", - "FL" : "m 759.8167,439.1428 2.26566,7.3186 3.7297,9.74226 5.33479,9.3763 3.71819,6.30476 4.84982,5.49646 4.04151,3.71819 1.6166,2.90989 -1.13162,1.29328 -0.8083,1.29328 2.90988,7.43639 2.90989,2.90988 2.58657,5.3348 3.55653,5.81978 4.52649,8.24468 1.29329,7.59804 0.48498,11.96288 0.64664,1.77826 -0.32332,3.39487 -2.42491,1.29329 0.32332,1.93992 -0.64664,1.93993 0.32332,2.4249 0.48498,1.93993 -2.74822,3.23321 -3.07155,1.45494 -3.87985,0.16166 -1.45495,1.61661 -2.4249,0.96996 -1.29329,-0.48498 -1.13162,-0.96996 -0.32332,-2.90989 -0.80831,-3.39487 -3.39487,-5.17314 -3.55653,-2.26324 -3.87985,-0.32332 -0.8083,1.29328 -3.07155,-4.36483 -0.64664,-3.55653 -2.58657,-4.04151 -1.77826,-1.13163 -1.61661,2.10159 -1.77826,-0.32332 -2.10159,-5.01148 -2.90989,-3.87985 -2.90989,-5.33479 -2.58656,-3.07155 -3.55653,-3.71819 2.10158,-2.42491 3.23321,-5.49646 -0.16166,-1.6166 -4.52649,-0.96996 -1.61661,0.64664 0.32333,0.64664 2.58656,0.96996 -1.45494,4.5265 -0.8083,0.48498 -1.77827,-4.04151 -1.29328,-4.84982 -0.32332,-2.74823 1.45494,-4.68815 0,-9.53797 -3.07155,-3.71819 -1.29328,-3.07155 -5.17314,-1.29328 -1.93992,-0.64664 -1.61661,-2.58657 -3.39487,-1.61661 -1.13162,-3.39487 -2.74823,-0.96996 -2.42491,-3.71819 -4.20317,-1.45494 -2.90989,-1.45495 -2.58656,0 -4.04152,0.80831 -0.16166,1.93992 0.80831,0.96996 -0.48499,1.13163 -3.07154,-0.16166 -3.71819,3.55653 -3.55654,1.93992 -3.87985,0 -3.23321,1.29329 -0.32332,-2.74823 -1.6166,-1.93993 -2.90989,-1.13162 -1.6166,-1.45495 -8.08303,-3.87985 -7.59804,-1.77826 -4.36483,0.64664 -5.98144,0.48498 -5.98144,2.10159 -3.47924,0.61296 -0.23792,-8.04975 -2.58657,-1.93992 -1.77827,-1.77827 0.32332,-3.07156 10.18462,-1.29328 25.5424,-2.90989 6.78975,-0.64664 5.436,0.28027 2.58657,3.87986 1.45494,1.45494 8.09816,0.51522 10.81975,-0.64664 21.51239,-1.29329 5.44572,-0.67437 5.10758,0.20451 0.42683,2.90989 2.233,0.8083 0.23494,-4.63 -1.52822,-4.17295 1.3084,-1.43983 5.55463,0.45475 5.17314,0.32332 z m 12.54541,132.40508 2.42492,-0.64664 1.29328,-0.24249 1.45496,-2.34409 2.34408,-1.61661 1.29329,0.48499 1.69744,0.32332 0.40415,1.05079 -3.4757,1.21246 -4.2032,1.45495 -2.34408,1.21246 -0.88914,-0.88914 z m 13.4987,-5.01149 1.21246,1.0508 2.74824,-2.10159 5.33481,-4.20319 3.7182,-3.87987 2.50575,-6.6281 0.96997,-1.69744 0.16166,-3.39488 -0.72748,0.48498 -0.96996,2.82907 -1.45496,4.60733 -3.23322,5.254 -4.36484,4.20318 -3.39488,1.93993 -2.50575,1.53578 z", - "NH" : "m 880.79902,142.42476 0.869,-1.0765 1.09022,-3.29102 -2.54308,-0.91347 -0.48499,-3.07156 -3.87985,-1.13162 -0.32332,-2.74824 -7.27475,-23.44082 -4.60142,-14.542988 -0.89708,-0.0051 -0.64664,1.616605 -0.64664,-0.484981 -0.96997,-0.969963 -1.45494,1.939925 -0.0485,5.032054 0.31165,5.667218 1.93992,2.74824 0,4.04152 -3.7182,5.06278 -2.58657,1.13164 0,1.13162 1.13163,1.77827 0,8.56802 -0.80831,9.21467 -0.16166,4.84982 0.96997,1.2933 -0.16166,4.52649 -0.48499,1.77828 0.96881,0.70922 16.78767,-4.42455 2.17487,-0.60245 1.84357,-2.77333 3.60523,-1.61312 z", - "MI" : "M581.61931,82.059006 L 583.4483,80.001402 L 585.62022,79.201221 L 590.99286,75.314624 L 593.27908,74.743065 L 593.73634,75.200319 L 588.59232,80.344339 L 585.27728,82.287628 L 583.21967,83.202124 L 581.61931,82.059006 z M 667.79369,114.18719 L 668.44033,116.69293 L 671.67355,116.85459 L 672.96684,115.64213 C 672.96684,115.64213 672.88601,114.18719 672.56269,114.02552 C 672.23936,113.86386 670.94608,112.16642 670.94608,112.16642 L 668.76366,112.40891 L 667.14704,112.57057 L 666.82372,113.7022 L 667.79369,114.18719 z M 567.49209,111.21318 L 568.20837,110.63278 L 570.9566,109.82447 L 574.51313,107.56123 L 574.51313,106.59126 L 575.15978,105.94462 L 581.14121,104.97466 L 583.56612,103.03473 L 587.93095,100.93315 L 588.09261,99.639864 L 590.03254,96.729975 L 591.8108,95.921673 L 593.10409,94.143408 L 595.36733,91.880161 L 599.73217,89.455254 L 604.42032,88.970273 L 605.55194,90.101896 L 605.22862,91.071859 L 601.51043,92.041822 L 600.05549,95.113371 L 597.79224,95.921673 L 597.30726,98.34658 L 594.88235,101.57979 L 594.55903,104.16636 L 595.36733,104.65134 L 596.3373,103.51972 L 599.89383,100.60983 L 601.18711,101.90311 L 603.45036,101.90311 L 606.68357,102.87307 L 608.13851,104.0047 L 609.59345,107.07625 L 612.34168,109.82447 L 616.22153,109.66281 L 617.67648,108.69285 L 619.29308,109.98613 L 620.90969,110.47112 L 622.20297,109.66281 L 623.33459,109.66281 L 624.9512,108.69285 L 628.99271,105.13632 L 632.38758,104.0047 L 639.01566,103.68138 L 643.54215,101.74145 L 646.12872,100.44817 L 647.58367,100.60983 L 647.58367,106.26794 L 648.06865,106.59126 L 650.97853,107.39957 L 652.91846,106.91458 L 659.06156,105.29798 L 660.19318,104.16636 L 661.64813,104.65134 L 661.64813,111.60274 L 664.88134,114.67429 L 666.17462,115.32093 L 667.4679,116.29089 L 666.17462,116.61421 L 665.36632,116.29089 L 661.64813,115.80591 L 659.54654,116.45255 L 657.28329,116.29089 L 654.05008,117.74584 L 652.27182,117.74584 L 646.45204,116.45255 L 641.27891,116.61421 L 639.33898,119.20078 L 632.38758,119.84742 L 629.96267,120.65572 L 628.83105,123.72727 L 627.53777,124.8589 L 627.05279,124.69724 L 625.59784,123.08063 L 621.07135,125.50554 L 620.42471,125.50554 L 619.29308,123.88893 L 618.48478,124.05059 L 616.54486,128.41543 L 615.57489,132.45694 L 612.39377,139.45774 L 611.21701,138.42347 L 609.84527,137.39215 L 607.90449,127.10413 L 604.36001,125.73408 L 602.30743,123.44785 L 590.18707,120.70437 L 587.3318,119.67473 L 579.10138,117.50199 L 571.21139,116.35887 L 567.49209,111.21318 z,M697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5 C 674.5,166.5 671.9,165.1 672.1,164.4 C 672.3,163.8 672.6,159.4 672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2z", - "VT" : "m 844.48416,154.05791 0.3167,-5.34563 -2.89071,-10.78417 -0.64664,-0.32332 -2.9099,-1.29329 0.8083,-2.90989 -0.8083,-2.10159 -2.70005,-4.63998 0.96997,-3.87986 -0.80831,-5.17315 -2.42491,-6.46644 -0.80557,-4.92251 26.41936,-6.73182 0.3087,5.52221 1.91626,2.74223 0,4.04152 -3.70715,5.05799 -2.58657,1.14267 -0.011,1.12057 1.30997,1.51912 -0.31093,8.09797 -0.60943,9.25886 -0.22795,5.55694 0.96996,1.29329 -0.16166,4.57069 -0.48498,1.68989 1.01418,0.72716 -7.43755,1.50671 -4.50174,0.72383 z", - "ME" : "m 922.83976,78.830719 1.93993,2.101586 2.26325,3.718191 0,1.939926 -2.10159,4.688153 -1.93993,0.646642 -3.39487,3.071549 -4.84981,5.496454 c 0,0 -0.64664,0 -1.29328,0 -0.64664,0 -0.96997,-2.101584 -0.96997,-2.101584 l -1.77826,0.16166 -0.96996,1.454944 -2.42491,1.45495 -0.96996,1.45494 1.6166,1.45494 -0.48498,0.64665 -0.48498,2.74822 -1.93993,-0.16166 0,-1.6166 -0.32332,-1.29329 -1.45494,0.32333 -1.77827,-3.23321 -2.10158,1.29328 1.29328,1.45494 0.32332,1.13163 -0.8083,1.29328 0.32332,3.07155 0.16166,1.6166 -1.6166,2.58657 -2.90989,0.48498 -0.32332,2.90989 -5.3348,3.07155 -1.29328,0.48498 -1.61661,-1.45494 -3.07155,3.55653 0.96997,3.23321 -1.45495,1.29328 -0.16166,4.36483 -1.12328,6.25936 -2.46225,-1.15595 -0.48499,-3.07156 -3.87985,-1.13163 -0.32332,-2.74824 -7.27475,-23.44082 -4.69858,-14.639742 1.42054,-0.118165 1.51379,0.409899 0,-2.586568 1.3083,-4.496456 2.58657,-4.688153 1.45495,-4.041512 -1.93993,-2.424907 0,-5.981437 0.8083,-0.969963 0.80831,-2.748228 -0.16166,-1.454944 -0.16167,-4.849814 1.77827,-4.849814 2.90989,-8.891326 2.10158,-4.203172 1.29329,0 1.29328,0.16166 0,1.131623 1.29329,2.263247 2.74822,0.646642 0.80831,-0.808303 0,-0.969962 4.04151,-2.909889 1.77826,-1.778265 1.45495,0.161661 5.98143,2.424907 1.93993,0.969962 9.05299,29.907187 5.98143,0 0.80831,1.939926 0.16166,4.849814 2.90988,2.263246 0.80831,0 0.16166,-0.484981 -0.48498,-1.131623 2.74822,-0.161661 z m -20.93175,30.147531 1.53578,-1.53578 1.37412,1.0508 0.56581,2.42492 -1.69744,0.88913 -1.77827,-2.82907 z m 6.70893,-5.90062 1.77827,1.8591 c 0,0 1.29329,0.0808 1.29329,-0.2425 0,-0.32332 0.24249,-2.02076 0.24249,-2.02076 l 0.88914,-0.8083 -0.80831,-1.77828 -2.02076,0.72748 -1.37412,2.26326 z", - "RI" : "m 874.07001,178.89536 -3.69579,-14.95599 6.26928,-1.84514 2.19113,1.92712 3.30649,4.32065 2.6879,4.40209 -2.99934,1.62479 -1.29328,-0.16166 -1.13162,1.77827 -2.42491,1.93992 -2.90986,0.96995 z", - "NY" : "m 830.37944,188.7456 -1.13163,-0.96996 -2.58658,-0.16166 -2.26324,-1.93992 -1.63061,-6.12913 -3.45846,0.0905 -2.44371,-2.7082 -19.38532,4.38194 -43.00178,8.72969 -7.52965,1.22799 -0.73816,-6.46834 1.4281,-1.12538 1.29328,-1.13162 0.96997,-1.61661 1.77826,-1.13162 1.93993,-1.77827 0.48498,-1.6166 2.10158,-2.74823 1.13163,-0.96996 -0.16166,-0.96997 -1.29329,-3.07154 -1.77826,-0.16166 -1.93993,-6.1431 2.90989,-1.77827 4.36483,-1.45494 4.04152,-1.29329 3.23321,-0.48498 6.30475,-0.16166 1.93993,1.29329 1.6166,0.16166 2.10159,-1.29329 2.58657,-1.13162 5.17313,-0.48498 2.10159,-1.77827 1.77826,-3.23321 1.61661,-1.93992 2.10158,0 1.93993,-1.13163 0.16166,-2.26324 -1.45494,-2.10159 -0.32332,-1.45494 1.13162,-2.10159 0,-1.45494 -1.77827,0 -1.77826,-0.8083 -0.8083,-1.13163 -0.16166,-2.58657 5.81977,-5.49645 0.64664,-0.8083 1.45495,-2.90989 2.90989,-4.5265 2.74823,-3.71819 2.10158,-2.4249 2.4151,-1.82561 3.08136,-1.24594 5.49645,-1.29329 3.23321,0.16166 4.5265,-1.45494 7.56519,-2.07117 0.51979,4.97967 2.42492,6.46644 0.8083,5.17315 -0.96996,3.87986 2.58657,4.5265 0.8083,2.10159 -0.8083,2.9099 2.9099,1.29328 0.64664,0.32332 3.07156,10.99294 -0.53629,5.05967 -0.48498,10.83127 0.8083,5.49647 0.8083,3.55654 1.45495,7.27474 0,8.08304 -1.13163,2.26325 1.83933,1.99279 0.79655,1.67842 -1.93992,1.77827 0.32332,1.29328 1.29328,-0.32332 1.45495,-1.29328 2.26324,-2.58657 1.13163,-0.64664 1.6166,0.64664 2.26325,0.16166 7.92136,-3.87985 2.90989,-2.74823 1.29328,-1.45494 4.20317,1.6166 -3.39487,3.55653 -3.87985,2.90989 -7.11306,5.33479 -2.58656,0.96997 -5.81978,1.93992 -4.04151,1.13163 -1.17474,-0.53293 -0.24402,-3.68853 0.48498,-2.74824 -0.16166,-2.10158 -2.81351,-1.699 -4.5265,-0.96997 -3.87986,-1.13162 -3.7182,-1.77828 z", - "PA" : "m 825.1237,224.69205 1.30842,-0.271 2.32953,-1.25325 1.21188,-2.48307 1.61661,-2.26325 3.23321,-3.07156 0,-0.8083 -2.42491,-1.6166 -3.55654,-2.42492 -0.96996,-2.58657 -2.74824,-0.32332 -0.16166,-1.13163 -0.8083,-2.74823 2.26326,-1.13162 0.16166,-2.42492 -1.2933,-1.29329 0.16166,-1.61661 1.93994,-3.07155 0,-3.07156 2.69763,-2.64588 -0.92028,-0.67498 -2.52408,-0.19291 -2.29449,-1.93992 -1.54992,-6.11606 -3.50458,0.10052 -2.45523,-2.70333 -18.09099,4.19777 -43.00178,8.72969 -8.89135,1.45494 -0.62067,-6.52139 -5.36253,5.06765 -1.29329,0.48498 -4.20229,3.00889 2.91076,19.13745 2.48166,9.72936 3.5718,19.26149 3.26931,-0.63768 11.94358,-1.50247 37.92663,-7.6652 14.87621,-2.82332 8.30035,-1.62236 0.26711,-0.23853 2.1016,-1.61662 2.10158,-0.68084 z", - "NJ" : "m 829.67942,188.46016 -2.32255,2.73427 0,3.07156 -1.93994,3.07155 -0.16166,1.61662 1.2933,1.29328 -0.16166,2.42492 -2.26326,1.13162 0.8083,2.74823 0.16166,1.13163 2.74824,0.32332 0.96996,2.58657 3.55654,2.42492 2.42491,1.6166 0,0.80831 -2.98321,2.69656 -1.61661,2.26324 -1.45495,2.74824 -2.26325,1.29328 -0.46245,1.60248 -0.2425,1.21246 -0.60923,2.60674 1.09227,2.24419 3.23321,2.90989 4.84981,2.26325 4.04151,0.64664 0.16166,1.45494 -0.8083,0.96996 0.32332,2.74823 0.8083,0 2.10159,-2.4249 0.8083,-4.84982 2.74823,-4.04151 3.07155,-6.46642 1.13162,-5.49645 -0.64664,-1.13163 -0.16166,-9.37631 -1.61661,-3.39486 -1.13162,0.8083 -2.74823,0.32332 -0.48498,-0.48498 1.13163,-0.96997 2.10158,-1.93992 0.0631,-1.09383 -0.38439,-3.43384 0.57337,-2.74824 -0.11747,-1.96901 -2.80754,-1.75035 -5.09214,-1.17576 -4.13744,-1.38163 -3.58563,-1.64569 z", - "DE" : "m 825.6261,228.2791 0.36831,-2.14689 0.37507,-1.69105 -1.623,0.39776 -1.61546,0.46756 -2.20626,1.7643 1.72012,5.04288 2.26326,5.65812 2.10158,9.69965 1.61662,6.30478 5.01148,-0.16166 6.14212,-1.18068 -2.26423,-7.38627 -0.96997,0.48498 -3.55653,-2.4249 -1.77826,-4.68816 -1.93993,-3.55653 -3.14712,-2.87031 -0.86416,-2.09812 0.36636,-1.61546 z", - "MD" : "m 839.79175,252.41476 -6.00855,1.20384 -5.1429,0.11746 -1.84356,-6.92233 -1.92481,-9.16932 -2.57262,-6.18845 -1.28838,-4.39833 -7.50602,1.62236 -14.87621,2.82332 -37.45143,7.5509 1.1313,5.01166 0.96996,5.65811 0.32332,-0.32332 2.1016,-2.4249 2.26324,-2.61766 2.42491,-0.61556 1.45496,-1.45495 1.77826,-2.58657 1.29328,0.64665 2.90989,-0.32333 2.58658,-2.10158 2.00689,-1.45327 1.84523,-0.48498 1.64435,1.12995 2.90989,1.45494 1.93992,1.77827 1.21246,1.53578 4.12235,1.69743 0,2.90989 5.49646,1.29329 1.14444,0.54198 1.4119,-2.02832 2.88197,1.97016 -1.27817,2.48193 -0.76527,3.98566 -1.77826,2.58657 0,2.10159 0.64664,1.77827 5.06395,1.35569 4.3111,-0.0617 3.07154,0.96997 2.10159,0.32332 0.96996,-2.10159 -1.45494,-2.10158 0,-1.77827 -2.42491,-2.10159 -2.10158,-5.49645 1.29328,-5.3348 -0.16166,-2.10158 -1.29328,-1.29329 c 0,0 1.45494,-1.6166 1.45494,-2.26324 0,-0.64665 0.48498,-2.10159 0.48498,-2.10159 l 1.93993,-1.29328 1.93992,-1.61661 0.48498,0.96997 -1.45494,1.6166 -1.29328,3.71819 0.32332,1.13162 1.77826,0.32332 0.48498,5.49646 -2.10158,0.96996 0.32332,3.55653 0.48498,-0.16166 1.13162,-1.93992 1.61661,1.77826 -1.61661,1.29329 -0.32332,3.39487 2.58657,3.39487 3.87985,0.48498 1.61661,-0.8083 3.23655,4.18293 1.35835,0.5363 6.65367,-2.79695 2.00758,-4.02387 -0.43596,-4.90798 z m -15.96958,9.02872 1.13162,2.50575 0.16166,1.77827 1.13163,1.8591 c 0,0 0.88914,-0.88914 0.88914,-1.21246 0,-0.32332 -0.72747,-3.07156 -0.72747,-3.07156 l -0.72748,-2.34409 -1.8591,0.48499 z", - "VA" : "m 831.63885,266.06892 -0.14391,-1.94703 6.45343,-2.54988 -0.77041,3.21784 -2.91995,3.77911 -0.41809,4.58582 0.46175,3.39044 -1.82797,4.97816 -2.16427,1.91614 -1.47034,-4.64081 0.44589,-5.44911 1.587,-4.18307 0.76687,-3.09761 z m 3.34019,28.30136 -58.17418,12.57543 -37.42697,5.27907 -6.67833,-0.37518 -2.58525,1.92638 -7.33913,0.22069 -8.38211,0.97767 -10.91496,1.61462 10.46943,-5.6112 -0.0131,-2.07493 1.52005,-2.14613 10.55378,-11.50143 3.94672,4.47746 3.78301,0.96398 2.54346,-1.14032 2.23722,-1.31116 2.53661,1.34352 3.91417,-1.42776 1.87673,-4.55634 2.60092,0.54002 2.85524,-2.13125 1.79927,0.4936 2.82721,-3.67657 0.34825,-2.08311 -0.96366,-1.27557 1.00277,-1.86663 5.27427,-12.27715 0.61677,-5.73508 1.22889,-0.52354 2.17853,2.44287 3.93586,-0.30117 1.92921,-7.57363 2.79399,-0.56086 1.04975,-2.74107 2.57982,-2.34688 2.77183,-5.69519 0.0849,-5.06755 9.82151,3.82282 c 0.68085,0.34042 0.83288,-5.04915 0.83288,-5.04915 l 3.65256,1.59833 0.0683,2.93816 5.78425,1.29949 2.13295,1.1762 1.65992,2.05569 -0.65455,3.64867 -1.94744,2.59098 0.10985,2.05907 0.58896,1.85291 4.97875,1.26843 4.45127,0.0399 3.06883,0.95864 1.94351,0.3093 0.71481,3.08846 3.19044,0.40253 0.86807,1.20002 -0.43949,4.69008 1.37473,1.10255 -0.47895,1.93039 1.22941,0.78977 -0.2218,1.3846 -2.69399,-0.0949 0.089,1.61552 2.28099,1.54287 0.12154,1.4119 1.77311,1.78538 0.49179,2.52413 -2.55304,1.38131 1.57222,1.4943 5.80102,-1.68583 3.60762,6.01193 z", - "WV" : "m 761.18551,238.96731 1.11201,4.94453 1.08344,6.03133 2.13029,-2.58034 2.26324,-3.07156 2.53838,-0.61555 1.45495,-1.45494 1.77827,-2.58657 1.44498,0.64664 2.90989,-0.32332 2.58658,-2.10159 2.00689,-1.45326 1.84523,-0.48499 1.30392,1.01647 3.64325,1.82163 1.93993,1.77827 1.37412,1.29328 -0.76172,5.55494 -5.83491,-2.54122 -4.24525,-1.62202 -0.10114,5.17843 -2.74764,5.53673 -2.53003,2.42666 -1.19209,2.74939 -2.64358,0.5001 -0.89784,3.60188 -1.04323,3.94967 -3.96824,0.34074 -2.32373,-2.43888 -1.07115,0.55941 -0.63268,5.4697 -1.35029,3.5345 -4.9584,10.95497 0.89669,1.1607 -0.20586,1.90854 -2.80869,3.88447 -1.8085,-0.54429 -2.96805,2.15974 -2.54238,-0.57221 -1.99923,4.55557 c 0,0 -3.25931,1.43022 -3.92291,1.36772 -0.16051,-0.0151 -2.4691,-1.2491 -2.4691,-1.2491 l -2.33652,1.37937 -2.4098,1.0444 -3.74469,-0.88912 -1.1214,-1.16828 -2.19222,-3.02336 -3.14259,-1.98812 -1.71157,-3.62324 -4.28488,-3.46819 -0.64665,-2.26325 -2.58657,-1.45495 -0.80831,-1.6166 -0.24249,-5.25398 2.18242,-0.0808 1.93994,-0.8083 0.16166,-2.74823 1.6166,-1.45495 0.16166,-5.01148 0.96996,-3.87986 1.29329,-0.64664 1.29328,1.13162 0.48499,1.77827 1.77827,-0.96997 0.48498,-1.6166 -1.13162,-1.77827 0,-2.42491 0.96996,-1.29329 2.26325,-3.39487 1.29328,-1.45494 2.1016,0.48498 2.26324,-1.61662 3.07155,-3.39487 2.26326,-3.87986 0.32332,-5.65811 0.48498,-5.01149 0,-4.68816 -1.13162,-3.07155 0.96996,-1.45496 1.28348,-1.29328 3.49125,19.82712 4.63101,-0.75115 12.42832,-1.79965 z", - "OH" : "m 735.32497,193.32832 -6.09354,4.05335 -3.87985,2.26325 -3.39487,3.71819 -4.04151,3.87985 -3.23321,0.8083 -2.90989,0.48498 -5.49646,2.58657 -2.10158,0.16166 -3.39487,-3.07155 -5.17314,0.64665 -2.58656,-1.45495 -2.38107,-1.35083 -4.89257,0.70341 -10.18462,1.61661 -11.20687,2.18473 1.29329,14.63028 1.77827,13.74117 2.58656,23.4408 0.56582,4.83117 4.12235,-0.12902 2.42491,-0.80831 3.3638,1.50314 2.07049,4.36483 5.13894,-0.0171 1.89174,2.1187 1.76117,-0.0653 2.53839,-1.34146 2.50417,0.3715 5.42128,0.48268 1.72697,-2.13268 2.34565,-1.29328 2.07049,-0.68085 0.64664,2.74824 1.77828,0.96996 3.47569,2.34407 2.18242,-0.0808 1.33312,-0.49248 0.18471,-2.76153 1.58536,-1.45496 0.0992,-4.79272 c 0,0 1.02396,-4.10906 1.02396,-4.10906 l 1.29927,-0.60128 1.32135,1.14774 0.53815,1.69702 1.71913,-1.03742 0.43898,-1.46075 -1.11669,-1.90306 0.0663,-2.31443 0.749,-1.07231 2.15276,-3.30648 1.05022,-1.54334 2.10159,0.48498 2.26325,-1.61661 3.07155,-3.39487 2.77149,-4.07873 0.32033,-5.05551 0.48498,-5.01149 -0.17678,-5.30688 -0.95484,-2.89478 0.35124,-1.18978 1.80439,-1.75011 -2.28879,-9.04733 -2.90989,-19.36177 z", - "IN" : "m 619.56954,299.97132 0.0653,-2.85858 0.48499,-4.52651 2.26324,-2.90988 1.77828,-3.87987 2.58656,-4.20317 -0.48498,-5.81979 -1.77826,-2.74823 -0.32332,-3.23321 0.8083,-5.49647 -0.48498,-6.95141 -1.2933,-16.00441 -1.29328,-15.35776 -0.97047,-11.72002 3.07106,0.88951 1.45495,0.96996 1.13162,-0.32332 2.10159,-1.93992 2.82957,-1.61699 5.0928,-0.16204 21.98587,-2.26326 5.57573,-0.53316 1.50314,15.95621 4.25135,36.84155 0.59846,5.7716 -0.3715,2.26325 1.22798,1.79537 0.0964,1.37255 -2.52129,1.59951 -3.53943,1.55131 -3.20213,0.55028 -0.59846,4.86693 -4.57469,3.31247 -2.79642,4.01044 0.32332,2.37673 -0.58134,1.5342 -3.32647,0 -1.58553,-1.6166 -2.49331,1.2622 -2.68296,1.50314 0.16167,3.05445 -1.19379,0.25803 -0.46788,-1.01814 -2.16688,-1.50314 -3.25032,1.34148 -1.55131,3.00625 -1.43784,-0.8083 -1.45495,-1.59951 -4.46434,0.48499 -5.59283,0.96996 -2.90989,1.55132 z", - "IL" : "m 619.54145,300.34244 0.0312,-3.22971 0.56739,-4.64596 2.33253,-2.91586 1.86665,-4.07576 2.23302,-3.99533 -0.3715,-5.2524 -2.00521,-3.54257 -0.0964,-3.34668 0.69483,-5.26951 -0.82541,-7.17837 -1.06634,-15.77745 -1.29328,-15.01734 -0.92228,-11.6392 -0.27251,-0.92139 -0.8083,-2.58657 -1.29328,-3.71819 -1.61661,-1.77827 -1.45494,-2.58656 -0.23357,-5.48896 -45.79643,2.59825 0.22862,2.37195 2.28623,0.68587 0.91448,1.14311 0.45725,1.82898 3.88658,3.42934 0.68588,2.28623 -0.68588,3.42934 -1.82898,3.65796 -0.68586,2.51484 -2.28623,1.82899 -1.82898,0.68587 -5.25832,1.37173 -0.68587,1.82898 -0.68587,2.05761 0.68587,1.37174 1.82898,1.60036 -0.22862,4.1152 -1.82899,1.60036 -0.68586,1.60036 0,2.74347 -1.82898,0.45724 -1.60036,1.14312 -0.22862,1.37174 0.22862,2.0576 -1.71467,1.31457 -1.0288,2.80064 0.45724,3.65795 2.28623,7.31593 7.31593,7.54455 5.48693,3.65796 -0.22862,4.34383 0.9145,1.37174 6.40143,0.45724 2.74347,1.37174 -0.68586,3.65796 -2.28623,5.94419 -0.68587,3.20072 2.28622,3.88658 6.40144,5.25832 4.57246,0.68587 2.05759,5.0297 2.05761,3.20071 -0.91449,2.97209 1.60036,4.11521 1.82898,2.05761 1.41403,-0.88069 0.90766,-2.07479 2.21308,-1.7472 2.13147,-0.6144 2.60253,1.1798 3.62699,1.3757 1.18895,-0.29823 0.19987,-2.25845 -1.2873,-2.41179 0.30422,-2.37672 1.8384,-1.34745 3.02254,-0.81029 1.2609,-0.45852 -0.61261,-1.38688 -0.79137,-2.35437 1.4326,-0.98096 1.15747,-3.21403 z", - "CT" : "m 874.06831,178.86288 -3.67743,-14.87881 -4.71882,0.92031 -21.22878,4.74309 1.00019,3.22567 1.45495,7.27474 0.17678,8.96692 -1.22002,2.17487 1.92079,1.93234 4.27153,-3.90564 3.55653,-3.23321 1.93992,-2.10159 0.80831,0.64664 2.74822,-1.45494 5.17314,-1.13162 7.79469,-3.17877 z", - "WI" : "m 615.06589,197.36866 -0.0667,-3.15742 -1.17911,-4.5265 -0.64664,-6.14309 -1.13162,-2.42491 0.96996,-3.07155 0.8083,-2.90989 1.45495,-2.58656 -0.64665,-3.39487 -0.64664,-3.55653 0.48498,-1.77827 1.93993,-2.42491 0.16166,-2.74823 -0.8083,-1.29328 0.64664,-2.58657 -0.45252,-4.17071 2.74823,-5.65811 2.90989,-6.78974 0.16166,-2.26325 -0.32332,-0.96996 -0.80831,0.48498 -4.20317,6.30476 -2.74823,4.04151 -1.93992,1.77827 -0.8083,2.26324 -1.95495,0.8083 -1.13162,1.93993 -1.45495,-0.32332 -0.16166,-1.77827 1.29329,-2.4249 2.10158,-4.68816 1.77827,-1.6166 0.99083,-2.35785 -2.56045,-1.90134 -1.97482,-10.36699 -3.54747,-1.34198 -1.94626,-2.30833 -12.12971,-2.72164 -2.87589,-1.01205 -8.21312,-2.16729 -7.91792,-1.15875 -3.76516,-5.13067 -0.7504,0.55401 -1.19791,-0.16166 -0.64665,-1.13162 -1.33401,0.29655 -1.13163,0.16166 -1.77826,0.96996 -0.96997,-0.64664 0.64665,-1.93993 1.93992,-3.07155 1.13162,-1.13162 -1.93992,-1.45494 -2.10159,0.8083 -2.90989,1.93992 -7.43638,3.23321 -2.90989,0.64664 -2.90988,-0.48498 -0.98173,-0.87825 -2.1167,2.83518 -0.22862,2.74347 0,8.45903 -1.14312,1.60037 -5.25832,3.88657 -2.28622,5.94419 0.45724,0.22862 2.51485,2.05761 0.68586,3.20072 -1.82898,3.20071 0,3.88659 0.45725,6.63005 2.97209,2.9721 3.42935,0 1.82898,3.20072 3.42933,0.45724 3.88659,5.71557 7.0873,4.11521 2.0576,2.74347 0.9145,7.43024 0.68586,3.31502 2.28623,1.60036 0.22862,1.37174 -2.0576,3.42933 0.22862,3.20073 2.51485,3.88658 2.51485,1.14311 2.97209,0.45724 1.34234,1.38012 45.29836,-2.66945 z", - "NC" : "m 834.98153,294.31554 2.085,4.91735 3.55653,6.46642 2.4249,2.42491 0.64664,2.26325 -2.4249,0.16166 0.8083,0.64664 -0.32332,4.20317 -2.58657,1.29328 -0.64664,2.10159 -1.29328,2.90989 -3.7182,1.6166 -2.4249,-0.32332 -1.45495,-0.16166 -1.6166,-1.29328 0.32332,1.29328 0,0.96997 1.93993,0 0.8083,1.29328 -1.93993,6.30476 4.20317,0 0.64665,1.6166 2.26324,-2.26324 1.29329,-0.48499 -1.93993,3.55653 -3.07155,4.84982 -1.29328,0 -1.13163,-0.48498 -2.74822,0.64664 -5.17314,2.42491 -6.46642,5.33479 -3.39487,4.68815 -1.93992,6.46642 -0.48498,2.42491 -4.68816,0.48498 -5.45313,1.33666 -9.94641,-8.20253 -12.60954,-7.59805 -2.90989,-0.80831 -12.60953,1.45495 -4.27646,0.75015 -1.6166,-3.23322 -2.97036,-2.1167 -16.48939,0.48498 -7.27474,0.8083 -9.05299,4.52651 -6.14311,2.58656 -21.17755,2.58658 0.50009,-4.05433 1.77827,-1.45494 2.74824,-0.64665 0.64664,-3.7182 4.20318,-2.74822 3.87985,-1.45496 4.20319,-3.55653 4.36483,-2.10159 0.64664,-3.07156 3.87986,-3.87985 0.64664,-0.16166 c 0,0 0,1.13163 0.80831,1.13163 0.8083,0 1.93993,0.32332 1.93993,0.32332 l 2.26325,-3.55654 2.10159,-0.64665 2.26324,0.32333 1.61662,-3.55653 2.90989,-2.58658 0.48498,-2.10159 0.1875,-3.64819 4.2765,-0.0225 7.19859,-0.85579 15.75723,-2.25243 15.13604,-2.08657 21.64048,-4.71935 19.98332,-4.25857 11.17694,-2.40581 5.04998,-1.15688 z m 4.27046,33.20657 2.58658,-2.50575 3.15238,-2.58658 1.53578,-0.64664 0.16166,-2.02076 -0.64664,-6.14312 -1.45495,-2.34408 -0.64665,-1.8591 0.72748,-0.2425 2.74824,5.49648 0.40415,4.44567 -0.16166,3.39489 -3.39488,1.53577 -2.82907,2.42492 -1.13162,1.21246 -1.0508,-0.16166 z", - "DC" : "m 805.81945,250.84384 -1.85828,-1.82417 -1.23263,-0.68629 1.44301,-2.02247 2.88909,1.9485 -1.24119,2.58443 z", - "MA" : "m 899.62349,173.25394 2.17192,-0.68588 0.45726,-1.71467 1.0288,0.11431 1.0288,2.28624 -1.25742,0.45724 -3.8866,0.11432 0.45724,-0.57156 z m -9.37354,0.80018 2.28622,-2.62917 1.60037,0 1.82899,1.48605 -2.40054,1.0288 -2.17192,1.0288 -1.14312,-0.91448 z m -34.79913,-21.98819 17.64687,-4.64068 2.26326,-0.64664 1.91408,-2.79571 3.73677,-1.66331 2.88924,4.41284 -2.42491,5.17314 -0.32332,1.45494 1.93993,2.58657 1.13162,-0.8083 1.77827,0 2.26324,2.58656 3.87986,5.98144 3.55653,0.48498 2.26324,-0.96996 1.77827,-1.77827 -0.80831,-2.74822 -2.10158,-1.61661 -1.45495,0.8083 -0.96996,-1.29328 0.48498,-0.48498 2.10159,-0.16166 1.77826,0.8083 1.93993,2.42491 0.96996,2.90989 0.32332,2.4249 -4.20317,1.45495 -3.87985,1.93992 -3.87985,4.5265 -1.93993,1.45494 0,-0.96996 2.42491,-1.45495 0.48498,-1.77826 -0.8083,-3.07155 -2.90989,1.45494 -0.8083,1.45495 0.48498,2.26324 -2.06633,1.00043 -2.7472,-4.52713 -3.39488,-4.36484 -2.0705,-1.81247 -6.53327,1.8762 -5.09233,1.05079 -20.67516,4.59221 -0.66776,-4.76785 0.64664,-10.58877 4.28927,-0.88914 6.78975,-1.2933 z", - "TN" : "m 696.67788,318.25411 -51.89309,5.01149 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22097,4.10083 -8.18538,0.26401 -6.95141,0.64664 -8.09083,-0.12386 -1.41378,7.07286 -1.69623,5.48005 -3.29317,2.75084 -1.34874,4.38106 -0.32332,2.58657 -4.04152,2.26324 1.45494,3.55654 -0.96996,4.36484 -0.96838,0.78965 108.15855,-10.40755 0.40327,-3.95494 1.81073,-1.49039 2.83415,-0.74945 0.67193,-3.71698 4.0986,-2.70496 4.04693,-1.49403 4.08358,-3.57033 4.43609,-2.02546 0.52126,-3.06735 4.0646,-3.98499 0.5508,-0.11417 c 0,0 0.0312,1.13162 0.83955,1.13162 0.8083,0 1.93993,0.35457 1.93993,0.35457 l 2.26325,-3.58779 2.07034,-0.64664 2.27511,0.29521 1.59831,-3.53286 2.95525,-2.64391 0.42168,-1.93911 0.30896,-3.71115 -2.14655,-0.19977 -2.60168,2.02833 -6.99331,0.0291 -18.35929,2.38682 -8.06109,1.9082 z", - "AR" : "m 593.82477,343.05296 -3.97988,0.7167 -5.11215,-0.63403 0.4207,-1.60207 2.97975,-2.56669 0.94338,-3.65625 -1.82898,-2.9721 -78.41757,2.51485 1.60036,6.85869 -1e-5,8.23042 1.37175,10.97399 0.22862,37.83693 2.28623,1.94329 2.97209,-1.37173 2.74348,1.14311 0.68034,6.5733 55.62126,-1.1406 1.14563,-2.09037 -0.28662,-3.54951 -1.82563,-2.9721 1.59869,-1.48521 -1.59869,-2.5115 0.6842,-2.50983 1.36839,-5.60543 2.51819,-2.06263 -0.68587,-2.28456 3.65797,-5.37179 2.74347,-1.36839 -0.11348,-1.49358 -0.34544,-1.82564 2.85695,-5.59873 2.40304,-1.25659 0.38413,-3.42763 1.77067,-1.2417 -3.14352,-0.48427 -1.34146,-4.01044 2.80408,-2.37671 0.55026,-2.0192 1.27948,-4.04661 1.06619,-3.25539 z", - "MO" : "m 558.44022,248.11316 -2.51987,-3.08725 -1.14312,-2.28623 -64.35723,2.40054 -2.28626,0.11431 1.25743,2.51485 -0.22862,2.28622 2.51484,3.88659 3.0864,4.11521 3.08641,2.74347 2.16123,0.22862 1.49673,0.9145 0,2.97209 -1.82897,1.60036 -0.45726,2.28622 2.05761,3.42935 2.51486,2.97209 2.51484,1.82898 1.37173,11.65975 0.31414,36.07221 0.22862,4.68675 0.45724,5.38351 22.43299,-0.86682 23.20603,-0.68587 20.80466,-0.80101 11.65474,-0.2303 2.1694,3.426 -0.68419,3.3075 -3.08725,2.40304 -0.57239,1.83734 5.37849,0.45726 3.89496,-0.68588 1.71718,-5.49363 0.65142,-5.85679 2.09803,-2.55516 2.59603,-1.48689 0.0514,-3.05024 1.01602,-1.93648 -1.69423,-2.54377 -1.33093,0.98426 -1.99262,-2.22724 -1.28503,-4.759 0.80101,-2.5182 -1.94413,-3.42766 -1.83064,-4.5758 -4.79941,-0.79934 -6.9688,-5.59875 -1.71886,-4.11353 0.79935,-3.20072 2.05927,-6.05767 0.45892,-2.86363 -1.94914,-1.03131 -6.85534,-0.79767 -1.02797,-1.71216 -0.1118,-4.23036 -5.48694,-3.43101 -6.97551,-7.7715 -2.28622,-7.31593 -0.23029,-4.22532 0.80101,-2.2879 z", - "GA" : "m 672.29229,355.5518 0,2.18242 0.16166,2.1016 0.64664,3.39487 3.39488,7.92137 2.42491,9.86131 1.45494,6.14311 1.61661,4.84981 1.45495,6.95141 2.10159,6.30477 2.58657,3.39488 0.48498,3.39487 1.93993,0.8083 0.16166,2.1016 -1.77827,4.84981 -0.48498,3.23322 -0.16166,1.93993 1.61661,4.36484 0.32332,5.3348 -0.80831,2.42491 0.64665,0.80831 1.45495,0.8083 0.2047,3.21809 2.23301,3.34953 2.25044,2.16205 7.92138,0.16166 10.81975,-0.64664 21.51239,-1.29328 5.44572,-0.67437 4.57725,0.0277 0.16166,2.90989 2.58657,0.8083 0.32332,-4.36484 -1.61661,-4.5265 1.13163,-1.6166 5.81978,0.8083 4.97741,0.31778 -0.77542,-6.29879 2.26324,-10.02295 1.45495,-4.20318 -0.48499,-2.58656 3.33441,-6.2443 -0.5103,-1.35168 -1.91341,0.70458 -2.58656,-1.2933 -0.64665,-2.10159 -1.29328,-3.55653 -2.26326,-2.10159 -2.58656,-0.64664 -1.61661,-4.84982 -2.92501,-6.335 -4.20317,-1.93993 -2.1016,-1.93993 -1.29329,-2.58657 -2.10158,-1.93993 -2.26325,-1.29329 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.42491,-2.90989 -0.48498,-1.45495 -3.39488,-4.97048 -3.51987,0.0992 -3.75491,-2.35614 -1.41828,-1.29328 -0.32332,-1.77827 0.8708,-1.93992 2.22664,-1.11014 -0.63394,-2.09722 -41.86975,4.98893 z", - "SC" : "m 764.94328,408.16488 -1.77706,0.9695 -2.58657,-1.29329 -0.64664,-2.10159 -1.29328,-3.55653 -2.26326,-2.1016 -2.58657,-0.64664 -1.6166,-4.84981 -2.74824,-5.98145 -4.20317,-1.93994 -2.1016,-1.93992 -1.29328,-2.58657 -2.10159,-1.93994 -2.26325,-1.29328 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.4249,-2.90989 -0.48499,-1.45496 -3.39488,-5.17313 -3.39487,0.16166 -4.04152,-2.42492 -1.29328,-1.29328 -0.32332,-1.77827 0.8083,-1.93992 2.26325,-0.96998 -0.51082,-2.28908 5.7681,-2.33657 9.1155,-4.589 7.77473,-0.80831 16.1144,-0.42248 2.63825,1.87743 1.6791,3.35822 4.30235,-0.60998 12.60953,-1.45496 2.90989,0.80831 12.60954,7.59806 10.10808,8.12168 -5.42117,5.45834 -2.58657,6.1431 -0.48498,6.30476 -1.6166,0.8083 -1.13163,2.74823 -2.4249,0.64664 -2.10159,3.55653 -2.74823,2.74823 -2.26324,3.39487 -1.61661,0.8083 -3.55653,3.39487 -2.90989,0.16166 0.96997,3.23321 -5.01148,5.49646 -2.10159,1.29328 z", - "KY" : "m 725.9944,295.2707 -2.29332,2.40168 -3.57819,3.99404 -4.92455,5.46467 -1.21577,1.71577 -0.0625,2.10158 -4.37986,2.16409 -5.65812,3.39488 -7.23187,1.79885 -51.86789,4.89886 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22695,4.22028 -8.17941,0.14456 -6.95141,0.64664 -7.98748,-0.0602 1.20778,-1.32008 2.49954,-1.54085 0.22863,-3.20073 0.91449,-1.82898 -1.60682,-2.5389 0.80183,-1.90681 2.26326,-1.77826 2.10158,-0.64665 2.74823,1.29329 3.55654,1.29328 1.13163,-0.32332 0.16166,-2.26325 -1.29329,-2.42491 0.32332,-2.26325 1.93993,-1.45494 2.58658,-0.64665 1.6166,-0.64664 -0.8083,-1.77827 -0.64664,-1.93993 1.50662,-0.9958 c 0.003,-0.0371 1.25396,-3.52229 1.23829,-3.65781 l 3.05322,-1.47868 5.31979,-0.96996 4.49404,-0.48498 1.39244,1.62743 1.52827,0.8708 1.59077,-3.10821 3.18708,-1.28262 2.20509,1.48403 0.41056,0.99904 1.17352,-0.26401 -0.16167,-2.95293 3.13087,-1.74919 2.14809,-1.07348 1.52936,1.66081 3.31815,-0.0442 0.58733,-1.57125 -0.36751,-2.26324 2.60053,-3.9985 4.77655,-3.4379 0.70595,-4.83586 2.92502,-0.45591 3.79146,-1.64568 2.44332,-1.70824 -0.19833,-1.56493 -1.14245,-1.45494 0.56582,-2.99491 4.18485,-0.1175 2.29991,-0.7458 3.34739,1.4291 2.05411,4.36484 5.13229,0.0108 2.05101,2.20819 1.61545,-0.1477 2.60169,-1.27817 5.23706,0.57337 2.57492,0.21751 1.68758,-2.05624 2.61795,-1.42588 1.88178,-0.7071 0.64664,2.83663 2.04343,1.05834 2.64276,2.08249 0.11747,5.67324 0.8083,1.57241 2.58972,1.55628 0.77164,2.29451 4.15989,3.43694 1.80531,3.62324 2.45655,1.65852 z", - "AL" : "m 631.30647,460.41572 -1.4906,-14.3215 -2.74824,-18.75264 0.16166,-14.06449 0.8083,-31.03885 -0.16166,-16.65106 0.16509,-6.41906 44.48448,-3.61945 -0.1478,2.18242 0.16166,2.1016 0.64665,3.39487 3.39488,7.92137 2.4249,9.86131 1.45495,6.14311 1.6166,4.84982 1.45496,6.95141 2.10158,6.30476 2.58657,3.39489 0.48498,3.39486 1.93994,0.80831 0.16166,2.10159 -1.77828,4.84982 -0.48498,3.23322 -0.16166,1.93992 1.61662,4.36485 0.32332,5.33479 -0.80832,2.42492 0.64666,0.8083 1.45494,0.8083 0.32814,2.88882 -5.59766,-0.35355 -6.78975,0.64665 -25.5424,2.90988 -10.41156,1.40677 -0.22138,2.8774 1.77827,1.77827 2.58657,1.93992 0.58086,7.93544 -5.54206,2.5729 -2.74822,-0.32332 2.74822,-1.93993 0,-0.96996 -3.07154,-5.98144 -2.26325,-0.64664 -1.45495,4.36483 -1.29328,2.74823 -0.64664,-0.16166 -2.74823,0 z", - "LA" : "m 607.96706,459.16125 -3.28461,-3.16614 1.00991,-5.50023 -0.66135,-0.89308 -9.26167,1.00656 -25.02832,0.45892 -0.68419,-2.39468 0.91281,-8.4557 3.31588,-5.94585 5.03136,-8.69102 -0.57407,-2.39802 1.25659,-0.68085 0.45893,-1.95249 -2.28624,-2.05593 -0.11179,-1.94245 -1.83066,-4.34551 -0.14705,-6.3386 -55.47379,0.92397 0.0286,9.57357 0.68587,9.37353 0.68587,3.88658 2.51485,4.11521 0.91449,5.02971 4.34383,5.48693 0.22862,3.20072 0.68587,0.68587 -0.68587,8.45904 -2.97209,5.02969 1.60036,2.05761 -0.68588,2.51484 -0.68586,7.31593 -1.37174,3.20071 0.12246,3.61645 4.68648,-1.52015 12.11335,0.20701 10.34627,3.55653 6.46642,1.13163 3.71819,-1.45495 3.23321,1.13163 3.23321,0.96996 0.8083,-2.10159 -3.23321,-1.13162 -2.58657,0.48498 -2.74823,-1.6166 c 0,0 0.16167,-1.29329 0.80831,-1.45495 0.64664,-0.16166 3.07155,-0.96996 3.07155,-0.96996 l 1.77826,1.45494 1.77827,-0.96996 3.23321,0.64664 1.45494,2.42491 0.32332,2.26325 4.52649,0.32332 1.77827,1.77826 -0.8083,1.61661 -1.29329,0.8083 1.61661,1.6166 8.40634,3.55653 3.55653,-1.29328 0.96997,-2.42491 2.58656,-0.64664 1.77827,-1.45494 1.29328,0.96996 0.8083,2.90989 -2.26324,0.8083 0.64664,0.64664 3.39487,-1.29328 2.26325,-3.39487 0.8083,-0.48498 -2.10159,-0.32332 0.8083,-1.61661 -0.16166,-1.45494 2.10159,-0.48498 1.13162,-1.29329 0.64664,0.8083 c 0,0 -0.16166,3.07155 0.64665,3.07155 0.8083,0 4.20317,0.64665 4.20317,0.64665 l 4.04151,1.93992 0.96996,1.45495 2.90989,0 1.13163,0.96996 2.26324,-3.07155 0,-1.45495 -1.29328,0 -3.39487,-2.74822 -5.81978,-0.80831 -3.23321,-2.26324 1.13163,-2.74823 2.26324,0.32332 0.16166,-0.64664 -1.77826,-0.96996 0,-0.48499 3.23321,0 1.77826,-3.07154 -1.29328,-1.93993 -0.32332,-2.74823 -1.45495,0.16166 -1.93992,2.10159 -0.64664,2.58657 -3.07155,-0.64665 -0.96997,-1.77826 1.77827,-1.93993 1.90333,-3.4456 -1.0611,-2.41227 -1.16564,-3.98133 z", - "MS" : "m 631.55882,459.34458 -0.25426,1.25615 -5.17314,0 -1.45494,-0.8083 -2.10159,-0.32332 -6.78974,1.93992 -1.77826,-0.8083 -2.58657,4.20317 -1.10254,0.77802 -1.12383,-2.48798 -1.14312,-3.88659 -3.42933,-3.20071 1.1431,-5.54455 -0.68586,-0.91449 -1.82898,0.22862 -7.91792,0.87337 -24.5465,0.37337 -0.76974,-2.22536 0.87337,-8.3768 3.11684,-5.67281 5.22707,-9.1449 -0.44574,-2.4326 1.23686,-0.65625 0.43587,-1.91947 -2.31748,-2.07898 -0.11512,-2.14148 -1.83572,-4.12109 -0.109,-5.96277 1.32753,-2.48097 -0.2233,-3.41575 -1.76949,-3.08259 1.52642,-1.48221 -1.57061,-2.49954 0.45725,-1.65221 1.5774,-6.52637 2.48595,-2.03635 -0.64167,-2.36697 3.65797,-5.30253 2.83186,-1.35642 -0.22097,-1.67516 -0.28813,-1.6811 2.87606,-5.56767 2.34572,-1.23151 0.15163,-0.89301 37.34348,-3.88117 0.18486,6.28333 0.16166,16.65106 -0.8083,31.03885 -0.16166,14.06449 2.74824,18.75264 1.48437,13.39529 z", - "IA" : "m 569.19154,199.5843 0.26438,2.7862 2.22372,0.57726 0.95394,1.22533 0.50001,1.85536 3.79284,3.35865 0.68587,2.3915 -0.67434,3.42447 -1.58231,3.23198 -0.79934,2.74179 -2.17275,1.60204 -1.71551,0.5724 -5.57902,1.8602 -1.39146,3.84869 0.72864,1.37174 1.84051,1.68259 -0.28293,4.03629 -1.76315,1.53786 -0.77141,1.64314 0.12722,2.77632 -1.88631,0.45724 -1.62545,1.10491 -0.27879,1.35263 0.27879,2.11492 -1.55102,1.11607 -2.47053,-3.13328 -1.26257,-2.44987 -65.73582,2.51485 -0.91803,0.16544 -2.0524,-4.51596 -0.22862,-6.63007 -1.60036,-4.11521 -0.68586,-5.25831 -2.28623,-3.65797 -0.91448,-4.80107 -2.74348,-7.54455 -1.14311,-5.37264 -1.37174,-2.17191 -1.60036,-2.74346 1.95398,-4.84383 1.37174,-5.71557 -2.74347,-2.05761 -0.45725,-2.74347 0.9145,-2.51485 1.71467,0 82.654,-1.26948 0.83426,4.18312 2.25218,1.56097 0.25671,1.42309 -2.02954,3.38931 0.19041,3.20552 2.51486,3.7982 2.52679,1.29362 3.07928,0.50305 0.65834,0.83236 z", - "MN" : "m 475.23781,128.82439 -0.45725,-8.45904 -1.82898,-7.31592 -1.82898,-13.488725 -0.45725,-9.830778 -1.82898,-3.429343 -1.60036,-5.029695 0,-10.28802 0.68586,-3.886587 -1.82093,-5.451667 30.13242,0.03527 0.32332,-8.244684 0.64664,-0.161661 2.26325,0.484982 1.93992,0.808302 0.8083,5.496456 1.45495,6.143098 1.6166,1.616605 4.84982,0 0.32332,1.454944 6.30476,0.323321 0,2.101586 4.84981,0 0.32332,-1.293284 1.13162,-1.131623 2.26325,-0.646642 1.29328,0.969963 2.90989,0 3.87985,2.586567 5.3348,2.424907 2.42491,0.484982 0.48498,-0.969963 1.45494,-0.484982 0.48498,2.909889 2.58657,1.293284 0.48498,-0.484982 1.29329,0.161661 0,2.101586 2.58656,0.969963 3.07155,0 1.61661,-0.808303 3.23321,-3.233209 2.58656,-0.484981 0.80831,1.778265 0.48498,1.293283 0.96996,0 0.96996,-0.808302 8.89133,-0.323321 1.77826,3.071549 0.64665,0 0.71361,-1.084279 4.43991,-0.370665 -0.6121,2.279459 -3.93872,1.837125 -9.24578,4.061128 -4.77474,2.006897 -3.07155,2.586568 -2.42491,3.55653 -2.26324,3.879851 -1.77827,0.808304 -4.52649,5.01147 -1.29329,0.16166 -4.32778,2.75712 -2.46288,3.20511 -0.22862,3.19139 0.0944,8.04335 -1.37604,1.68875 -5.08154,3.75997 -2.23008,5.98241 2.87175,2.23371 0.67989,3.22698 -1.85524,3.23893 0.17079,3.74802 0.36886,6.7304 3.02825,3.00199 3.329,0 1.89111,3.1326 3.37917,0.50327 3.85916,5.67147 7.08729,4.11675 2.14315,2.87512 0.67115,6.43951 -81.2115,1.14479 -0.33792,-35.67685 -0.45724,-2.97209 -4.11521,-3.42934 -1.14312,-1.82898 0,-1.60037 2.0576,-1.60035 1.37174,-1.37174 0.22863,-3.20072 z", - "OK" : "m 380.34313,320.82146 -16.68418,-1.27331 -0.88022,10.95243 20.46538,1.15688 32.05555,1.3036 -2.3346,24.41865 -0.45725,17.83257 0.22863,1.60036 4.34383,3.65796 2.0576,1.14311 0.68587,-0.22862 0.68587,-2.05761 1.37174,1.82899 2.0576,0 0,-1.37174 2.74347,1.37174 -0.45724,3.88658 4.11521,0.22862 2.51484,1.14312 4.11521,0.68587 2.51485,1.82898 2.28623,-2.0576 3.42934,0.68586 2.51485,3.42934 0.91448,0 0,2.28623 2.28623,0.68586 2.28622,-2.28622 1.82899,0.68586 2.51484,0 0.9145,2.51486 6.30107,2.07897 1.37174,-0.68586 1.82898,-4.11521 1.14311,0 1.14312,2.0576 4.11521,0.68587 3.65795,1.37174 2.9721,0.91449 1.82899,-0.91449 0.68586,-2.51485 4.34383,0 2.0576,0.91449 2.74347,-2.05761 1.14312,0 0.68587,1.60036 4.1152,0 1.60036,-2.0576 1.82899,0.45724 2.0576,2.51486 3.20071,1.82897 3.20073,0.9145 1.94108,1.11893 -0.3891,-37.21701 -1.37175,-10.97398 -0.16046,-8.87234 -1.43989,-6.53773 -0.7782,-7.17964 -0.0681,-3.81622 -12.13684,0.31874 -46.41004,-0.45724 -45.03891,-2.05762 -24.2912,-1.37173 z", - "TX" : "m 361.46423,330.57358 22.69079,1.08594 31.09269,1.14312 -2.33461,23.4558 -0.29676,18.15352 0.0681,2.08179 4.34383,3.81843 1.98665,1.44716 1.18421,-0.55969 0.37337,-1.81772 1.14032,1.80362 2.11164,0.0439 -0.003,-1.44709 1.66994,0.96727 1.1387,0.40887 -0.35927,3.96765 4.08819,0.0935 2.92532,1.19717 3.95474,0.52538 2.38138,2.07898 2.1241,-2.07617 3.72494,0.61491 2.22091,3.22494 1.07496,0.32096 -0.16047,1.96527 2.21361,0.79229 2.33015,-2.0548 2.13302,0.61492 2.22938,0.0355 0.93307,2.43544 6.32809,2.11445 1.59305,-0.76693 1.48947,-4.17771 0.34072,0 0.90649,0.0816 1.22905,2.06863 3.92988,0.66528 3.337,1.12288 3.42563,1.19597 1.84058,-0.975 0.71376,-2.51484 4.45322,0.0442 1.80874,0.93078 2.79925,-2.10651 1.10364,0.0442 0.85104,1.60507 4.05472,0 1.51887,-2.02862 1.86737,0.40724 1.94603,2.40328 3.52057,2.04415 2.85876,0.80981 1.51362,0.79984 2.4467,1.99732 3.04304,-1.32779 2.69109,1.13888 0.56381,6.10594 -0.0398,9.70217 0.68586,9.53401 0.70218,3.60511 2.67533,4.41986 0.89818,4.95073 4.21595,5.53802 0.19602,3.14494 0.74637,0.78584 -0.73007,8.38007 -2.8721,5.0065 1.53297,2.15287 -0.63008,2.33808 -0.66957,7.40432 -1.50432,3.338 0.29488,3.50235 -5.66488,1.58518 -9.86129,4.5265 -0.96996,1.93992 -2.58657,1.93993 -2.10158,1.45494 -1.29329,0.8083 -5.65811,5.3348 -2.74823,2.10159 -5.3348,3.2332 -5.65811,2.42491 -6.30476,3.39487 -1.77826,1.45495 -5.81978,3.55653 -3.39487,0.64664 -3.87985,5.49645 -4.04151,0.32333 -0.96997,1.93992 2.26325,1.93993 -1.45495,5.49645 -1.29328,4.5265 -1.13162,3.87985 -0.8083,4.52649 0.8083,2.42491 1.77826,6.9514 0.96997,6.14309 1.77826,2.74823 -0.96996,1.45495 -3.07155,1.93992 -5.65812,-3.87985 -5.49645,-1.13162 -1.29329,0.48498 -3.23321,-0.64664 -4.20317,-3.07155 -5.17313,-1.13162 -7.59805,-3.39487 -2.10158,-3.87986 -1.29329,-6.46641 -3.2332,-1.93993 -0.64665,-2.26325 0.64665,-0.64664 0.32332,-3.39487 -1.29329,-0.64664 -0.64664,-0.96996 1.29328,-4.36484 -1.6166,-2.26324 -3.23321,-1.29329 -3.39487,-4.36483 -3.55653,-6.62808 -4.20317,-2.58657 0.16166,-1.93992 -5.3348,-12.2862 -0.8083,-4.20317 -1.77826,-1.93992 -0.16166,-1.45495 -5.98144,-5.33479 -2.58657,-3.07155 0,-1.13163 -2.58657,-2.10158 -6.78974,-1.13163 -7.43638,-0.64664 -3.07155,-2.26324 -4.52649,1.77826 -3.55653,1.45495 -2.26325,3.2332 -0.96996,3.7182 -4.36483,6.14309 -2.42491,2.42491 -2.58657,-0.96996 -1.77826,-1.13163 -1.93993,-0.64664 -3.87985,-2.26324 0,-0.64665 -1.77826,-1.93992 -5.17314,-2.10159 -7.43638,-7.7597 -2.26325,-4.68815 0,-8.08303 -3.23321,-6.46642 -0.48498,-2.74822 -1.6166,-0.96997 -1.13163,-2.10158 -5.01147,-2.10159 -1.29328,-1.6166 -7.11307,-7.92137 -1.29328,-3.23321 -4.68816,-2.26325 -1.45495,-4.36487 -2.58659,-2.90987 -1.93991,-0.48496 -0.64923,-4.67764 8.00187,0.68589 29.03499,2.74345 29.03508,1.60036 2.23353,-19.46182 3.88655,-55.55502 1.60039,-18.74732 1.37174,0.0286 m 99.02935,229.66274 -0.56581,-7.11308 -2.74824,-7.19392 -0.56582,-7.03225 1.53578,-8.24471 3.31406,-6.87059 3.4757,-5.41565 3.1524,-3.55655 0.64664,0.2425 -4.769,6.6281 -4.36484,6.54728 -2.02077,6.62809 -0.32332,5.17316 0.88913,6.14312 2.58658,7.19392 0.48498,5.17314 0.16166,1.45496 -0.88913,0.24248 z", - "NM" : "m 288.15255,424.01315 -0.77541,-4.7481 8.64378,0.5254 30.17176,2.9459 27.26816,1.68989 2.21527,-18.70747 3.85736,-55.87597 1.73768,-19.38923 1.5717,0.12856 0.8254,-11.16339 -104.00445,-10.63595 -17.49735,120.43481 15.46067,1.98915 1.29328,-10.02295 29.23215,2.82935 z", - "KS" : "m 507.88059,324.38028 -12.61826,0.20443 -46.08909,-0.45723 -44.55748,-2.05763 -24.62974,-1.25741 3.89379,-64.59497 22.08346,0.67517 40.28913,0.8414 44.30124,0.98758 5.09563,0 2.1844,2.1624 2.01766,-0.0214 1.6403,1.01247 -0.0625,3.00923 -1.82898,1.72537 -0.33225,2.23217 1.84308,3.40233 2.95236,3.19506 2.32735,1.61446 1.30077,11.24082 0.18913,36.08573 z", - "NE" : "m 486.09787,240.70058 3.23061,7.01991 -0.12863,2.30252 3.45922,5.49388 2.71929,3.15234 -5.04948,0 -43.48256,-0.93868 -40.78686,-0.8903 -22.25222,-0.78387 1.07277,-21.32785 -32.31824,-2.92025 4.34383,-44.00986 15.54633,1.02881 20.11879,1.1431 17.83257,1.14312 23.77676,1.14311 10.74526,-0.45724 2.0576,2.28622 4.80108,2.9721 1.14311,0.91449 4.34383,-1.37174 3.88659,-0.45724 2.74347,-0.22863 1.82898,1.37174 4.05743,1.60036 2.97209,1.60036 0.45725,1.60036 0.91449,2.0576 1.82898,0 0.79798,0.0462 0.89423,4.68182 2.92026,8.46792 0.57253,3.75671 2.52349,3.77425 0.56959,5.11414 1.60724,4.24037 0.25234,6.47426 z", - "SD" : "m 476.44687,204.02465 -0.0474,-0.58087 -2.89571,-4.84544 1.86023,-4.71211 1.49273,-5.88654 -2.78187,-2.07971 -0.38516,-2.74346 0.7924,-2.55435 3.18851,0.0152 -0.12308,-5.00614 -0.3333,-30.17425 -0.61773,-3.76758 -4.07232,-3.33093 -0.98263,-1.67696 -0.0625,-1.60882 2.02212,-1.5294 1.53222,-1.66567 0.24496,-2.65679 -58.25709,-1.60035 -54.79921,-3.44909 -5.32527,63.69119 14.59027,0.9038 19.94985,1.20561 17.74305,0.92859 23.77676,1.30358 11.9827,-0.42464 1.9663,2.24518 5.19464,3.25335 0.76389,0.72275 4.54144,-1.45281 6.54054,-0.61491 1.6753,1.33627 4.20451,1.59613 2.94506,1.63583 0.39898,1.48381 1.03949,2.24088 2.23737,-0.20136 z", - "ND" : "m 475.30528,128.91846 -0.61491,-8.43367 -1.67695,-6.81592 -1.89149,-13.02422 -0.45724,-10.987026 -1.73946,-3.077142 -1.75661,-5.194396 0.0312,-10.44427 0.62336,-3.824087 -1.8341,-5.467761 -28.64225,-0.564027 -18.59095,-0.646642 -26.51232,-1.293284 -22.94634,-2.133869 -6.99324,67.176834 54.93224,3.34365 58.06901,1.38583 z", - "WY" : "m 360.37668,143.27587 -106.7426,-13.45706 -14.08348,88.45803 113.26461,13.58549 7.56147,-88.58646 z", - "MT" : "M 369.20952,56.969133 338.5352,54.1613 l -29.26055,-3.55653 -29.26054,-4.041512 -32.3321,-5.334795 -18.42929,-3.39487 -32.72365,-6.932736 -4.47902,21.347532 3.42934,7.544541 -1.37174,4.572452 1.82898,4.572451 3.20073,1.371739 4.62082,10.769453 2.6951,3.176523 0.45724,1.143118 3.42934,1.143118 0.45725,2.057593 -7.0873,17.603953 0,2.51485 2.51485,3.20071 0.91448,0 4.80107,-2.97209 0.68588,-1.14312 1.60036,0.68587 -0.22863,5.25832 2.74348,12.57425 2.97209,2.51484 0.91448,0.68587 1.82899,2.28622 -0.45725,3.42935 0.68587,3.42933 1.14312,0.9145 2.28622,-2.28623 2.74347,0 3.20072,1.60036 2.51485,-0.91449 4.11521,0 3.65795,1.60036 2.74348,-0.45725 0.45724,-2.9721 2.97209,-0.68586 1.37174,1.37174 0.45725,3.20071 1.42587,0.83464 1.88695,-11.03474 106.74567,13.42892 8.80221,-86.299157 z", - "CO" : "m 380.03242,320.96457 4.90324,-86.32496 -113.38856,-12.64396 -12.21382,87.93916 120.69914,11.02976 z", - "ID" : "m 148.47881,176.48395 8.77087,-35.22072 1.37174,-4.22952 2.51484,-5.94418 -1.25742,-2.28623 -2.51486,0.11431 -0.80017,-1.0288 0.45725,-1.14311 0.34292,-3.08641 4.45815,-5.48695 1.82898,-0.45724 1.14311,-1.14311 0.57156,-3.20072 0.91448,-0.68586 3.88659,-5.82988 3.88659,-4.34383 0.22862,-3.772268 -3.42934,-2.629163 -1.53555,-4.400983 13.62491,-63.341691 13.51759,2.528111 -4.40808,21.383013 3.56035,7.485352 -1.58111,4.66084 1.96985,4.641233 3.13822,1.255191 3.83534,9.556588 3.51269,4.437154 0.50725,1.143118 3.34095,1.143118 0.36885,2.097075 -6.97101,17.376092 -0.16518,2.56593 2.63112,3.3217 0.90508,-0.0489 4.91129,-3.0256 0.67742,-1.09497 1.56231,0.65886 -0.27844,5.35372 2.73925,12.58271 3.91783,3.17791 1.68118,2.16545 -0.71661,4.08386 1.06622,2.80741 1.06163,1.09128 2.47929,-2.35142 2.84816,0.0489 2.91925,1.3352 2.78002,-0.68193 3.79426,-0.16048 3.9789,1.60036 2.74348,-0.29676 0.49674,-3.03731 2.93259,-0.76483 1.26017,1.51591 0.44093,2.94496 1.42434,1.21321 -8.386,53.60866 c 0,0 -87.96599,-16.70061 -94.95939,-18.20435 z", - "UT" : "m 259.49836,310.10509 -83.74903,-11.87225 20.58761,-112.54135 46.78031,8.74514 -1.4848,10.63042 -2.31162,13.17266 7.80769,0.92837 16.40652,1.80479 8.21097,0.85564 -12.24765,88.27658 z", - "AZ" : "m 144.9112,382.62909 -2.62701,2.15833 -0.32332,1.45495 0.48498,0.96996 18.91427,10.66959 12.12454,7.59804 14.7111,8.56801 16.81269,10.02295 12.2862,2.42491 24.95116,2.70491 17.25561,-119.12707 -83.73563,-11.91725 -3.09239,16.41246 -1.60629,0.0153 -1.71467,2.62916 -2.51485,-0.11432 -1.25742,-2.74347 -2.74347,-0.34293 -0.9145,-1.14311 -0.91448,0 -0.9145,0.57156 -1.94329,1.0288 -0.1143,6.97298 -0.22864,1.71467 -0.57154,12.57424 -1.48605,2.17191 -0.57156,3.31503 2.74347,4.91539 1.25742,5.82988 0.80019,1.0288 1.0288,0.57156 -0.11432,2.28622 -1.60035,1.37173 -3.42934,1.71467 -1.94329,1.9433 -1.48605,3.65795 -0.57156,4.91539 -2.85778,2.74347 -2.0576,0.68587 0.13569,0.82988 -0.45725,1.71467 0.45725,0.80018 3.65796,0.57154 -0.57156,2.74348 -1.48605,2.17191 -3.77227,0.91449 z", - "NV" : "m 196.39273,185.57552 -23.63891,128.82275 -1.83224,0.34915 -1.57276,2.40618 -2.37294,0.0107 -1.47195,-2.74347 -2.61847,-0.37842 -0.77092,-1.10763 -1.03783,-0.054 -2.77837,1.64429 -0.31026,6.78548 -0.36209,5.77717 -0.34857,8.59281 -1.4471,2.08916 -2.43892,-1.07403 -69.079886,-104.20119 18.989116,-67.58491 93.0921,20.66601 z", - "OR" : "m 148.72184,175.53153 8.8497,-34.80151 1.05079,-4.22952 2.35437,-5.62323 -0.61551,-1.16288 -2.51486,-0.0462 -1.2816,-1.6707 0.45724,-1.46407 0.50341,-3.24688 4.45815,-5.48695 1.82898,-1.09915 1.14311,-1.14311 1.48604,-3.56563 4.04706,-5.6694 3.56563,-3.8624 0.22862,-3.451314 -3.26886,-2.468682 -1.78341,-4.642625 -12.66377,-3.61197 -15.08909,-3.54365 -15.43202,0.114306 -0.45724,-1.371729 -5.48695,2.057604 -4.45814,-0.571559 -2.40054,-1.600361 -1.25742,0.685875 -4.68676,-0.228632 -1.71467,-1.371729 -5.25832,-2.057604 -0.800182,0.114316 -4.34383,-1.486056 -1.943291,1.828983 -6.172812,-0.342927 -5.944183,-4.115209 0.685865,-0.80018 0.228621,-7.773173 -2.286225,-3.886577 -4.115208,-0.571559 -0.685865,-2.514847 -2.353932,-0.466565 -5.798525,2.058784 -2.263247,6.466418 -3.233209,10.022949 -3.23321,6.466419 -5.011474,14.064461 -6.466419,13.579473 -8.083023,12.60952 -1.939926,2.90989 -0.808302,8.568 0.386095,12.08023 112.578342,26.32133 z", - "WA" : "m 102.07324,7.6117734 4.36483,1.4549443 9.69963,2.7482283 8.568,1.939925 20.0459,5.658117 22.95579,5.658116 15.22312,3.207173 -13.63236,63.585811 -12.445,-3.525318 -15.50801,-3.570679 -15.22929,0.03324 -0.45557,-1.344699 -5.59922,2.179293 -4.59543,-0.736744 -2.14697,-1.584054 -1.31321,0.657976 -4.73566,-0.140243 -1.69836,-1.349633 -5.26304,-2.112303 -0.734971,0.146918 -4.389122,-1.524448 -1.893298,1.817379 -6.265906,-0.298733 -5.925698,-4.125702 0.778957,-0.932763 0.121223,-7.677452 -2.281999,-3.839701 -4.115208,-0.60704 -0.67741,-2.510616 -2.275512,-0.456932 -3.554948,1.230576 -2.263247,-3.219247 0.323321,-2.909889 2.748228,-0.323321 1.616605,-4.041511 -2.586568,-1.131624 0.161661,-3.718191 4.364833,-0.646641 -2.748228,-2.748228 -1.454945,-7.113061 0.646642,-2.909888 0,-7.921363 -1.778265,-3.23321 2.263247,-9.376307 2.101586,0.484981 2.424907,2.909889 2.748228,2.586567 3.233209,1.939926 4.526493,2.101586 3.071551,0.646642 2.909889,1.454944 3.394873,0.969963 2.263246,-0.16166 0,-2.424908 1.293284,-1.131623 2.101582,-1.293284 0.32333,1.131624 0.32332,1.778265 -2.263251,0.484981 -0.323321,2.101586 1.778262,1.454945 1.13163,2.424907 0.64664,1.939925 1.45494,-0.16166 0.16166,-1.293284 -0.96996,-1.293284 -0.48498,-3.233209 0.8083,-1.778265 -0.64664,-1.454944 0,-2.263247 1.77827,-3.55653 -1.13163,-2.586568 -2.42491,-4.8498139 0.32333,-0.8083023 1.13162,-0.8083024 z m -9.456692,5.9789646 2.020764,-0.16166 0.484982,1.374119 1.535779,-1.616615 2.344082,0 0.808303,1.535779 -1.53578,1.69744 0.646652,0.808313 -0.727477,2.020761 -1.374119,0.404146 c 0,0 -0.889138,0.08084 -0.889138,-0.242485 0,-0.323321 1.454955,-2.586578 1.454955,-2.586578 l -1.69744,-0.565817 -0.323321,1.454954 -0.727478,0.646642 -1.535782,-2.263257 -0.484982,-2.505742 z", - "CA" : "m 144.69443,382.19813 3.94008,-0.48862 1.48604,-2.01144 0.54454,-2.94109 -3.55152,-0.59012 -0.51417,-0.66822 0.4775,-2.03231 -0.15928,-0.58967 1.92257,-0.61959 3.04278,-2.83268 0.58156,-4.9951 1.3799,-3.40211 1.94329,-2.16626 3.51887,-1.58967 1.65439,-1.60483 0.0687,-2.10884 -0.99333,-0.58001 -1.02315,-1.07273 -1.15522,-5.84845 -2.6852,-4.83009 0.56581,-3.505 -2.41958,-1.02931 -69.061322,-104.1784 18.902112,-67.60149 -67.079863,-15.69796 -1.506896,4.73324 -0.161661,7.43638 -5.173135,11.80121 -3.071548,2.58657 -0.323321,1.13162 -1.778266,0.80831 -1.454944,4.20317 -0.808302,3.23321 2.748228,4.20317 1.616605,4.20317 1.131623,3.55653 -0.323321,6.46642 -1.778265,3.07155 -0.646642,5.81978 -0.969963,3.71819 1.778265,3.87985 2.748228,4.52649 2.263247,4.84982 1.293283,4.04151 -0.32332,3.23321 -0.323321,0.48498 0,2.10158 5.658116,6.30476 -0.484981,2.42491 -0.646642,2.26325 -0.646642,1.93992 0.16166,8.24469 2.101586,3.71819 1.939926,2.58656 2.748228,0.48499 0.969963,2.74822 -1.131623,3.55653 -2.101587,1.61661 -1.131623,0 -0.808302,3.87985 0.484981,2.90989 3.23321,4.36483 1.616604,5.3348 1.454944,4.68815 1.293284,3.07155 3.39487,5.81978 1.454944,2.58656 0.484982,2.90989 1.616604,0.96996 0,2.42491 -0.808302,1.93993 -1.778265,7.11306 -0.484982,1.93992 2.424908,2.74823 4.203172,0.48498 4.526493,1.77827 3.879851,2.10158 2.909889,0 2.909888,3.07155 2.586567,4.84982 1.131624,2.26324 3.879851,2.10159 4.849814,0.8083 1.454944,2.10159 0.646642,3.23321 -1.454944,0.64664 0.323321,0.96996 3.233211,0.8083 2.748228,0.16167 3.159889,-1.68685 3.879854,4.20317 0.808302,2.26325 2.586572,4.20317 0.32332,3.23321 0,9.37631 0.48498,1.77826 10.02295,1.45495 19.72257,2.74822 13.84504,1.3497 z m -88.135212,-43.71668 1.293288,1.53578 -0.16166,1.29329 -3.233221,-0.0808 -0.565814,-1.21246 -0.646644,-1.45495 3.314051,-0.0808 z m 1.939932,0 1.212458,-0.64664 3.556543,2.10159 3.07156,1.21245 -0.889136,0.64666 -4.526509,-0.2425 -1.61661,-1.61661 -0.808306,-1.45495 z m 20.692614,19.80348 1.778265,2.34408 0.808313,0.96997 1.535779,0.56581 0.565807,-1.45495 -0.969963,-1.77827 -2.667403,-2.02076 -1.050798,0.16166 0,1.21246 z m -1.454955,8.64886 1.778276,3.15239 1.212458,1.93994 -1.454954,0.24248 -1.293284,-1.21245 c 0,0 -0.727477,-1.45495 -0.727477,-1.85911 0,-0.40414 0,-2.18242 0,-2.18242 l 0.484981,-0.0808 z" - } - } - } - } - ); - - return Mapael; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.min.js deleted file mode 100644 index f9bddd1..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/usa_states.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("jquery-mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{usa_states:{width:959,height:593,latLngToGrid:function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n=Math.PI,o=(c+d)/2;return g=(Math.sin(c/180*n)+Math.sin(d/180*n))/2,h=Math.sqrt(Math.cos(c/180*n))+2*g*Math.sin(c/180*n),i=f*Math.pow(h-2*g*Math.sin(o/180*n),.5)/g,j=g*(b-e),m=f*Math.pow(h-2*g*Math.sin(a/180*n),.5)/g,k=m*Math.sin(j/180*n),l=i-m*Math.cos(j/180*n),[k,l]},getCoords:function(a,b){var c,d,e,f,g,h,i,j,k={};return a>51?(g=15,h=105,i=-134,j=530,k=this.latLngToGrid(a,b,g,h,i,j),c=190,d=543,e=1,f=-1):b<-140?(g=0,h=26,i=-166,j=1280,k=this.latLngToGrid(a,b,g,h,i,j),c=115,d=723,e=1,f=-1):(c=-17,d=-22,e=10.05,f=6.26,k[0]=50+(1.9694462586094064-a*Math.PI/180)*Math.sin(.6010514667026994*(b+96)*Math.PI/180)*124.03149777329222,k[1]=55.23670416287796-200.38467697709729*(1.3236744353715044-(1.9694462586094064-a*Math.PI/180)*Math.cos(.6010514667026994*(b+96)*Math.PI/180))),{x:k[0]*e+c,y:k[1]*f+d}},elems:{HI:"m 233.08751,519.30948 1.93993,-3.55655 2.26326,-0.32332 0.32332,0.8083 -2.1016,3.07157 -2.42491,0 z m 10.18466,-3.71821 6.14313,2.58657 2.10159,-0.32332 1.61661,-3.87987 -0.64664,-3.39488 -4.2032,-0.48498 -4.04153,1.77827 -0.96996,3.71821 z m 30.71563,10.023 3.7182,5.49647 2.42492,-0.32332 1.13163,-0.48498 1.45495,1.29329 3.71821,-0.16166 0.96997,-1.45495 -2.90991,-1.77827 -1.93993,-3.71822 -2.1016,-3.55654 -5.8198,2.9099 -0.64664,1.77828 z m 20.20765,8.89137 1.29329,-1.93994 4.68817,0.96996 0.64665,-0.48498 6.14312,0.64664 -0.32332,1.2933 -2.58658,1.45494 -4.36485,-0.32332 -5.49648,-1.6166 z m 5.33482,5.17315 1.93994,3.87987 3.07155,-1.13163 0.32333,-1.61662 -1.61661,-2.10159 -3.71821,-0.32332 0,1.29329 z m 6.95143,-1.13163 2.26326,-2.9099 4.68817,2.42492 4.36485,1.13163 4.36486,2.74824 0,1.93993 -3.55654,1.77828 -4.84985,0.96996 -2.42491,-1.45495 -4.84984,-6.62811 z m 16.65111,15.51947 1.61661,-1.29328 3.39489,1.61662 7.59807,3.55654 3.39489,2.10159 1.6166,2.42492 1.93994,4.36485 4.04153,2.58658 -0.32332,1.2933 -3.87987,3.23322 -4.20319,1.45495 -1.45495,-0.64664 -3.07157,1.77826 -2.42491,3.23323 -2.26326,2.9099 -1.77828,-0.16166 -3.55654,-2.58658 -0.32332,-4.52651 0.64664,-2.42492 -1.61661,-5.65814 -2.1016,-1.77828 -0.16166,-2.58658 2.26326,-0.96996 2.1016,-3.07156 0.48498,-0.96997 -1.61661,-1.77828 -0.32332,-2.1016 z",AK:"m 158.07671,453.67502 -0.32332,85.35713 1.6166,0.96996 3.07157,0.16166 1.45494,-1.13162 2.58658,0 0.16167,2.9099 6.95143,6.78977 0.48499,2.58658 3.39488,-1.93994 0.64665,-0.16166 0.32332,-3.07156 1.45494,-1.61661 1.13164,-0.16166 1.93993,-1.45496 3.07156,2.1016 0.64665,2.90991 1.93993,1.13162 1.13163,2.42492 3.87988,1.77827 3.39488,5.98147 2.74823,3.87986 2.26326,2.74825 1.45496,3.7182 5.01149,1.77828 5.17317,2.10159 0.96996,4.36486 0.48498,3.07156 -0.96996,3.39489 -1.77828,2.26325 -1.61661,-0.8083 -1.45495,-3.07157 -2.74824,-1.45494 -1.77827,-1.13164 -0.80831,0.80831 1.45495,2.74825 0.16166,3.7182 -1.13163,0.48498 -1.93993,-1.93993 -2.10159,-1.29329 0.48498,1.61661 1.29328,1.77828 -0.8083,0.8083 c 0,0 -0.8083,-0.32332 -1.29328,-0.96997 -0.485,-0.64664 -2.1016,-3.39488 -2.1016,-3.39488 l -0.96997,-2.26326 c 0,0 -0.32332,1.29329 -0.96997,0.96996 -0.64665,-0.32332 -1.29329,-1.45494 -1.29329,-1.45494 l 1.77827,-1.93994 -1.45495,-1.45495 0,-5.0115 -0.8083,0 -0.8083,3.39488 -1.13164,0.485 -0.96996,-3.71822 -0.64665,-3.71821 -0.80831,-0.48498 0.32333,5.65815 0,1.13162 -1.45496,-1.29328 -3.55654,-5.98147 -2.1016,-0.48498 -0.64664,-3.71821 -1.61661,-2.9099 -1.61662,-1.13164 0,-2.26325 2.1016,-1.29329 -0.48498,-0.32332 -2.58658,0.64664 -3.39489,-2.42491 -2.58658,-2.90991 -4.84983,-2.58658 -4.04154,-2.58658 1.2933,-3.23322 0,-1.61661 -1.77828,1.61661 -2.9099,1.13163 -3.71821,-1.13163 -5.65815,-2.42491 -5.49647,0 -0.64664,0.48498 -6.46645,-3.87988 -2.1016,-0.32332 -2.74824,-5.8198 -3.55655,0.32332 -3.55655,1.45495 0.48499,4.52652 1.13162,-2.9099 0.96998,0.32332 -1.45496,4.36485 3.23322,-2.74824 0.64665,1.61661 -3.87987,4.36485 -1.29329,-0.32332 -0.48498,-1.93994 -1.29329,-0.8083 -1.29329,1.13163 -2.74824,-1.77827 -3.07157,2.1016 -1.77826,2.10159 -3.39489,2.1016 -4.68818,-0.16167 -0.48498,-2.10159 3.7182,-0.64665 0,-1.29328 -2.26326,-0.64666 0.96998,-2.42491 2.26325,-3.87987 0,-1.77827 0.16166,-0.80831 4.36486,-2.26326 0.96996,1.29329 2.74825,0 -1.29329,-2.58657 -3.71822,-0.32333 -5.01149,2.74824 -2.42492,3.39488 -1.77827,2.58659 -1.13163,2.26326 -4.20319,1.45494 -3.07157,2.58658 -0.323321,1.61662 2.263257,0.96997 0.808313,2.10158 -2.748249,3.23323 -6.466439,4.2032 -7.759747,4.20319 -2.101597,1.13162 -5.334818,1.13164 -5.334826,2.26325 1.778275,1.29329 -1.454954,1.45495 -0.484982,1.13163 -2.748238,-0.96997 -3.23322,0.16166 -0.808312,2.26326 -0.969963,0 0.323321,-2.42492 -3.556551,1.2933 -2.909899,0.96996 -3.394886,-1.29329 -2.909901,1.93993 -3.233224,0 -2.101597,1.2933 -1.616612,0.8083 -2.101595,-0.32332 -2.58658,-1.13163 -2.263257,0.64665 -0.969967,0.96996 -1.616613,-1.13162 0,-1.93994 3.071564,-1.29329 6.304787,0.64665 4.364853,-1.61662 2.101596,-2.10159 2.909902,-0.64665 1.778273,-0.80831 2.748241,0.16166 1.616612,1.2933 0.969963,-0.32332 2.263257,-2.74824 3.07157,-0.96998 3.39488,-0.64664 1.293294,-0.32332 0.646642,0.48498 0.808312,0 1.293284,-3.71821 4.041533,-1.45494 1.939936,-3.71821 2.263259,-4.52652 1.616615,-1.45495 0.323321,-2.58658 -1.616615,1.29329 -3.394893,0.64665 -0.646642,-2.42492 -1.293284,-0.32332 -0.969973,0.96996 -0.16166,2.90991 -1.454955,-0.16167 -1.454944,-5.8198 -1.293294,1.29328 -1.131624,-0.48498 -0.32332,-1.93993 -4.041533,0.16166 -2.101596,1.13163 -2.586578,-0.32332 1.454944,-1.45495 0.484981,-2.58658 -0.646641,-1.93994 1.454954,-0.96996 1.293284,-0.16166 -0.646642,-1.77828 0,-4.36485 -0.969963,-0.96997 -0.808312,1.45495 -6.143123,0 -1.454951,-1.29329 -0.646645,-3.87986 -2.101596,-3.55656 0,-0.96996 2.101596,-0.80831 0.161661,-2.1016 1.131628,-1.13162 -0.808305,-0.48498 -1.29329,0.48498 -1.131628,-2.74824 0.969967,-5.01151 4.526514,-3.23321 2.586575,-1.61662 1.939936,-3.7182 2.748249,-1.2933 2.586578,1.13164 0.323321,2.42492 2.424917,-0.32334 3.23322,-2.42491 1.616615,0.64665 0.969962,0.64664 1.616615,0 2.263259,-1.29329 0.808313,-4.36486 c 0,0 0.323321,-2.90989 0.969963,-3.39488 0.646642,-0.48498 0.969963,-0.96996 0.969963,-0.96996 l -1.131623,-1.93994 -2.58658,0.80831 -3.23323,0.8083 -1.939936,-0.48498 -3.556541,-1.77828 -5.011495,-0.16166 -3.556551,-3.7182 0.484981,-3.87987 0.646652,-2.42492 -2.101596,-1.77827 -1.939938,-3.71822 0.484983,-0.8083 6.789771,-0.48498 2.101596,0 0.969963,0.96996 0.646652,0 -0.16166,-1.61661 3.879862,-0.64664 2.586577,0.32332 1.454955,1.13163 -1.454955,2.1016 -0.484981,1.45494 2.748249,1.61662 5.011497,1.77827 1.778276,-0.96996 -2.263257,-4.36485 -0.969974,-3.23323 0.969974,-0.80831 -3.394891,-1.93993 -0.484983,-1.13164 0.484983,-1.6166 -0.808304,-3.87987 -2.909909,-4.68818 -2.424918,-4.20319 2.909909,-1.93994 3.233222,0 1.778276,0.64665 4.203192,-0.16166 3.718205,-3.55654 1.131633,-3.07157 3.718212,-2.42492 1.616604,0.96997 2.748239,-0.64665 3.718209,-2.1016 1.13164,-0.16166 0.96996,0.80832 4.52651,-0.16167 2.74824,-3.07156 1.13163,0 3.55655,2.42491 1.93993,2.1016 -0.48498,1.13163 0.64664,1.13163 1.61662,-1.61661 3.87987,0.32332 0.32332,3.7182 1.93994,1.45496 7.11309,0.64664 6.30479,4.20319 1.45494,-0.96996 5.17317,2.58658 2.10159,-0.64664 1.93994,-0.80832 4.84983,1.93994 4.36486,2.9099 z m -115.102797,28.93736 2.101596,5.33482 -0.161662,0.96997 -2.909902,-0.32333 -1.778273,-4.04153 -1.778273,-1.45494 -2.424919,0 -0.16166,-2.58659 1.778273,-2.42492 1.131629,2.42492 1.45495,1.45495 2.748241,0.64665 z m -2.58658,33.46387 3.718209,0.80831 3.718207,0.96996 0.808307,0.96998 -1.616612,3.7182 -3.071564,-0.16166 -3.394885,-3.55654 -0.161662,-2.74825 z m -20.692636,-14.06452 1.13163,2.58657 1.131628,1.61662 -1.131628,0.8083 -2.101597,-3.07156 0,-1.93993 0.969967,0 z m -13.7412027,73.07087 3.3948853,-2.26326 3.3948854,-0.96997 2.58658,0.32332 0.484983,1.61661 1.939935,0.48499 1.939934,-1.93993 -0.323322,-1.61661 2.748241,-0.64665 2.909902,2.58658 -1.131629,1.77827 -4.364852,1.13163 -2.748242,-0.48498 -3.718207,-1.13163 -4.3648533,1.45495 -1.616612,0.32332 -1.1316284,-0.64664 z m 48.9833487,-4.52651 1.616612,1.93993 2.101593,-1.61661 -1.454948,-1.2933 -2.263257,0.96998 z m 2.909902,3.07155 1.131624,-2.26325 2.101597,0.32332 -0.808303,1.93993 -2.424918,0 z m 23.602535,-1.93993 1.454954,1.77827 0.969974,-1.13162 -0.808313,-1.93994 -1.616615,1.29329 z m 8.72971,-12.44791 1.131633,5.8198 2.909899,0.80831 5.011495,-2.90991 4.364853,-2.58658 -1.6166,-2.42491 0.48498,-2.42492 -2.1016,1.29329 -2.909898,-0.80831 1.616605,-1.13162 1.939933,0.8083 3.87987,-1.77828 0.48499,-1.45494 -2.42492,-0.80831 0.8083,-1.93994 -2.74824,1.93994 -4.688172,3.55655 -4.849834,2.9099 -1.293294,1.13163 z m 42.35524,-19.88433 2.42492,-1.45495 -0.96997,-1.77828 -1.77827,0.96997 0.32332,2.26326 z",FL:"m 759.8167,439.1428 2.26566,7.3186 3.7297,9.74226 5.33479,9.3763 3.71819,6.30476 4.84982,5.49646 4.04151,3.71819 1.6166,2.90989 -1.13162,1.29328 -0.8083,1.29328 2.90988,7.43639 2.90989,2.90988 2.58657,5.3348 3.55653,5.81978 4.52649,8.24468 1.29329,7.59804 0.48498,11.96288 0.64664,1.77826 -0.32332,3.39487 -2.42491,1.29329 0.32332,1.93992 -0.64664,1.93993 0.32332,2.4249 0.48498,1.93993 -2.74822,3.23321 -3.07155,1.45494 -3.87985,0.16166 -1.45495,1.61661 -2.4249,0.96996 -1.29329,-0.48498 -1.13162,-0.96996 -0.32332,-2.90989 -0.80831,-3.39487 -3.39487,-5.17314 -3.55653,-2.26324 -3.87985,-0.32332 -0.8083,1.29328 -3.07155,-4.36483 -0.64664,-3.55653 -2.58657,-4.04151 -1.77826,-1.13163 -1.61661,2.10159 -1.77826,-0.32332 -2.10159,-5.01148 -2.90989,-3.87985 -2.90989,-5.33479 -2.58656,-3.07155 -3.55653,-3.71819 2.10158,-2.42491 3.23321,-5.49646 -0.16166,-1.6166 -4.52649,-0.96996 -1.61661,0.64664 0.32333,0.64664 2.58656,0.96996 -1.45494,4.5265 -0.8083,0.48498 -1.77827,-4.04151 -1.29328,-4.84982 -0.32332,-2.74823 1.45494,-4.68815 0,-9.53797 -3.07155,-3.71819 -1.29328,-3.07155 -5.17314,-1.29328 -1.93992,-0.64664 -1.61661,-2.58657 -3.39487,-1.61661 -1.13162,-3.39487 -2.74823,-0.96996 -2.42491,-3.71819 -4.20317,-1.45494 -2.90989,-1.45495 -2.58656,0 -4.04152,0.80831 -0.16166,1.93992 0.80831,0.96996 -0.48499,1.13163 -3.07154,-0.16166 -3.71819,3.55653 -3.55654,1.93992 -3.87985,0 -3.23321,1.29329 -0.32332,-2.74823 -1.6166,-1.93993 -2.90989,-1.13162 -1.6166,-1.45495 -8.08303,-3.87985 -7.59804,-1.77826 -4.36483,0.64664 -5.98144,0.48498 -5.98144,2.10159 -3.47924,0.61296 -0.23792,-8.04975 -2.58657,-1.93992 -1.77827,-1.77827 0.32332,-3.07156 10.18462,-1.29328 25.5424,-2.90989 6.78975,-0.64664 5.436,0.28027 2.58657,3.87986 1.45494,1.45494 8.09816,0.51522 10.81975,-0.64664 21.51239,-1.29329 5.44572,-0.67437 5.10758,0.20451 0.42683,2.90989 2.233,0.8083 0.23494,-4.63 -1.52822,-4.17295 1.3084,-1.43983 5.55463,0.45475 5.17314,0.32332 z m 12.54541,132.40508 2.42492,-0.64664 1.29328,-0.24249 1.45496,-2.34409 2.34408,-1.61661 1.29329,0.48499 1.69744,0.32332 0.40415,1.05079 -3.4757,1.21246 -4.2032,1.45495 -2.34408,1.21246 -0.88914,-0.88914 z m 13.4987,-5.01149 1.21246,1.0508 2.74824,-2.10159 5.33481,-4.20319 3.7182,-3.87987 2.50575,-6.6281 0.96997,-1.69744 0.16166,-3.39488 -0.72748,0.48498 -0.96996,2.82907 -1.45496,4.60733 -3.23322,5.254 -4.36484,4.20318 -3.39488,1.93993 -2.50575,1.53578 z",NH:"m 880.79902,142.42476 0.869,-1.0765 1.09022,-3.29102 -2.54308,-0.91347 -0.48499,-3.07156 -3.87985,-1.13162 -0.32332,-2.74824 -7.27475,-23.44082 -4.60142,-14.542988 -0.89708,-0.0051 -0.64664,1.616605 -0.64664,-0.484981 -0.96997,-0.969963 -1.45494,1.939925 -0.0485,5.032054 0.31165,5.667218 1.93992,2.74824 0,4.04152 -3.7182,5.06278 -2.58657,1.13164 0,1.13162 1.13163,1.77827 0,8.56802 -0.80831,9.21467 -0.16166,4.84982 0.96997,1.2933 -0.16166,4.52649 -0.48499,1.77828 0.96881,0.70922 16.78767,-4.42455 2.17487,-0.60245 1.84357,-2.77333 3.60523,-1.61312 z",MI:"M581.61931,82.059006 L 583.4483,80.001402 L 585.62022,79.201221 L 590.99286,75.314624 L 593.27908,74.743065 L 593.73634,75.200319 L 588.59232,80.344339 L 585.27728,82.287628 L 583.21967,83.202124 L 581.61931,82.059006 z M 667.79369,114.18719 L 668.44033,116.69293 L 671.67355,116.85459 L 672.96684,115.64213 C 672.96684,115.64213 672.88601,114.18719 672.56269,114.02552 C 672.23936,113.86386 670.94608,112.16642 670.94608,112.16642 L 668.76366,112.40891 L 667.14704,112.57057 L 666.82372,113.7022 L 667.79369,114.18719 z M 567.49209,111.21318 L 568.20837,110.63278 L 570.9566,109.82447 L 574.51313,107.56123 L 574.51313,106.59126 L 575.15978,105.94462 L 581.14121,104.97466 L 583.56612,103.03473 L 587.93095,100.93315 L 588.09261,99.639864 L 590.03254,96.729975 L 591.8108,95.921673 L 593.10409,94.143408 L 595.36733,91.880161 L 599.73217,89.455254 L 604.42032,88.970273 L 605.55194,90.101896 L 605.22862,91.071859 L 601.51043,92.041822 L 600.05549,95.113371 L 597.79224,95.921673 L 597.30726,98.34658 L 594.88235,101.57979 L 594.55903,104.16636 L 595.36733,104.65134 L 596.3373,103.51972 L 599.89383,100.60983 L 601.18711,101.90311 L 603.45036,101.90311 L 606.68357,102.87307 L 608.13851,104.0047 L 609.59345,107.07625 L 612.34168,109.82447 L 616.22153,109.66281 L 617.67648,108.69285 L 619.29308,109.98613 L 620.90969,110.47112 L 622.20297,109.66281 L 623.33459,109.66281 L 624.9512,108.69285 L 628.99271,105.13632 L 632.38758,104.0047 L 639.01566,103.68138 L 643.54215,101.74145 L 646.12872,100.44817 L 647.58367,100.60983 L 647.58367,106.26794 L 648.06865,106.59126 L 650.97853,107.39957 L 652.91846,106.91458 L 659.06156,105.29798 L 660.19318,104.16636 L 661.64813,104.65134 L 661.64813,111.60274 L 664.88134,114.67429 L 666.17462,115.32093 L 667.4679,116.29089 L 666.17462,116.61421 L 665.36632,116.29089 L 661.64813,115.80591 L 659.54654,116.45255 L 657.28329,116.29089 L 654.05008,117.74584 L 652.27182,117.74584 L 646.45204,116.45255 L 641.27891,116.61421 L 639.33898,119.20078 L 632.38758,119.84742 L 629.96267,120.65572 L 628.83105,123.72727 L 627.53777,124.8589 L 627.05279,124.69724 L 625.59784,123.08063 L 621.07135,125.50554 L 620.42471,125.50554 L 619.29308,123.88893 L 618.48478,124.05059 L 616.54486,128.41543 L 615.57489,132.45694 L 612.39377,139.45774 L 611.21701,138.42347 L 609.84527,137.39215 L 607.90449,127.10413 L 604.36001,125.73408 L 602.30743,123.44785 L 590.18707,120.70437 L 587.3318,119.67473 L 579.10138,117.50199 L 571.21139,116.35887 L 567.49209,111.21318 z,M697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5 C 674.5,166.5 671.9,165.1 672.1,164.4 C 672.3,163.8 672.6,159.4 672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2z",VT:"m 844.48416,154.05791 0.3167,-5.34563 -2.89071,-10.78417 -0.64664,-0.32332 -2.9099,-1.29329 0.8083,-2.90989 -0.8083,-2.10159 -2.70005,-4.63998 0.96997,-3.87986 -0.80831,-5.17315 -2.42491,-6.46644 -0.80557,-4.92251 26.41936,-6.73182 0.3087,5.52221 1.91626,2.74223 0,4.04152 -3.70715,5.05799 -2.58657,1.14267 -0.011,1.12057 1.30997,1.51912 -0.31093,8.09797 -0.60943,9.25886 -0.22795,5.55694 0.96996,1.29329 -0.16166,4.57069 -0.48498,1.68989 1.01418,0.72716 -7.43755,1.50671 -4.50174,0.72383 z",ME:"m 922.83976,78.830719 1.93993,2.101586 2.26325,3.718191 0,1.939926 -2.10159,4.688153 -1.93993,0.646642 -3.39487,3.071549 -4.84981,5.496454 c 0,0 -0.64664,0 -1.29328,0 -0.64664,0 -0.96997,-2.101584 -0.96997,-2.101584 l -1.77826,0.16166 -0.96996,1.454944 -2.42491,1.45495 -0.96996,1.45494 1.6166,1.45494 -0.48498,0.64665 -0.48498,2.74822 -1.93993,-0.16166 0,-1.6166 -0.32332,-1.29329 -1.45494,0.32333 -1.77827,-3.23321 -2.10158,1.29328 1.29328,1.45494 0.32332,1.13163 -0.8083,1.29328 0.32332,3.07155 0.16166,1.6166 -1.6166,2.58657 -2.90989,0.48498 -0.32332,2.90989 -5.3348,3.07155 -1.29328,0.48498 -1.61661,-1.45494 -3.07155,3.55653 0.96997,3.23321 -1.45495,1.29328 -0.16166,4.36483 -1.12328,6.25936 -2.46225,-1.15595 -0.48499,-3.07156 -3.87985,-1.13163 -0.32332,-2.74824 -7.27475,-23.44082 -4.69858,-14.639742 1.42054,-0.118165 1.51379,0.409899 0,-2.586568 1.3083,-4.496456 2.58657,-4.688153 1.45495,-4.041512 -1.93993,-2.424907 0,-5.981437 0.8083,-0.969963 0.80831,-2.748228 -0.16166,-1.454944 -0.16167,-4.849814 1.77827,-4.849814 2.90989,-8.891326 2.10158,-4.203172 1.29329,0 1.29328,0.16166 0,1.131623 1.29329,2.263247 2.74822,0.646642 0.80831,-0.808303 0,-0.969962 4.04151,-2.909889 1.77826,-1.778265 1.45495,0.161661 5.98143,2.424907 1.93993,0.969962 9.05299,29.907187 5.98143,0 0.80831,1.939926 0.16166,4.849814 2.90988,2.263246 0.80831,0 0.16166,-0.484981 -0.48498,-1.131623 2.74822,-0.161661 z m -20.93175,30.147531 1.53578,-1.53578 1.37412,1.0508 0.56581,2.42492 -1.69744,0.88913 -1.77827,-2.82907 z m 6.70893,-5.90062 1.77827,1.8591 c 0,0 1.29329,0.0808 1.29329,-0.2425 0,-0.32332 0.24249,-2.02076 0.24249,-2.02076 l 0.88914,-0.8083 -0.80831,-1.77828 -2.02076,0.72748 -1.37412,2.26326 z",RI:"m 874.07001,178.89536 -3.69579,-14.95599 6.26928,-1.84514 2.19113,1.92712 3.30649,4.32065 2.6879,4.40209 -2.99934,1.62479 -1.29328,-0.16166 -1.13162,1.77827 -2.42491,1.93992 -2.90986,0.96995 z",NY:"m 830.37944,188.7456 -1.13163,-0.96996 -2.58658,-0.16166 -2.26324,-1.93992 -1.63061,-6.12913 -3.45846,0.0905 -2.44371,-2.7082 -19.38532,4.38194 -43.00178,8.72969 -7.52965,1.22799 -0.73816,-6.46834 1.4281,-1.12538 1.29328,-1.13162 0.96997,-1.61661 1.77826,-1.13162 1.93993,-1.77827 0.48498,-1.6166 2.10158,-2.74823 1.13163,-0.96996 -0.16166,-0.96997 -1.29329,-3.07154 -1.77826,-0.16166 -1.93993,-6.1431 2.90989,-1.77827 4.36483,-1.45494 4.04152,-1.29329 3.23321,-0.48498 6.30475,-0.16166 1.93993,1.29329 1.6166,0.16166 2.10159,-1.29329 2.58657,-1.13162 5.17313,-0.48498 2.10159,-1.77827 1.77826,-3.23321 1.61661,-1.93992 2.10158,0 1.93993,-1.13163 0.16166,-2.26324 -1.45494,-2.10159 -0.32332,-1.45494 1.13162,-2.10159 0,-1.45494 -1.77827,0 -1.77826,-0.8083 -0.8083,-1.13163 -0.16166,-2.58657 5.81977,-5.49645 0.64664,-0.8083 1.45495,-2.90989 2.90989,-4.5265 2.74823,-3.71819 2.10158,-2.4249 2.4151,-1.82561 3.08136,-1.24594 5.49645,-1.29329 3.23321,0.16166 4.5265,-1.45494 7.56519,-2.07117 0.51979,4.97967 2.42492,6.46644 0.8083,5.17315 -0.96996,3.87986 2.58657,4.5265 0.8083,2.10159 -0.8083,2.9099 2.9099,1.29328 0.64664,0.32332 3.07156,10.99294 -0.53629,5.05967 -0.48498,10.83127 0.8083,5.49647 0.8083,3.55654 1.45495,7.27474 0,8.08304 -1.13163,2.26325 1.83933,1.99279 0.79655,1.67842 -1.93992,1.77827 0.32332,1.29328 1.29328,-0.32332 1.45495,-1.29328 2.26324,-2.58657 1.13163,-0.64664 1.6166,0.64664 2.26325,0.16166 7.92136,-3.87985 2.90989,-2.74823 1.29328,-1.45494 4.20317,1.6166 -3.39487,3.55653 -3.87985,2.90989 -7.11306,5.33479 -2.58656,0.96997 -5.81978,1.93992 -4.04151,1.13163 -1.17474,-0.53293 -0.24402,-3.68853 0.48498,-2.74824 -0.16166,-2.10158 -2.81351,-1.699 -4.5265,-0.96997 -3.87986,-1.13162 -3.7182,-1.77828 z",PA:"m 825.1237,224.69205 1.30842,-0.271 2.32953,-1.25325 1.21188,-2.48307 1.61661,-2.26325 3.23321,-3.07156 0,-0.8083 -2.42491,-1.6166 -3.55654,-2.42492 -0.96996,-2.58657 -2.74824,-0.32332 -0.16166,-1.13163 -0.8083,-2.74823 2.26326,-1.13162 0.16166,-2.42492 -1.2933,-1.29329 0.16166,-1.61661 1.93994,-3.07155 0,-3.07156 2.69763,-2.64588 -0.92028,-0.67498 -2.52408,-0.19291 -2.29449,-1.93992 -1.54992,-6.11606 -3.50458,0.10052 -2.45523,-2.70333 -18.09099,4.19777 -43.00178,8.72969 -8.89135,1.45494 -0.62067,-6.52139 -5.36253,5.06765 -1.29329,0.48498 -4.20229,3.00889 2.91076,19.13745 2.48166,9.72936 3.5718,19.26149 3.26931,-0.63768 11.94358,-1.50247 37.92663,-7.6652 14.87621,-2.82332 8.30035,-1.62236 0.26711,-0.23853 2.1016,-1.61662 2.10158,-0.68084 z",NJ:"m 829.67942,188.46016 -2.32255,2.73427 0,3.07156 -1.93994,3.07155 -0.16166,1.61662 1.2933,1.29328 -0.16166,2.42492 -2.26326,1.13162 0.8083,2.74823 0.16166,1.13163 2.74824,0.32332 0.96996,2.58657 3.55654,2.42492 2.42491,1.6166 0,0.80831 -2.98321,2.69656 -1.61661,2.26324 -1.45495,2.74824 -2.26325,1.29328 -0.46245,1.60248 -0.2425,1.21246 -0.60923,2.60674 1.09227,2.24419 3.23321,2.90989 4.84981,2.26325 4.04151,0.64664 0.16166,1.45494 -0.8083,0.96996 0.32332,2.74823 0.8083,0 2.10159,-2.4249 0.8083,-4.84982 2.74823,-4.04151 3.07155,-6.46642 1.13162,-5.49645 -0.64664,-1.13163 -0.16166,-9.37631 -1.61661,-3.39486 -1.13162,0.8083 -2.74823,0.32332 -0.48498,-0.48498 1.13163,-0.96997 2.10158,-1.93992 0.0631,-1.09383 -0.38439,-3.43384 0.57337,-2.74824 -0.11747,-1.96901 -2.80754,-1.75035 -5.09214,-1.17576 -4.13744,-1.38163 -3.58563,-1.64569 z",DE:"m 825.6261,228.2791 0.36831,-2.14689 0.37507,-1.69105 -1.623,0.39776 -1.61546,0.46756 -2.20626,1.7643 1.72012,5.04288 2.26326,5.65812 2.10158,9.69965 1.61662,6.30478 5.01148,-0.16166 6.14212,-1.18068 -2.26423,-7.38627 -0.96997,0.48498 -3.55653,-2.4249 -1.77826,-4.68816 -1.93993,-3.55653 -3.14712,-2.87031 -0.86416,-2.09812 0.36636,-1.61546 z",MD:"m 839.79175,252.41476 -6.00855,1.20384 -5.1429,0.11746 -1.84356,-6.92233 -1.92481,-9.16932 -2.57262,-6.18845 -1.28838,-4.39833 -7.50602,1.62236 -14.87621,2.82332 -37.45143,7.5509 1.1313,5.01166 0.96996,5.65811 0.32332,-0.32332 2.1016,-2.4249 2.26324,-2.61766 2.42491,-0.61556 1.45496,-1.45495 1.77826,-2.58657 1.29328,0.64665 2.90989,-0.32333 2.58658,-2.10158 2.00689,-1.45327 1.84523,-0.48498 1.64435,1.12995 2.90989,1.45494 1.93992,1.77827 1.21246,1.53578 4.12235,1.69743 0,2.90989 5.49646,1.29329 1.14444,0.54198 1.4119,-2.02832 2.88197,1.97016 -1.27817,2.48193 -0.76527,3.98566 -1.77826,2.58657 0,2.10159 0.64664,1.77827 5.06395,1.35569 4.3111,-0.0617 3.07154,0.96997 2.10159,0.32332 0.96996,-2.10159 -1.45494,-2.10158 0,-1.77827 -2.42491,-2.10159 -2.10158,-5.49645 1.29328,-5.3348 -0.16166,-2.10158 -1.29328,-1.29329 c 0,0 1.45494,-1.6166 1.45494,-2.26324 0,-0.64665 0.48498,-2.10159 0.48498,-2.10159 l 1.93993,-1.29328 1.93992,-1.61661 0.48498,0.96997 -1.45494,1.6166 -1.29328,3.71819 0.32332,1.13162 1.77826,0.32332 0.48498,5.49646 -2.10158,0.96996 0.32332,3.55653 0.48498,-0.16166 1.13162,-1.93992 1.61661,1.77826 -1.61661,1.29329 -0.32332,3.39487 2.58657,3.39487 3.87985,0.48498 1.61661,-0.8083 3.23655,4.18293 1.35835,0.5363 6.65367,-2.79695 2.00758,-4.02387 -0.43596,-4.90798 z m -15.96958,9.02872 1.13162,2.50575 0.16166,1.77827 1.13163,1.8591 c 0,0 0.88914,-0.88914 0.88914,-1.21246 0,-0.32332 -0.72747,-3.07156 -0.72747,-3.07156 l -0.72748,-2.34409 -1.8591,0.48499 z",VA:"m 831.63885,266.06892 -0.14391,-1.94703 6.45343,-2.54988 -0.77041,3.21784 -2.91995,3.77911 -0.41809,4.58582 0.46175,3.39044 -1.82797,4.97816 -2.16427,1.91614 -1.47034,-4.64081 0.44589,-5.44911 1.587,-4.18307 0.76687,-3.09761 z m 3.34019,28.30136 -58.17418,12.57543 -37.42697,5.27907 -6.67833,-0.37518 -2.58525,1.92638 -7.33913,0.22069 -8.38211,0.97767 -10.91496,1.61462 10.46943,-5.6112 -0.0131,-2.07493 1.52005,-2.14613 10.55378,-11.50143 3.94672,4.47746 3.78301,0.96398 2.54346,-1.14032 2.23722,-1.31116 2.53661,1.34352 3.91417,-1.42776 1.87673,-4.55634 2.60092,0.54002 2.85524,-2.13125 1.79927,0.4936 2.82721,-3.67657 0.34825,-2.08311 -0.96366,-1.27557 1.00277,-1.86663 5.27427,-12.27715 0.61677,-5.73508 1.22889,-0.52354 2.17853,2.44287 3.93586,-0.30117 1.92921,-7.57363 2.79399,-0.56086 1.04975,-2.74107 2.57982,-2.34688 2.77183,-5.69519 0.0849,-5.06755 9.82151,3.82282 c 0.68085,0.34042 0.83288,-5.04915 0.83288,-5.04915 l 3.65256,1.59833 0.0683,2.93816 5.78425,1.29949 2.13295,1.1762 1.65992,2.05569 -0.65455,3.64867 -1.94744,2.59098 0.10985,2.05907 0.58896,1.85291 4.97875,1.26843 4.45127,0.0399 3.06883,0.95864 1.94351,0.3093 0.71481,3.08846 3.19044,0.40253 0.86807,1.20002 -0.43949,4.69008 1.37473,1.10255 -0.47895,1.93039 1.22941,0.78977 -0.2218,1.3846 -2.69399,-0.0949 0.089,1.61552 2.28099,1.54287 0.12154,1.4119 1.77311,1.78538 0.49179,2.52413 -2.55304,1.38131 1.57222,1.4943 5.80102,-1.68583 3.60762,6.01193 z",WV:"m 761.18551,238.96731 1.11201,4.94453 1.08344,6.03133 2.13029,-2.58034 2.26324,-3.07156 2.53838,-0.61555 1.45495,-1.45494 1.77827,-2.58657 1.44498,0.64664 2.90989,-0.32332 2.58658,-2.10159 2.00689,-1.45326 1.84523,-0.48499 1.30392,1.01647 3.64325,1.82163 1.93993,1.77827 1.37412,1.29328 -0.76172,5.55494 -5.83491,-2.54122 -4.24525,-1.62202 -0.10114,5.17843 -2.74764,5.53673 -2.53003,2.42666 -1.19209,2.74939 -2.64358,0.5001 -0.89784,3.60188 -1.04323,3.94967 -3.96824,0.34074 -2.32373,-2.43888 -1.07115,0.55941 -0.63268,5.4697 -1.35029,3.5345 -4.9584,10.95497 0.89669,1.1607 -0.20586,1.90854 -2.80869,3.88447 -1.8085,-0.54429 -2.96805,2.15974 -2.54238,-0.57221 -1.99923,4.55557 c 0,0 -3.25931,1.43022 -3.92291,1.36772 -0.16051,-0.0151 -2.4691,-1.2491 -2.4691,-1.2491 l -2.33652,1.37937 -2.4098,1.0444 -3.74469,-0.88912 -1.1214,-1.16828 -2.19222,-3.02336 -3.14259,-1.98812 -1.71157,-3.62324 -4.28488,-3.46819 -0.64665,-2.26325 -2.58657,-1.45495 -0.80831,-1.6166 -0.24249,-5.25398 2.18242,-0.0808 1.93994,-0.8083 0.16166,-2.74823 1.6166,-1.45495 0.16166,-5.01148 0.96996,-3.87986 1.29329,-0.64664 1.29328,1.13162 0.48499,1.77827 1.77827,-0.96997 0.48498,-1.6166 -1.13162,-1.77827 0,-2.42491 0.96996,-1.29329 2.26325,-3.39487 1.29328,-1.45494 2.1016,0.48498 2.26324,-1.61662 3.07155,-3.39487 2.26326,-3.87986 0.32332,-5.65811 0.48498,-5.01149 0,-4.68816 -1.13162,-3.07155 0.96996,-1.45496 1.28348,-1.29328 3.49125,19.82712 4.63101,-0.75115 12.42832,-1.79965 z",OH:"m 735.32497,193.32832 -6.09354,4.05335 -3.87985,2.26325 -3.39487,3.71819 -4.04151,3.87985 -3.23321,0.8083 -2.90989,0.48498 -5.49646,2.58657 -2.10158,0.16166 -3.39487,-3.07155 -5.17314,0.64665 -2.58656,-1.45495 -2.38107,-1.35083 -4.89257,0.70341 -10.18462,1.61661 -11.20687,2.18473 1.29329,14.63028 1.77827,13.74117 2.58656,23.4408 0.56582,4.83117 4.12235,-0.12902 2.42491,-0.80831 3.3638,1.50314 2.07049,4.36483 5.13894,-0.0171 1.89174,2.1187 1.76117,-0.0653 2.53839,-1.34146 2.50417,0.3715 5.42128,0.48268 1.72697,-2.13268 2.34565,-1.29328 2.07049,-0.68085 0.64664,2.74824 1.77828,0.96996 3.47569,2.34407 2.18242,-0.0808 1.33312,-0.49248 0.18471,-2.76153 1.58536,-1.45496 0.0992,-4.79272 c 0,0 1.02396,-4.10906 1.02396,-4.10906 l 1.29927,-0.60128 1.32135,1.14774 0.53815,1.69702 1.71913,-1.03742 0.43898,-1.46075 -1.11669,-1.90306 0.0663,-2.31443 0.749,-1.07231 2.15276,-3.30648 1.05022,-1.54334 2.10159,0.48498 2.26325,-1.61661 3.07155,-3.39487 2.77149,-4.07873 0.32033,-5.05551 0.48498,-5.01149 -0.17678,-5.30688 -0.95484,-2.89478 0.35124,-1.18978 1.80439,-1.75011 -2.28879,-9.04733 -2.90989,-19.36177 z",IN:"m 619.56954,299.97132 0.0653,-2.85858 0.48499,-4.52651 2.26324,-2.90988 1.77828,-3.87987 2.58656,-4.20317 -0.48498,-5.81979 -1.77826,-2.74823 -0.32332,-3.23321 0.8083,-5.49647 -0.48498,-6.95141 -1.2933,-16.00441 -1.29328,-15.35776 -0.97047,-11.72002 3.07106,0.88951 1.45495,0.96996 1.13162,-0.32332 2.10159,-1.93992 2.82957,-1.61699 5.0928,-0.16204 21.98587,-2.26326 5.57573,-0.53316 1.50314,15.95621 4.25135,36.84155 0.59846,5.7716 -0.3715,2.26325 1.22798,1.79537 0.0964,1.37255 -2.52129,1.59951 -3.53943,1.55131 -3.20213,0.55028 -0.59846,4.86693 -4.57469,3.31247 -2.79642,4.01044 0.32332,2.37673 -0.58134,1.5342 -3.32647,0 -1.58553,-1.6166 -2.49331,1.2622 -2.68296,1.50314 0.16167,3.05445 -1.19379,0.25803 -0.46788,-1.01814 -2.16688,-1.50314 -3.25032,1.34148 -1.55131,3.00625 -1.43784,-0.8083 -1.45495,-1.59951 -4.46434,0.48499 -5.59283,0.96996 -2.90989,1.55132 z",IL:"m 619.54145,300.34244 0.0312,-3.22971 0.56739,-4.64596 2.33253,-2.91586 1.86665,-4.07576 2.23302,-3.99533 -0.3715,-5.2524 -2.00521,-3.54257 -0.0964,-3.34668 0.69483,-5.26951 -0.82541,-7.17837 -1.06634,-15.77745 -1.29328,-15.01734 -0.92228,-11.6392 -0.27251,-0.92139 -0.8083,-2.58657 -1.29328,-3.71819 -1.61661,-1.77827 -1.45494,-2.58656 -0.23357,-5.48896 -45.79643,2.59825 0.22862,2.37195 2.28623,0.68587 0.91448,1.14311 0.45725,1.82898 3.88658,3.42934 0.68588,2.28623 -0.68588,3.42934 -1.82898,3.65796 -0.68586,2.51484 -2.28623,1.82899 -1.82898,0.68587 -5.25832,1.37173 -0.68587,1.82898 -0.68587,2.05761 0.68587,1.37174 1.82898,1.60036 -0.22862,4.1152 -1.82899,1.60036 -0.68586,1.60036 0,2.74347 -1.82898,0.45724 -1.60036,1.14312 -0.22862,1.37174 0.22862,2.0576 -1.71467,1.31457 -1.0288,2.80064 0.45724,3.65795 2.28623,7.31593 7.31593,7.54455 5.48693,3.65796 -0.22862,4.34383 0.9145,1.37174 6.40143,0.45724 2.74347,1.37174 -0.68586,3.65796 -2.28623,5.94419 -0.68587,3.20072 2.28622,3.88658 6.40144,5.25832 4.57246,0.68587 2.05759,5.0297 2.05761,3.20071 -0.91449,2.97209 1.60036,4.11521 1.82898,2.05761 1.41403,-0.88069 0.90766,-2.07479 2.21308,-1.7472 2.13147,-0.6144 2.60253,1.1798 3.62699,1.3757 1.18895,-0.29823 0.19987,-2.25845 -1.2873,-2.41179 0.30422,-2.37672 1.8384,-1.34745 3.02254,-0.81029 1.2609,-0.45852 -0.61261,-1.38688 -0.79137,-2.35437 1.4326,-0.98096 1.15747,-3.21403 z",CT:"m 874.06831,178.86288 -3.67743,-14.87881 -4.71882,0.92031 -21.22878,4.74309 1.00019,3.22567 1.45495,7.27474 0.17678,8.96692 -1.22002,2.17487 1.92079,1.93234 4.27153,-3.90564 3.55653,-3.23321 1.93992,-2.10159 0.80831,0.64664 2.74822,-1.45494 5.17314,-1.13162 7.79469,-3.17877 z",WI:"m 615.06589,197.36866 -0.0667,-3.15742 -1.17911,-4.5265 -0.64664,-6.14309 -1.13162,-2.42491 0.96996,-3.07155 0.8083,-2.90989 1.45495,-2.58656 -0.64665,-3.39487 -0.64664,-3.55653 0.48498,-1.77827 1.93993,-2.42491 0.16166,-2.74823 -0.8083,-1.29328 0.64664,-2.58657 -0.45252,-4.17071 2.74823,-5.65811 2.90989,-6.78974 0.16166,-2.26325 -0.32332,-0.96996 -0.80831,0.48498 -4.20317,6.30476 -2.74823,4.04151 -1.93992,1.77827 -0.8083,2.26324 -1.95495,0.8083 -1.13162,1.93993 -1.45495,-0.32332 -0.16166,-1.77827 1.29329,-2.4249 2.10158,-4.68816 1.77827,-1.6166 0.99083,-2.35785 -2.56045,-1.90134 -1.97482,-10.36699 -3.54747,-1.34198 -1.94626,-2.30833 -12.12971,-2.72164 -2.87589,-1.01205 -8.21312,-2.16729 -7.91792,-1.15875 -3.76516,-5.13067 -0.7504,0.55401 -1.19791,-0.16166 -0.64665,-1.13162 -1.33401,0.29655 -1.13163,0.16166 -1.77826,0.96996 -0.96997,-0.64664 0.64665,-1.93993 1.93992,-3.07155 1.13162,-1.13162 -1.93992,-1.45494 -2.10159,0.8083 -2.90989,1.93992 -7.43638,3.23321 -2.90989,0.64664 -2.90988,-0.48498 -0.98173,-0.87825 -2.1167,2.83518 -0.22862,2.74347 0,8.45903 -1.14312,1.60037 -5.25832,3.88657 -2.28622,5.94419 0.45724,0.22862 2.51485,2.05761 0.68586,3.20072 -1.82898,3.20071 0,3.88659 0.45725,6.63005 2.97209,2.9721 3.42935,0 1.82898,3.20072 3.42933,0.45724 3.88659,5.71557 7.0873,4.11521 2.0576,2.74347 0.9145,7.43024 0.68586,3.31502 2.28623,1.60036 0.22862,1.37174 -2.0576,3.42933 0.22862,3.20073 2.51485,3.88658 2.51485,1.14311 2.97209,0.45724 1.34234,1.38012 45.29836,-2.66945 z", -NC:"m 834.98153,294.31554 2.085,4.91735 3.55653,6.46642 2.4249,2.42491 0.64664,2.26325 -2.4249,0.16166 0.8083,0.64664 -0.32332,4.20317 -2.58657,1.29328 -0.64664,2.10159 -1.29328,2.90989 -3.7182,1.6166 -2.4249,-0.32332 -1.45495,-0.16166 -1.6166,-1.29328 0.32332,1.29328 0,0.96997 1.93993,0 0.8083,1.29328 -1.93993,6.30476 4.20317,0 0.64665,1.6166 2.26324,-2.26324 1.29329,-0.48499 -1.93993,3.55653 -3.07155,4.84982 -1.29328,0 -1.13163,-0.48498 -2.74822,0.64664 -5.17314,2.42491 -6.46642,5.33479 -3.39487,4.68815 -1.93992,6.46642 -0.48498,2.42491 -4.68816,0.48498 -5.45313,1.33666 -9.94641,-8.20253 -12.60954,-7.59805 -2.90989,-0.80831 -12.60953,1.45495 -4.27646,0.75015 -1.6166,-3.23322 -2.97036,-2.1167 -16.48939,0.48498 -7.27474,0.8083 -9.05299,4.52651 -6.14311,2.58656 -21.17755,2.58658 0.50009,-4.05433 1.77827,-1.45494 2.74824,-0.64665 0.64664,-3.7182 4.20318,-2.74822 3.87985,-1.45496 4.20319,-3.55653 4.36483,-2.10159 0.64664,-3.07156 3.87986,-3.87985 0.64664,-0.16166 c 0,0 0,1.13163 0.80831,1.13163 0.8083,0 1.93993,0.32332 1.93993,0.32332 l 2.26325,-3.55654 2.10159,-0.64665 2.26324,0.32333 1.61662,-3.55653 2.90989,-2.58658 0.48498,-2.10159 0.1875,-3.64819 4.2765,-0.0225 7.19859,-0.85579 15.75723,-2.25243 15.13604,-2.08657 21.64048,-4.71935 19.98332,-4.25857 11.17694,-2.40581 5.04998,-1.15688 z m 4.27046,33.20657 2.58658,-2.50575 3.15238,-2.58658 1.53578,-0.64664 0.16166,-2.02076 -0.64664,-6.14312 -1.45495,-2.34408 -0.64665,-1.8591 0.72748,-0.2425 2.74824,5.49648 0.40415,4.44567 -0.16166,3.39489 -3.39488,1.53577 -2.82907,2.42492 -1.13162,1.21246 -1.0508,-0.16166 z",DC:"m 805.81945,250.84384 -1.85828,-1.82417 -1.23263,-0.68629 1.44301,-2.02247 2.88909,1.9485 -1.24119,2.58443 z",MA:"m 899.62349,173.25394 2.17192,-0.68588 0.45726,-1.71467 1.0288,0.11431 1.0288,2.28624 -1.25742,0.45724 -3.8866,0.11432 0.45724,-0.57156 z m -9.37354,0.80018 2.28622,-2.62917 1.60037,0 1.82899,1.48605 -2.40054,1.0288 -2.17192,1.0288 -1.14312,-0.91448 z m -34.79913,-21.98819 17.64687,-4.64068 2.26326,-0.64664 1.91408,-2.79571 3.73677,-1.66331 2.88924,4.41284 -2.42491,5.17314 -0.32332,1.45494 1.93993,2.58657 1.13162,-0.8083 1.77827,0 2.26324,2.58656 3.87986,5.98144 3.55653,0.48498 2.26324,-0.96996 1.77827,-1.77827 -0.80831,-2.74822 -2.10158,-1.61661 -1.45495,0.8083 -0.96996,-1.29328 0.48498,-0.48498 2.10159,-0.16166 1.77826,0.8083 1.93993,2.42491 0.96996,2.90989 0.32332,2.4249 -4.20317,1.45495 -3.87985,1.93992 -3.87985,4.5265 -1.93993,1.45494 0,-0.96996 2.42491,-1.45495 0.48498,-1.77826 -0.8083,-3.07155 -2.90989,1.45494 -0.8083,1.45495 0.48498,2.26324 -2.06633,1.00043 -2.7472,-4.52713 -3.39488,-4.36484 -2.0705,-1.81247 -6.53327,1.8762 -5.09233,1.05079 -20.67516,4.59221 -0.66776,-4.76785 0.64664,-10.58877 4.28927,-0.88914 6.78975,-1.2933 z",TN:"m 696.67788,318.25411 -51.89309,5.01149 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22097,4.10083 -8.18538,0.26401 -6.95141,0.64664 -8.09083,-0.12386 -1.41378,7.07286 -1.69623,5.48005 -3.29317,2.75084 -1.34874,4.38106 -0.32332,2.58657 -4.04152,2.26324 1.45494,3.55654 -0.96996,4.36484 -0.96838,0.78965 108.15855,-10.40755 0.40327,-3.95494 1.81073,-1.49039 2.83415,-0.74945 0.67193,-3.71698 4.0986,-2.70496 4.04693,-1.49403 4.08358,-3.57033 4.43609,-2.02546 0.52126,-3.06735 4.0646,-3.98499 0.5508,-0.11417 c 0,0 0.0312,1.13162 0.83955,1.13162 0.8083,0 1.93993,0.35457 1.93993,0.35457 l 2.26325,-3.58779 2.07034,-0.64664 2.27511,0.29521 1.59831,-3.53286 2.95525,-2.64391 0.42168,-1.93911 0.30896,-3.71115 -2.14655,-0.19977 -2.60168,2.02833 -6.99331,0.0291 -18.35929,2.38682 -8.06109,1.9082 z",AR:"m 593.82477,343.05296 -3.97988,0.7167 -5.11215,-0.63403 0.4207,-1.60207 2.97975,-2.56669 0.94338,-3.65625 -1.82898,-2.9721 -78.41757,2.51485 1.60036,6.85869 -1e-5,8.23042 1.37175,10.97399 0.22862,37.83693 2.28623,1.94329 2.97209,-1.37173 2.74348,1.14311 0.68034,6.5733 55.62126,-1.1406 1.14563,-2.09037 -0.28662,-3.54951 -1.82563,-2.9721 1.59869,-1.48521 -1.59869,-2.5115 0.6842,-2.50983 1.36839,-5.60543 2.51819,-2.06263 -0.68587,-2.28456 3.65797,-5.37179 2.74347,-1.36839 -0.11348,-1.49358 -0.34544,-1.82564 2.85695,-5.59873 2.40304,-1.25659 0.38413,-3.42763 1.77067,-1.2417 -3.14352,-0.48427 -1.34146,-4.01044 2.80408,-2.37671 0.55026,-2.0192 1.27948,-4.04661 1.06619,-3.25539 z",MO:"m 558.44022,248.11316 -2.51987,-3.08725 -1.14312,-2.28623 -64.35723,2.40054 -2.28626,0.11431 1.25743,2.51485 -0.22862,2.28622 2.51484,3.88659 3.0864,4.11521 3.08641,2.74347 2.16123,0.22862 1.49673,0.9145 0,2.97209 -1.82897,1.60036 -0.45726,2.28622 2.05761,3.42935 2.51486,2.97209 2.51484,1.82898 1.37173,11.65975 0.31414,36.07221 0.22862,4.68675 0.45724,5.38351 22.43299,-0.86682 23.20603,-0.68587 20.80466,-0.80101 11.65474,-0.2303 2.1694,3.426 -0.68419,3.3075 -3.08725,2.40304 -0.57239,1.83734 5.37849,0.45726 3.89496,-0.68588 1.71718,-5.49363 0.65142,-5.85679 2.09803,-2.55516 2.59603,-1.48689 0.0514,-3.05024 1.01602,-1.93648 -1.69423,-2.54377 -1.33093,0.98426 -1.99262,-2.22724 -1.28503,-4.759 0.80101,-2.5182 -1.94413,-3.42766 -1.83064,-4.5758 -4.79941,-0.79934 -6.9688,-5.59875 -1.71886,-4.11353 0.79935,-3.20072 2.05927,-6.05767 0.45892,-2.86363 -1.94914,-1.03131 -6.85534,-0.79767 -1.02797,-1.71216 -0.1118,-4.23036 -5.48694,-3.43101 -6.97551,-7.7715 -2.28622,-7.31593 -0.23029,-4.22532 0.80101,-2.2879 z",GA:"m 672.29229,355.5518 0,2.18242 0.16166,2.1016 0.64664,3.39487 3.39488,7.92137 2.42491,9.86131 1.45494,6.14311 1.61661,4.84981 1.45495,6.95141 2.10159,6.30477 2.58657,3.39488 0.48498,3.39487 1.93993,0.8083 0.16166,2.1016 -1.77827,4.84981 -0.48498,3.23322 -0.16166,1.93993 1.61661,4.36484 0.32332,5.3348 -0.80831,2.42491 0.64665,0.80831 1.45495,0.8083 0.2047,3.21809 2.23301,3.34953 2.25044,2.16205 7.92138,0.16166 10.81975,-0.64664 21.51239,-1.29328 5.44572,-0.67437 4.57725,0.0277 0.16166,2.90989 2.58657,0.8083 0.32332,-4.36484 -1.61661,-4.5265 1.13163,-1.6166 5.81978,0.8083 4.97741,0.31778 -0.77542,-6.29879 2.26324,-10.02295 1.45495,-4.20318 -0.48499,-2.58656 3.33441,-6.2443 -0.5103,-1.35168 -1.91341,0.70458 -2.58656,-1.2933 -0.64665,-2.10159 -1.29328,-3.55653 -2.26326,-2.10159 -2.58656,-0.64664 -1.61661,-4.84982 -2.92501,-6.335 -4.20317,-1.93993 -2.1016,-1.93993 -1.29329,-2.58657 -2.10158,-1.93993 -2.26325,-1.29329 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.42491,-2.90989 -0.48498,-1.45495 -3.39488,-4.97048 -3.51987,0.0992 -3.75491,-2.35614 -1.41828,-1.29328 -0.32332,-1.77827 0.8708,-1.93992 2.22664,-1.11014 -0.63394,-2.09722 -41.86975,4.98893 z",SC:"m 764.94328,408.16488 -1.77706,0.9695 -2.58657,-1.29329 -0.64664,-2.10159 -1.29328,-3.55653 -2.26326,-2.1016 -2.58657,-0.64664 -1.6166,-4.84981 -2.74824,-5.98145 -4.20317,-1.93994 -2.1016,-1.93992 -1.29328,-2.58657 -2.10159,-1.93994 -2.26325,-1.29328 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.4249,-2.90989 -0.48499,-1.45496 -3.39488,-5.17313 -3.39487,0.16166 -4.04152,-2.42492 -1.29328,-1.29328 -0.32332,-1.77827 0.8083,-1.93992 2.26325,-0.96998 -0.51082,-2.28908 5.7681,-2.33657 9.1155,-4.589 7.77473,-0.80831 16.1144,-0.42248 2.63825,1.87743 1.6791,3.35822 4.30235,-0.60998 12.60953,-1.45496 2.90989,0.80831 12.60954,7.59806 10.10808,8.12168 -5.42117,5.45834 -2.58657,6.1431 -0.48498,6.30476 -1.6166,0.8083 -1.13163,2.74823 -2.4249,0.64664 -2.10159,3.55653 -2.74823,2.74823 -2.26324,3.39487 -1.61661,0.8083 -3.55653,3.39487 -2.90989,0.16166 0.96997,3.23321 -5.01148,5.49646 -2.10159,1.29328 z",KY:"m 725.9944,295.2707 -2.29332,2.40168 -3.57819,3.99404 -4.92455,5.46467 -1.21577,1.71577 -0.0625,2.10158 -4.37986,2.16409 -5.65812,3.39488 -7.23187,1.79885 -51.86789,4.89886 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22695,4.22028 -8.17941,0.14456 -6.95141,0.64664 -7.98748,-0.0602 1.20778,-1.32008 2.49954,-1.54085 0.22863,-3.20073 0.91449,-1.82898 -1.60682,-2.5389 0.80183,-1.90681 2.26326,-1.77826 2.10158,-0.64665 2.74823,1.29329 3.55654,1.29328 1.13163,-0.32332 0.16166,-2.26325 -1.29329,-2.42491 0.32332,-2.26325 1.93993,-1.45494 2.58658,-0.64665 1.6166,-0.64664 -0.8083,-1.77827 -0.64664,-1.93993 1.50662,-0.9958 c 0.003,-0.0371 1.25396,-3.52229 1.23829,-3.65781 l 3.05322,-1.47868 5.31979,-0.96996 4.49404,-0.48498 1.39244,1.62743 1.52827,0.8708 1.59077,-3.10821 3.18708,-1.28262 2.20509,1.48403 0.41056,0.99904 1.17352,-0.26401 -0.16167,-2.95293 3.13087,-1.74919 2.14809,-1.07348 1.52936,1.66081 3.31815,-0.0442 0.58733,-1.57125 -0.36751,-2.26324 2.60053,-3.9985 4.77655,-3.4379 0.70595,-4.83586 2.92502,-0.45591 3.79146,-1.64568 2.44332,-1.70824 -0.19833,-1.56493 -1.14245,-1.45494 0.56582,-2.99491 4.18485,-0.1175 2.29991,-0.7458 3.34739,1.4291 2.05411,4.36484 5.13229,0.0108 2.05101,2.20819 1.61545,-0.1477 2.60169,-1.27817 5.23706,0.57337 2.57492,0.21751 1.68758,-2.05624 2.61795,-1.42588 1.88178,-0.7071 0.64664,2.83663 2.04343,1.05834 2.64276,2.08249 0.11747,5.67324 0.8083,1.57241 2.58972,1.55628 0.77164,2.29451 4.15989,3.43694 1.80531,3.62324 2.45655,1.65852 z",AL:"m 631.30647,460.41572 -1.4906,-14.3215 -2.74824,-18.75264 0.16166,-14.06449 0.8083,-31.03885 -0.16166,-16.65106 0.16509,-6.41906 44.48448,-3.61945 -0.1478,2.18242 0.16166,2.1016 0.64665,3.39487 3.39488,7.92137 2.4249,9.86131 1.45495,6.14311 1.6166,4.84982 1.45496,6.95141 2.10158,6.30476 2.58657,3.39489 0.48498,3.39486 1.93994,0.80831 0.16166,2.10159 -1.77828,4.84982 -0.48498,3.23322 -0.16166,1.93992 1.61662,4.36485 0.32332,5.33479 -0.80832,2.42492 0.64666,0.8083 1.45494,0.8083 0.32814,2.88882 -5.59766,-0.35355 -6.78975,0.64665 -25.5424,2.90988 -10.41156,1.40677 -0.22138,2.8774 1.77827,1.77827 2.58657,1.93992 0.58086,7.93544 -5.54206,2.5729 -2.74822,-0.32332 2.74822,-1.93993 0,-0.96996 -3.07154,-5.98144 -2.26325,-0.64664 -1.45495,4.36483 -1.29328,2.74823 -0.64664,-0.16166 -2.74823,0 z",LA:"m 607.96706,459.16125 -3.28461,-3.16614 1.00991,-5.50023 -0.66135,-0.89308 -9.26167,1.00656 -25.02832,0.45892 -0.68419,-2.39468 0.91281,-8.4557 3.31588,-5.94585 5.03136,-8.69102 -0.57407,-2.39802 1.25659,-0.68085 0.45893,-1.95249 -2.28624,-2.05593 -0.11179,-1.94245 -1.83066,-4.34551 -0.14705,-6.3386 -55.47379,0.92397 0.0286,9.57357 0.68587,9.37353 0.68587,3.88658 2.51485,4.11521 0.91449,5.02971 4.34383,5.48693 0.22862,3.20072 0.68587,0.68587 -0.68587,8.45904 -2.97209,5.02969 1.60036,2.05761 -0.68588,2.51484 -0.68586,7.31593 -1.37174,3.20071 0.12246,3.61645 4.68648,-1.52015 12.11335,0.20701 10.34627,3.55653 6.46642,1.13163 3.71819,-1.45495 3.23321,1.13163 3.23321,0.96996 0.8083,-2.10159 -3.23321,-1.13162 -2.58657,0.48498 -2.74823,-1.6166 c 0,0 0.16167,-1.29329 0.80831,-1.45495 0.64664,-0.16166 3.07155,-0.96996 3.07155,-0.96996 l 1.77826,1.45494 1.77827,-0.96996 3.23321,0.64664 1.45494,2.42491 0.32332,2.26325 4.52649,0.32332 1.77827,1.77826 -0.8083,1.61661 -1.29329,0.8083 1.61661,1.6166 8.40634,3.55653 3.55653,-1.29328 0.96997,-2.42491 2.58656,-0.64664 1.77827,-1.45494 1.29328,0.96996 0.8083,2.90989 -2.26324,0.8083 0.64664,0.64664 3.39487,-1.29328 2.26325,-3.39487 0.8083,-0.48498 -2.10159,-0.32332 0.8083,-1.61661 -0.16166,-1.45494 2.10159,-0.48498 1.13162,-1.29329 0.64664,0.8083 c 0,0 -0.16166,3.07155 0.64665,3.07155 0.8083,0 4.20317,0.64665 4.20317,0.64665 l 4.04151,1.93992 0.96996,1.45495 2.90989,0 1.13163,0.96996 2.26324,-3.07155 0,-1.45495 -1.29328,0 -3.39487,-2.74822 -5.81978,-0.80831 -3.23321,-2.26324 1.13163,-2.74823 2.26324,0.32332 0.16166,-0.64664 -1.77826,-0.96996 0,-0.48499 3.23321,0 1.77826,-3.07154 -1.29328,-1.93993 -0.32332,-2.74823 -1.45495,0.16166 -1.93992,2.10159 -0.64664,2.58657 -3.07155,-0.64665 -0.96997,-1.77826 1.77827,-1.93993 1.90333,-3.4456 -1.0611,-2.41227 -1.16564,-3.98133 z",MS:"m 631.55882,459.34458 -0.25426,1.25615 -5.17314,0 -1.45494,-0.8083 -2.10159,-0.32332 -6.78974,1.93992 -1.77826,-0.8083 -2.58657,4.20317 -1.10254,0.77802 -1.12383,-2.48798 -1.14312,-3.88659 -3.42933,-3.20071 1.1431,-5.54455 -0.68586,-0.91449 -1.82898,0.22862 -7.91792,0.87337 -24.5465,0.37337 -0.76974,-2.22536 0.87337,-8.3768 3.11684,-5.67281 5.22707,-9.1449 -0.44574,-2.4326 1.23686,-0.65625 0.43587,-1.91947 -2.31748,-2.07898 -0.11512,-2.14148 -1.83572,-4.12109 -0.109,-5.96277 1.32753,-2.48097 -0.2233,-3.41575 -1.76949,-3.08259 1.52642,-1.48221 -1.57061,-2.49954 0.45725,-1.65221 1.5774,-6.52637 2.48595,-2.03635 -0.64167,-2.36697 3.65797,-5.30253 2.83186,-1.35642 -0.22097,-1.67516 -0.28813,-1.6811 2.87606,-5.56767 2.34572,-1.23151 0.15163,-0.89301 37.34348,-3.88117 0.18486,6.28333 0.16166,16.65106 -0.8083,31.03885 -0.16166,14.06449 2.74824,18.75264 1.48437,13.39529 z",IA:"m 569.19154,199.5843 0.26438,2.7862 2.22372,0.57726 0.95394,1.22533 0.50001,1.85536 3.79284,3.35865 0.68587,2.3915 -0.67434,3.42447 -1.58231,3.23198 -0.79934,2.74179 -2.17275,1.60204 -1.71551,0.5724 -5.57902,1.8602 -1.39146,3.84869 0.72864,1.37174 1.84051,1.68259 -0.28293,4.03629 -1.76315,1.53786 -0.77141,1.64314 0.12722,2.77632 -1.88631,0.45724 -1.62545,1.10491 -0.27879,1.35263 0.27879,2.11492 -1.55102,1.11607 -2.47053,-3.13328 -1.26257,-2.44987 -65.73582,2.51485 -0.91803,0.16544 -2.0524,-4.51596 -0.22862,-6.63007 -1.60036,-4.11521 -0.68586,-5.25831 -2.28623,-3.65797 -0.91448,-4.80107 -2.74348,-7.54455 -1.14311,-5.37264 -1.37174,-2.17191 -1.60036,-2.74346 1.95398,-4.84383 1.37174,-5.71557 -2.74347,-2.05761 -0.45725,-2.74347 0.9145,-2.51485 1.71467,0 82.654,-1.26948 0.83426,4.18312 2.25218,1.56097 0.25671,1.42309 -2.02954,3.38931 0.19041,3.20552 2.51486,3.7982 2.52679,1.29362 3.07928,0.50305 0.65834,0.83236 z",MN:"m 475.23781,128.82439 -0.45725,-8.45904 -1.82898,-7.31592 -1.82898,-13.488725 -0.45725,-9.830778 -1.82898,-3.429343 -1.60036,-5.029695 0,-10.28802 0.68586,-3.886587 -1.82093,-5.451667 30.13242,0.03527 0.32332,-8.244684 0.64664,-0.161661 2.26325,0.484982 1.93992,0.808302 0.8083,5.496456 1.45495,6.143098 1.6166,1.616605 4.84982,0 0.32332,1.454944 6.30476,0.323321 0,2.101586 4.84981,0 0.32332,-1.293284 1.13162,-1.131623 2.26325,-0.646642 1.29328,0.969963 2.90989,0 3.87985,2.586567 5.3348,2.424907 2.42491,0.484982 0.48498,-0.969963 1.45494,-0.484982 0.48498,2.909889 2.58657,1.293284 0.48498,-0.484982 1.29329,0.161661 0,2.101586 2.58656,0.969963 3.07155,0 1.61661,-0.808303 3.23321,-3.233209 2.58656,-0.484981 0.80831,1.778265 0.48498,1.293283 0.96996,0 0.96996,-0.808302 8.89133,-0.323321 1.77826,3.071549 0.64665,0 0.71361,-1.084279 4.43991,-0.370665 -0.6121,2.279459 -3.93872,1.837125 -9.24578,4.061128 -4.77474,2.006897 -3.07155,2.586568 -2.42491,3.55653 -2.26324,3.879851 -1.77827,0.808304 -4.52649,5.01147 -1.29329,0.16166 -4.32778,2.75712 -2.46288,3.20511 -0.22862,3.19139 0.0944,8.04335 -1.37604,1.68875 -5.08154,3.75997 -2.23008,5.98241 2.87175,2.23371 0.67989,3.22698 -1.85524,3.23893 0.17079,3.74802 0.36886,6.7304 3.02825,3.00199 3.329,0 1.89111,3.1326 3.37917,0.50327 3.85916,5.67147 7.08729,4.11675 2.14315,2.87512 0.67115,6.43951 -81.2115,1.14479 -0.33792,-35.67685 -0.45724,-2.97209 -4.11521,-3.42934 -1.14312,-1.82898 0,-1.60037 2.0576,-1.60035 1.37174,-1.37174 0.22863,-3.20072 z",OK:"m 380.34313,320.82146 -16.68418,-1.27331 -0.88022,10.95243 20.46538,1.15688 32.05555,1.3036 -2.3346,24.41865 -0.45725,17.83257 0.22863,1.60036 4.34383,3.65796 2.0576,1.14311 0.68587,-0.22862 0.68587,-2.05761 1.37174,1.82899 2.0576,0 0,-1.37174 2.74347,1.37174 -0.45724,3.88658 4.11521,0.22862 2.51484,1.14312 4.11521,0.68587 2.51485,1.82898 2.28623,-2.0576 3.42934,0.68586 2.51485,3.42934 0.91448,0 0,2.28623 2.28623,0.68586 2.28622,-2.28622 1.82899,0.68586 2.51484,0 0.9145,2.51486 6.30107,2.07897 1.37174,-0.68586 1.82898,-4.11521 1.14311,0 1.14312,2.0576 4.11521,0.68587 3.65795,1.37174 2.9721,0.91449 1.82899,-0.91449 0.68586,-2.51485 4.34383,0 2.0576,0.91449 2.74347,-2.05761 1.14312,0 0.68587,1.60036 4.1152,0 1.60036,-2.0576 1.82899,0.45724 2.0576,2.51486 3.20071,1.82897 3.20073,0.9145 1.94108,1.11893 -0.3891,-37.21701 -1.37175,-10.97398 -0.16046,-8.87234 -1.43989,-6.53773 -0.7782,-7.17964 -0.0681,-3.81622 -12.13684,0.31874 -46.41004,-0.45724 -45.03891,-2.05762 -24.2912,-1.37173 z",TX:"m 361.46423,330.57358 22.69079,1.08594 31.09269,1.14312 -2.33461,23.4558 -0.29676,18.15352 0.0681,2.08179 4.34383,3.81843 1.98665,1.44716 1.18421,-0.55969 0.37337,-1.81772 1.14032,1.80362 2.11164,0.0439 -0.003,-1.44709 1.66994,0.96727 1.1387,0.40887 -0.35927,3.96765 4.08819,0.0935 2.92532,1.19717 3.95474,0.52538 2.38138,2.07898 2.1241,-2.07617 3.72494,0.61491 2.22091,3.22494 1.07496,0.32096 -0.16047,1.96527 2.21361,0.79229 2.33015,-2.0548 2.13302,0.61492 2.22938,0.0355 0.93307,2.43544 6.32809,2.11445 1.59305,-0.76693 1.48947,-4.17771 0.34072,0 0.90649,0.0816 1.22905,2.06863 3.92988,0.66528 3.337,1.12288 3.42563,1.19597 1.84058,-0.975 0.71376,-2.51484 4.45322,0.0442 1.80874,0.93078 2.79925,-2.10651 1.10364,0.0442 0.85104,1.60507 4.05472,0 1.51887,-2.02862 1.86737,0.40724 1.94603,2.40328 3.52057,2.04415 2.85876,0.80981 1.51362,0.79984 2.4467,1.99732 3.04304,-1.32779 2.69109,1.13888 0.56381,6.10594 -0.0398,9.70217 0.68586,9.53401 0.70218,3.60511 2.67533,4.41986 0.89818,4.95073 4.21595,5.53802 0.19602,3.14494 0.74637,0.78584 -0.73007,8.38007 -2.8721,5.0065 1.53297,2.15287 -0.63008,2.33808 -0.66957,7.40432 -1.50432,3.338 0.29488,3.50235 -5.66488,1.58518 -9.86129,4.5265 -0.96996,1.93992 -2.58657,1.93993 -2.10158,1.45494 -1.29329,0.8083 -5.65811,5.3348 -2.74823,2.10159 -5.3348,3.2332 -5.65811,2.42491 -6.30476,3.39487 -1.77826,1.45495 -5.81978,3.55653 -3.39487,0.64664 -3.87985,5.49645 -4.04151,0.32333 -0.96997,1.93992 2.26325,1.93993 -1.45495,5.49645 -1.29328,4.5265 -1.13162,3.87985 -0.8083,4.52649 0.8083,2.42491 1.77826,6.9514 0.96997,6.14309 1.77826,2.74823 -0.96996,1.45495 -3.07155,1.93992 -5.65812,-3.87985 -5.49645,-1.13162 -1.29329,0.48498 -3.23321,-0.64664 -4.20317,-3.07155 -5.17313,-1.13162 -7.59805,-3.39487 -2.10158,-3.87986 -1.29329,-6.46641 -3.2332,-1.93993 -0.64665,-2.26325 0.64665,-0.64664 0.32332,-3.39487 -1.29329,-0.64664 -0.64664,-0.96996 1.29328,-4.36484 -1.6166,-2.26324 -3.23321,-1.29329 -3.39487,-4.36483 -3.55653,-6.62808 -4.20317,-2.58657 0.16166,-1.93992 -5.3348,-12.2862 -0.8083,-4.20317 -1.77826,-1.93992 -0.16166,-1.45495 -5.98144,-5.33479 -2.58657,-3.07155 0,-1.13163 -2.58657,-2.10158 -6.78974,-1.13163 -7.43638,-0.64664 -3.07155,-2.26324 -4.52649,1.77826 -3.55653,1.45495 -2.26325,3.2332 -0.96996,3.7182 -4.36483,6.14309 -2.42491,2.42491 -2.58657,-0.96996 -1.77826,-1.13163 -1.93993,-0.64664 -3.87985,-2.26324 0,-0.64665 -1.77826,-1.93992 -5.17314,-2.10159 -7.43638,-7.7597 -2.26325,-4.68815 0,-8.08303 -3.23321,-6.46642 -0.48498,-2.74822 -1.6166,-0.96997 -1.13163,-2.10158 -5.01147,-2.10159 -1.29328,-1.6166 -7.11307,-7.92137 -1.29328,-3.23321 -4.68816,-2.26325 -1.45495,-4.36487 -2.58659,-2.90987 -1.93991,-0.48496 -0.64923,-4.67764 8.00187,0.68589 29.03499,2.74345 29.03508,1.60036 2.23353,-19.46182 3.88655,-55.55502 1.60039,-18.74732 1.37174,0.0286 m 99.02935,229.66274 -0.56581,-7.11308 -2.74824,-7.19392 -0.56582,-7.03225 1.53578,-8.24471 3.31406,-6.87059 3.4757,-5.41565 3.1524,-3.55655 0.64664,0.2425 -4.769,6.6281 -4.36484,6.54728 -2.02077,6.62809 -0.32332,5.17316 0.88913,6.14312 2.58658,7.19392 0.48498,5.17314 0.16166,1.45496 -0.88913,0.24248 z",NM:"m 288.15255,424.01315 -0.77541,-4.7481 8.64378,0.5254 30.17176,2.9459 27.26816,1.68989 2.21527,-18.70747 3.85736,-55.87597 1.73768,-19.38923 1.5717,0.12856 0.8254,-11.16339 -104.00445,-10.63595 -17.49735,120.43481 15.46067,1.98915 1.29328,-10.02295 29.23215,2.82935 z",KS:"m 507.88059,324.38028 -12.61826,0.20443 -46.08909,-0.45723 -44.55748,-2.05763 -24.62974,-1.25741 3.89379,-64.59497 22.08346,0.67517 40.28913,0.8414 44.30124,0.98758 5.09563,0 2.1844,2.1624 2.01766,-0.0214 1.6403,1.01247 -0.0625,3.00923 -1.82898,1.72537 -0.33225,2.23217 1.84308,3.40233 2.95236,3.19506 2.32735,1.61446 1.30077,11.24082 0.18913,36.08573 z",NE:"m 486.09787,240.70058 3.23061,7.01991 -0.12863,2.30252 3.45922,5.49388 2.71929,3.15234 -5.04948,0 -43.48256,-0.93868 -40.78686,-0.8903 -22.25222,-0.78387 1.07277,-21.32785 -32.31824,-2.92025 4.34383,-44.00986 15.54633,1.02881 20.11879,1.1431 17.83257,1.14312 23.77676,1.14311 10.74526,-0.45724 2.0576,2.28622 4.80108,2.9721 1.14311,0.91449 4.34383,-1.37174 3.88659,-0.45724 2.74347,-0.22863 1.82898,1.37174 4.05743,1.60036 2.97209,1.60036 0.45725,1.60036 0.91449,2.0576 1.82898,0 0.79798,0.0462 0.89423,4.68182 2.92026,8.46792 0.57253,3.75671 2.52349,3.77425 0.56959,5.11414 1.60724,4.24037 0.25234,6.47426 z",SD:"m 476.44687,204.02465 -0.0474,-0.58087 -2.89571,-4.84544 1.86023,-4.71211 1.49273,-5.88654 -2.78187,-2.07971 -0.38516,-2.74346 0.7924,-2.55435 3.18851,0.0152 -0.12308,-5.00614 -0.3333,-30.17425 -0.61773,-3.76758 -4.07232,-3.33093 -0.98263,-1.67696 -0.0625,-1.60882 2.02212,-1.5294 1.53222,-1.66567 0.24496,-2.65679 -58.25709,-1.60035 -54.79921,-3.44909 -5.32527,63.69119 14.59027,0.9038 19.94985,1.20561 17.74305,0.92859 23.77676,1.30358 11.9827,-0.42464 1.9663,2.24518 5.19464,3.25335 0.76389,0.72275 4.54144,-1.45281 6.54054,-0.61491 1.6753,1.33627 4.20451,1.59613 2.94506,1.63583 0.39898,1.48381 1.03949,2.24088 2.23737,-0.20136 z",ND:"m 475.30528,128.91846 -0.61491,-8.43367 -1.67695,-6.81592 -1.89149,-13.02422 -0.45724,-10.987026 -1.73946,-3.077142 -1.75661,-5.194396 0.0312,-10.44427 0.62336,-3.824087 -1.8341,-5.467761 -28.64225,-0.564027 -18.59095,-0.646642 -26.51232,-1.293284 -22.94634,-2.133869 -6.99324,67.176834 54.93224,3.34365 58.06901,1.38583 z",WY:"m 360.37668,143.27587 -106.7426,-13.45706 -14.08348,88.45803 113.26461,13.58549 7.56147,-88.58646 z",MT:"M 369.20952,56.969133 338.5352,54.1613 l -29.26055,-3.55653 -29.26054,-4.041512 -32.3321,-5.334795 -18.42929,-3.39487 -32.72365,-6.932736 -4.47902,21.347532 3.42934,7.544541 -1.37174,4.572452 1.82898,4.572451 3.20073,1.371739 4.62082,10.769453 2.6951,3.176523 0.45724,1.143118 3.42934,1.143118 0.45725,2.057593 -7.0873,17.603953 0,2.51485 2.51485,3.20071 0.91448,0 4.80107,-2.97209 0.68588,-1.14312 1.60036,0.68587 -0.22863,5.25832 2.74348,12.57425 2.97209,2.51484 0.91448,0.68587 1.82899,2.28622 -0.45725,3.42935 0.68587,3.42933 1.14312,0.9145 2.28622,-2.28623 2.74347,0 3.20072,1.60036 2.51485,-0.91449 4.11521,0 3.65795,1.60036 2.74348,-0.45725 0.45724,-2.9721 2.97209,-0.68586 1.37174,1.37174 0.45725,3.20071 1.42587,0.83464 1.88695,-11.03474 106.74567,13.42892 8.80221,-86.299157 z",CO:"m 380.03242,320.96457 4.90324,-86.32496 -113.38856,-12.64396 -12.21382,87.93916 120.69914,11.02976 z",ID:"m 148.47881,176.48395 8.77087,-35.22072 1.37174,-4.22952 2.51484,-5.94418 -1.25742,-2.28623 -2.51486,0.11431 -0.80017,-1.0288 0.45725,-1.14311 0.34292,-3.08641 4.45815,-5.48695 1.82898,-0.45724 1.14311,-1.14311 0.57156,-3.20072 0.91448,-0.68586 3.88659,-5.82988 3.88659,-4.34383 0.22862,-3.772268 -3.42934,-2.629163 -1.53555,-4.400983 13.62491,-63.341691 13.51759,2.528111 -4.40808,21.383013 3.56035,7.485352 -1.58111,4.66084 1.96985,4.641233 3.13822,1.255191 3.83534,9.556588 3.51269,4.437154 0.50725,1.143118 3.34095,1.143118 0.36885,2.097075 -6.97101,17.376092 -0.16518,2.56593 2.63112,3.3217 0.90508,-0.0489 4.91129,-3.0256 0.67742,-1.09497 1.56231,0.65886 -0.27844,5.35372 2.73925,12.58271 3.91783,3.17791 1.68118,2.16545 -0.71661,4.08386 1.06622,2.80741 1.06163,1.09128 2.47929,-2.35142 2.84816,0.0489 2.91925,1.3352 2.78002,-0.68193 3.79426,-0.16048 3.9789,1.60036 2.74348,-0.29676 0.49674,-3.03731 2.93259,-0.76483 1.26017,1.51591 0.44093,2.94496 1.42434,1.21321 -8.386,53.60866 c 0,0 -87.96599,-16.70061 -94.95939,-18.20435 z",UT:"m 259.49836,310.10509 -83.74903,-11.87225 20.58761,-112.54135 46.78031,8.74514 -1.4848,10.63042 -2.31162,13.17266 7.80769,0.92837 16.40652,1.80479 8.21097,0.85564 -12.24765,88.27658 z",AZ:"m 144.9112,382.62909 -2.62701,2.15833 -0.32332,1.45495 0.48498,0.96996 18.91427,10.66959 12.12454,7.59804 14.7111,8.56801 16.81269,10.02295 12.2862,2.42491 24.95116,2.70491 17.25561,-119.12707 -83.73563,-11.91725 -3.09239,16.41246 -1.60629,0.0153 -1.71467,2.62916 -2.51485,-0.11432 -1.25742,-2.74347 -2.74347,-0.34293 -0.9145,-1.14311 -0.91448,0 -0.9145,0.57156 -1.94329,1.0288 -0.1143,6.97298 -0.22864,1.71467 -0.57154,12.57424 -1.48605,2.17191 -0.57156,3.31503 2.74347,4.91539 1.25742,5.82988 0.80019,1.0288 1.0288,0.57156 -0.11432,2.28622 -1.60035,1.37173 -3.42934,1.71467 -1.94329,1.9433 -1.48605,3.65795 -0.57156,4.91539 -2.85778,2.74347 -2.0576,0.68587 0.13569,0.82988 -0.45725,1.71467 0.45725,0.80018 3.65796,0.57154 -0.57156,2.74348 -1.48605,2.17191 -3.77227,0.91449 z",NV:"m 196.39273,185.57552 -23.63891,128.82275 -1.83224,0.34915 -1.57276,2.40618 -2.37294,0.0107 -1.47195,-2.74347 -2.61847,-0.37842 -0.77092,-1.10763 -1.03783,-0.054 -2.77837,1.64429 -0.31026,6.78548 -0.36209,5.77717 -0.34857,8.59281 -1.4471,2.08916 -2.43892,-1.07403 -69.079886,-104.20119 18.989116,-67.58491 93.0921,20.66601 z",OR:"m 148.72184,175.53153 8.8497,-34.80151 1.05079,-4.22952 2.35437,-5.62323 -0.61551,-1.16288 -2.51486,-0.0462 -1.2816,-1.6707 0.45724,-1.46407 0.50341,-3.24688 4.45815,-5.48695 1.82898,-1.09915 1.14311,-1.14311 1.48604,-3.56563 4.04706,-5.6694 3.56563,-3.8624 0.22862,-3.451314 -3.26886,-2.468682 -1.78341,-4.642625 -12.66377,-3.61197 -15.08909,-3.54365 -15.43202,0.114306 -0.45724,-1.371729 -5.48695,2.057604 -4.45814,-0.571559 -2.40054,-1.600361 -1.25742,0.685875 -4.68676,-0.228632 -1.71467,-1.371729 -5.25832,-2.057604 -0.800182,0.114316 -4.34383,-1.486056 -1.943291,1.828983 -6.172812,-0.342927 -5.944183,-4.115209 0.685865,-0.80018 0.228621,-7.773173 -2.286225,-3.886577 -4.115208,-0.571559 -0.685865,-2.514847 -2.353932,-0.466565 -5.798525,2.058784 -2.263247,6.466418 -3.233209,10.022949 -3.23321,6.466419 -5.011474,14.064461 -6.466419,13.579473 -8.083023,12.60952 -1.939926,2.90989 -0.808302,8.568 0.386095,12.08023 112.578342,26.32133 z",WA:"m 102.07324,7.6117734 4.36483,1.4549443 9.69963,2.7482283 8.568,1.939925 20.0459,5.658117 22.95579,5.658116 15.22312,3.207173 -13.63236,63.585811 -12.445,-3.525318 -15.50801,-3.570679 -15.22929,0.03324 -0.45557,-1.344699 -5.59922,2.179293 -4.59543,-0.736744 -2.14697,-1.584054 -1.31321,0.657976 -4.73566,-0.140243 -1.69836,-1.349633 -5.26304,-2.112303 -0.734971,0.146918 -4.389122,-1.524448 -1.893298,1.817379 -6.265906,-0.298733 -5.925698,-4.125702 0.778957,-0.932763 0.121223,-7.677452 -2.281999,-3.839701 -4.115208,-0.60704 -0.67741,-2.510616 -2.275512,-0.456932 -3.554948,1.230576 -2.263247,-3.219247 0.323321,-2.909889 2.748228,-0.323321 1.616605,-4.041511 -2.586568,-1.131624 0.161661,-3.718191 4.364833,-0.646641 -2.748228,-2.748228 -1.454945,-7.113061 0.646642,-2.909888 0,-7.921363 -1.778265,-3.23321 2.263247,-9.376307 2.101586,0.484981 2.424907,2.909889 2.748228,2.586567 3.233209,1.939926 4.526493,2.101586 3.071551,0.646642 2.909889,1.454944 3.394873,0.969963 2.263246,-0.16166 0,-2.424908 1.293284,-1.131623 2.101582,-1.293284 0.32333,1.131624 0.32332,1.778265 -2.263251,0.484981 -0.323321,2.101586 1.778262,1.454945 1.13163,2.424907 0.64664,1.939925 1.45494,-0.16166 0.16166,-1.293284 -0.96996,-1.293284 -0.48498,-3.233209 0.8083,-1.778265 -0.64664,-1.454944 0,-2.263247 1.77827,-3.55653 -1.13163,-2.586568 -2.42491,-4.8498139 0.32333,-0.8083023 1.13162,-0.8083024 z m -9.456692,5.9789646 2.020764,-0.16166 0.484982,1.374119 1.535779,-1.616615 2.344082,0 0.808303,1.535779 -1.53578,1.69744 0.646652,0.808313 -0.727477,2.020761 -1.374119,0.404146 c 0,0 -0.889138,0.08084 -0.889138,-0.242485 0,-0.323321 1.454955,-2.586578 1.454955,-2.586578 l -1.69744,-0.565817 -0.323321,1.454954 -0.727478,0.646642 -1.535782,-2.263257 -0.484982,-2.505742 z",CA:"m 144.69443,382.19813 3.94008,-0.48862 1.48604,-2.01144 0.54454,-2.94109 -3.55152,-0.59012 -0.51417,-0.66822 0.4775,-2.03231 -0.15928,-0.58967 1.92257,-0.61959 3.04278,-2.83268 0.58156,-4.9951 1.3799,-3.40211 1.94329,-2.16626 3.51887,-1.58967 1.65439,-1.60483 0.0687,-2.10884 -0.99333,-0.58001 -1.02315,-1.07273 -1.15522,-5.84845 -2.6852,-4.83009 0.56581,-3.505 -2.41958,-1.02931 -69.061322,-104.1784 18.902112,-67.60149 -67.079863,-15.69796 -1.506896,4.73324 -0.161661,7.43638 -5.173135,11.80121 -3.071548,2.58657 -0.323321,1.13162 -1.778266,0.80831 -1.454944,4.20317 -0.808302,3.23321 2.748228,4.20317 1.616605,4.20317 1.131623,3.55653 -0.323321,6.46642 -1.778265,3.07155 -0.646642,5.81978 -0.969963,3.71819 1.778265,3.87985 2.748228,4.52649 2.263247,4.84982 1.293283,4.04151 -0.32332,3.23321 -0.323321,0.48498 0,2.10158 5.658116,6.30476 -0.484981,2.42491 -0.646642,2.26325 -0.646642,1.93992 0.16166,8.24469 2.101586,3.71819 1.939926,2.58656 2.748228,0.48499 0.969963,2.74822 -1.131623,3.55653 -2.101587,1.61661 -1.131623,0 -0.808302,3.87985 0.484981,2.90989 3.23321,4.36483 1.616604,5.3348 1.454944,4.68815 1.293284,3.07155 3.39487,5.81978 1.454944,2.58656 0.484982,2.90989 1.616604,0.96996 0,2.42491 -0.808302,1.93993 -1.778265,7.11306 -0.484982,1.93992 2.424908,2.74823 4.203172,0.48498 4.526493,1.77827 3.879851,2.10158 2.909889,0 2.909888,3.07155 2.586567,4.84982 1.131624,2.26324 3.879851,2.10159 4.849814,0.8083 1.454944,2.10159 0.646642,3.23321 -1.454944,0.64664 0.323321,0.96996 3.233211,0.8083 2.748228,0.16167 3.159889,-1.68685 3.879854,4.20317 0.808302,2.26325 2.586572,4.20317 0.32332,3.23321 0,9.37631 0.48498,1.77826 10.02295,1.45495 19.72257,2.74822 13.84504,1.3497 z m -88.135212,-43.71668 1.293288,1.53578 -0.16166,1.29329 -3.233221,-0.0808 -0.565814,-1.21246 -0.646644,-1.45495 3.314051,-0.0808 z m 1.939932,0 1.212458,-0.64664 3.556543,2.10159 3.07156,1.21245 -0.889136,0.64666 -4.526509,-0.2425 -1.61661,-1.61661 -0.808306,-1.45495 z m 20.692614,19.80348 1.778265,2.34408 0.808313,0.96997 1.535779,0.56581 0.565807,-1.45495 -0.969963,-1.77827 -2.667403,-2.02076 -1.050798,0.16166 0,1.21246 z m -1.454955,8.64886 1.778276,3.15239 1.212458,1.93994 -1.454954,0.24248 -1.293284,-1.21245 c 0,0 -0.727477,-1.45495 -0.727477,-1.85911 0,-0.40414 0,-2.18242 0,-2.18242 l 0.484981,-0.0808 z"}}}}),b}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.js deleted file mode 100644 index 1b84c64..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.js +++ /dev/null @@ -1,233 +0,0 @@ -/*! - * - * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) - * Requires jQuery and Mapael >=2.0.0 - * - * Map of World countries - * - * Equirectangular projection - * Uses the ISO 3166-1 alpha-2 for country names (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) - * - * @author Vincent Brouté - * @source https://commons.wikimedia.org/wiki/File:BlankMap-World6-Equirectangular.svg - * - * @deprecated : this map will be definitely moved to 'mapael-maps' repository starting from the next major release (3.0.0). - * You can use instead https://github.com/neveldo/mapael-maps/blob/master/world/world_countries.js - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery'), require('jquery-mapael')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery', 'mapael'], factory); - } else { - // Browser globals - factory(jQuery, jQuery.mapael); - } -}(function ($, Mapael) { - - "use strict"; - - $.extend(true, Mapael, - { - maps : { - world_countries : { - width : 999.29852, - height : 392.03476, - getCoords : function (lat, lon) { - var xfactor = 2.775076875916; - var xoffset = 471.505926315; - var x = (lon * xfactor) + xoffset; - var yfactor = -2.8112860731578; - var yoffset = 235.89691962022; - var y = (lat * yfactor) + yoffset; - - return {'x' : x, 'y' : y}; - }, - 'elems': { - "PE" : "m 246.37,248.26 c 0.32,-1.79 4.23,-4.35 2.73,-1.46 -1.45,2.09 2.59,0.39 3.11,2.75 2.72,-1.13 1.47,-5.5 4.96,-5.95 3.11,-0.83 7.69,-4.81 5.11,-7.43 2.35,-1.19 4.43,3.08 6.14,4.56 0.7,2.08 3.04,2.21 4.97,1.17 2.11,-0.15 5.75,1.18 2.69,3.69 -0.51,0.71 3.29,2.56 0.76,1.93 -3.16,0.08 -7.44,1.58 -7.92,5.32 -0.06,2.05 -3.42,3.58 -1.21,5.52 0.76,1.37 2.13,3 1.77,3.78 2.26,0.16 3.53,3.49 5.91,0.61 2.26,-1.86 -1.32,6.12 2.9,3.61 2.5,1.32 3.37,4.79 2.23,7.29 0.95,2.52 -2.79,6.04 0.3,7.72 -0.57,1.85 -2.55,3 -2.55,4.98 -3.44,2.21 -5.57,-4.41 -9.39,-4.56 -3.34,-1.31 -6.28,-3.43 -8.43,-6.26 0.32,-1.93 -1.53,-4.59 -2.66,-7.02 -2.53,-2.81 -3.15,-7.33 -5.63,-10.49 -0.47,-3 -4.42,-4.05 -5.21,-5.89 1.88,0.13 -1.01,-3.15 -0.55,-3.87 z", - "BF" : "m 456.58,206.27 c 1.04,-2.27 -0.4,-4.54 2.65,-4.79 0.7,-1.85 0.88,-4.37 3.11,-3.1 0.83,-0.73 0.44,-1.27 1.59,-1.56 1.43,-1.81 4.2,-2.03 6.48,-3.6 3.23,-0.6 1.57,4 4.41,4.53 1.15,0.24 -1.42,0.91 0.87,2 1.62,0.34 2.62,-0.07 2.39,1.8 0.95,2.4 -3.19,1.99 -4.47,3.19 -3.06,-0.32 -7.13,-0.27 -9.66,0.43 -0.06,1.39 1.22,5.92 -0.89,2.56 -2.2,-0.12 -4.4,1.93 -5.53,-1.03 -0.26,-0.14 -0.88,0.05 -0.95,-0.42 z", - "FR" : "m 320.44,229.09 c 3.5,-2.22 -0.96,-5.61 1.06,-8.23 1.75,-3.18 5.63,1.18 6.32,2.34 0.23,-1.32 1.46,1.48 -0.36,2.69 -1.07,2.79 -2.6,4.03 -5.24,3.39 -0.49,0.72 -1.29,0.16 -1.78,-0.18 z m -17.32,-33.96 c -1.44,-0.36 -0.63,-2.45 0.08,-0.26 z m 192.61,-78.74 c 1.65,-1.47 3.13,-2.32 2.66,0.76 -1.27,4.32 -2.55,0.43 -2.66,-0.76 z m -36.96,-15.9 c 2.7,-0.08 -1.08,-0.93 1.51,-0.72 -4.33,-0.12 3.07,-2.66 4.28,-0.7 1.46,-0.41 2.78,0.1 3.08,-0.51 -0.68,-1.77 -1.57,-3.78 0.78,-2.26 1.39,1.11 5.71,0.69 4,-0.37 2.05,-0.92 4.59,-0.73 4.1,-3.44 2.64,-1.5 4.35,1.69 6.91,1.76 -0.28,2.27 2.31,-0.77 2.15,1.29 2.43,0.75 4.64,1.76 7.05,1.89 3.81,0.08 -0.46,2.1 0.15,4.48 -2.03,-0.09 -2.17,1.61 -4.01,3.03 -0.88,1.88 2.46,-1.44 2.47,1.52 -0.67,0.65 1.58,2.16 -0.98,2.37 1.7,0.78 0.11,3.19 2.93,2.66 -1.77,2.7 -4.67,3.56 -7.34,2.1 0.36,-0.21 -3.5,-0.83 -5.33,0.71 0.58,2.4 -1.63,2.53 -3.83,1.72 -1.61,-1.41 -4.18,-10e-4 -6.48,-0.95 -2.3,-0.72 -3.81,-0.89 -2.1,-3.18 0.98,-2.31 -0.1,-1.94 0.71,-4.33 1.35,0.73 2.04,2.86 0.92,0.27 -2.12,-1.23 -0.46,-0.44 -0.93,-2.5 -1.83,0.71 -4.34,-3.53 -1.71,-2.49 -2.59,-0.07 -1.33,-0.92 -3.27,-0.96 1.23,-0.3 -1.33,0.1 -0.81,-0.41 -0.69,-0.31 -3.16,-0.22 -4.24,-0.98 z", - "LY" : "m 497.92,151.14 c 1.22,-1.02 3.3,-2.31 2.26,-4.45 1.64,-1.36 4.45,-1.74 3.66,-4.37 2.93,1.82 6.41,0.15 9.36,2.05 2,0.86 2.23,4.49 5.53,3.54 3.2,0.07 6.84,5.03 9.01,0.5 -2.33,-4.25 4.21,-6.37 7.31,-4.84 1.14,2.42 5.27,1.09 6.57,3.1 -1.75,2.8 -0.4,6.49 -0.36,9.96 -0.07,7.58 0.05,15.16 -0.06,22.74 -1.18,0.21 -3.56,-0.76 -2.74,1.4 -7.23,-3.84 -14.52,-7.62 -22,-10.94 -2.87,0.55 -5.22,3.4 -7.74,0.43 -3.87,0.51 -4.52,-4.36 -8.24,-3.67 -0.09,-2.15 -4.24,-4.5 -1.19,-6.01 -0.81,-3.08 1.09,-6.77 -1.38,-9.44 z", - "BY" : "m 536.15,88.53 c 2.51,-0.84 2.42,-2.61 0.94,-4.65 2.05,0.38 5.52,-0.77 6.14,-1 -1.65,-1.71 4.41,-2.24 2.21,-3.4 2.47,-1.46 5.19,-2 8.01,-1.21 0.87,0.9 5.84,-0.04 4.08,3.31 1.82,2.07 3.09,2.51 5.12,3.65 -0.7,1.84 -5.16,-0.46 -3.09,2.59 1.51,1.91 -4.05,1.08 -2.99,3.57 -2.54,-1.13 -4.21,-0.29 -6.38,-0.94 -2.85,0.32 -5.9,-1.52 -9.1,-0.89 -1.6,-0.22 -4.73,2.54 -3.66,-0.47 -0.38,-0.29 -0.92,-0.21 -1.27,-0.56 z", - "PK" : "m 640.67,151.64 c 3.95,1.79 8.26,1.07 12.34,0.72 4.22,1.01 1.66,-5.15 5.25,-4.55 2.06,0.2 0.74,-1.54 3.23,-1.54 2.86,1.63 2.24,-2.57 3.79,-3.75 3.59,0.37 -1.34,-3.47 1.89,-2.43 2.95,0.23 1.1,-2.43 3.35,-3.6 -0.01,-1.31 -2.18,-3.16 0.77,-3.47 2.85,-1.65 6.81,-1.33 9.59,-1.23 2.13,0.39 1.58,3.56 3.46,3.2 1.26,1.55 5.23,0.15 1.53,1.71 -1.9,2.5 -5.73,1.36 -8.5,1.33 -1.73,1.51 1.24,1.92 0.04,3.16 -1.34,2.56 5.7,3.16 2.32,4.38 -1.97,1.16 0.04,3.18 -2.52,4.09 -1.14,1.82 -3.07,3.92 -4.92,5.76 -1.17,3.02 -4.19,1.45 -5.74,1.86 -1.69,1.44 -2.62,3.46 0.03,4.04 -0.74,2.43 3,2.59 2.19,5.35 -0.7,0.83 -4.08,0.91 -6.22,0.54 -1.11,2.01 -2.29,1.6 -3.54,0.89 -0.58,-0.52 -0.41,-2.6 -2.23,-2.62 0.82,-1.92 -2.84,-2.17 -0.57,-1.34 -3.12,0.1 -5.6,0.7 -7.75,0.13 -1.6,0.26 -4.51,1.16 -5.62,0.13 -0.69,-4.03 4.36,-2.41 4.62,-5.27 -2.66,0.34 -0.14,-4.03 -3.41,-3.72 -1.62,-0.75 -1.86,-2.85 -3.39,-3.79 z", - "ID" : "m 844.1,252.59 c 0.28,1.08 0.13,-2.98 1.43,-0.99 0.85,2.54 -1.43,2.01 -1.43,0.99 z m -70.2,-19.41 c 0.55,-1.5 1.03,-0.93 0.47,-1.62 1.7,-4.63 2.41,3.7 5.92,1.12 2.7,0.67 3.97,-2.97 6.65,-0.62 2.54,-0.19 3.17,-1.43 4.17,-3.33 0.53,-1.38 1.48,-3.37 2.12,-5.45 2.11,0.1 5.07,0.12 4.94,1.43 1.01,1.31 -2.48,-0.15 -0.69,1.65 -0.18,0.67 2.72,2.27 1.24,3.68 1.07,1.24 5.35,3.79 1.08,3.13 -1.78,-1.04 -2.61,3.94 -1.82,4.68 -0.99,0.36 -2.22,1.17 -2.39,1.26 -1.79,1.91 -0.28,1.88 -0.58,3.73 -1.09,0.57 -0.82,3.52 -4.02,4.03 -2.06,1.1 -1.24,-3.42 -2.78,-1.91 -1.62,1.17 -2.41,-2.34 -3.81,0.19 -1.82,-0.08 -2.62,0.99 -2.68,-1.63 -2.12,1.16 -2.49,0.45 -4.17,0.2 -0.82,-2.04 0.27,-5.83 -2.53,-5.61 1.04,-0.68 -1.46,-1.32 -0.21,-2.52 -0.6,-0.57 -1.28,-1.56 -0.93,-2.41 z m -3.25,9.64 c -1.93,3.7 4.6,0.57 0,0 z m -6.54,-2.36 c -1.17,1.33 2.05,1.13 2.02,3.17 2.09,2.06 2.52,-1.43 0.47,-1.37 -0.4,-3.22 -1.04,-2.02 -2.49,-1.8 z m -6.41,-7.05 c -2.5,-2.43 -1.84,1.04 0,0 z m -14.87,0.47 c 2.59,-1.55 -4.34,-4.6 0,0 z m -0.58,-13.04 c -2.16,1.1 -4.7,-1.74 -6.38,-0.52 0.8,3.59 5,4.51 6.74,7.4 0.7,2.45 4.36,2.68 4.04,6.05 1.16,2.15 3.68,3.94 4.67,6.59 1.11,3.63 4.3,6.14 7.08,8.63 1.57,0.47 4.02,4.81 3.73,2.14 1.72,1.03 1.63,-0.27 3.17,0.77 0.5,-2.69 -0.31,-5.3 0.77,-7.65 -0.83,-1.61 -3.03,-3.22 -4.09,-1.06 1.48,-1.31 -0.14,-3.14 -1.22,-4.66 -2.88,-0.05 -1.81,-2.35 -2,-2.39 2.65,-1.16 -1.22,-2.63 -2.39,-1.04 -0.85,0.26 3.05,-1.4 0.22,-1.54 -1.79,-1.19 -3.08,-3.65 -5.05,-4.24 0.97,2.75 -2.27,-2.24 -2.25,-1.11 -0.91,-2.81 -5,-3.14 -5.7,-6.04 -0.29,-0.58 -0.86,-0.92 -1.34,-1.33 z m 94.76,34.81 c -2.37,1.03 -0.94,4.18 0.01,0.75 -0.25,-0.4 0.73,-0.48 -0.01,-0.75 z m -16.26,2.53 c 1.92,0.08 3.88,-1.52 0.8,-0.88 -0.51,-0.19 -0.78,0.52 -0.8,0.88 z m -3.62,0.33 c -1.7,1.62 3.67,0.44 0.84,0.12 l -0.42,-0.08 z m -2.98,0.4 c -1.36,2.21 2.94,-1.13 0.38,0.28 0.21,-0.23 -0.21,-0.46 -0.38,-0.28 z m -9.47,1.52 c 2.72,0.11 5.82,0.66 7.79,-1.08 1.07,-2.18 -0.65,1.4 -2.62,0.11 -1.61,0.69 -5.33,-2.08 -5.54,0.96 l 0.15,0.13 z m -2.95,2.04 c 1.18,0.19 5.35,3.62 4.82,0.86 -1.41,-1.2 -3.09,-1.98 -4.82,-0.86 z m -2.85,-1.73 c 1.18,-1.38 2.5,0.46 2.65,-0.56 2.04,-0.15 -0.51,-1.28 -0.71,-1.21 -0.94,0 -3.71,-1.15 -1.29,0.64 0.46,1.44 -4.5,-1.9 -3.7,1.37 0.95,0.64 2.05,-0.35 3.06,-0.24 z m -4.33,-1.99 c -1.7,1.09 -1.19,2.65 0.49,1.64 0.52,-0.83 0.94,-1.71 -0.49,-1.64 z m -5.16,-0.35 c 1.23,1.07 1.75,2.98 3.21,1.1 0.5,-2.05 -2.43,-0.3 -3.21,-1.1 z m -4.26,-3.37 c -2.23,2.03 6.23,-0.05 1.48,-0.02 -0.49,-0.01 -0.99,-0.1 -1.48,0.02 z m -17.24,-2.34 c -2.16,-1.59 -3.86,2.62 -3.51,2.14 3.4,-0.5 2.28,2.56 5.73,2.02 3.28,0.83 6.78,0.67 10.2,1.96 3.01,0.08 7.42,0.77 9.28,1.2 -0.36,-1.74 -0.25,-3.59 -2.97,-2.58 -2.68,-0.14 -1.7,-3.15 -4.88,-2.73 -1.48,-0.51 -2.83,-1.36 -3.81,0.5 -3.04,0.39 -4.71,-1.18 -6.93,-2.09 -1.3,-0.08 -1.96,-1.08 -3.1,-0.43 z m 46.68,11.07 c -0.68,2.23 3.93,-0.11 4.33,-1.86 0.55,-2.56 -2.33,0.27 -2.46,0.44 -1.17,-0.63 -1.28,0.52 -1.88,1.42 z m 19.83,-26.89 c 0.96,-0.2 -1.01,-1.41 0.79,-0.29 2.41,-1.1 -4.14,-0.71 -1.17,0.04 l 0.24,-0.12 z m -1.92,4.45 c 2.66,0.34 -0.48,-2.04 -0.41,-0.14 z m -0.02,4.1 c 2.13,1.84 3.14,0.23 1.08,-1.3 -2.01,-0.19 -6.73,-1.71 -6.8,1.46 0.13,-2.06 2.17,0.07 2.86,-0.49 1.1,0.73 2.05,-0.7 2.86,0.33 z m -6.51,-9.78 c -0.04,1.56 3.12,3.66 1.01,0.99 -2.27,-3.46 2.38,-1.26 1.92,-2.11 -3.14,-0.41 2.08,-3.57 -0.99,-3.05 -0.12,0.95 -3.06,2.86 -1.18,0.71 0.36,-1.5 0.16,-4.13 -1.02,-1.09 -0.89,1.52 0.52,2.99 0.25,4.55 z m -0.53,4.05 c -0.8,1.66 3.89,0.54 0.65,-0.16 h -0.31 z m 0.13,-3.16 c -1.86,0.54 2.01,2.75 0.39,0.39 l -0.11,-0.15 z m -2.29,9.9 c 4.74,-0.87 -3.2,-3.92 -1.39,-0.73 0.41,0.34 0.92,0.5 1.39,0.73 z m -6.26,-6.11 c -0.8,2.07 4.64,-0.11 1.11,0.16 l -0.62,-0.15 z m -3.27,-0.05 c 1.79,-0.81 -1.37,-2.18 -1.02,-0.14 1.05,-1.09 0.3,-0.5 1.02,0.14 z m -0.52,7.77 c -1.92,1.21 -1.02,5.26 0.11,2.25 -1.83,-0.61 1.19,-1.26 -0.11,-2.25 z m -1.48,2.9 c 1.73,-3.14 -1.78,-1.56 -0.22,-0.2 l 0.06,-0.18 z m -8.79,-0.75 c -0.46,2.31 4.29,1.43 2.53,-0.51 1.29,-2.09 -1.63,-7.27 2.21,-6.28 -0.53,1.72 -0.32,3.05 1.43,3.94 -1.14,1.89 1.48,2.61 1.8,0.87 2.98,0 1.1,-1.2 0.14,-2.61 1.21,-1.12 -1.82,-3.54 -2.58,-4.95 2.21,0.86 4.01,-3.08 5.78,-2.6 -0.09,-1.6 -2.38,-0.18 -1.96,-0.29 -2.28,0.21 -3.49,0.41 -5.06,1.85 -3,-0.9 -3.37,-6.82 0.98,-5.19 3.28,-1.16 7.69,2.35 9.98,-1.5 2.41,-2.9 -0.75,-1.66 -1.84,0.03 -3.07,0.67 -6.23,-0.21 -9.11,-1.01 -1.06,1.59 -3.12,1.29 -3.23,3.95 -0.71,-0.41 1.08,2.83 -0.42,2.18 -0.21,2.8 -2.89,4.96 -1.82,7.66 2.5,-1.68 2.02,3.47 1.17,4.47 z m -63.9,-21.23 c 1.46,-0.3 -3.53,-2.47 -0.65,-0.5 l 0.38,0.19 z m 96.92,9.51 c 1.18,-1.98 4.71,-1.91 6.93,-0.68 2.5,0.02 0.1,5.72 2,5.35 0.45,-1.2 1.5,4.18 3.35,1.35 1.75,-2.47 3.53,-3.07 5.68,-4.58 2.94,0.89 5.63,2.49 8.67,3.03 0.6,2.99 0.4,7.71 -0.01,11.23 0.48,1.8 0.85,6.39 -0.18,6.81 -1.4,-2.86 -3.85,-2.48 -5.38,-2.53 1.09,-1.45 -0.76,-2.94 0.76,-2.52 -1.89,-0.05 -1.63,-1.63 0.12,-0.65 -2.37,-0.6 -2.13,-3.71 -3.2,-4 -1.28,-1.43 -5.02,-2.77 -7.57,-3.05 -2.1,-0.01 -1.41,-1.84 -1.44,-1.56 -1.47,0.45 -3.78,-0.48 -2.6,-2.4 -0.46,-0.51 -1.7,5.09 -3.09,1.82 1.88,-1.26 -4.51,-3.14 -0.21,-2.72 2.01,-1.5 2.99,0.56 3.52,-1.18 0.19,-1.16 -4.95,0.93 -5.48,-1.23 0.65,-1.76 -2.77,-0.49 -2.4,-1.85 z m 17.69,20.64 c 1.89,1.91 6.05,-3.52 1.68,-2.47 -1.02,0.41 -1.3,1.56 -1.68,2.47 z m -5.92,-18.96 c 0.85,1.34 6.01,0.49 1.74,0.18 -0.58,-0.06 -1.16,-0.13 -1.74,-0.18 z", - "YE" : "m 619.35,188.7 c -1.65,-1.63 -1.51,-5.17 -3.76,-6.5 -3.5,0.77 -7.67,0.07 -10.51,2.66 -1.04,1.42 -2.24,4.24 -3.93,2.02 -3.11,0.26 -7.42,-1.26 -9.6,0.49 -0.06,1.62 -1.53,3.91 -1.31,5.28 1.62,1.29 0.77,6.66 3.08,7.25 3.29,1.04 4.59,-2.58 7.98,-2.06 4,-1.07 6.96,-3.4 10.98,-4.53 2.43,-0.43 4.63,-1.26 4.89,-3.69 0.67,-0.45 1.49,-0.49 2.17,-0.91 z m 1.62,12.3 c 6.67,-0.85 -4.22,-1.91 0,0 z", - "MG" : "m 591.79,297.71 c 1.2,2.82 0.97,7.37 2.95,8.73 2.79,1.88 7.92,0.75 8.65,-2.85 1.29,-3.83 2.44,-7.72 3.73,-11.54 1.42,-3.12 1.53,-7.02 3.01,-9.95 -0.6,-1.37 -0.73,-4.62 0.82,-1.66 1.9,-2.04 -0.38,-5.85 -0.85,-8.49 -0.87,-0.29 -1.43,-3.51 -1.9,-1.92 -1.27,0.91 -0.45,3.18 -2.27,4.06 -0.19,0.19 -1.97,-1.07 -0.92,0.84 -0.11,0.93 -1.26,1.18 -0.04,2.22 -0.91,-0.83 -1.7,1.65 -1.62,-0.1 -1.26,1.44 -0.18,2.8 -1.67,1.53 -1.92,1.31 -0.6,1.96 -2.14,1.61 -1.5,0.4 -3.11,0.31 -4.4,1.58 -1.71,2.75 -1.33,5.74 0.02,8.72 0.17,2.82 -2.6,4.67 -3.36,7.2 z", - "BO" : "m 278.97,266.42 c 2.55,0.92 4,-0.24 6.07,-1.58 1.83,-1.59 7.41,-3.49 5.45,0.89 -0.13,2.3 1.75,4.96 4.28,5.04 2.75,0.15 4.61,3.2 7.62,2.87 3.23,0.65 1.54,4.44 2.41,5.56 -0.88,4.62 6.82,0.07 5.04,4.31 2.5,1.45 2.99,4.61 1.14,7.11 1.18,3.96 -2.48,-2.62 -5.16,-0.73 -4.44,-0.31 -7.07,2.7 -7.15,6.88 -0.06,2.22 -5.32,-1.01 -5.13,3.18 -0.31,-2.5 -4.81,-2.91 -5.54,-2.31 -1.52,1.17 -4.75,4.3 -4.51,0.3 -0.15,-2.22 -2.81,-4.42 -1.84,-6.01 0.49,-2.31 -1.73,-4.83 -2.44,-7.31 -1.14,-1.06 3.63,-3.14 0.56,-3.99 -0.32,-3.06 1.21,-5.67 1.05,-9.02 1.58,-1.37 -1.62,-3.65 -1.83,-5.21 z", - "CI" : "m 448.04,217.31 c 1.43,-1.6 0.22,-2.8 1.35,-3.91 0.59,-0.67 -1.34,-2.42 1.31,-1.34 -0.95,-1.89 -0.32,-2.29 -1.43,-4.1 0.82,-2.97 3.97,0.01 4.46,-2.12 1.36,-0.64 0.77,1.88 2.83,0.49 1.82,1.17 2.93,3.02 5.18,1.42 2.95,-0.26 4.17,4.14 1.97,6.31 -2.43,2.51 1.76,6.79 -0.06,7.18 -0.54,-0.78 -3.11,0.31 -2.31,-0.69 -0.76,0.31 -4.38,0.61 -1,0.18 1.23,0.64 -5.22,0.11 -2.31,0.45 -3.1,-0.38 -9.05,4.8 -6.65,-1.41 -0.79,-1.62 -2.12,-1.85 -3.34,-2.47 z", - "DZ" : "m 447.83,158.87 c -1.42,-4.06 2.69,-6.52 5.93,-6.61 2.69,-0.8 5.76,-2.94 8.06,-4.1 -1.83,-1.76 2.54,-2.76 4.09,-2.99 3.3,1.15 3.26,-1.18 1.37,-3.08 0.44,-1.92 -0.86,-4.75 -0.94,-5.19 2.13,-1.53 4.57,-1.62 6.46,-3.05 3.12,-1.42 6.64,-1.21 9.8,-1.92 2.76,0.4 5.39,0.34 7.65,-0.34 1.96,-0.05 4.13,0.03 5.43,0.53 -2.12,1.45 1,6.38 -2.98,7.8 0.47,3.54 5.03,4.58 5.13,8.4 0.23,3.1 1.52,5.64 1.57,9.07 -0.83,1.67 0.58,3.63 -1.37,4.66 1.84,2.02 1.64,5.46 5.08,5.02 4.96,2.86 -2.46,4.34 -4.43,6.15 -3.83,2.19 -7.47,4.71 -10.7,7.7 -2.4,-0.07 -8.29,3.34 -7.19,-1.03 -2.48,-1.01 -5.22,-1.52 -6.15,-4 -6.84,-4.13 -13.22,-9.02 -20.11,-13.09 -2.21,-1.35 -4.46,-2.64 -6.71,-3.93 z", - "CH" : "m 488.45,105.83 c 1.29,-2.14 2.66,-4.1 4.76,-4 2.28,0.2 3.51,-1.55 5.32,0.74 -0.98,1.45 4.27,0.74 1.85,1.94 -0.53,1.03 -1.24,0.84 -2.77,0.41 -0.61,3.86 -2.74,-1.95 -3.77,1.37 -3.11,1.46 -2.84,-3 -5.4,-0.46 z", - "CM" : "m 495.72,222.09 c 0.47,-3.22 3.41,-5.46 5.57,-6.53 1.27,2.08 2.15,2.36 3.29,0.26 0.18,-2.57 2.73,-4.33 2.93,-6.51 2.19,-1.52 1.75,-5.62 4.98,-6.24 1.08,-1.83 -3.37,-3.4 -0.72,-4.23 3.2,2.1 0.52,6.67 3.61,8.69 -2.26,-0.37 -6.76,0.32 -3.01,2.82 3.73,1.91 2.38,5.81 -0.14,7.91 -0.42,2.53 1.22,5.29 2.32,7.46 2.54,0.81 3.26,6.86 -0.01,4.31 -3.04,-0.52 -5.92,-0.7 -9.02,-0.83 -1.81,-0.39 -6.9,2.06 -6.2,-1.63 -0.19,-1.82 -0.76,-2.84 -0.86,-3.33 -1,1.33 -2.12,-2.49 -2.94,-1.55 z", - "MK" : "m 528.66,118.73 c 0.72,-2.03 2.99,-1.79 4.92,-2.22 2.81,0.77 2.27,4.33 -0.81,3.59 -1.58,0.85 -4.12,1.04 -4.1,-1.37 z", - "BW" : "m 527.36,305.27 c 0.81,-2.27 -1.87,-8.12 1.68,-7.74 2.46,-1.12 0.37,-6.2 1.08,-8.87 -0.38,-2.72 4.82,-1.97 6.6,-2.11 1.16,2.25 5.11,-3.32 6.09,0.9 1.25,4.17 6.02,4.42 6.41,8.27 1.43,1.11 5.97,1.59 2.48,3.25 -3.21,0.74 -4.64,4.07 -6.95,6.05 -2.13,0.14 -1.28,4.09 -4.34,3.16 -2.45,-0.7 -5.26,-2.69 -6.1,1.11 -1.71,2.37 -6.82,3.13 -4.88,-1.17 -0.38,-1.17 -1.04,-2.17 -2.09,-2.86 z", - "UA" : "m 533.33,99.45 c 0.38,-2.42 2.62,-0.95 1.55,-3.19 1.51,-2.24 5.9,-2.87 2.56,-5.17 1.24,-1.88 5.76,-1.8 8.43,-1.21 2.08,0.47 4.68,1.02 6.24,0.62 1.37,0.15 3.91,1.05 4.74,0.38 0.25,-3 4.8,-1.41 6.48,-2.35 2.03,-0.95 4.88,1.12 3.49,2.26 0.42,1.56 4.07,0.15 3.62,3.02 2.25,0.9 4.97,-0.87 6.7,1.19 1.53,0.31 6.03,0.27 5.9,2.18 -1.87,0.91 0.64,0.9 -1.06,1.74 3.11,2.67 -4.06,1.43 -3.8,3.68 -2.7,1.82 -6.53,0.96 -9.21,3.43 2.58,-2.32 -2.41,0.17 0.41,1.46 1.07,1.21 5.82,-0.36 2.73,1.55 -2.21,-1.2 -6.6,3.05 -7.27,0.97 1.25,-2.46 -5.49,-1.56 -0.98,-2.96 4.95,-1.59 -4.78,-0.76 -3.46,-2.07 -3.23,-0.26 4.67,-0.42 0.65,-0.42 -1.37,-1.95 0.32,-0.22 -1.65,-0.07 -0.22,-1.27 -3.13,2.33 -3.62,0.72 0.24,0.25 0.69,1.87 -1.3,2.11 1.92,-1.05 -1.71,-0.2 -0.1,0.98 -0.61,-0.67 -6.41,0.78 -2.76,-1.71 0.93,-2.27 1.5,-1.55 3.85,-1.53 -0.18,-1.02 -2.58,-1.29 -1.6,-2.59 -0.99,-1.59 -2.48,-2.46 -4.37,-2.61 -2.58,-1.71 -4.68,1.24 -7.34,0.98 -2.41,0.31 -5.68,-0.1 -7.92,-0.87 -0.4,-0.01 -0.51,-0.49 -0.9,-0.53 z", - "KE" : "m 565.98,238.45 c -1.07,-3.74 2.54,-5.6 3.18,-8.69 -1.15,-1.8 -1.5,-4.12 -2.68,-5.32 0.29,-3.5 6.28,-1.26 8.65,-0.77 2.74,2.44 6.51,2.92 8.94,0.29 1.02,-0.16 4,0.51 3.69,0.99 -3.5,3.08 -1.82,7.92 -2.24,12.02 0.81,1.63 2.52,4.78 -0.33,4.2 0.79,1.52 -2.38,1.75 -2.35,3.92 -0.94,2.23 -1.95,5.44 -4.46,2.07 -2.59,-1.71 -2.38,-4.35 -6.03,-5.25 -2.2,-0.99 -4.16,-2.68 -6.39,-3.46 z", - "TW" : "m 805.03,169.47 c -0.48,1.96 2.33,6.52 2.74,2.31 0.92,-1.65 3.91,-7.83 0.29,-6.84 -1.39,1.01 -2.44,2.92 -3.04,4.53 z", - "JO" : "m 568.85,153.04 c 0.91,-3.06 1.42,-6.72 2.23,-9.42 2.89,2.96 6.55,-2.17 8.62,-1.24 2.67,3.53 -1.78,4.19 -4.98,4.69 0.47,0.91 3.25,2.52 2.05,2.92 -1.97,1.51 -4.82,4.48 -7.93,3.06 z", - "MX" : "m 146.91,144.12 c 4.03,-0.61 6.19,-0.66 9.33,0.98 3.78,0.9 7.36,3.02 11.36,2.39 1.8,-0.09 4,0.57 4.58,-1.3 3.87,-0.71 7.78,1.72 9.43,5.05 1.12,2.54 5,3.88 6,0.6 4.48,-1.37 5.43,4.11 8.08,6.22 0.1,3.47 3.3,3.99 5.99,4.78 1.66,0.21 -1.86,4.93 -0.82,6.79 -1.12,2.04 1,5.79 0.91,5.71 -2.07,-3.94 0.48,2.62 1.93,3.59 1.77,1.76 2.02,5.25 2.55,3.87 2.27,0.76 5.91,2.4 5.97,1.14 2.66,-0.29 4.19,-1.31 5.88,-0.17 1.6,-1.88 -1.16,-0.68 1.42,-1.96 2.46,-2.61 0.26,-6.77 5.15,-6.31 3.48,-0.81 3.86,-0.36 6.33,-0.19 0.26,2.44 -2.58,4.46 -2.14,5.95 0.62,0.64 -0.9,4.29 -1.51,1.72 -1.52,1.82 -2.49,2.76 -4.99,2.52 -1.62,-0.04 -3.27,-0.35 -3.18,1.62 -2.43,-0.32 5.21,3.74 0.25,3.3 -3.93,-1.31 -2.58,6.77 -4.69,2.76 -0.69,-1.06 -6.52,-4.51 -3.45,-2.55 -3.28,-1.38 -1.63,-0.96 -5.09,0.37 -3.83,1.6 -7.15,-1.96 -10.81,-2.44 -3.76,-1.96 -7.39,-3.38 -11.04,-5.17 -1.44,-1.39 -7.37,-3.65 -4.34,-5.73 -1.08,-0.83 1.2,-2.68 -1.02,-3.9 -0.19,-2.82 -5.05,-6.01 -5.47,-6.73 -0.63,-1.05 -3.04,-3.19 -3.99,-3.34 -1.06,0.21 -1.42,-1.5 -0.43,-2.24 -0.91,-1.2 -4.58,-1.95 -3.82,-4.15 -2.28,0.08 -4.27,-2.95 -5.37,-4.94 -1.41,-2.21 -1.42,-5.35 -4.29,-5.46 -1.79,0.17 -3.23,-2.4 -2.32,0.28 -0.23,3.69 3.17,5.75 4.96,8.27 0.78,1.45 3.2,4.8 3.49,5.02 0.49,-0.56 2.41,4.15 3.06,5.6 0.06,2.72 2.23,0.16 2.89,3 2.19,1.7 -2.08,2.99 -1.92,0.26 -2.75,-2.57 -6,-2.84 -5.08,-6.62 -1.52,-0.71 -2.61,-3.46 -3.45,-2.34 -1.97,-0.2 -6.6,-4.19 -2.34,-2.76 1.72,1.22 0.86,-0.5 0.25,-0.24 1.51,-2.83 -4.23,-4.37 -4.82,-7.38 -1.2,-1.22 -1.91,-4 -3.41,-5.63 z", - "AE" : "m 614.9,167.34 c 1.12,1.33 4.68,0.15 7.22,0.3 0.84,-0.73 3.89,-4.15 5.57,-5.23 0.32,1.15 1.11,4.3 -0.84,3.09 -0.43,1.59 0.57,2.62 -0.88,3.06 -0.36,3.02 -1.96,4.08 -4.92,2.93 -3.16,0.32 -4.78,-1.53 -6.14,-4.15 z", - "BZ" : "m 224.45,190.94 c 0.24,-3.09 -0.56,-6.25 2.53,-7.3 0.29,1.75 0.85,5.64 -1.6,6.97 l -0.06,0.33 z", - "BR" : "m 266.7,256.8 c 1.46,-2.11 2.75,-3.84 3.14,-6.74 2.29,-1.46 5.6,-3.35 7.84,-2.31 0.57,-3.26 2.17,-6.93 1.28,-10.19 -1.94,-1.19 -1.76,-4.64 1.04,-3.76 0.18,-1.73 -3.3,-0.97 -1.54,-3.06 3.03,0.03 4.52,0.14 6.33,-1.04 1,1.65 1.4,3.9 4.06,3.71 1.53,-1.52 1.23,1.67 2.51,-0.87 2.04,-0.84 3.65,-2.08 4.62,-3.66 -2.79,0.11 -1.74,-4.02 -3.65,-5.3 1.71,0.49 4.48,1.94 5.53,1.46 0.52,-2 6.46,-0.98 5.62,-4.04 2.95,-1.06 1.23,2.16 2.82,2.76 -0.07,2.41 -1.85,6.71 1.73,8.09 1.93,0.81 3.93,-2.13 6.16,-1.54 2.09,0.09 2.63,0.19 2.43,-1.56 2.53,-1.05 4.4,1.51 6.59,0.45 3.41,1.99 3.65,-5.35 6.01,-4.79 -0.54,-2.73 1.11,2 1,0.3 0.25,3.01 0.78,5.59 3.32,6.7 -0.09,1.92 -4.17,4.12 -5.06,7.04 -0.34,1.56 -4.33,1.35 -1.45,1.78 1.67,0.03 4.62,-3.81 4.25,0.41 1.46,1.61 4.74,-1.62 3.38,1.58 -0.5,0.81 2.36,-3.23 2.79,-2.35 1.43,-0.16 -0.83,0.06 0.54,-1.23 1.18,-1.57 2.7,-1.1 3.66,-0.82 0.73,0.05 1.03,0.82 2.11,0.83 1.07,0.67 2.48,0.63 2.32,1.38 0.78,-0.13 1.62,-0.15 1.87,0.67 1.16,0.13 -1.26,2.24 0.79,1.18 -0.69,1.26 -1.58,4.64 0.01,1.46 1.86,-2.63 -0.55,1.94 1.3,-0.46 1.59,-1.38 4.26,0.93 5.97,0.64 2.74,0.42 6.44,-0.33 8.95,2.53 2.13,3.18 5.69,3.83 8.9,4.58 1.09,3.16 1.62,4.91 1.4,7.38 -0.38,3.15 -2.76,4.44 -3.38,6.11 -2.21,1.74 -3.17,2.31 -3.54,3.19 -0.25,0.79 -2.34,6.81 -3.79,3.74 -0.42,1.14 -1.31,3 -0.85,3.69 -0.01,1.34 0.72,6.53 -0.56,9.43 -0.34,2.2 -1.91,4.24 -1.69,6.7 -1.24,2.13 -3.31,3.79 -3.37,6.7 -2.84,0.59 -2.01,3.47 -5.06,2.71 -1.22,-1.53 -0.6,0.65 -3.13,0.33 2.75,-0.82 -3.29,-0.52 -1.79,0.67 -1.69,0.79 -3.67,1.71 -4.9,1.86 -3.43,1.46 -4.25,4.41 -6.41,3.93 1.76,0.96 -0.49,1.07 0.3,2.05 -0.9,0.64 0.67,3.24 0.07,4.84 -0.26,2.68 -4.11,4.03 -5.09,7.86 -0.66,2.16 -7.08,5.51 -3.13,2.81 1.27,-0.99 4.21,-4.65 1.47,-3.73 -1.31,-1.93 -0.07,1.79 -0.93,1.26 -1.83,1.86 -2.32,3.24 -2.93,5.11 0.04,2.12 -4.51,4.63 -2.66,1.15 0.95,-2.58 -4.38,-3.84 -5.93,-5.87 -1.77,1.23 -2.88,-3.55 -5.59,-1.85 1.22,-1.65 4.21,-4.54 5.22,-5.85 2.71,-1.71 7.57,-3.48 4.51,-7.29 -3.94,1.35 1.69,-5.48 -2.17,-4.73 -3,1.6 -1.94,-7 -4.92,-4.41 -2.28,0.5 -5.22,-0.81 -3.49,-3.69 -0.95,-1.92 -0.41,-2.95 -0.14,-4.92 1.86,-2.56 0.16,-4.82 -1.6,-6.55 1.79,-3.82 -6.05,0.49 -4.98,-4.03 -0.75,-1.12 0.85,-5.38 -2.7,-5.56 -2.5,0.22 -4.23,-2.13 -6.37,-2.71 -2.28,0.01 -5.18,-1.62 -4.99,-4.14 -0.44,-2.07 0.99,-4.92 -2.61,-3.53 -2.64,0.91 -4.45,2.73 -6.87,3.62 -2.12,-1.36 -6.87,1.41 -5.16,-3.45 1.08,-3.21 -4.45,3.31 -4.83,-1.02 -1.8,-0.36 -2.28,-0.1 -2.04,-1.84 -1.24,-1.17 -1.54,-2.65 -2.51,-3.78 z m 64.34,-17.04 c 1.69,1.81 4.29,0.77 5.82,-0.97 2.76,-3.8 -3.6,-2.64 -5.41,-2.38 0.34,1.32 -0.93,1.2 0.01,2.25 1.2,0.1 -1.24,-0.03 -0.42,1.1 z", - "SL" : "m 435.02,210.22 c 1.93,-1.56 5.36,-4.95 7.22,-0.74 1.09,1.13 -0.89,3.59 1.16,2.39 -1.16,2.19 -3.35,5.68 -6.08,2.91 1.45,-0.71 -1.26,-0.53 -1.72,-2.37 -1.36,-0.45 1.89,-1.32 -0.29,-0.89 -0.48,-0.9 1.07,-0.74 -0.28,-1.31 z", - "ML" : "m 437.94,194.09 c 2.04,0.27 0.91,-4.28 3.33,-1.43 0.66,-0.14 2.73,-0.47 4.23,-0.55 2.58,-0.13 7.07,-0.19 10.4,-0.03 2.61,-1.65 -0.96,-6 -0.22,-8.98 -0.61,-5.94 -1.17,-11.89 -2.04,-17.8 2.18,0.22 4.68,-0.68 6.45,0.99 5,3.35 10.11,6.64 14.98,10.12 0.79,2.34 3.83,2.32 5.75,3.54 -0.87,2.43 0.94,2.51 2.85,1.83 -0.17,3.51 0.95,7.94 -1.95,10.48 -3.03,-0.07 -6.2,0.86 -9.14,1.22 -2.98,-1.16 -5.79,2.3 -8.35,2.58 -0.66,1.62 -1.51,1.07 -1.88,2.53 -3.32,-2.45 -1.5,3.09 -4.45,3.36 -1.6,0.57 0.02,4.22 -2.58,4.94 -1.29,0.07 -0.15,-2.12 -1.6,-1.03 -0.4,1.08 -1.89,1.12 -3.22,0.55 -1.36,2.1 -1.08,-2.87 -2.67,-1.59 1.46,-1.31 -0.82,-2.75 -1.47,-4.3 -0.46,1.21 -3.4,1.35 -4.37,1.04 -1.52,0.18 -2.09,0.26 -1.85,-1.7 -0.05,-2.03 -2.16,-2.23 -1.89,-4.57 -0.51,-0.29 0.13,-0.87 -0.33,-1.19 z", - "CD" : "m 505.77,251.86 c 1.11,-0.45 1.26,-4.86 3.32,-2.51 1.04,-1.47 3.32,-2.13 3.01,-0.08 3.18,-1.06 5.29,-4.26 5.08,-7.65 2.52,-2.81 4.78,-5.42 4.56,-9.55 0.61,-2.99 2.06,-6.3 2.13,-8.9 2.02,-4.45 4.64,0.54 7.38,0.4 2.12,0.77 3.39,0.33 4.39,-1.51 2.2,1.04 4.02,-1.17 6.29,-0.61 1.13,-1.59 4.43,0.23 6.29,0.12 1.5,3.66 5.21,-0.2 6.72,2 2.14,1.43 3.1,2.6 2.3,5.16 3.85,1.6 -3.17,3.66 -2.74,6.36 0.38,3.32 -2.26,5.6 -2.13,8.35 1.51,3.41 0.61,7.8 2.24,10.97 1.86,1.39 4,5.34 0.03,4.67 -3.03,-0.07 -4.18,2.35 -3.41,4.97 -0.48,2.25 -0.88,7.37 2.73,5.97 1.08,-0.64 0.96,4.79 -0.18,2.86 -2.42,1.32 -2.68,-3.38 -5.42,-2.94 -0.95,-3.24 -2.96,0.76 -5.34,-1.31 -1.27,-0.74 -0.93,-2.21 -3.01,-0.96 -0.5,-0.98 -1.88,-1.79 -3.82,-0.94 -1.87,0.16 -3.53,0.88 -2.39,-1.55 -1.9,-2.75 -1.01,-6.14 -1.62,-9.07 -1.53,-0.06 -3.51,0.31 -3.49,-1.1 -2.15,0.08 -3.24,0.79 -3.08,3.1 -2.11,-0.79 -4.92,1.62 -5.92,-1.16 -1.4,-2.23 -1.11,-6.26 -5.05,-4.86 -2.81,-0.23 -6.65,0.7 -8.88,-0.26 z", - "IT" : "m 507.51,129.94 c -3.05,-1.56 2.25,-1.9 3.67,-1.24 1.87,-0.1 5.68,-1.88 2.74,1.15 1.11,2.58 -1.33,3.18 -3.09,1.38 -1.28,-0.02 -2.12,-1.1 -3.32,-1.29 z m -12.37,-8.02 c -1.85,-1.43 1.82,-2.01 2.86,-1.99 1.23,0.55 1.16,4.18 0.05,5.58 -1.7,1 -3.95,0.46 -2.47,-1.54 -0.34,-0.72 -0.13,-1.18 -0.44,-2.05 z m -4.9,-13.17 c 3.1,-0.02 -1.04,-2.76 2.09,-2.35 2.48,-0.19 2.62,-2.39 4.57,0.34 -0.27,-2.86 2.83,-0.83 2.93,-1.72 0.94,-1.14 3.02,-1.32 5.54,-1.83 0.95,1.66 5.23,1.16 4.21,3.41 2.1,1.41 -2.13,-0.39 -3.2,1.12 -0.43,-0.49 -1.01,1.04 0.12,1.66 -2.29,2.57 4.77,3.24 4.6,6.55 0.65,2.38 6.19,0.94 5.12,2.54 0.55,2.04 7.22,1.64 6.66,5.04 -1.28,-1.22 -5.59,-2.89 -4.92,0.65 3.38,1.22 -0.58,2.57 -1.22,4.3 -2.73,1.61 -0.35,-1.81 0,-2.41 -0.55,-2.94 -2.96,-3.35 -4.6,-4.73 -1.02,-1.37 -5.06,-1.66 -6.86,-3.77 -3.53,-0.91 -3.86,-4.73 -7.02,-6.29 -1.56,-2.47 -6,3.28 -5.14,0.18 -3.86,0.28 -0.56,-1.71 -2.89,-2.69 z", - "SO" : "m 585.58,229.11 c 0.69,-4.69 6.2,-7.52 10.68,-7.31 2.28,-1.77 4.01,-4.34 6.21,-6.28 1.31,-1.33 3.8,-3.01 0.32,-2.36 -3.72,-1.45 -8.97,-1.63 -11.19,-5.33 -3.05,-1.74 0.89,-6.67 2.05,-2.34 2.51,2.1 5.36,-0.94 8.17,-0.4 2.93,-1.76 6.73,-0.59 9.82,-2.27 3.25,-3.21 1.61,3.36 2.25,3.39 1.32,-0.12 -2.15,0.54 -0.97,2.35 -1.4,3.16 -3.42,5.74 -4.82,8.9 -1.89,4.51 -5.29,8.36 -9.04,11.49 -4.21,2.3 -7.59,5.75 -10.67,9.35 -0.46,0.71 -1.19,3.14 -2.01,0.66 -1.7,-2.5 -0.43,-5.99 -0.81,-8.9 l 0,-0.47 z", - "AF" : "m 639.74,139.82 c 1.69,-1.45 1.23,-5.93 4.7,-3.54 1.43,1.33 2.67,-1.68 3.45,-1.57 3.5,0.06 3.17,-4.17 6.08,-4.32 2.12,-0.55 5.14,0.72 7.27,1.14 1.63,-1.71 3.03,0.55 3.91,-1.65 2.23,1.22 1.92,-4.15 4.62,-1.79 0.27,1.14 0.98,1.67 0.38,3.63 1.58,2.07 5.54,-3.13 6.54,-0.84 2.18,-0.77 3.22,-0.4 2.08,0.59 -2.94,0.85 -7.6,-0.11 -9.19,2.95 2.67,2.03 -1.37,3.58 -0.54,5.27 -2.16,0.74 -4.42,-0.54 -2.19,2.29 -3.26,-0.32 -1.84,4.85 -4.25,4.39 -1.55,-0.59 -3.3,0.83 -3.34,1.36 -3.63,-1.33 -2.64,3.38 -4.45,4.24 -4.18,0.55 -8.59,1.68 -12.69,0.06 -3.07,-0.31 4.68,-5.14 -1.31,-5.25 -0.69,-1.82 -0.25,-4.72 -0.62,-5.58 -0.62,-0.14 -0.37,-0.99 -0.44,-1.38 z", - "BD" : "m 716.95,161.12 c 0.8,-0.22 1.8,1.17 2.06,0.38 1.27,1.37 2.41,0.19 2.29,3 1.76,0.89 7.81,-0.72 6.42,1.69 -1.03,1.41 -4.28,2.92 -2.37,4.04 1.32,2.74 1.74,-3.85 2.7,-0.2 -0.07,1.9 2.06,6.05 -0.4,5.62 0.02,3.91 -0.92,-4.11 -1.4,-3.01 -0.46,-2.79 -2.64,1.38 -2.92,-2.19 0.42,-2.1 -0.97,-0.41 -0.61,-0.49 0.43,1.3 -0.12,2.01 0.29,3.26 -0.2,-0.37 -1.91,2.15 -0.98,0.24 -0.49,0.49 -0.68,-0.2 -0.82,-0.86 0.03,2.56 -1.46,1.13 -0.88,0.69 -0.26,0.81 -0.26,-1.15 -0.23,0.9 -0.62,0.75 -0.11,-1.06 -0.79,0.58 -0.52,-2.38 -1.15,-4.56 -1.56,-6.27 1.17,-1.53 -3.4,-2.26 -0.76,-3.09 1.6,-0.72 2.09,-1.06 0.18,-1.93 -2.43,-0.94 1.25,-2 -0.22,-2.35 z m 6.09,10.81 c 0.03,1.88 0.88,2.41 0.6,0.18 -0.25,-0.23 -0.31,-0.96 -0.6,-0.18 z", - "DO" : "m 272.83,184.89 c -0.53,-1.77 0.29,-3.1 0.36,-5.21 2.54,-0.49 5.56,1.5 6.64,1.93 -2.86,-0.43 5.6,2.18 1.12,2.37 -2.45,-0.36 -4.34,0.19 -6.19,0.35 -0.48,1.5 -1.01,2.47 -1.93,0.57 z", - "GW" : "m 425.53,200.98 c 2.38,-0.33 4.57,-1.22 7.02,-1.01 2.59,-0.24 0.04,1.59 1.2,2.64 -2.43,-0.49 -3.7,3.48 -4.57,1.09 0.75,-1.43 0.86,-0.14 -0.24,-1.09 2.76,-0.42 0.44,-0.85 -1.35,0.03 2.05,-1.52 -2.31,0.28 -0.46,-1.61 -0.69,0.1 -0.93,0.55 -1.61,-0.05 z", - "GH" : "m 463.12,218.04 c -0.22,-3.53 2.96,-6.14 1.13,-9.66 -0.36,-2.09 -1.06,-4.54 2.09,-3.68 2.18,0.85 5.88,-1.57 5.79,1.26 1.67,1.44 -0.15,3.04 1.26,3.69 0.13,2.29 0.34,4.75 0.19,7.43 1.73,0.4 1.94,2.6 0.15,2.09 -0.84,-0.97 -1.55,-0.77 0.01,-0.12 -3.22,0.88 -6.4,4.07 -9.73,2.5 -1.54,0.11 1.78,-1.18 -0.32,-1.76 0.11,-0.64 -0.23,-1.24 -0.57,-1.76 z", - "AT" : "m 498.33,102.64 c 0.57,-1.73 2.38,0.79 3.17,-0.71 2.12,0.58 4.66,-0.95 6.64,-0.11 -1.9,-2.04 1.39,-2.14 2.12,-3.4 2.58,1.59 3.61,-1.95 6.56,0.05 3.57,-0.79 2.09,3.65 1.2,3.27 -0.3,2.95 -3.14,2.19 -5.71,3.3 -2.34,-0.32 -6.06,-0.31 -7.08,-1.78 -2.62,0.75 -4.48,0.69 -6.73,-0.02 l 0.01,-0.32 z", - "SE" : "m 503.07,69.37 c 2.29,1.64 0.79,-3.19 3.48,-2.93 1.06,-1.32 -1.91,-2.64 0.84,-2.85 0.63,-1.42 -2.73,-1.22 -1.44,-3.27 -1.05,-2.33 -0.33,-5.19 2.99,-4.95 1.69,0.79 3.22,-1.25 0.83,-1.43 2.34,-0.66 2.48,-3.52 3.11,-4.4 1.67,-0.14 3.98,-2.03 4.49,-3.23 -1.16,-1.42 3.27,-2.43 4.88,-2.38 -0.36,-2.99 6.56,0.79 5.61,-1.45 0.75,-2.79 6.02,1.11 8.74,1.36 1.76,0.22 -0.56,2.09 1.31,2.27 -1.16,0.73 1.47,1.77 -0.24,2.84 2.9,2.24 -1.35,1.51 -1.95,1.63 -2.18,-0.67 -1.63,1.02 -3.03,0.7 0.16,0.51 -1.39,0.13 -0.93,1.34 -3.45,0.72 2.08,1.59 -1.5,2.46 -1.99,1.99 -4.11,1.55 -6.45,2.85 -1.95,0.25 0.37,0.75 -1.88,0.98 0.4,0.08 -1.63,-1.45 -0.21,0.24 -0.86,0.96 -1.99,0.69 -1.09,1.46 -0.52,2.59 -1.41,0.78 -1.07,2.37 -0.25,3.19 3.46,1.91 4.93,4.05 0.88,1.07 -4.17,1.6 -0.98,1.79 -0.31,-0.45 -1.15,1.75 -2.7,0.64 0.72,1.18 -3.27,1.21 -3.17,1.26 2.66,0.54 -1.56,0.14 0.83,1.06 -0.62,1.31 -0.04,1.66 -1.19,4.34 -0.86,3.05 -6.6,0.05 -5.62,3.58 -2,-0.05 -4.22,0.96 -4.17,-1.25 -1.78,-1.45 1.78,-1.69 -1.27,-3.17 -1.84,-1.15 -1.31,-2.93 -1.87,-3.66 -0.87,-0.06 0.36,-0.36 -0.86,-0.2 -0.39,0.39 -0.79,-1.77 -0.43,-2.02 z m 19.78,5.86 c 1.67,-0.89 2.56,-3.93 -0.46,-1.71 -0.09,0.69 -0.24,2.77 0.46,1.71 z m -5.45,1.61 c 0.61,1.22 3.14,-5 0.72,-1.2 -0.33,0.31 -0.83,0.66 -0.72,1.2 z", - "TR" : "m 544.2,124.61 c -0.19,-3.46 5.6,-2.64 5.36,-2.55 1.31,-0.09 3.86,0.31 2.53,-0.61 2.88,-0.79 2.42,0.17 0.35,-1.24 2.89,-0.92 6.58,0.52 9.35,-1.99 3.33,-0.86 6.8,-1.32 9.09,0.22 1.54,0.31 3.87,1.67 6.25,1.93 3.71,0.27 7.46,-0.25 10.79,-1.28 2,-0.43 3.08,-0.35 4.43,0.78 1.22,1.57 -0.08,3.67 2.78,3.29 2.74,1.29 -2.71,1.04 -0.37,3.34 -0.08,2.03 0.48,2.83 1.38,4.65 -1.79,0.36 -4.56,-1.14 -6.84,-0.22 -3.3,-0.31 -6.8,1.88 -10.22,1.34 -1.74,-0.49 -4.1,0.38 -5.62,0.15 0.58,1.1 -1.19,2.8 -1.8,1.96 -1.11,-0.92 2,-3.14 -0.57,-2.19 -0.84,1.09 -4.26,-0.84 -5.19,1.34 -2.98,3.2 -7.33,-4.03 -9.27,-0.46 -1.59,2.06 -4.09,-0.49 -5.63,-0.92 -1.1,0.37 -1.36,0.57 -1.51,0.13 -4.23,0.77 3.27,-0.76 -0.58,-0.85 -2.1,0.18 -1.05,0.28 -0.63,-0.64 -1.89,-0.4 -0.01,-2.04 -2.33,-2.61 -1.69,0.79 -0.65,-2.62 0,-0.43 2.24,0.08 -0.69,-0.86 0.78,-1.55 -1.97,-1.18 1.52,-2.33 -2.52,-1.57 z m -0.08,-3.56 c 2.53,-1.48 -0.23,-4.36 3.83,-3.6 1.87,-0.15 2.85,1.97 4.5,2.55 -2.73,0.01 -5.63,0.78 -7.84,2.96 0.29,-1.45 3.13,-1.91 -0.16,-1.53 l -0.21,-0.12 z", - "UG" : "m 553.91,238.9 c -0.39,-4.17 2.3,-6.77 4.75,-9.42 -2.41,0.04 -1.63,-5.56 0.75,-4.17 1.7,0.21 3.32,-0.39 5.57,-0.42 2.14,-2.38 2.72,2.71 4,4.52 0.43,3.24 -4,4.5 -2.99,8.06 -1.04,2.18 -5.96,0.5 -8.56,0.92 -1.39,0 -2.88,2.34 -3.52,0.5 z", - "MZ" : "m 555.68,277.82 c 3.38,-0.51 7.85,-4.21 10.07,-1.42 4.51,-0.87 -0.98,5.86 3.59,6.74 0.61,2.22 -0.65,-2.7 1.56,-2.32 2.53,-3.74 -2.44,-6.16 -3.24,-8.98 -1.9,-4.36 3.49,-4.31 5.89,-3.25 1.32,-0.53 2.84,0.44 3.87,-1.29 2.26,1.88 7.76,-4.55 6.8,-0.28 -0.52,2 0.53,4.58 0.1,6.64 0.2,2.16 0.97,3.01 0.4,4.25 -0.43,1.98 -3.01,5.04 -5.57,5.78 -3.19,1.08 -5.18,2.18 -6.33,4.8 -1,-0.6 -4.36,4.09 -4.82,2.41 0.15,2.61 1.46,4.11 1.84,6.62 -0.17,2.65 1.06,-1 0.49,1.71 0.65,1.67 -1.08,3.66 0.13,3.82 -0.58,3.45 -10.01,3.24 -7.47,6.38 2.13,1.12 -2.26,3.35 -1.99,0.39 -0.65,-3.17 -0.44,-6.79 -1.88,-10.02 -0.89,-2.83 3.92,-3.48 3.06,-6.29 2.7,-1.94 -0.57,-4.19 1.33,-6.02 -0.33,-2.62 0.82,-5.75 -2.86,-5.66 -2.16,-2 -5.13,0.08 -4.95,-4.02 z", - "JP" : "m 856.18,127.94 c -1.84,1.01 0.27,2.23 0,0 z m 8.64,-20.15 c 0.38,2.34 0.31,7.64 -3.24,5.92 0.46,1.55 -3.12,2.39 -0.87,4.1 -1.78,2.55 5.43,-0.24 1.23,-0.76 -1.88,-2.01 2.04,0.05 3.04,-1.31 1.98,0.42 4.65,3.42 5.48,-0.05 1.5,-1.31 5.08,-0.78 5.48,-2 -1.46,0.31 -1.51,-1.51 -0.94,-2.78 -2.12,2.33 -5.03,0.1 -7.2,-1.25 -0.96,-0.69 -1.68,-2.33 -2.98,-1.87 z m -25.3,33.26 c -1.96,1.25 -0.79,0.12 0.08,1.06 -0.66,1.4 2.1,2.1 2.13,-0.17 1.59,-0.98 2.83,0.63 3.83,-1.61 -0.73,-3.04 -3.47,0.43 -4.98,-0.63 -0.33,0.44 -0.48,1.13 -1.04,1.36 z m -4.43,-0.85 c 1.96,-0.48 3.46,0.68 4.31,-1.17 2.06,0.38 3.71,-0.69 5.65,-1.14 1.06,0.33 3.92,-0.05 1.52,1.29 -0.04,2.5 3,2.91 3.71,0.24 2.76,0.37 -1.03,-2 1.2,-2.22 -0.8,1.25 2.05,-0.16 0.73,1.18 2.25,-0.07 3.07,-0.2 4.69,-1.45 -0.84,1.6 1.08,1.49 1,-0.46 1.69,1 1.25,-1.62 2.53,-0.79 -2.34,2.74 0.98,1.33 1.51,-0.29 0.85,-0.39 -0.74,-3.11 1.07,-3.95 0.41,-1.16 -0.91,-4.42 1.52,-3.5 0.7,-2.16 2.14,-4.91 -0.38,-6.96 1.19,-1.59 -1.49,-2.88 -1.55,-1.2 2.79,-0.41 -0.65,2.12 -0.91,-0.01 -0.96,0.48 -1.8,1.83 -1.8,3.26 -1.26,0.07 2,1.61 -0.15,3.1 -1.01,2.68 -5.58,6.7 -7.62,5.5 -0.92,-0.68 2.17,-2.09 -0.47,-1.18 -0.41,1.88 -2.34,3.69 -2.79,5 -2.16,1.03 -1.9,-1.28 -4.8,0.22 -3.81,-0.99 -5.72,2.44 -9.06,3.44 l -0.04,0.57 z m -3.05,1.69 c -1.65,0.19 1.8,1.81 -0.39,1.11 1.03,1.15 2.45,0.91 1.24,-0.52 3.49,0.55 -2.05,4.9 1.23,5.48 -0.19,-1.7 1.19,-1.77 0.25,0.42 2.1,-0.6 3.06,-4.2 3.57,-5.74 -1.92,-0.54 0.47,-2.18 -2.22,-1.51 -0.75,-2.25 -2.9,0.43 -3.68,0.77 z m -5.99,20.39 c 1.34,-1.15 2.28,-2.78 0.65,-1.35 -0.25,0.41 -0.91,0.79 -0.65,1.35 z", - "NZ" : "m 980.38,359.42 c 1.59,0.63 -0.23,-0.77 1.18,-0.76 -2.77,0.04 -0.77,-0.16 -1.18,0.76 z m -23.67,-7.74 c 2.14,2.42 4.24,-1.63 5.73,-3.43 -0.09,-1.29 0.81,-3.97 2.77,-2.23 0.11,-1.33 3.61,-5.66 -0.04,-4.42 -2.7,2.86 -6.03,-1.77 -6.17,-2.62 -1.34,-2.4 0.57,3.23 -1.32,0.45 -1.54,0.37 -1.17,-2.95 -2.07,-3.17 1.31,0.47 -1.09,-2.61 -0.89,-1.21 -0.64,-1.78 -3.1,-0.5 -3.03,-2.47 -1.58,-0.97 0.72,3.28 1.2,2.63 -0.84,-0.87 2.64,4.36 1.51,2 1.37,-0.12 1.56,1.23 0.71,1.18 0.74,1.83 2.19,0.91 1.26,2.12 0.85,1.57 0.3,5.01 -2.42,5.22 0.8,1.83 6.18,3.35 2.38,6.16 h 0.35 z m -23.16,13.34 c 1.43,-0.64 -0.04,1.31 2.71,0.51 2.11,0.86 4.97,2.3 7.18,0.16 2.23,-1.12 1.62,-1.84 3.08,-4.28 1.22,-2.98 4.59,-2.2 5.41,-2.8 -2.75,-1.32 2.77,-3.59 3.2,-5.59 -1.26,-1.38 1.75,-1.87 -0.72,-1.42 1.64,-1.35 -1.32,0.96 -0.13,-0.9 -1.84,1.5 -2.02,0.63 -3.02,-0.32 -1.28,-0.72 1.64,-1.16 -0.99,-0.6 -1.6,2.24 -2.96,4.34 -4.78,6.58 -3.04,1.83 -7.46,3.44 -9.11,5.24 -1.94,0.98 -0.67,1.81 -2.02,1.88 -1.19,0.79 2.01,-0.37 -0.12,0.44 1.48,0.34 -1.01,0.13 -0.68,1.1 z m 4.23,2.52 c 0.39,-1.85 -2.66,1.98 0.05,0.67 1.38,0.02 -0.1,-0.55 -0.05,-0.67 z", - "CU" : "m 241.98,175.35 c -2.12,-0.41 1.52,-2.41 0.61,-0.14 z m -5.53,-1.26 c 2.2,-0.06 1.37,-3.05 4.41,-3.05 3.72,-0.8 5.87,-0.72 9.13,0.22 1.3,1.13 4.9,1.77 6.58,3.1 1.31,0.86 -0.15,-0.99 1.4,0.57 -0.58,0.42 2.65,0.95 4.2,1.75 -1.67,0.65 7.22,1.75 2.29,2.73 -2.01,0.36 -5.38,-0.1 -8.08,0.44 1.59,-1.04 2.34,-2.98 -0.59,-2.44 -1.98,-0.84 -1.67,-3.44 -4.25,-2.54 -2.82,-1.76 -5.11,-1.09 -7.22,-2.28 3.23,-0.68 -3.4,-1.54 -3.71,0.57 -1.75,0.07 -2.86,1.63 -4.15,0.93 z", - "VE" : "m 268.42,209.82 c 0.97,-2.58 3.12,-7.68 5.32,-7.2 -3.36,0.3 1.55,3.51 -1.64,5.08 -0.12,3.73 4.58,2.02 1.93,-0.83 -2.24,-2.86 4.14,-3.18 4.38,-3.78 -2.75,0.43 -0.26,-3.72 0.01,-0.24 1.91,0.5 4.17,1.08 4.61,3.31 3.18,-1.09 6.18,0.35 8.7,1.24 2.75,-1.2 3.12,-1.35 2.53,-1.66 1.61,-0.19 8.79,-0.45 3.86,0.26 -2.39,-0.24 1.52,1.3 -0.96,1.24 1.21,-0.35 1.63,0.38 2.13,0.76 -0.13,0.15 0.68,0.47 0.21,-0.33 0.87,0.79 2.07,-0.05 3.73,1.72 -0.17,0.75 -2.12,2.37 -1.78,2.29 0.79,0.3 6.07,-1.08 3.6,1.46 -3.33,1.26 1.48,3.28 -2.31,3.6 -1.81,1.84 0.24,3.32 0.99,5.23 -1.62,1.67 -4.02,1.65 -5.92,2.58 0.24,2.11 -2.51,-0.76 -3.65,-0.22 -3.92,-1.92 0.79,2.1 0.24,4.27 3.91,0.06 -0.98,2.09 -1.1,2.94 -1.76,0.26 -2.96,3.24 -3.63,1.35 -3.83,2.2 -3.61,-4.88 -5.84,-5.46 2.84,-1.65 -2,-5.15 0.54,-7.64 1.68,-4.03 -5.54,0.73 -6.18,-2.84 -1.67,-2.55 -5.64,0.37 -7.24,-2.33 0.7,-1.68 -0.57,-5.67 -2.53,-4.79 z", - "PT" : "m 445.98,125.1 c 1.66,-1.86 2.37,-5.18 1.31,-6.81 0.24,-1.34 2.63,-1.51 2.05,-0.28 2.16,-1.06 7.75,0.04 3.38,2.22 0.21,1.55 0.62,4.19 -1.74,3.81 2.54,1.22 -0.16,3.54 1.44,4.41 -1.67,1.35 -1.15,4.11 -4.28,2.74 -2.59,1.02 1.31,-5.72 -1.84,-3.62 0.53,-1.15 1.43,-1.51 -0.56,-0.75 -0.57,-0.46 0.26,-1.17 0.24,-1.72 z", - "CO" : "m 252.95,231.17 c -0.47,-0.82 1.85,-0.35 0.81,-1.95 2.5,-0.46 3.03,-2.26 4.08,-4.06 -0.63,-0.77 -0.28,-1.72 -0.65,-4.65 1.16,-2.12 -1.46,-4.1 -0.91,-6.37 2.5,1.42 -0.06,-4.87 1.91,-1.82 1.43,2.74 -0.39,-2.04 2.18,-2 2.56,-1.09 1.18,-3.33 2.83,-4.85 0.82,-1.6 2.69,-1.01 2.08,-0.06 1.3,-2.42 5.88,-1.87 7,-4.17 0.13,-0.9 4.12,0.24 1.1,1.26 -2.95,0.87 -4.41,5.94 -4.39,7.25 2.84,-0.06 0.85,5.72 3.84,6.14 3.15,-0.97 5.11,0.97 7.27,2.49 2.47,-0.41 6.43,-0.86 3.69,2.39 -0.77,2.77 2.44,5.6 0.14,6.98 2.41,-0.07 2.68,7.45 1.64,2.71 -0.67,-1.62 -2.32,0.65 -2.92,-0.01 -1.16,1.25 -5.74,-1.2 -4.46,2.22 2.38,-0.47 2.33,1.82 0.01,1.18 -1.81,2.49 3.12,5.09 0.67,8.27 -0.55,2.31 0.13,6.66 -2.61,4.32 -1.04,-0.94 3.03,-3.69 -0.15,-3.93 -2,-1.89 -6.61,2.13 -7.17,-1.54 -1.85,-1.51 -3.21,-3.79 -5.46,-5.19 -2,-0.1 -3.19,-1.6 -5.33,-1.01 -1.52,-1.26 -3.67,-1.92 -5.19,-3.56 z", - "MR" : "m 424.61,177.22 c -0.18,-2.88 3.65,-1.21 5.47,-1.61 1.9,-0.07 3.87,0.15 5.71,-0.11 -0.74,-2.93 -0.09,-5.47 2.88,-6.22 0.32,-2.63 -1.73,-8.14 2.76,-6.78 2.11,-0.06 4.26,0.13 6.34,-0.11 0.26,-2.03 -0.54,-4.73 2.1,-2.35 2.48,1.6 7.23,3.93 8.25,5.27 -1.49,0 -2.98,0 -4.47,0 1.24,7.82 1.65,15.77 2.77,23.59 2.5,5.12 -5.53,2.42 -8.24,3.23 -2.38,-0.56 -5.24,0.51 -6.98,0.52 -2.36,-3.17 -1.71,3.69 -3.97,0.76 -2.4,-2.45 -4.97,-5.97 -9.03,-4.15 -1.92,-0.86 -2.62,2.9 -1.79,-0.59 2.27,-2.58 -0.3,-7.76 0.03,-8.08 1.44,-2.05 -1.06,-4.04 -1.7,-3.88 z", - "AO" : "m 505.24,249.73 c 1.06,-2.15 4.38,-1.73 1.43,-0.01 -0.06,3.73 -1.21,1.68 -1.43,0.01 z m -0.75,34.43 c -0.43,-3.48 1.32,-6.18 1.89,-9.52 0.53,-3.17 4.76,-4.24 3.86,-7.99 -0.67,-2.52 -3.67,-6 -1.22,-6.6 0.42,-2.56 -3.79,-5.84 -2.23,-7.43 3.48,-0.43 8.63,-1.53 11.43,0.41 0.16,3.55 2.62,6.51 6.32,5.06 2.05,-0.06 0.7,-3.78 3.81,-3.01 0.94,0.03 0.46,1.77 2.4,1.03 3.94,-0.19 -0.04,5.91 2.74,7.85 0.65,1.46 -1.06,4.29 1.57,2.75 3.2,-0.66 3.98,-0.14 3.38,3.14 1.5,5.03 -7.79,-0.5 -5.61,5.38 -0.48,3.98 0.1,8.09 4.15,10 -3.67,0.81 -7.28,1.24 -10.98,0.58 -3.36,-1.38 -6.89,-1.35 -10.78,-1.21 -4.13,0.37 -6.81,-1.83 -10.75,-0.44 z", - "DE" : "m 510.16,83.58 c 0.63,-0.95 1.7,1.39 0.28,0.42 -0.06,-0.51 1.11,-0.31 -0.28,-0.42 z m -1.91,-0.81 c 0.29,-1.17 1.74,-0.71 1.27,0.04 -0.42,0 -0.91,0.39 -1.27,-0.04 z m -13.09,-1.84 c -0.92,1.13 0.26,0.4 0,0 z m 0.4,0.28 c -0.93,0.06 0.94,0.06 0,0 z m 1.14,0 c -0.85,-0.17 0.1,1.88 -0.49,1.71 -0.35,0.34 2.73,2.01 2.47,1.98 -1.79,-2.3 -3.58,0.65 -3.51,0.01 -0.07,0.76 -4.12,-1.38 -3.41,0.7 1.74,0.46 -2.97,2.47 -0.29,2.83 -0.71,2.07 -4.39,0.32 -2.35,2.67 -1.72,1.83 1.3,2.48 0.02,4.05 0.58,1.79 2.43,2.59 4.8,2.63 1.09,-0.33 -3.22,5.13 0.68,4.01 1.11,-1.14 4.44,0.48 6.08,0.54 1.81,-0.1 5.13,-1.41 7.28,-0.3 -1.19,-1.95 0.91,-2.39 2.28,-3.45 -1.92,-1.32 -6.51,-4.24 -3.32,-4.71 2.63,-0.73 4.66,-1.76 6.27,-1.77 -0.5,-1.5 -0.12,-3.85 -1.78,-4.92 1.1,-1.9 -1.09,-3.73 -2.81,-4.21 -0.88,-0.97 -3.87,0.28 -1.14,-0.43 -2.35,0.63 -3.33,1.16 -5.29,1.44 -0.74,-0.78 1.55,-1.66 -0.99,-1.3 -2.62,0.04 -0.5,-1.54 -4.5,-1.47 z", - "SD" : "m 570.73,170.57 c -2.63,0.94 -4.06,5.29 -7.24,3.16 -3.38,0.23 -4.32,-0.56 -7.36,0.02 -4.97,0 -9.94,0 -14.9,0 -0.25,2.4 1.29,6.69 -2.45,5.63 -1.09,3.03 0.86,9.72 -1.01,11.93 -3.25,-0.03 -3.01,4.18 -4.46,5.78 1.11,1.37 -2.43,3.26 0.78,2.88 -0.09,2.13 1.2,3.44 1.72,5.6 3.53,1.87 -0.67,6.52 3.46,5.66 1.28,-1.28 0.81,-3.4 2.08,-4.86 2.28,-3.07 2.9,3.17 5.53,1.67 2.07,-0.75 4.03,2.41 5.57,-0.39 1.7,-0.24 2.31,-3.24 4.22,-0.43 2.37,0.91 4.6,-3.2 4.67,-5.07 -0.08,-1.6 -1.33,-1.84 0.95,-1.89 0.3,-1.87 2.28,-0.18 1.05,1.27 -0.14,2.63 2.85,4.67 2.53,6.51 1.7,-0.03 1.07,-3.87 2.87,-2.76 -0.47,-3.3 3.08,-4.68 3.64,-6.92 1.05,-3.04 0.78,-6.4 1.91,-9.4 0.5,-2.13 7.1,-3.34 2.97,-5.26 -3.39,-1.34 -1.59,-6.55 -2.49,-8.22 -0.46,-2.5 -2.62,-3.15 -4.02,-4.91 z m -31.67,40.88 c -0.81,0.98 0.37,0.36 0,0 z", - "TH" : "m 741.93,183.35 c 2.23,0.61 0.18,-4.66 3.68,-3.29 1.64,-0.78 3.08,-2.49 4.83,-1.43 -0.46,2.03 0.96,2 2.18,2.36 0.78,1.75 -2.19,7.33 1.32,4.33 0.93,-1.95 3.82,1.42 4.39,-1.39 3.6,-0.35 4.08,3.63 4.74,5.91 2.02,0.95 2.14,4 0.43,5.64 -2.29,-0.61 -6.2,-1.05 -7.24,1.99 -1.45,0.48 2.75,7.69 0.09,3.84 -0.68,0.12 -2.15,-2.05 -4.64,-1.33 1.64,-3.49 -3.45,-2.96 -2.56,0.21 0.04,3.19 -3.25,5.95 -2.05,9.21 2.48,-0.33 3.27,4.51 3.3,5.61 -1.87,-3.06 0.99,2.69 3.08,1.41 2.88,1.99 0.28,3.65 -1.46,2.95 1.04,-1.79 -2.61,-2.53 -2.74,-2.3 -1.12,-1.85 -1.8,-2.07 -3.03,-3.96 -0.79,-1.73 -2.47,0.52 -1.87,-2.29 -0.38,-4.12 5.04,-6.66 3.14,-10.45 -0.44,-2.75 -1.62,-4.86 -3.33,-7.09 1.02,-0.93 1.38,-2.68 1.89,-3.94 -0.71,0.38 -1.61,-2.78 -3.04,-3.56 0.11,-1.31 -0.76,-1.44 -1.12,-2.41 z", - "AU" : "m 791.49,330.29 c 2.22,-0.61 0.81,-3.23 1.35,-3.26 0.11,-3.48 -2.66,-6.34 -2.72,-9.87 -1.04,-2.38 -3.46,-6.91 -3.96,-7.92 -0.32,-0.75 1.81,2.65 1.06,0.08 -1.89,-1.68 0.38,-2.2 0.04,-0.08 0.58,-1.11 1.32,2.13 1.48,-0.5 -1.84,-2.55 -3.18,-5.44 -1.22,-8.35 -1.21,-1.64 1.49,-5.18 0.83,-1.49 2.25,-2.24 5.68,-5.3 8.69,-5.12 3.16,-0.68 5.84,-2.23 9.27,-2.56 2.63,-0.92 3.32,-3.52 4.69,-5.04 -1.41,-1.75 2.24,-5.39 2.3,-3.34 1.25,2.77 1.12,1.55 1.8,0.85 1.47,-0.05 -1.6,-1.49 -0.25,-2.15 -0.62,-0.78 2.79,0.71 2.77,0.08 -1.8,-0.46 1.11,-1.31 -0.78,-1.83 0.35,-2.27 2.85,0.37 1.53,-1.36 -0.71,-0.63 2.12,0.16 0.7,-1.33 0.83,-0.19 1.58,-2.32 1.2,-0.37 1.82,0.48 0.79,-3.25 1.65,-1.29 0.67,-0.2 1.52,-0.17 2.1,-1.11 2.29,0.21 3.67,4.58 3,4.35 0.52,0.45 0.86,-2.72 2.97,-0.78 0.29,0.69 0.33,-1.37 1.29,0.37 -0.4,-0.52 1.58,-1.1 -0.06,-1.51 0.74,0.21 -1.69,-1.36 0.43,-1.8 -0.06,-1.85 2.25,-1.31 1.33,-2.93 1.48,-0.55 0.59,-2.1 2.15,-0.89 -0.94,-2.38 3.04,-0.45 4.05,-1.18 1.86,-0.94 -0.62,-2.21 -1.7,-2.65 1.28,0.17 0.77,-0.92 2.45,0.71 0.63,-0.77 2.6,1.36 3.21,0.84 1.4,0.66 3.93,1.65 4.79,0.4 1.96,-1.3 -0.68,1.49 1.03,0.73 1.07,1.52 1.41,-2.07 2.08,-0.07 1.34,0.47 -1.12,2.28 -0.55,2.66 -1.11,-0.21 -2.16,0.86 -1.46,1.97 -1.19,1.83 -2.53,3.38 0.37,4.36 2.4,1.97 5.27,3.02 8.25,4.58 2.66,4.45 7.1,-0.33 6.64,-4.26 0.64,-2.11 -0.6,-7.36 1.17,-7.41 -1.54,-1.68 0.84,-2.32 0.7,-5.3 1.91,-2.41 1.62,2.91 2.73,3.04 1.28,1.63 0.3,6.44 2.73,6.53 1.46,-0.82 3.69,1.89 3.32,3.67 0.61,3.17 2.37,4.32 2.29,7.52 0.2,1.62 1.99,3.14 3.41,2.71 0.65,1.97 2.53,1.64 3.8,2.69 0.47,0.26 -0.89,1.6 0.83,1.83 1.17,1.86 1.88,5.94 2.95,3.73 1.84,0.39 1.6,1.25 2.07,3.57 1.45,-0.32 0.24,1.18 2.14,1.3 1.76,1.71 3.34,4.29 4.26,5.55 -1.36,3.4 2.44,5.95 0.59,9.3 -1.26,3.24 -0.54,7.74 -3.5,9.71 -1.67,0.98 -2.22,2.93 -3.4,4.84 0.03,2.08 -1.93,2.42 -2.2,5.28 0.47,3.49 -1.89,4.72 -5.46,4.37 -1.69,0.74 -4.28,2.3 -5.05,2.95 1.38,0.61 -2.78,-0.25 -2.36,-1.91 -1.21,0.89 -2.66,0.73 -0.99,-0.26 -1.04,-1.73 -1.87,0.42 -1.43,0.41 -2.75,3.08 -5.83,-0.71 -8.88,0.26 -2.22,-1.14 -5.08,-2.7 -4.63,-5.8 -1.21,-1.52 -3.23,-2.95 -0.52,-0.82 1.39,1.17 -2.72,-2.42 -0.62,-1.09 -0.06,-2.24 -2.63,1.53 -3.09,-0.47 2.22,-1.63 -1.2,-5.85 -1.29,-1.34 -1.47,1.42 -3.85,0.01 -0.79,-0.32 -0.06,-2.15 2.52,-5.48 0.97,-6.19 -0.45,2.95 -4.21,3.34 -5.39,5.77 1.68,1.61 -3.7,-0.88 -1.29,-0.71 -0.16,-2.72 -2.99,-3.32 -3.23,-4.96 0.26,-0.87 -2.59,-1.94 -4.61,-2.05 -2.96,-1.22 -6.47,-1.72 -9.95,-0.76 -3.74,2.19 -8.2,0.83 -11.77,3.34 -2.38,0.79 -3.1,4.24 -6.11,2.78 -2.76,0.09 -7.41,-0.79 -9.12,1.7 -2.95,0.97 -5.53,2.7 -8.77,0.95 -0.79,-0.98 -5.26,-2.21 -2.32,-3.31 z m 90.47,17.83 c 1.93,2.47 0.52,-2.1 0,0 z m -11.14,0 c 1.48,1.07 0.1,-2.86 0,0 z m 9.64,7.83 c 0.39,1.2 1.83,-0.28 1.11,0.95 1.34,0.97 0.48,-4.13 1.87,-2.77 0.18,-2.25 -0.41,-4.84 -2.96,-3.2 -1.65,1.37 -5.44,-1.05 -7.36,-0.47 -0.42,2.13 3.78,5.1 1.59,4.31 -0.12,2.14 3.71,2.53 2.25,3.28 1.32,0.04 2.92,0.54 2.84,-1.03 0.68,0.92 1.13,-0.65 0.67,-1.08 z m -27.37,-18.87 c 4.04,-0.72 -1.41,-1.98 -2.43,-0.45 0.61,0.92 1.68,-0.14 2.43,0.45 z m -17.24,-69.43 c -1.28,-0.58 -3.73,-0.24 -0.99,1.44 1.71,0.6 2.21,-2.97 0.99,-1.44 z m -2.05,1.26 c 0.84,-1.66 -2.21,-0.8 -0.55,-0.1 z", - "PG" : "m 878.44,241.91 c 0.38,-1.94 3.55,0.33 0.52,-0.28 l -0.27,0.12 z m 23.31,11.21 c 0.44,2.12 4.23,2 1.66,-0.11 -1.33,-1.54 -3.89,-3.41 -1.66,0.11 z m -6.43,-6.65 c -1.02,-1.69 -7.66,-4.86 -3.27,-2.06 2.63,0.3 3.1,3.93 4.06,4.53 0.86,-0.9 0.27,-2.19 -0.79,-2.47 z m -5.01,17.27 c 1.29,0.67 1.17,-0.09 -0.41,-0.7 l 0.25,0.34 z m -5.57,-11.37 c 2.18,1.61 6.09,0.82 7.63,-1.15 2.41,0.24 0.05,-1.92 2.11,-2.38 0.29,-2.22 -3.39,-1.69 -2.14,0.63 -1.15,0.47 -4.02,3.23 -4.25,0.64 0.41,-0.42 -1.53,2.45 -3.13,1 -2.21,-0.35 -2.21,0.62 -0.21,1.26 z m -21.82,8.94 c 0.3,-3.07 -0.44,-6.05 0.01,-8.89 0.2,-2.99 -0.51,-7.15 0.5,-9.44 2.67,1.59 5.78,2.02 8.42,3.39 2.57,0.46 4.08,3.15 5.01,4.82 1.45,0.26 7.22,2.26 4.05,3.42 -3.79,-0.23 1.5,3.53 1.92,4.33 0.26,1.95 2.05,2.12 3.05,2.48 -1.12,1.72 3.73,0.92 1.16,1.82 0.85,1.51 4.63,0.93 1.81,1.61 2.04,1.17 -1.89,0.41 -1.22,0.26 -2.15,-1.44 -4.95,-0.07 -6.75,-1.87 -2.29,-1.7 -3.02,-5.59 -6.68,-5.64 -1.76,-1.77 -1.54,0.89 -3.91,-1.05 1.21,1.3 0.71,2.14 -0.81,1.29 2.25,2.18 -6.1,0.35 -0.96,1.49 2.94,2.84 -3.46,2.3 -5.06,2.15 l -0.26,0.03 z", - "IQ" : "m 579.52,141.76 c 3.35,-1.23 8.01,-3.06 6.94,-7.36 0.04,-1.98 3.23,-3.11 4.84,-3.85 2.48,0.07 3.33,0.76 5,0.95 -0.02,2.44 3.84,3.56 3.45,3.77 0.58,1.72 -1.45,2.49 -1.72,3.64 -0.51,1.59 1.97,2.82 2.09,4.02 2.7,0.67 5.14,2.81 4.32,5.55 0.65,0.26 3.36,4.41 0.38,2.48 -3.04,-0.74 -3.3,4.74 -7.03,2.77 -3.58,-0.26 -5.88,-3.65 -8.86,-5.36 -2.74,-1.21 -5.2,-3.27 -8.37,-3.12 0.26,-0.46 -0.96,-2.2 -1.04,-3.49 z", - "HR" : "m 520.86,114.99 c 1.93,-0.01 2.97,2.11 0.72,0.38 -1.74,-0.36 -3.2,-1.21 -0.72,-0.38 z m -11.29,-7.28 c 2.63,-0.58 5.72,0.79 5.65,-1.9 2.54,-2.52 4.79,1.54 8.03,1.02 1.28,-0.8 1.93,2.07 2.02,1.81 -1.06,1.36 -4.28,-0.31 -6.63,-0.24 -1.29,0.48 -4.75,-0.22 -2.16,1.72 0.08,2.02 4.02,3.27 4.12,4.66 -1.62,-1.77 -6.82,-1.63 -6.22,-3.67 0.49,0.88 -2.49,-4.97 -3.21,-2.02 -0.96,1.61 -1.74,-0.94 -1.6,-1.37 z", - "GL" : "m 350.08,66.85 c -1.04,-0.38 1,-0.77 2.1,0 -1.44,-0.58 -0.63,0.6 -2.1,0 z m -72.85,-47.31 c 1.2,0.31 8.15,0.27 3.75,0.53 -1.87,-0.15 -3.55,0.83 -0.86,1.06 1.35,0.34 5.81,1 6.17,0.53 -3.96,-0.92 2.94,-0.21 2.81,-0.39 1.66,0.42 4.52,-0.36 6.93,-0.46 3.5,0.33 7.71,0.64 10.68,1.36 0.53,0.15 4.8,0.51 2.25,1.44 1.17,0.27 4.31,1.26 4.77,1.66 -0.04,0.42 3.72,0.85 0.63,0.9 2.78,0.13 -0.9,0.33 1.2,0.41 -1.34,0.2 -4.2,0.74 -1.17,0.47 1.83,-0.47 1.52,0.57 3,1.12 -3.5,-0.1 3.32,0.98 0.44,1.23 0.2,0.59 -1.07,0.55 1.18,0.62 0.86,0.88 1.41,0.65 0.08,1.39 4.92,0.42 -4.31,-0.02 -0.48,0.47 3.36,-0.43 -3.71,1.92 0.82,1.18 3.77,-0.89 -6.22,0.85 -0.86,1.72 0.07,0.06 4.32,0.05 3.55,-0.77 1.03,-0.13 1.48,-0.84 0.16,-1.91 0.56,-0.73 1.05,2.76 3.04,0.96 -4.13,1.84 6.46,0.3 1.37,1.29 -5.64,0.62 6.11,-0.2 0.75,0.31 -3.73,1.41 4.05,-0.34 -0.45,0.78 2.56,0.1 4.76,0.57 0.64,0.35 2.44,0.47 4.16,0.73 1.98,0.92 0.37,0.07 2.86,0.24 0.86,0.19 2.05,0.68 -3,-0.32 -0.02,0.48 -0.73,0.11 2.39,-0.09 0.34,0.39 -2.79,-0.54 -9.21,-2.3 -9.88,-0.72 2.87,1.02 8.68,1.77 9.51,1.79 2.13,-0.68 2.67,0.57 0.72,0.84 2.12,-0 -2.01,0.41 0.87,0.35 0.74,-0.44 -3.56,1.46 -0.75,0.75 2.42,3.6e-4 -0.62,0.59 1.22,0.73 -1.18,-0.49 -3.54,0.02 -2.16,0.67 1.93,0.24 -3.47,0.94 -2.71,0.41 -1.98,0.07 0.72,0.04 -1.67,0.31 0.82,0.26 -3.9,0.81 -0.58,0.46 -1.15,0.35 5.51,0.55 3.23,-0.24 1.62,0.13 2.65,-0.58 0.87,0.49 2.03,0.31 -1.81,0.02 1.04,0.48 2.46,0.43 2.02,0.59 -0.03,0.17 -2.22,-0.06 -5.34,-0.54 -4.8,-0.28 -3.64,-0.76 -0.29,0.72 1.46,0.45 -1.66,0.11 -3.3,-0.49 -2.82,-0.03 -0.4,0.14 -3.02,1.14 -0.29,0.96 2.47,-0.86 5.66,-1.26 3.09,-0.46 1.96,0.56 1.48,-0.58 3.2,-0.4 -2.02,0.32 0.8,0.61 0.77,0.07 3.15,0.31 -4.4,0.6 -0.14,0.68 3.01,-0.57 -2.16,0.45 1.19,0.45 -0.94,-0.05 -7.09,-1.23 -7.74,-0.39 -2.6,0.41 -2.17,1.61 0.28,0.88 1.75,0.09 5.92,-0.72 4.59,0.2 1.54,0.42 3.58,0.01 0.77,0.39 -2.16,-1.22 -8.38,-0.3 -7.04,0.09 1.57,-0.21 -1.61,0.22 0.89,0.23 -3.99,0.14 3.61,0.25 -0.16,0.39 0.18,-0.45 5.35,0.02 1.5,0.07 -1.54,-0.11 1.33,0.22 -0.73,0.31 3.14,0.03 -3.4,0.19 0.51,0.59 3.74,-0.33 -5.46,0.38 -0.54,0.69 -3.31,1.06 2.91,-0.19 3.76,-1.33 1.7,-0.44 4.12,-1.25 4.01,-0.7 1.32,-0.07 -4.05,0.36 -0.24,0.42 -2.39,-0.51 -7.95,2.07 -7.65,2.35 -1.96,0.45 2.19,-0.23 -0.21,0.3 1.56,0.11 6.15,-0.7 2.21,0.16 -2.55,-0.08 -1.9,0.59 -0.59,0.43 -0.34,0.72 0.51,-0.06 0.44,0.86 1.23,-0.68 5.28,-1.43 4.94,-0.74 -1.83,-1.11 -6.89,1.86 -3.64,1.1 -1.78,2.76 4.25,-0.2 0.3,1.38 -1.43,1.79 1.29,1.85 1.96,0.1 0.04,0.88 2.46,-0.1 0.7,-1.29 0.52,0.38 2.46,1.52 2.4,1.49 0.24,0.24 2.44,1.69 -0.14,0.55 -1.82,-1.32 -1.75,0.17 -0.32,0.23 -2.2,-0.1 -1.68,0.91 -3.99,0.61 1.13,-0.08 -0.22,0.55 1.7,0.33 1.58,-0.67 2.43,-0.51 2.43,-0.26 -1.74,-0.19 -5.32,0.95 -2,0.68 -3.84,0.82 0.54,1 0.56,0.78 -2.51,0.25 1.34,0.26 -1.27,0.55 3.05,0.5 1.1,-0.32 0.53,0.6 0.51,0.39 3.05,-0.58 1.27,0.6 1.22,0.05 0.04,0.72 1.31,0.16 -1.85,1.31 1.85,-0.48 -0.52,0.92 0.11,1.44 2.65,0.9 2.58,1.43 -2.95,0.92 3.57,-0.74 -0.06,0.77 0.14,0.79 2.09,-1.25 0.62,0.38 1.12,-0.55 -0.32,0.77 1.3,0.29 -4.1,0.51 3.79,0.01 -0.63,0.5 -0.06,0.32 1.66,0.07 1.2,0.74 0.75,0.37 1.48,-1.01 0.94,0.2 2.49,-0.05 -2.28,0.69 0.27,0.36 2.28,-0.26 -2.45,0.8 0.68,0.53 2.38,-0.21 -1.41,-0.27 1.14,-0.36 2.09,0.46 3.09,-0.42 4.44,-1.05 -0.6,1.36 -0.31,0.74 1.2,0.51 0.81,0 -3.01,0.96 -2,0.88 -0.67,0.72 3.94,-1.14 0.83,0.32 -0.23,0.43 -0.42,0.26 0.19,0.32 0.53,0.59 2.01,-1.02 0.68,0.26 0.53,0.01 1.7,-0.49 1.79,-0.24 -2.69,2.52 2.84,-1.05 -0.42,1.05 -0.16,1.61 3.24,-1.26 2.66,0.15 0.99,1.17 2.71,-0.08 0.94,0.01 2.82,0.35 0.35,-0.67 0.62,-0.92 -3.5,-0.59 0.22,-0.12 0.32,-0.21 2.15,-0.08 -2.6e-4,0.1 1.51,-0.39 -2.62,0.46 1.39,-0.27 -1.76,-0.42 2.04,0.25 1.61,-0.04 -0.16,-0.31 2.71,0.35 1.81,-0.58 -0.35,-0.54 2.71,0.37 1.38,-0.32 1.98,-0.15 1.57,-0.24 -2.6,-0.56 0.41,-0.38 1.75,-0.81 -3.03,-0.74 0.6,-0.68 1.57,-0.69 -2.52,-0.6 0.29,-0.59 1.17,-0.78 -0.56,-0.25 0.15,-1.5 -2.26,-0.93 -1.46,-0.34 0.46,-0.25 -0.23,-0.41 -4.35,-1.23 -1.13,-0.86 -0.38,-0.79 1.85,-0.54 0.49,-3.6e-4 1.37,-0.35 2.79,-0.62 0.66,-1.38 0.53,0.62 2.37,0.47 0.8,-0.03 2.98,1.02 -1.49,-1.48 1.15,-0.22 2.42,0.74 -1.98,-1.28 0.89,-0.09 -2.35,-0.7 3.25,-0.24 -0.72,-1.26 -1.15,-0.26 3.49,0.66 2.12,-0.6 -0.26,-0.82 -4.04,-0.72 -0.74,-1.02 3.71,0.7 -2.99,-2.72 1.28,-2.03 1.85,0.37 1.92,-1.01 1.14,-1.37 1.84,-0.42 3.25,-0.05 4.2,-0.36 2.05,0.4 -0.95,-1.43 1.26,-0.75 1.08,-0.91 -0.82,-1.61 1.16,-1.17 3.26,-0.42 -2.51,1.33 0.84,1.41 1.25,-0.64 2.63,0.03 4.93,-0.79 -1.93,-1.74 1.8,0.28 1.33,-0.61 2.18,-0.69 2.47,-0.97 3.61,-2.01 1.42,-0.93 1.89,-2.45 4.67,-2.36 0.28,-1.12 -0.69,-0.69 -0.63,-1.24 -1.23,-1.48 2.23,0.71 2.62,0.73 1.9,0.22 2.23,-0.23 2.32,-0.37 2.16,0.94 0.29,-1.07 2.9,-0.12 2.72,-0.54 5.43,-0.92 8.68,-1.16 2.84,-0.84 2.79,-1.58 4.89,-1.64 -1.03,-0.38 1.71,-0.69 1.87,-0.75 1.81,-0.33 -0.57,-0.64 1.71,-0.73 1.91,0.12 -0.57,-0.25 1.88,-0.31 2.99,-1.05 -4.32,-0.11 -5.76,-1.1 -2.97,-0.84 -6.86,1.37 -10.57,0.58 1.49,0.1 5.77,-0.51 5.57,-1.1 -1.94,-0.07 -6.85,0.28 -6.8,0.04 1.81,0.5 2.94,-1.78 2.21,-1.44 2.37,0.44 -0.22,-1.23 2.17,0.04 2.18,0.75 8.25,-1.6 2.87,-1.53 -2.29,-0.11 -3.09,-0.46 -5.68,-0.24 1.53,0.18 4.4,-0.39 1.22,-0.92 -0.07,0.32 -3.32,-1.14 -0.41,-0.33 3.63,2.13 9.05,0.12 11.64,3.95 1.84,1.75 4.21,-0.84 4.06,0.14 2.19,1.31 2.66,-0.71 1.88,-0.67 1.32,-0.91 -2.71,-0.71 0.22,-1.01 -0.69,-0.56 0.6,-1.07 -1.71,-0.59 -1.71,0.08 2.65,-1.75 -0.43,-0.81 0.18,-0.31 -2.77,0.14 -0.58,-0.59 -0.57,-0.82 -7.23,-1.51 -7.57,-1.55 -3.69,-0.03 4.51,0.2 0.78,-1.14 -2.45,0.05 -4.43,0.71 -4.44,-0.01 -5.34,-0.35 6.43,0.45 3.84,-0.79 -2.4,-0.56 -9.52,0.6 -3.87,-0.21 1.44,-0.47 -4.17,-1.17 -0.64,-0.56 1.58,0.85 6.31,-0.26 5.6,-0.61 -2.53,-0.68 -1.86,-1.31 0.15,-0.07 2.26,-0.72 4.76,-0.11 7.26,-0.03 -1.4,0.19 -7.18,-0.69 -3.04,0.55 2.61,0.32 7.08,0.96 8.43,-1.28 -2.06,-0.86 -4.62,0.06 -4.37,0.11 -0.93,-0.88 -2.16,-0.27 -0.58,-0.98 -2.68,-0.48 2.73,-0.08 0.09,-1.04 2.95,-0.04 6.03,1.67 8.79,0.26 -1.23,-0.81 -5.75,-0.36 -5.19,-0.49 2.25,-1.81 -4.72,-0.52 -3.67,-1.25 1.91,0.75 6.46,-0.28 2.18,-0.79 -1.54,-0.13 -3.22,-0.44 -0.55,-0.2 -4.3,-1.32 3.43,0.42 4.74,0.88 3.79,-1.39 -2.77,-3.43 -4.94,-2.39 -2.01,0.21 8.54,-0.13 3.5,-0.84 -2.11,-0.34 -2.46,-0.06 -0.28,0.36 -2.01,-0.29 -4.7,-0.75 -5.12,-0.95 2.34,0.01 0.16,0.12 1.47,-0.13 -0.75,-0.08 -3.92,-0.39 -1.14,-0.95 1.86,1.32 4.87,-0.52 1.21,-0.1 1.84,0.08 2.89,-0.01 2.47,-0.29 2,-0.79 7.37,2.12 7.18,-0.63 -2.26,-0.27 -4.39,-0.53 -6.74,-0.6 3.04,-0.01 0.35,-0.22 -1.06,-0.35 1.75,0.29 2.76,-0.31 0.28,-0.35 1.9,-0.2 7.71,0.39 2.93,-0.57 -2.53,-1.39 -5.38,1.85 -5.7,0.15 2.25,-0.98 -0.23,-0.77 1.63,-1.07 -0.15,-0.9 1.72,-1.28 -0.04,-1.17 1.23,-0.87 4.18,-0.78 6.45,-1.87 -4.29,0.69 0.27,-2.19 2.55,-1.44 4.73,-1.19 -2.21,-0.94 -4,-0.69 -1.73,0.37 -1.09,1.09 -3.02,0.61 1.88,-2.36 6.92,-0.48 10.29,-1.24 2.63,-0.27 2.82,-1.16 0.12,-0.99 -3.84,0.35 -7.67,-0.47 -11.49,0.12 1.35,-0.64 6.81,0.21 9.63,-0.74 2.17,0.36 7.34,0.16 7.65,-0.63 0.66,-0.8 5.84,-0.44 7.96,-1.82 -5.09,-0.65 -10.21,-1.31 -15.34,-0.63 0.5,1.64 -5.67,0.8 -7.6,0.93 1.55,-1.01 -3.99,0.56 -5.15,0.88 -2.91,0.58 -9.45,3.25 -4.08,0.7 2.06,-0.33 6.93,-3.18 2,-3.26 -3.57,0.24 -6.75,1.75 -10.45,1.85 -1.74,0.31 -2.71,0.34 -2.34,0.02 -0.92,-0.89 8.17,-0.04 4.82,-1.7 -6.82,-0.18 -13.65,0.3 -20.43,1.09 1.29,-1.99 7.63,-0.03 7.69,-1.44 -1.17,-0.48 -5.4,0.08 -1.92,-0.16 5.02,0.28 10.05,0.12 15.07,0.12 3.88,-0.52 7.9,0.06 11.65,-1.2 -3.81,-1.07 -6.85,-0.48 -9.93,-0.81 -1.28,0.3 -3.97,0.5 -1.1,0.11 3.16,-0.86 -2.93,-1.11 -4.29,-0.71 -4.73,0.17 -9.47,-0.2 -14.19,0.31 -2.97,0.04 -8.63,0.48 -9.42,0.46 -0.02,-0.8 7.39,-0.26 7.08,-0.72 -3.68,-0.42 3.37,0.34 4.75,-0.09 4.97,-0.37 9.98,0.22 14.94,-0.42 -2.84,-1.02 -6.66,-0.36 -8.36,-0.47 0.57,-0.19 -5.13,-0.42 -7.56,-0.34 -2.96,-0.3 -6.86,0.05 -7.72,0.04 -1.9,0.07 -6.83,-0.34 -6.75,0.27 0.56,0.48 -3.85,-0.53 -5.26,0.09 -2.91,0.78 7.57,0.72 2.53,0.92 -1.77,-0.1 -4.34,0.14 -1.2,0.16 5.43,0.03 -6.63,-0.4 -1.37,0.55 -2.92,-0.43 -7.67,-0.49 -9.54,-1.07 -2.13,-0.51 -4.02,-0.02 -3.22,0.06 -3.05,-0.15 -1.17,0.15 0.76,0.27 -1.87,-0.12 -7.22,-0.27 -6.87,-0 1.18,0.23 5.1,0.61 1.77,0.37 -2.62,-0.36 -6.01,-0.3 -4.16,0.1 -4.03,-0.01 4.56,0.54 3.64,0.07 4.58,0.27 9.38,-0.28 13.81,0.87 1.25,1.43 -6.53,-2.03 -4.74,0.28 -2.72,-1.55 -9.86,-0.82 -10.47,-0.51 3.59,0.54 4.96,1.12 8.47,1.27 -2.19,0.13 -6.47,-0.76 -6.46,0.45 -1,0.4 2.84,0.84 -0.35,0.81 -5.07,-0.68 -10.07,-1.94 -15.2,-2.2 -4.51,-0.43 0.15,1.93 2.23,1.74 -1.98,0.59 -6.22,-0.42 -2.07,0.51 2.77,0.96 -4.34,-0.76 -6.01,-0.63 -1.58,-0.79 -4.66,3.04 -3.5,-0.27 -4.27,-1.74 -7.34,0.23 -12.12,-0.21 -1.77,0.05 -5.97,0.4 -1.97,0.77 1.62,0.83 8.52,1.78 3.67,1.17 -3.45,-0.49 -6.83,-1.99 -10.36,-1.1 -1.06,1.27 2.02,0.82 -0.23,1.66 1.43,1.67 -5.11,-0.83 -5.7,0.73 3.34,1.97 -2.2,-1.42 -3.72,0.26 -2.24,1.25 -6.51,0.43 -7.63,2.45 2.8,0.82 8.22,0.08 9.32,0.11 -2.38,-0.55 -2.49,0.99 -2.92,2.13 -3.75,1.08 -7.7,0.47 -11.5,1.22 0.33,0.33 -4.54,0.64 -6.12,0.92 -3.19,-0.23 -6.62,1.43 -2.07,1.86 2.43,0.3 2.68,0.56 5.74,0.22 -4.72,0.85 3.75,0.18 -0.18,0.7 -0.47,0.48 3.6,0.41 4.41,-0.03 1.72,1.03 6.5,-1.24 6.2,0.47 -2.28,-0.14 1.31,0.89 -1.32,0.41 -2.01,-0.73 -9.17,0.17 -3.66,0.3 1.66,-0.01 7.67,0.03 2.86,0.1 -3.86,0.07 -7.78,-0.5 -11.6,0.14 -0.82,0.87 2.96,0.21 0.63,0.57 0.94,1.34 5.75,-1.79 2.71,0.38 z m 132.2,12.52 c -1.59,-0.6 3.65,0.15 -0.05,-0.84 -1.37,-1.04 -7.96,-0.86 -3.67,0.54 0.65,0.18 6.83,1.56 3.72,0.3 z m -8.88,3.59 c -1.57,0.39 -6.63,0.59 -6.22,1.84 1.86,-0.25 9.2,0.01 6.19,-1.58 z m 19.57,-14.37 c -0.09,-3.96 -2.53,0.26 0,0 z m 1.99,2.22 c -1.38,-0.31 -4.15,1.28 -1.17,1.05 2.3,0.21 4.03,-0.09 0.81,-0.51 l 0.75,-0.25 z m -5.73,1.9 c 1.97,-1.23 -4.11,-0.66 -0.42,0.09 z m -2.69,0.78 c -1.92,-0.24 -3.67,0.98 -0.63,0.98 2.3,0.11 4.16,-0.43 0.63,-0.98 z m -2.67,4.26 c -1.66,-0.74 -7.55,-0.67 -6.21,-0.02 2.38,-0.41 6.14,1.58 6.21,0.02 z m 7.04,-16.54 c 0.81,-0.83 -2.47,0.39 0.48,0.07 z M 340.48,3.07 c 2.14,0.65 6.97,1.81 6.72,0.61 1.52,-0.55 -3.67,-1.42 -5.09,-1.18 -0.89,0.06 -4.14,0.09 -1.63,0.57 z M 330.4,38.95 c -2.3,0.49 0.91,1.63 0.43,0.12 z m -10.12,-0.22 c 2.72,0.25 -2.42,0.09 0.62,0.9 -3.41,-0.35 2.03,0.77 2.01,0.48 2.87,-0.13 -3.74,0.24 -0.05,0.7 1.7,0.29 7.63,-1.19 3.07,-1.89 -0.96,-0.54 -6.82,-2.06 -5.64,-0.19 z", - "NE" : "m 472.53,195.05 c -0.75,-2.18 2.68,-1.53 4.08,-2.47 2.43,-0.56 5.27,0.81 6.33,-1.99 2.35,-2.68 -1.72,-9.21 3.14,-9.31 3.87,-0.56 5.85,-4.74 9.41,-6.21 3.12,-1.84 6.25,-3.67 9.42,-5.39 3.3,-0.57 6.46,3.04 8.67,1.73 -0.4,3.12 2.65,5.56 2.09,8.04 -1.29,3.47 0.67,8.09 -2.66,10.59 -1.98,1.89 -4.03,5.09 -3.75,6.99 -2.89,3.51 -7.48,-0.93 -10.4,2.34 -2.67,0.41 -5.33,-2.05 -7.76,-0.39 -1.36,-2.74 -6.89,-3.28 -7.81,-0.17 -1.64,1.53 -0.88,5.55 -3.1,2.2 -1.66,-0.94 -1.67,2.51 -2.44,-0.17 1.27,-1.19 -4.63,-1.04 -2.67,-2.69 0.23,-0.28 -2.57,-1.65 -2.55,-3.1 z", - "DK" : "m 495.21,76.19 c -0.44,-2.15 3.9,-0.81 4.89,-2.71 2.49,-0.81 0.08,2.94 -1.9,1.63 -1.84,-0.67 -2.84,1.45 -2.99,1.08 z m 7.13,5.32 c 2.8,1.22 2.68,-0.62 0.13,-0.32 l 0.22,0.24 z m 0.3,-1.57 c 2.3,0.37 1.55,1.39 2.62,1.82 -0.59,-1.14 1.46,-1.07 0.72,-2.45 2.45,-2.14 -2.03,-1 -0.8,-0.55 -0.37,-0.06 -0.84,0.36 -1.21,-0.54 -0.05,0.27 -2.79,0.52 -1,1.57 l -0.08,0.11 z m -3.83,-0.45 c 0.48,2.01 4.2,1.24 2.49,-0.3 -0.23,0.82 -1.44,-0.23 -2.49,0.3 z m -4.36,-3.04 c 0.99,0.09 3.68,-0.25 2.92,-0.28 0.65,-2.73 4.5,0.4 2.46,-7.2e-4 0.21,0.8 1.86,-0.2 2.24,1.05 -1.31,0.45 -1.95,0.52 -2.47,1.41 0.41,0.8 -2.47,-0.01 -0.44,0.54 -1.25,0.79 -0.42,2.08 -0.54,2.11 -3.23,0.8 -2.36,-1.44 -3.91,-1.8 -0.76,-1.62 1.08,-0.89 -0.39,-1.78 l -0.02,-0.43 z", - "LV" : "m 530.16,76.64 c 0.3,-2.33 4.87,-5.24 7.05,-1.36 3.35,0.59 1.1,-3.97 4.66,-2.94 1.99,1.68 6.31,0.33 7.07,2.64 -0.07,0.92 2.46,2.76 -0.51,3.69 -2.9,0.81 -5.39,-1.02 -8.03,-1.68 -3.25,0.69 -7.16,-0.89 -10.12,0.76 -0.3,-0.29 -0.22,-0.77 -0.13,-1.11 z", - "RO" : "m 528.08,105.9 c 3.05,0.28 3.81,-3.14 5.89,-4.6 2.82,-2 6.18,0.64 9.05,-0.62 2.26,-0.8 4.32,-0.99 5.44,1.71 3.09,1.12 -0.25,6.94 3.88,5.75 3.2,-1.84 1.01,3.23 0.12,1.24 -0.87,-0.78 -0.25,1.39 -0.65,0.71 0.2,0.38 -0.75,3.91 -2.79,1.87 -3.58,-1.5 -6.51,1.86 -10.13,0.74 -2.41,-0.32 -4.26,-0.29 -4.36,-2.31 0.71,-0.32 -4.34,0.19 -3.1,-1.71 -2.07,-0.49 -1.75,-1.75 -3.35,-2.78 z", - "ZM" : "m 532.92,281.12 c 0.13,-2.93 -0.39,-6.24 0.25,-8.95 3.23,0.4 6.48,0.56 5.29,-3.6 -0.37,-3.2 0.74,-1.97 1.41,-0.82 2.72,-1.79 2.32,2.13 5.56,1.48 1.49,-0.27 2.14,-1.59 2.94,0.77 2.67,-0.14 3.74,4.3 5.71,3.22 1.04,0.13 0.76,-5.12 -0.93,-2.58 -4.74,-1.4 -0.18,-6.33 -2.57,-8.87 1.47,-3.13 5.81,-3.76 8.61,-1.69 1.4,1.36 4.69,1.44 5.11,3.68 2.05,1.86 -1.93,4.4 0.56,6.69 -1.68,0.43 -3.04,4.51 -1.09,4.43 -0.87,2.05 -9.5,0.98 -7.63,4.68 -3.81,-0.6 -4.39,3.14 -7.48,4.27 -1.36,3.74 -5.32,2.41 -7.91,1.2 -3.67,0.48 -5.88,-0.51 -7.86,-3.9 z", - "IR" : "m 594.01,124.87 c 2.29,-2.79 4.55,3.52 7.72,0.9 1.39,-2.34 5.8,-1.64 3.41,0.44 2.62,1.02 2.25,4.53 5.71,4.22 2.37,2.95 6.36,2.25 9.56,1.4 2.1,-0.3 -0.77,0.55 1.31,0.14 -0.81,-2.08 2.61,-1.48 3.62,-3.28 2.96,-0.75 5.14,-0.76 7.93,0.75 3.37,-0.31 4.9,3.68 8.23,3.11 0.61,2.16 -0.29,4.89 -0.85,6.38 -2.57,1.29 1.27,2.5 -0.69,3.99 0.86,2.3 0.22,4.85 3.38,4.77 -0.06,2.59 -4.49,3.82 -0.92,6.16 1.33,2 4.63,2.02 3.94,5.11 3.5,1.76 -3.36,1.63 -3.11,3.85 -0.01,3.99 -3.48,0.77 -5.33,1.49 -2.6,-0.63 -5.52,-0.09 -7.42,-1.84 0.25,-4.75 -4.26,-2.89 -6.48,-1.43 -3.79,0.01 -5.73,-3.2 -9.13,-3.81 -1.53,-1.87 -1.89,-3.1 -2.65,-4.49 -1.02,-2.53 -2.21,-1.34 -3.9,-2.11 -1.26,-0.45 0.73,-1 -0.75,-0.49 -0.64,3.09 -2.51,-1.04 -3.15,-1.73 0.77,-2.94 -2.24,-4.73 -4.63,-5.73 -0.52,-1.35 -2.98,-3.72 -1.24,-4.84 1.63,-0.71 0.92,-2.55 1.48,-2.98 -2.84,0.39 -3.19,-2.43 -4.25,-4.34 -1.58,-1.89 -0.35,-3.31 -1.81,-5.64 z m 32.76,35.03 c -3.1,1.47 -0.07,0.94 1.27,-0.07 -0.42,-0.38 -0.83,0.25 -1.27,0.07 z", - "MM" : "m 727.56,176.02 c 0.68,-1.15 1.81,0.25 1.16,-2.16 1.11,-0.04 2.07,-0.87 1.49,-3.05 1.46,-0.74 -0.37,-4.26 2.76,-2.25 1.11,-2.81 2.28,-4.89 2.84,-7.7 1.65,-1.14 4.22,-2.64 5.53,-1.71 -1.55,-1.04 1.2,-3.42 1.57,-3.51 1.76,1 1.47,2.48 2.85,3.12 0.44,2.99 -0.31,4.89 -2.55,5.84 -0.63,1.41 -1.49,5.21 1.31,3.17 2.75,-1.17 0.15,3.21 3.26,3.06 -0.29,1.23 -1.55,3.36 1.37,2.79 -0.36,2.73 2.63,0.88 3.27,1.29 -1.48,1.93 -2.69,3.05 -4.53,3.93 -1.35,0.72 -2.76,1.49 -4.36,1.72 -0.34,1.57 -0.81,3.14 -1.38,3.4 1.11,1.68 3.34,5.13 4.09,5.85 -1.37,2.06 -3.07,4.4 0.17,6.29 0.35,2.99 3.27,6.53 0.02,9.02 -0.88,1.05 -1.51,3.79 -1.45,0.58 1.47,-2.49 0.58,-2.87 0.55,-4.18 0.45,-0.21 -0.96,-5.69 -1.22,-4.71 -0.39,1.23 -0.56,-3.14 -1.2,-3.34 -0.63,-2.51 0.31,-4.23 -1.54,-5.18 -0.73,-2.35 -0.82,-1.04 -1.53,0.65 -1.53,0.73 -1.12,-1.58 -1.29,0.67 -1.3,0.4 -2.69,2.31 -2.68,1.26 0.14,0.34 -0.59,0.2 -0.29,-0.59 -1.4,2.94 0.08,-2.26 -1.25,0.8 0.28,-1.45 -0.56,0.59 0.12,-1.92 -1.99,3.38 -1.02,-1.22 -0.38,-2.76 -0.76,-2.36 -1.51,-6.26 -2.23,-4.05 -2.15,-1.88 1.58,-0.27 0.06,-2.15 -0.67,-0.85 -2.15,-1.08 -1.94,-0.82 -0.43,0.34 0.3,-2.48 -0.88,-0.57 0.26,-1.72 -0.85,0.45 -1.44,-2.03 z", - "ET" : "m 563.4,213.45 c 0.41,-2.63 4.67,-0.69 3.05,-4.4 0.31,-2.14 0.94,-4.2 2.39,-4.16 -0.44,-3.5 3.54,-4.53 3.9,-7.41 -0.38,-2.92 3.11,-2.05 3.6,-2.06 0.25,-3.07 2.69,0.6 4.13,-0.79 3.42,-0.22 6.63,2.85 8.8,5.71 -1.22,1.87 -2.62,5.61 1.23,4.23 -0.31,2.08 2.43,6.23 5.78,6.5 2.36,1.18 7.39,2.1 8.26,2.46 -2.82,2.52 -5.32,5.37 -7.89,8.12 -3.82,-0.82 -6.13,2.51 -9.57,2.78 -1.89,-0.93 -4.24,-0.87 -5.48,1.61 -3.65,0.27 -5.98,-3.07 -9.52,-2.92 -1.46,-0.87 -0.49,-3.09 -2.49,-2.94 -1.11,-2.91 -3.05,-5.97 -6.2,-6.73 z", - "GT" : "m 216.08,194.7 c 0.19,-3 1.54,-5.27 4.97,-4.34 0.45,-2.13 -4.34,-2.79 -1.53,-3.79 -0.1,-2.22 3.45,-0.63 5,-1.07 -0.3,2.68 -0.01,6.85 2.21,5.6 0.96,0.96 -2.99,1.76 -2.22,3.57 -1.96,2.49 -4.96,2.64 -7.74,0.59 l -0.35,-0.28 z", - "SR" : "m 311.83,225.6 c -1.86,-2.17 -0.51,-4.3 1.36,-4.72 -1.09,-3.3 3.77,-1.06 3.81,-1.81 1.55,-0.63 2.77,0.68 2.53,-0.34 5.17,-0.24 -0.95,4.68 2.55,6.9 -0.55,1.82 -0.99,4.41 -3.31,2.84 -1.51,0.27 -2.85,0.17 -2.08,1.85 -3.33,0.41 -2.96,-3.89 -4.86,-4.72 z", - "EH" : "m 424.61,177.22 c -0.57,-3.33 2.36,-5.36 3.44,-8.22 -0.84,-0.49 3.7,-3.2 3.23,-5.89 1.56,-1.8 3.26,-3.74 4.73,-5.39 3.91,0.25 7.93,-0.07 11.78,0.22 0.81,3.33 0.01,5.55 -3.6,4.57 -1.85,0.06 -3.74,-0.12 -5.56,0.07 -0.71,2.52 1.86,7.31 -1.96,7.8 -2.24,1.66 0.93,6.76 -3.79,5.24 -2.65,0.12 -5.38,-0.24 -7.97,0.18 -0.34,0.39 -0.36,0.95 -0.29,1.43 z", - "CZ" : "m 505.43,94.08 c 1.9,0.8 5.69,-2.65 7.09,-1.6 1.57,-0.48 3.15,0.71 4.83,0.81 -1.65,0.84 2.5,2.19 1.44,0.45 1.85,0.84 4.05,0.97 5.27,2.63 -2.52,1.33 -4.66,2.74 -7.41,2.08 -3.07,-1.86 -4.49,2.17 -7.59,-0.68 -2.06,-0.99 -2.46,-2.18 -3.63,-3.69 z", - "TD" : "m 509.24,195.08 c 1.48,-2.82 4.26,-5.02 5.68,-7.87 -0.28,-3.18 1.06,-6.8 0.67,-9.54 -1.33,-2.22 -3.92,-7.42 0.52,-7.93 3.16,1.08 6.13,3.02 9.28,4.31 4.31,2.16 8.65,4.26 12.85,6.62 0.46,2.85 0.05,5.99 0.22,8.96 0.87,3.04 -3.56,0.7 -3.31,3.81 -1.45,2.08 -1.68,4.21 -2.39,6.6 2.59,-0.38 0.77,2.95 2.83,3.93 -0.68,1.21 -3.59,1.09 -4.14,3.15 -1.42,2.85 -4.89,3.04 -7.1,3.71 1.33,2.52 -5.01,2.76 -6.23,3.16 -0.82,-0.61 -3.7,1.92 -3.59,-1.07 -0.59,-1.8 -6.5,-5.42 -1.71,-5.29 2.76,0.24 2.38,-0.04 0.94,-2.07 -0.03,-2.51 0.04,-5.91 -2.67,-6.71 -1.21,-0.75 -1.72,-2.4 -1.86,-3.75 z", - "AL" : "m 525.44,121.31 c 1.54,-1.75 -0.99,-4.9 1.34,-5.31 2.94,-0.14 1.39,3.01 2.7,4.49 1.52,0.75 -1.08,3.52 -2.05,3.53 -1.17,-2.05 -1.54,-1.21 -1.99,-2.71 z", - "FI" : "m 529.12,41.38 c 2.56,-2.1 5.75,2.56 9.33,0.6 2.86,1.35 4.92,-0.31 6.08,-2.55 2.54,-1.03 6.96,-1.07 8.41,0.84 -1.36,0.95 -0.21,1.5 -2.17,1.55 1.62,-0.03 -0.92,2.36 2.03,2.15 3.51,0.77 1.39,2.16 -0.08,3.59 1.4,1.31 3.55,3.09 1.83,3.8 -0.44,1.18 -0.66,1.88 1.11,2.32 -1.82,0.82 3.3,1.44 0.04,2.38 -1.35,0.88 6.42,1.82 2.5,3.91 -3.11,2.05 -6.4,3.94 -9.71,5.53 -2.85,-0.3 -4.48,0.39 -6.26,0.69 -2.51,0.7 -6.01,0.85 -6.38,1.06 1.01,-0.54 -0.75,-1.1 -0.29,-1.29 -1.71,-0.09 -5.49,-0.39 -3.9,-2.99 1.08,-0.93 -2.85,-4.07 0.38,-4.7 -0.66,-0.96 2.72,-0.7 2.07,-1.3 2.69,-0.72 4.69,-3.33 7.68,-3.76 1.73,-0.72 -1.1,-2.71 -3.01,-2.98 -2.52,-0.88 0.57,-2.67 -1.37,-3.73 0.8,-0.59 -1.01,-1.45 -0.05,-2.2 -2.56,-1.37 -5.52,-1.7 -8.24,-2.91 z m -2.08,25.16 c 0.52,-0.52 1.92,-0.26 -0.15,-0.81 1,1.23 -1.72,-0.5 0.15,0.81 z", - "SY" : "m 570.71,142.04 c 1.24,-0.86 4.03,-3.39 1.3,-3.78 -0.74,-1.31 -1.53,-4.12 0.8,-3.94 0.49,-0.93 0.77,-0.66 0.69,-2.15 3,-0.13 6.21,0.39 9.34,-0.18 1.85,-0.58 5.4,-1.41 6.57,-0.64 -1.6,1.39 -3.85,1.65 -2.88,4.25 0.05,4.11 -4.64,4.87 -7.54,6.57 -2.31,1.62 -7.03,3.78 -8.2,0.71 l 0.05,-0.54 z", - "KG" : "m 664.63,122.89 c 2.3,-0.76 2.91,1.05 4.92,-0.68 2.16,0.88 2.87,-0.65 4.86,-1.21 -0.49,-0.36 -3.37,-1.38 -3.76,-1.96 -0.9,1.93 -6.12,-0.69 -2.2,-1.54 2.08,-0.21 -1,-1.68 1.71,-2.16 2.49,-1.24 5.94,2.82 6.18,-0.91 3.03,-0.69 5.82,1.61 9.09,0.29 3.21,0.13 6.71,0.36 9.06,2.49 -3.42,1.01 -6.11,3.32 -9.58,3.35 -1.69,3.44 -4.52,-0.76 -6.55,2.11 -2.02,0.38 -1.34,2.99 -4.23,2.23 -2.52,0.68 -3.84,-0.77 -6.29,-0.4 -0.74,-0.83 -5.5,1.09 -3.22,-1.61 z", - "SB" : "m 920.68,265.88 c 4.3,0.98 -3.81,-3.21 -0.58,-0.43 z m -2.7,-4.52 c 2.63,3.35 0.38,-2.51 -0.68,-2.14 0.29,0.7 0.26,1.5 0.68,2.14 z m -2.42,1.9 c 3.89,0.96 1,-1.56 -0.98,-1.53 -0.68,0.61 0.43,1.39 0.98,1.53 z m -2.42,-4.8 c 3.82,2.44 0.25,-1.32 -1.78,-1.66 0.4,0.71 0.97,1.41 1.78,1.66 z m -3.66,1.29 c 1.31,-1.32 -2.71,-1.95 -1.05,-0.8 0.66,-0.18 0.38,0.8 1.05,0.8 z m -2.61,-4.1 c 5.19,3.39 -3.75,-4.46 0,0 z", - "OM" : "m 616.21,182.18 c 4.03,-1.59 9.69,-1.6 9.78,-7.19 0.72,-2.21 -2.22,-3.76 -0.06,-6.07 -0.12,-1.28 2.14,-0.6 0.67,-2.41 1.15,-3.21 3.41,3.36 6.79,2.52 1.82,0.51 4.03,2.77 4.29,4.28 -1.6,1.93 -3.06,5.18 -5.09,4.88 -1.36,1.73 0.91,4.9 -2.5,4.41 -1.15,1.87 -2.49,2.84 -4.65,3.28 -0.26,2.97 -4.49,1.94 -6.41,2.5 -0.82,-2.08 -1.92,-3.93 -2.82,-6.21 z m 11.24,-19.87 c 1.9,-2.52 0.3,3.26 0,0 z", - "PA" : "m 241.78,212.35 c 1.11,-1.13 -0.69,-4.84 1.73,-3.09 -0.08,1.32 1.78,1.39 1.57,0.83 3.02,2.42 6.44,-3.33 9.12,-0.92 2.98,0.48 4.49,4.97 2.09,5.28 -1.41,2.51 -2.85,-4.05 -0.02,-1.68 -1.8,-1.71 -1.46,-0.33 -3.65,-2.48 -1.61,-0.09 -3.23,1.89 -3.78,2.6 3.24,1.84 -2.42,3.88 -1.76,0.51 -0.87,1.82 -2.54,-1.89 -4.53,-1.17 -0.78,0.1 -0.34,1.43 -0.77,0.11 z", - "AR" : "m 281.51,383.73 c 2.4,1.32 -0.98,1.37 1.51,2.11 1.77,2.42 5.58,3.4 8.14,3.74 -2.66,1.38 -6.38,0.26 -9.44,0.18 -0.35,-1.88 -0.25,-4.06 -0.2,-6.04 z m -3.74,-65.8 c 1.13,-2.35 2.71,-5.43 4.55,-6.82 -0.44,-2.38 -1.63,-6.25 1.48,-7.3 3.3,-1.08 0.72,-5.21 4.14,-6.15 0.57,-1.26 2.94,0.69 4.48,0.41 1.12,2.15 1.13,1.78 2.01,-0.28 3.81,-1.96 5.04,2.92 7.84,4.31 3.17,1.67 7.5,2.66 9.95,5.27 -0.97,1.96 -5.1,5.98 -0.45,5.17 2.5,0.64 4.03,0.33 5.96,-0.2 1.34,-1.24 3.14,-2.44 2.81,-4.7 3.6,-1.07 3.05,5.99 -0.72,5.55 -2.56,1.8 -4.01,3.69 -6.41,6.17 -1.84,1.24 -2.25,3.28 -2.35,5.19 -0.73,2.27 -0.81,4.15 -1.4,6.21 -1.45,2.99 5.21,2.63 3.15,5.81 1.23,1.37 3.08,2.52 0.53,4.44 -1.81,3.61 -6.24,3.53 -9.77,4.18 -1.73,0.82 -6.12,-1.55 -3.98,1.19 0.09,0.85 -1.25,2.97 -0.48,3.95 -2.34,2.46 -6.17,-0.27 -7.67,0.15 -0.93,2.03 0.88,5.54 2.72,4.15 -1.82,-0.73 2.92,-0.79 1.15,1.34 -1.12,0.98 -3.33,-2.2 -3.28,0.26 3.11,0.18 -2.79,1.81 -1.17,4.26 -1.06,1.43 -1.16,1.79 -3.41,2.02 -3.12,0.46 -4.22,4.97 -0.11,5.5 2.5,-1.09 2.92,2.55 0.42,2.24 4.03,0.07 -3.58,2.29 -3.98,4.27 1.91,-0.03 -1.58,3.8 -2.46,0.96 1.37,0.97 -2.11,0.74 0.24,0.81 1.78,0.32 -4,2.73 -1.29,3.19 1.02,1.96 -3.25,1.19 0.2,1.42 1.71,1.25 2.07,2.82 -0.53,1.43 -2.48,-0.71 -5.1,-0.27 -7.6,-0.49 -2.44,-0.66 0.7,-5.17 -3.05,-3.47 -1.46,-1.34 -1.9,-4.01 0.28,-5.03 2.81,-0.82 0.2,-3.91 3,-4.94 -0.54,-1.08 1.09,-2.38 0.32,-3.13 -0.48,-1.25 2.67,-2.7 -0.09,-3.26 -2.17,-0.4 4.2,-0.77 0.96,-1.47 -1.77,-0.08 -0.35,-2.36 -1.11,-3.09 -0.73,-0.48 -1.48,-3.09 0.16,-3.65 -0.77,-2.43 -0.04,-5.42 0.85,-6.82 -0.11,-2.32 2.89,-2.81 0.79,-5.23 -1.04,-3.28 3.32,-4.38 2.05,-7.13 0.95,-1.8 2.76,-4.49 0.99,-5.93 0.39,-2.26 -2.32,-3.83 -0.66,-6.04 0.88,-1.84 1.61,-2.36 0.95,-4.74 z", - "GB" : "m 468.18,66.85 c 0.73,0.5 0.74,-2.55 -0.62,-1.46 1.42,0.81 -1.37,0.46 0.75,1.28 z m -13.62,10.44 c 2.34,0.35 1.14,-1.51 -0.23,-0.73 0.93,0.37 0.65,0.52 0.23,0.73 z m 2.74,17.69 c 1.94,-1.8 4.37,-0.14 5.49,-1.81 2.97,0.29 4,-0.48 6.51,-0.56 1.81,0.42 5.84,0.27 6.27,-1.37 -2.46,-0.63 -2.69,0.17 -1.35,-1.05 -0.28,-0.25 1.95,-0.5 0.86,-0.91 4.04,-1.89 -1.41,-3.09 -3.21,-2.42 3.28,-1.88 -4.93,-2.87 -0.12,-2.21 0.67,-0.33 -1.42,-2.82 -3.46,-2.88 -0.53,-3.86 -4.23,-3.68 -7.05,-4 1.74,0.94 4.67,-1.34 1.43,-0.7 2.63,0.19 6.43,-5.05 1.4,-3.72 -2.31,-0.11 -5.91,0.89 -2.97,-0.38 -4.23,0.6 5.56,-2.36 0.85,-2.28 -2.58,0.5 -4.16,-0.23 -4.71,1.2 0.8,1.49 -2.11,0.36 -0.97,1.89 -2.22,0.06 1.76,0.51 -0.25,0.7 1.35,0.33 -0.33,0.5 -0.4,1.51 -2.78,-0.01 2.14,0.13 -0.35,0.25 1.87,0.7 3.13,-1.11 1.67,0.55 1.08,-0.88 -1.51,1.53 -0.73,1.44 0.63,0.34 -0.92,2.98 0.56,0.87 0.23,-1.39 1.08,-2.15 0.48,-0.62 0.95,0.66 0.6,-1.55 1.98,-0.18 -1.65,-0.35 0.4,2.76 -1.47,2.71 -0.18,1.03 2.74,0.56 4.25,-0.04 3.47,-0.7 -2.01,1.39 0.97,2.08 0.38,0.57 1.55,-0.34 0.51,1.4 -0.38,0.59 1.65,1.62 -0.37,1 0.46,0.91 -6.04,-0.4 -2.91,0.49 -2.13,1.49 -0.99,0.66 0.22,1.2 2.05,1.41 -5.17,2.73 -1.98,2.81 -1.74,0.99 2.93,-0.46 1.97,0.67 1.61,0.12 3.23,0.73 4.81,-0.64 -1.47,2.76 -5.23,0.39 -6.34,3.11 -0.58,0.81 -4.7,1.75 -1.57,1.9 z m -2.12,-19.78 c 1.63,-0.56 -1.14,-2.33 -2,-1.23 0.05,0.77 2.63,0.37 2,1.23 z m -1.93,-2.72 c 2.2,-0.45 0.89,-1.79 -0.58,-0.66 -1.07,0.55 0.17,0.89 -0.16,1.32 0.35,-0.04 0.65,-0.32 0.74,-0.66 z m -3.97,10.04 c 0.86,-0.99 5.51,-3.9 6.54,-0.8 0.26,-0.02 1.21,1 0.38,0.7 0.14,1.77 -3.34,0.88 -4.31,0.42 -0.25,1.29 -2.03,-0.1 -2.62,-0.32 z", - "CR" : "m 233.81,206.48 c 0.33,-1.46 0.15,-3.05 2.63,-1.75 1.26,-0.41 3.08,0.93 3.6,0.56 0.32,2 4.06,3.34 1.96,3.95 0.36,1.38 0.15,5.52 -0.99,2.05 -0.87,-0.61 0.42,1.87 -1.24,0.14 0.64,-2.43 -3.28,-2.77 -4.36,-4.72 2.83,2.83 -1.34,1.74 -1.6,-0.24 z", - "PY" : "m 298.18,298.18 c 1.02,-3.67 1.45,-8.62 6.57,-8.05 3.56,-1.4 6.47,1.43 6.83,4.47 -1.78,2.94 1.27,4.86 3.71,3.31 3.62,0.26 1.32,7.01 5.7,4.96 1.04,1.71 -1.13,4.37 -0.59,6.64 -0.96,2.02 -3.48,3.27 -5.13,3.5 -1.63,-0.54 -5.65,0.06 -5.82,-1.27 1.08,-2.1 4.76,-5.63 0.07,-6.27 -2.98,-1.78 -6.39,-2.41 -9,-4.65 -0.75,-0.97 -1.33,-1.92 -2.34,-2.65 z", - "GN" : "m 430.29,204.77 c 0.33,-2.42 4.58,-1.46 3.32,-3.67 1.08,-2.79 4,1.15 6.35,-0.44 0.05,1.12 0.93,1.05 1.95,0.85 0.99,0.45 3.86,0.23 4.5,-1.01 0.56,1.49 3.03,3.02 1.43,4.31 1.61,-0.95 0.9,2.02 1.89,2.32 -0.98,1.79 0.93,2.72 0.52,3.91 1.83,1.69 -2.98,-0.02 -0.4,2.04 -0.69,1.73 -2.13,0.55 -3.22,2.32 -1.39,-0.69 -0.34,-5.01 -3.64,-3.51 -1.2,1.08 0.1,-2.46 -1.36,-3.31 -2.24,-3.04 -4.72,0.61 -6.61,1.65 0.51,-0.33 -1.42,-2.45 -1.34,-2.35 -0.73,-0.99 -3.15,-1.08 -2.02,-2.82 -1.2,1.34 0.12,-1.08 -1.37,-0.28 z", - "IE" : "m 444.11,90.46 c -0.13,-0.4 1.83,-0.99 -0.44,-0.38 -1.79,-0.58 2.78,-1.53 -0.36,-1.09 -1.39,-0.37 2.35,-0.25 1.36,-0.92 1.45,-0.45 4.34,-1.04 1.19,-0.5 -3.64,0.91 3.84,-2.69 -0.27,-1.7 -2.94,-0.59 -0.76,-1.01 -0.54,-1.8 -1.56,-0.16 -0.99,-2.2 1.47,-0.74 1.83,-0.48 3.13,-1.09 1.36,-1.72 0.6,-0.78 2.86,-1.81 3.28,-0.91 -0.2,-1.24 2.32,-0.5 0.16,0.34 -1.91,0.64 -2.14,2.7 0.58,1.99 0.61,-0.54 3.44,0.81 2.42,1.05 1.41,1.91 0.22,5.57 -1.81,4.63 -1.85,0.81 -3.68,0.65 -4.27,1.59 -2.38,0.59 -3.98,0.52 -3,-0.14 l -0.42,0.04 z", - "NG" : "m 479.33,213.43 c -0.74,-3.13 2.48,-4.29 2.68,-6.99 0.86,-1.84 -1.53,-5.34 1.23,-7.33 0.72,-3.9 6.68,-2.57 8.22,-0.04 3.1,-2.33 6.54,2.67 9.38,-0.98 3.15,-0.3 5.91,1.56 8.43,-1.04 2.01,1.12 1.79,3.72 3.2,4.78 0.16,2.42 -3.57,2.63 -3.59,5.45 -0.53,2.4 -2.48,3.65 -3.28,6.1 -0.85,1.35 -2.04,6.12 -3.53,2.87 -1.55,-1.18 -3.97,1.25 -5.54,3.03 0.46,1.96 -1.51,2.94 -1.66,2.96 -1.22,1.07 -3.43,0.25 -3.54,0.36 -0.26,-0.19 -0.24,1.57 -0.61,-0.46 0,2.25 -0.2,0.07 -0.89,1.32 -0.71,0.74 -3.87,-1.61 -2.56,-2.93 0.19,-0.74 -1.69,0.23 -0.33,-0.75 -1.03,0.52 -0.43,-1.14 -1.01,-0.35 0.07,-2.63 -6.4,-1.2 -3.46,-2.39 -1.78,0.87 -3.75,1.15 -2.82,-1.83 0.04,-0.6 0.02,-1.25 -0.32,-1.77 z", - "TN" : "m 492.73,139.84 c 2.59,-1.31 2.36,-3.83 2.33,-6.21 -0.86,-2.13 4.15,-3.27 4.79,-2.72 0.36,2.04 1.6,0.55 2.76,0.85 -1.84,1.44 -2.03,2.98 -0.07,4.34 -0.98,2.24 -4.61,4.64 -0.5,5.19 0.95,-0.06 2.98,2.36 1.05,3.54 -3.75,0.6 -1.75,4.67 -4.77,5.76 -0.31,-3.76 -2.59,-6.57 -5.09,-8.89 -0.09,-0.65 -0.7,-1.13 -0.51,-1.85 z", - "PL" : "m 511.14,86.91 c 1.18,-1.07 0.14,-2.61 1.23,-2.64 -2.71,-0.48 3.59,-0.81 4.68,-1.52 1.76,-1.47 7.6,-1.81 6.35,-0.5 1.16,1.25 3.78,-0.39 2.09,0.68 3.65,-0.2 8.06,-0.79 11.41,0.55 1.73,2.21 1.59,4.08 -0.5,5.24 2.09,0.18 -0.1,3.42 2.48,3.85 0.22,1.59 -5.48,2.45 -3.53,5.21 -2.76,-1.91 -6.66,-0.13 -8.87,-1.25 -2.82,0.03 -4.86,-2.26 -7.69,-2.79 0.45,1.84 -2.54,0.21 -1.59,-0.6 -1.56,-0.4 -4.91,-0.16 -3.77,-2 -1.91,-1.14 0.23,-3.58 -2.28,-4.23 z", - "NA" : "m 504.49,284.16 c 2.67,-0.59 4.83,-0.78 7.32,0.45 3.68,-0.16 7.38,-0.03 11.06,-0.07 2.77,2.04 6.86,1.64 10.15,1.42 2.28,-0.53 8.45,-1.96 8.32,-0.28 -2.14,0.01 -3.73,3 -5.16,0.58 -2.85,0.57 -7.67,-0.11 -6.03,4.33 -0.21,2.99 1.49,7.83 -2.81,7.26 0.04,5.88 0.15,11.82 -0.09,17.68 -1.9,1.55 -5.65,2.34 -7.23,-0.2 -1.21,-2.07 -2.61,2.63 -4.13,-0.62 -2.03,-2.42 -2.71,-5.57 -2.83,-8.65 -2.09,-3.07 0.35,-7.14 -2.64,-9.75 -2.17,-2.8 -2.68,-6.66 -5.37,-9.07 -0.59,-0.91 -0.65,-2.04 -0.57,-3.09 z", - "ZA" : "m 517.64,316.02 c 1.19,-1.75 2.24,-1.55 2.91,0.34 2.74,0.95 4.87,0.75 6.81,-0.97 0.05,-3.37 0.13,-6.75 0,-10.11 2.76,1 1.69,4.81 2.21,5.84 3.4,1.06 4.82,-2.6 6.62,-4.38 2.3,1.28 7.34,2.96 7.44,-1.4 3.59,-1.1 4.32,-5.96 8.43,-6.63 1.66,-1.27 5.99,-0.87 7.01,1.02 1.42,3.41 1.71,6.92 1.74,10.57 0.81,1.51 3.16,0.61 1.66,3.16 -0.2,3.58 -4.05,3.76 -5.13,7.09 -2.03,3.26 -5.17,5.67 -8.18,7.99 -3.36,2.5 -6,2.18 -9.22,3.16 -3.5,-1.28 -6.2,0.4 -9.48,0.63 -2.63,1.1 -5.23,1.31 -6.64,-0.86 -1.62,1.82 -0.59,-2.47 -1.89,-2.84 -1.44,-0.92 2.3,-1.41 0.56,-3.41 -2.1,-2.85 -3.25,-6.13 -4.83,-9.22 z", - "EG" : "m 540.62,151.24 c 0.62,-2.12 -0.39,-5.44 2.84,-4.44 3.39,0.06 6.21,1.69 9.5,2.06 2.81,-1.31 3.87,-1.98 4.7,-1.77 0.47,-0.55 4.95,0.31 2.55,0.41 1.25,0.78 3.94,1.03 6.56,0.05 2.29,3.29 1.8,6.73 0.16,10.07 -2.92,-0.61 -3.58,-6.11 -5.17,-5.73 -0.08,2.73 3.43,4.48 3.31,6.42 1.6,2.88 2.84,6.25 4.98,9.06 2.21,1.08 -0.78,0.82 0.53,2.94 -1.41,1.63 -3.38,2.62 -5.01,4.17 -2.06,-1.14 -5.94,-0.88 -6.85,-0.91 -2.87,0.38 -5.9,0.08 -8.84,0.17 -2.85,-0.03 -5.72,0.05 -8.56,-0.01 -0.52,-6.86 0.27,-13.84 -0.17,-20.72 -0.11,-0.61 -0.23,-1.24 -0.51,-1.79 z", - "TZ" : "m 553.31,249.69 c 0.05,-2.04 3.18,-2.61 3.48,-4.46 1.9,-1.22 -2.19,-2.05 0.62,-3.11 0.28,-1.93 -2.42,-4.35 1.3,-3.68 3.3,0.31 7.01,-0.92 9.83,1.32 3.58,1.98 7.47,3.62 9.08,6.89 2.99,1.01 3.44,3.34 1.84,5.82 1.21,1.91 2.3,3.4 1.63,5.05 -0.44,2.33 0.58,3.64 1,5.64 -0.1,1.36 3.86,1.55 0.32,3.04 -2.86,1.07 -5.18,1.74 -7.74,2.08 -1.96,0.13 -4.23,-0.06 -5.95,-0.53 -1.33,-1.85 -0.81,-6.41 -3.9,-5.14 -2.7,-1.2 -5.66,-1.91 -7.67,-3.9 -0.76,-3.22 -4.06,-4.84 -3.5,-8.25 z m 28.59,0 c -0.2,2.46 1.25,0.12 0,0 z", - "GE" : "m 582.88,113.61 c 2.79,-0.74 6.67,0.6 9.61,1.38 1.83,1.51 4.27,-0.27 6.31,1.21 -0.92,1.66 3.09,0.79 1.37,2.38 3.41,2.97 -2.66,-0.44 -3.79,1.12 -2.66,0.97 -4.88,-0.74 -6.53,-0.77 -1.84,0.24 -3.15,0.32 -2.29,-1.68 -0.23,-2.66 -3.01,-2.48 -4.68,-3.63 z", - "SA" : "m 590.61,189.47 c -0.88,-2.99 -3.92,-4.58 -4.89,-7.97 -1.27,-3.07 -6.19,-3.66 -5.52,-7.9 0.39,-2.99 -1.87,-5.27 -4.52,-6.93 -0.65,-2.58 -2.92,-5.29 -4.69,-7.94 -0.06,-2.16 -2.94,-1.82 -2.91,-2.56 0.23,-2.93 1.6,-3.33 4.3,-2.82 1.27,-1.95 4.6,-2.38 4.88,-3.78 -1.29,-1.21 -3.84,-3.03 -0.42,-3.02 3.89,-1.94 8.22,-0.99 11.6,1.61 3.52,1.8 6.13,5.86 10.43,5.55 2.65,-0.37 4.65,0.71 6.44,1.64 2.33,0.35 1.6,2.87 3.14,3.21 1.82,1.38 2.95,2.21 2.39,3.91 0.18,1.21 2.56,4.27 3.61,4.3 1.04,2.59 4.1,5.36 7.63,4.83 3.93,-0.7 5.02,2.87 3.03,5.92 -0.74,3.57 -5.79,2.83 -8.46,4.41 -3.59,1.37 -8.49,0.07 -11.59,3.09 -1.02,2.11 -2.19,3.42 -4.17,1.94 -2.95,-0.03 -6.49,-0.82 -8.92,0 0.04,0.99 -0.26,2.74 -1.34,2.51 z", - "VN" : "m 755.17,172.63 c 0.91,-1.98 2.34,0.56 3.54,-0.94 1.04,0.45 2.54,0.26 4.02,-0.74 1.02,-2.2 3.13,0.9 5.07,0.38 -0.86,1.7 0.74,3.22 2.41,3.54 2.96,-0.51 -1.88,2.41 -2.21,1.77 0.48,1.03 -2.31,2.48 -2.75,4.57 -1.54,2.03 3.01,3.94 1.85,4.62 2.04,2.46 3.28,2.9 4.87,4.81 0.05,-0.85 1.95,1.9 1.82,2.41 1.55,3.64 0.92,3.94 1.59,7.16 -0.67,-0.85 -0.52,1.4 -0.52,1.15 0.64,1.16 -2.21,3.59 -4.5,4.49 -1.66,0.8 -2.66,-0.69 -2.43,0.39 -0.15,0.91 -1.37,0.04 0.09,0.95 -1.36,0.66 -1.47,-1.28 -0.44,0.82 -2.44,-1.62 -0.12,-0.77 -0.39,0.78 -1.94,-0.57 -1.84,-2.06 -0.82,0.3 -2.07,0.81 -4.16,4.06 -3.82,0.99 0.78,-2.37 0.92,-2.65 -1.03,-3.75 1.68,-0.88 2.76,-2.29 4.83,-1.03 -0.67,-1.4 -1.31,-3.13 0.78,-2.89 1.61,-0.85 4.31,-1.91 3.12,-4.9 -1.35,-2.37 1.11,-4.83 -1,-6.45 1.26,-1.25 -2.9,-1.71 -2.51,-3.92 -2.51,-1.44 -2.46,-4.26 -5.2,-4.92 -3.29,-1.8 0.52,-1.56 1.45,-2.95 -1.87,-0.74 -0.48,-2.8 -3.09,-2.24 -2.24,1.73 -2.61,-2.83 -2.89,-2.56 -0.49,0.58 -1.33,-1.6 -1.86,-1.83 z", - "RU" : "m 971.63,34.32 c -1.5,-0.19 -5.91,2.38 -2.08,1.91 2.33,-1.01 8.44,0.86 8.55,-1.53 -2.14,-0.48 -4.28,-0.89 -6.47,-0.38 z M 699.9,23.18 c -3.3,0.24 -0.12,1.64 0,0 z m -33.68,5.84 c -1.81,2.27 7.41,0.46 3.17,0.09 0.98,-0.56 -2.87,-0.28 -3.17,-0.09 z m -31.55,9.7 c 0.94,-0.02 3.93,1.6 4.89,0.34 -2,-1.28 -6.78,-2.58 -4.89,-0.34 z M 645.6,7.94 c 2.1,0.81 6.73,0.71 7.81,-0.79 -2.55,-0.76 -5.11,0.83 -7.81,0.79 z m -9.12,0.95 c 2.18,0.64 7.53,0.74 7.73,-1.03 -3.66,0.05 -4.99,-0.33 -7.91,0.71 z M 623.91,28.36 c -4.56,1.43 2.66,0.38 3.65,0.95 1.19,0.47 4.53,-0.33 1.95,-1.01 2,0.9 2.82,-0.47 0.2,-0.48 -1.21,-0.19 5.53,0.74 1.33,-0.65 0.73,-0.06 5.38,0.3 2.36,-1.36 2.9,0.68 2.13,-0.65 4.55,-0.29 -1.54,-0.19 1.53,-0.23 1.67,-0.46 0.13,-0.76 -2.34,0.04 0.06,-0.73 2.54,-0.34 5.76,-1.32 8.84,-1.66 4.99,-0.57 10.06,-0.97 14.86,-2.56 -1.87,-2.8 -8.01,-0.49 -8.89,0.04 -3.71,0.39 -7.48,1.2 -11.28,0.77 -1.77,-0.36 -3.22,1.48 -3.1,0.45 -2.2,0.2 -0.1,0.46 -2.95,0.51 -4.08,0.54 -4.67,1.68 -7.82,1.94 0.15,0.68 -4.98,0.18 -1.05,0.85 1.4,0.2 -3.27,0.59 0.06,0.67 3.97,0.31 -5.23,-0.06 -0.89,0.73 1.24,0.01 -4.22,0.13 -1.04,0.61 -2.54,-0.21 -1.1,0.04 0.47,0.44 -2.25,-0.51 -4.99,0.93 -5.67,1.12 0.61,0.54 6.12,-0.52 2.67,0.12 z m -5.88,2.75 c 1.68,0.11 1.59,-0.22 0.24,0.32 1.51,-0.45 -0.47,0.57 -0.24,0.71 -1.06,0.7 -5.24,0.87 -2.19,2.36 1.86,-0.28 4.85,0.15 4.97,0.36 -0.41,0.75 2.03,0.62 0.25,0.77 -1.12,-0.13 0.72,0.92 -0.99,0.67 2.84,0.54 5.41,0.4 7.21,0.61 1.05,0.34 2.39,0.25 0.79,-0.27 2.41,0.43 2.75,0.37 2.04,0.24 4.33,-0.45 -4.41,-0.98 -4.36,-3.97 0.1,-1.36 -0.47,-1.57 0.41,-1.44 0.29,-0.6 1.54,-0.35 -0.03,-0.74 1.52,0.53 2.74,-0.78 0.38,-0.46 1.41,0.09 2.26,-0.42 0.53,-0.26 4.28,-0.45 -3.39,-1.33 -4.83,-0.64 -2.97,-0.14 -2.08,1.5 -4.89,1.6 z m -7.43,9.53 c -1.67,-2.02 -7.61,1.11 -3.2,1.55 0.98,-0.01 5.53,-0.93 3.2,-1.55 z M 626.15,6.83 c 1.89,0.57 9.44,-0.37 3.92,-0.56 -0.39,0.08 -2.89,-0.15 -1.08,0.44 -0.44,0.01 -3.74,-0.5 -2.84,0.12 z m -9.1,3.04 c 1.78,0.7 6.23,-0.28 2.16,-0.59 -0.28,0.25 -3.39,0.33 -2.16,0.59 z m -13.03,0.4 c 0.78,0.15 5.2,-0.26 2.8,-0.59 2.36,-0.85 6.52,-0.52 7.91,-1.38 -1.22,-0.29 -4.91,0.3 -1.6,-0.28 -0.59,-0.58 -3.5,0.14 -1.34,-0.24 -3.13,-0.25 -2.81,0.57 -3.31,0.85 -1.9,0.22 -7.46,0.41 -2.75,0.61 -2.3,-0.15 0.42,0.53 -2.01,0.44 -7.49,0.01 3.22,-0.16 0.3,0.59 z m -7.39,-1.66 c 3.46,1.24 7.04,-0.96 10.56,-0.08 -1.62,-1.32 -7.35,0.24 -10.56,0.08 z M 550.76,41.81 c 2.52,-0.75 5.08,-1.98 6.88,-2.34 0.83,0.45 2.94,-0.54 3.58,-0.55 1.61,0.32 3.8,1.03 0.66,0.9 -2.9,-0.77 1.31,0.46 -0.7,0.49 1.53,-0.15 3.23,-0.12 3.2,0.35 0.65,0.34 -2.22,1.33 0.48,0.31 3.07,-0.65 6.96,-0 10.19,1.01 3.84,1.6 6,1.58 9.2,2.84 3.79,0.78 1.59,4.16 -1.47,4.37 -4.11,1.23 -8.3,-0.06 -12.43,-0.41 -2.29,-1 -5.99,-0.44 -7.02,-1.96 -1.92,-0.17 -4.1,-0.36 -1.1,0.3 -1,0.77 3.67,0.87 0.81,1.12 1.5,-0.05 2.08,0.13 0.26,0.22 0.82,0.03 2.97,0.23 0.97,0.57 1.94,-0.29 6.08,1.31 3.11,2.8 2.07,1.43 0.39,2.95 3.74,2.79 1.49,0.82 5.7,2.62 6.11,0.27 -1.26,-0.29 -6.55,-1.72 -2.32,-2.66 1.78,0.52 3.44,1 2.99,1.37 2.04,-0.56 8.95,1.76 4.63,-1.44 -0.68,-2.3 5.02,-2.1 6.68,-3.68 1.48,0.13 4.51,0.29 3.19,1.35 1.11,-1.54 2.52,1.82 1.93,-0.73 2.17,-1.28 0.18,-2.28 -0.97,-2.98 2.76,-1.95 0.07,-3.27 -0.76,-3.71 2.57,0.57 8.38,-0.19 8.42,2.42 -2.12,-0.45 -6.53,1.12 -2.4,2.09 2.21,1.21 2.8,0.62 5.62,0.23 -0.91,-2.75 3.9,-1.49 3.35,-2.25 -0.81,-0.51 3.82,-0.62 4.96,-1.57 2.57,-0.84 3.87,-0.01 5.58,-0.28 -3.18,-1.57 8.33,-1.77 3.14,-1.4 -1.33,0.27 1.2,-0.16 -0.05,0.79 1.06,1.15 -3.55,0.91 -0.29,1.24 2.91,0.48 5.56,-2.03 9.15,-1.01 2.48,-0.4 6.59,-2.15 6,-0.25 0.12,1.82 2.64,0.33 2.43,-0.11 3.13,0.15 2.36,-1.62 0.18,-2.43 3.11,-1.19 6.74,-0.36 10.13,-0.11 1.58,0.26 3.57,0.97 3.25,1.14 2.44,0.14 5.15,0.73 8.09,1.98 1.56,2.29 5.21,-2.21 1.82,-1.33 -1.13,-1.89 -3.26,-1.52 -4.87,-2.19 1.38,-0.81 1.37,-1.23 1.32,-3.03 -4.77,-0.76 4.39,-1.49 4.45,-4.43 1.95,-2.69 4.8,-1.07 8.35,-1.33 4.1,-0.82 2.93,3.44 0.05,3.74 1.68,0.94 3.6,2.18 1.73,3.93 0.86,1.89 -1.11,4.11 2.42,4.15 0.76,1.93 -3.34,4.01 -4.19,4.65 -2.24,1.3 -6.63,0.18 -7.57,0.78 3.24,1.44 7.59,1.87 10.57,0.09 2.11,-0.42 4.07,-2.19 5.25,-3.57 -3.52,-2.7 3.66,-3.35 5.21,-2.4 3.33,0.55 -0.34,4.1 3.31,3.5 2.06,0.07 3.91,-0.08 1.06,-0.3 -2.07,0.51 -2.85,-1.52 -0.6,-1.72 -1.7,-3.02 -6.11,-2.78 -9.2,-2.28 -3.32,1.25 -4.05,-3.19 -1.18,-4.22 -1.37,-1.81 -5.14,-2.02 -1.67,-3.51 2.76,0.11 4.47,-1.6 3.74,-2.88 4.25,0.41 -2.19,5.52 2.88,4.66 2.84,-0.4 5.34,1.47 8.25,0.58 -2.11,0.46 -2.66,-1.43 -5.43,-1.02 -2.46,0.05 -3.97,-2.26 -0.53,-1.84 1.8,1.27 5.53,-0.37 1.63,-0.18 1.45,-1.57 8.02,-0.68 8.84,0.14 1.57,1.18 8.01,1.5 4.08,-0.7 -2.4,0.18 -4.08,-0.51 -4.45,-2.45 -2.02,-1.1 4.3,-1.77 7.14,-1.4 3.48,-0.3 8.76,0.04 11.02,-1.07 2.34,-0.1 -4.74,-0.7 -2.39,-0.95 -0.42,-0.13 4.58,0.38 1.01,-0.39 0.57,0.25 -3.6,-0.71 -0.97,-0.71 1.82,1.27 2.53,-0.93 3.62,-0.68 -3.88,-0.68 2.51,0.27 3.54,-1.02 2.47,-0.31 7.11,-1.08 10.59,-1.06 1.75,-0.02 6.32,-0.75 2.14,-0.57 -3.2,0.14 2.48,-0.71 1.89,-0.48 1.44,0.03 8.01,-0.59 4.39,0.68 2.73,-0.33 6.46,-0.1 6.71,-0.79 1.53,-0.5 7.67,0.84 3.11,-0.6 0.9,-0.72 6.18,-0.34 8.72,-0.09 -3.83,0.29 -4.57,-2.17 -0.62,-2.7 0.92,-0.73 6.69,-1.44 9.5,-0.53 5.79,0.7 -7.79,1.3 -2.14,1.22 1.05,0.09 4.77,-0.38 1.9,0.35 1.69,-0.44 8.06,-0.46 3.4,1.12 -1.39,0.48 3.57,0.27 4.44,-0.48 3.58,0.25 7.62,-0.79 10.87,0.72 -0.84,0.42 2.48,-0.24 1.6,1.27 1.98,-0.48 0.95,-0.87 2.48,0.42 2.08,1.99 -5.7,-1.07 -2.24,0.93 4.73,-0 -1.11,2.27 -2.81,2.4 -1.94,0.31 -5.86,1.12 -5.85,1.26 -0.9,1.24 -6.22,1.45 -8.63,2.71 -1.8,0.05 -6.59,2.58 -2.26,1.24 2.16,-1.56 5.9,-0.49 8.13,-1.3 2.01,-0.61 3.05,-0.34 6.04,-1.01 -1.37,-0.24 -5.76,0.35 -2.07,-0.9 2.24,0.69 3.44,-0.75 4.09,0.77 2.3,1.09 4.96,-1.83 4.83,0.98 1.66,0.24 1.77,0.4 0.3,-0.3 4.8,-0.78 9.67,-0.25 14.49,-0.31 1.31,0.49 -2.79,0.97 0.54,1.44 4.1,0.37 8.27,0.6 12.35,0.24 1.32,-0.38 -1.11,-2.03 1.18,-1.71 2.19,-1.28 4.98,1.13 7.38,0.3 -0.95,0.87 4.04,-0.89 5.45,0.66 1.57,0.25 2.9,0.72 0.29,0.99 1.1,0.24 3.22,0.23 0.84,0.44 3.89,0.1 -3.53,0.87 0.5,0.78 3.52,0.89 -0.52,1.51 -2.08,0.92 1.24,2.04 2.83,0.75 2.99,0.75 0.84,0.89 -2.7,0.35 0.17,1.39 2.02,1.74 6.76,2.73 7.4,-0.04 1.99,-3.1 6.22,1.88 8.33,-0.22 2.53,-1.29 6.77,0.83 8.07,0.88 -1.07,-0.26 2.51,-0.22 0.21,-0.7 0.86,-1.55 7.15,1.34 4.48,-1.25 -1.52,-0.35 3.99,-1.31 0.04,-0.9 -3.64,-0.53 4.95,-0.88 3.67,-1.44 -1.78,-1.2 3.85,0.5 4.95,-0.03 3.78,0.46 7.81,-0.29 11.41,1.08 -1.97,0.11 -6.62,-0.64 -6.82,0.4 1.84,-0.05 5.37,-0.93 6.18,0.11 -1.39,0.83 -1.65,0.91 -1.09,-0.09 -0.72,0.29 -1.94,-0.53 -1.24,0.75 -5.07,-0.17 0.46,1.63 2.66,-0.53 2.46,-1.06 7.58,-1.06 8.91,0.76 -1.79,-0.38 -4.53,0.84 -1.05,0.47 1.15,0.28 4.44,0.6 1.29,1.23 2.21,-1.04 6.84,0.24 4.96,0.85 5.17,1 10.36,-1.23 15.56,-0.33 2.68,-0.3 8.1,1.17 6.57,2.79 -1.16,1.6 4.4,1.44 5.94,1.15 4.24,-0.26 8.41,0.19 12.63,0.51 2.15,-0.66 4.01,-1.15 5.28,0.74 2.64,0.49 6.14,2.47 6.98,0.05 -1.24,-1.52 -3.26,-0.69 -1.32,-2.19 0.7,-1.37 8.12,1.13 7.9,0.16 3.46,0.52 7.04,-0.18 10.46,0.85 1.35,0.51 6.14,0.35 4.29,0.92 0.79,-0.46 4.68,1.19 2.41,0.52 2.16,0.46 5.41,1.1 5.43,1.55 1.19,0.56 3.35,0.93 0.79,0.09 2.16,0.97 5.03,1.12 7.95,2.4 1.33,0.64 1.4,1.9 1.88,2.97 0.84,1.19 3.75,0.75 1.22,0 2.47,-0.77 -2.9,-1.74 0.45,-1.46 1.76,0.08 2.44,0.01 2.51,0.67 0.81,-0.43 3.29,0.07 0.65,-0.46 2.22,-0.49 6.18,1.78 7.69,2.37 -0.96,0.09 1.65,0.5 -0.56,0.77 -0.76,2.14 -4.58,-0.74 -1.93,1.06 -2.47,0.6 -2.35,-0.21 -5,-0.36 2.44,0.29 1.25,1.6 0.94,1.38 2.18,0.9 -3.6,1.04 -1.04,1.29 -1.43,-0.11 3,1.25 0.18,0.73 -0.3,0.17 -1.68,1.32 -1.72,-0.36 -1.51,1.26 -4.85,-0.64 -6.58,-1.32 -1.81,-3.33 -6.72,0.72 -8.23,-2.23 -0.61,-0.31 1.99,-2.18 -0.21,-0.88 -1.28,-0.91 -1.46,-0.1 -2.74,0.68 2.99,0.99 -0.19,1.65 -0.28,1.65 3.75,-0.02 -5.6,2.72 -3.73,1.89 -2,0.91 -6.16,-1.99 -6.2,-0.85 3.84,0.06 0.17,0.91 -1.55,0.24 2.36,0.43 -0.59,1.16 1.81,0.69 1.75,-0.28 2.11,-0.33 2.58,1.05 2.16,-0.14 3.34,0.5 3.34,1.94 -1.67,-0.07 1.26,0.52 1.03,0.8 2.43,1.15 0.52,3.62 -2.11,2.22 -1.33,0.29 -4.96,-1.63 -2.89,-0.15 -3.34,0.63 -6.6,1.85 -8.87,2.22 -2.5,0.64 -3.1,1.12 -4.43,1.7 -0.56,0.3 -2.37,1.48 -4.94,1.89 -0.74,1.29 -1.85,2.25 -3.1,0.15 -3.55,-1.16 -6.98,0.24 -9.9,1.78 2.5,-3.25 -2.42,-0.68 -2.59,-0.69 -0.29,1.42 -3.63,-0.72 -3.75,0.28 -2.2,0.8 -0.97,2.76 -2.67,3 -2.8,1.07 -1.97,4.41 0.19,2.71 3.15,0.22 -2.73,3.14 1.25,3.62 1.02,2.49 -3.36,1.43 -0.75,0.35 -1.62,0.1 -5.18,2.81 -2.6,4.89 -1.79,1.07 -7.62,0.75 -5.76,4.09 0.54,0.69 -4.84,0.51 -3.78,1.21 0.26,2.66 -4.19,5.47 -5.34,4.98 -1.23,-1.82 -0.28,-3.97 -1.79,-4.95 -0.41,-3.63 -2.89,-7.71 0.14,-10.94 0.78,0.26 2.73,-2.06 2.57,-2.91 2.48,-0.16 4.7,-0.97 6.7,-2.47 1.76,-2.35 5.38,-3.06 7.18,-4.99 2.5,-0.93 5.74,-0.98 4.96,-3.13 0.24,-2.16 3.65,-2.8 3.73,-2.53 2.99,0.51 -2.88,-1.13 -4.15,-0.39 -2.79,0.04 -0.26,3.84 -2.75,2.81 -2.29,-0.33 -6.12,3.78 -7.01,2.35 1.19,-1.04 -2.28,-0.34 -0.36,-1.72 2.14,-2.08 -0.23,-0.94 -1.49,-1.11 -2.69,-0.3 -6.59,-0.44 -8.43,1.64 -1.71,1.5 -7.4,3.4 -6.03,4.97 0.96,-1.1 3.85,1.21 0.73,0.68 -3.09,0.1 -5.55,0.89 -8.63,0.83 -3.18,-0.96 4.91,-0.49 0.68,-1.26 -2.13,-0.49 -5.39,-1.56 -7.38,-0.56 1.01,0.46 -1.95,-0.17 -0.43,0.88 -2.55,-0.2 -5.58,-0.7 -7.83,0.16 -2.34,-1.32 -6.17,-0.32 -9.07,-0.26 -3.53,1.16 -5.89,3.73 -9.04,5.38 -3.56,1.69 -5.69,4.21 -9.53,5.74 -2.6,0.19 -3.31,2.3 -0.27,2.04 2.61,-0.94 2.14,1.14 2.26,2.27 2.19,0.07 -0,-1.75 2.56,-1.47 -3.02,1 1.77,0.77 -0.67,1.65 -1.82,2.34 5.63,-2.43 2.06,0.65 2.26,-0.43 0.18,-3.46 3.17,-2.04 1.97,-0.28 4.66,2.3 5.58,3.22 -1.6,0.15 -1.95,-0.45 -0.19,1.01 -0.15,1.5 1.17,2.27 -1.22,3.44 -1.55,2.06 -0.54,4.25 -1.6,6.27 0.41,3.03 -4.64,4.81 -5.79,7.92 -2.09,2.7 -5.25,4.3 -7.35,6.9 -1.64,1.88 -5.23,4.21 -7.92,3.24 -1.8,0.11 -0.61,-1.9 -2.3,-0.7 -0.16,-1.65 -1.87,2.49 -3.28,1.31 0.46,1.81 -1.75,-1.25 1.09,-0.86 1.52,-2.63 -2.24,-6.36 2.34,-6.58 3,2.1 3.84,-1.39 5.39,-2.88 -0.38,-2.5 3.83,-3.99 1.6,-5.81 -3.45,0.24 -6.72,3.17 -10.12,1.43 0.13,-2.81 -1.87,-2.89 -4.03,-4.41 -2.43,-0.09 -5.88,-0.38 -5.77,-3.74 -1.45,-1.8 -2.14,-4.2 -3.6,-5.7 -2.3,-1.41 -5.07,-1.76 -7.89,-2.02 -2.79,0.1 -7.06,0.22 -8.32,2.4 4.53,0.5 -1.32,3.5 -1.93,5.45 -0.81,1.4 -0.35,2.28 -2.87,2.41 -2.78,2.08 -5.92,-1.06 -8.94,-0.42 -3.56,-2.26 -6.54,2.47 -10.36,1.78 -3.78,1.2 -8.2,0.14 -11.23,-1.73 -3.43,-2.39 -7.69,-0.54 -11.49,-0.62 -3.53,0 -2.29,-4.58 -6.08,-3.84 -3.47,-1 -7.32,-2.39 -8.77,1.51 2.67,2.58 -1.84,4.43 -4.22,3.08 -2.65,0.3 -5.06,-0.22 -6.91,-1.86 -3.05,-0.27 -5.04,-1.01 -8.15,0.62 -3.41,0.72 -4.12,2.94 -7.39,2.57 -2.57,3.54 -4.17,-2.26 -5.85,-0.12 -3.45,0.09 -4.91,-3.11 -7.92,-4.23 -1.79,0.67 -5.66,1.46 -6,-0.37 -1.76,-1.57 -3.29,3.16 -4.42,-0.56 -2.08,-2.7 -4.08,-5.81 -7.45,-6.99 -2.94,-0.65 2.26,-2.26 -1.52,-1.44 -2.68,0.52 -4.55,2.65 -7.12,2.07 -1.71,1.15 -1.51,-1.01 -0.09,-1.09 -0.96,0.21 -3.6,-0.82 -3.19,0.06 -0.64,-1.58 -2.14,0.01 -4.41,-0.88 1.6,-1.26 -0.94,-3.7 -2.77,-2.54 -3.35,-1.83 -4.38,0.94 -7.69,1.08 -3.32,-0.09 -5.6,1.49 -8.71,1.36 -2.79,0.62 -4.93,1.23 -7.82,0.89 -0.95,0.56 -0.85,1.29 0.85,1.36 -3.67,0.63 4.3,1.18 0.3,1.57 -1.27,-0.73 -3.63,0.61 -1.72,1.73 -1.63,0.74 -4.26,1.08 -1.26,1.96 2.69,-0.04 3.89,2.45 0.51,2.77 -2.59,-1.22 -3.45,1.54 -6.07,-0.6 -1.28,-1.9 -3.02,0.94 -4.63,-0.61 -2.08,0.38 -3.98,2.57 -6.19,0.18 -0.36,0.13 -0.41,2.64 -0.76,0.47 -2.31,-1.41 -5.48,-3.19 -7.58,-1.69 -2.42,-1.77 -3.19,0.57 -6.05,1 -0.91,1.62 -3.37,0.79 -1.95,3.21 -1.78,1.59 -3.66,-3.44 -4.48,-0.03 -2.34,1.01 0.7,2.74 -1.77,3.83 1.72,0.88 1.16,2.91 3.55,2.32 1.92,0.42 4,3.42 2.02,3.3 3.17,0.87 0.68,1.16 0.15,1.87 0.14,0.2 -3.39,1.02 -3.1,0.78 0.05,0.65 -2.16,2.52 -2.08,3.59 2.36,0.01 1.19,3.75 2.55,1.49 -3.08,2.65 4.55,4.97 1.08,6.89 -2.15,1.53 -4.26,-2.15 -6.69,-2.29 -0.24,-2.22 -3.9,-0.8 -5.31,-1.29 -3.01,-1.83 -6.89,-1.88 -10.23,-2.23 -1.78,-0.19 -4.76,-3.39 -6.74,-3.27 -1.46,-0.98 -3.03,-1.13 -2.39,-2.05 -0.52,0.01 3.77,0.8 2.26,-0.72 1.23,-0.82 1.38,-1.35 2.52,-1.35 -1.99,-0.82 -2.6,-1.9 -0.03,-1.48 0.08,-0.87 4.3,-1.72 0.79,-1.49 -1.7,0.19 0.99,-0.52 -1.29,0.13 -1.34,-2.6 5.48,-1.24 4.27,-3.36 0.06,-0.72 -0.91,-1.17 0.33,-1.54 -1.63,0.07 2.15,-2.61 -0.74,-2.02 -2.43,-1.28 -4.96,-0.76 -6.99,-2.3 -2.48,1.01 -5.03,-0.02 -5.75,-2.1 -2.48,0.45 -2.83,-1.27 -2.31,-2.1 -1.74,-3.01 -5.47,0.3 -7.34,-1.15 -0.7,-1.78 -1.35,-3.13 1.38,-2.27 3.16,-0.33 0.44,-2.32 -0.94,-2.06 -0.65,-1.4 -3.51,-2.48 -2.43,-4.79 -2.86,-1.11 -4.55,-0.8 -7.42,-1.56 -0.34,-1.92 -1.75,-2 -1.49,-3.59 -2.06,-0.78 1.47,-1.38 -0.64,-2.52 -0.39,-2.21 2.22,-2.82 1.75,-4.13 1.41,-0.3 5.09,-0.54 5.47,-0.65 -2.54,-0.54 -4.68,-1.21 -4.25,-2.06 -4.58,1.28 2.09,-1.55 3.43,-2.54 2,-1.25 7.48,-3.89 2.47,-5.11 -3.07,-0.74 -0.25,-1.08 -0.51,-2.36 -2.14,-0.64 -0.29,-1.41 -2.37,-1.96 0.74,-0.38 -0.53,-2.35 1.36,-2.08 -1.86,-2.36 -3.8,-3.95 -0.44,-5.63 -1.21,-1.25 -5.27,-1.27 -3.5,-3.22 z m -24,40.71 c 0.88,-1.73 2.7,-1.43 4.13,-2.53 -2.85,1.07 0.58,1.91 0.81,0.07 2.08,0.22 6.34,0.97 4.11,2.79 -2.19,-0.03 -8.09,0.44 -7.89,-0.69 2.88,-0.71 -0.85,-0.45 -1.16,0.35 z m 223,-67.55 c -4.59,2.22 3.76,0.36 5.68,0.55 2.84,-0.28 8.08,0.35 9.36,-1.46 -2.8,-0.94 -5.59,-1.47 -8.48,-0.35 2.46,-1.14 1.51,-1.97 -0.83,-1.28 0.14,-0.04 -4.27,0.2 -2.19,0.83 -2.54,-0.13 0.16,1.15 -2.09,0.62 -0.66,0.05 -1.03,0.67 -1.45,1.09 z m -15.19,-4.39 c -2.63,0.17 1.01,0.57 -1.42,0.71 -2.13,0.29 -4.71,0.8 -1.08,0.67 1.38,0.3 5.95,1.77 9.06,1.42 2.18,0.49 5.08,0.87 8.3,-0.03 -1.67,-0.82 -3.11,-0.54 -0.78,-1.18 2.16,-2.45 -3.42,-1.89 -4.48,-1.31 -2.13,0.5 -2.34,0.64 -0.16,-0.48 -3.02,-0.52 -6.41,-0.32 -9.44,0.2 z m -8.47,-0.91 c 1.77,-0.54 6.96,0.07 2.33,-0.04 -2.54,0.03 3.07,0.57 -0.35,0.37 0.98,0.78 6.2,0.36 8.94,-0.08 2.09,-0.12 5.73,0.71 4.54,-1.43 4.76,-0.14 -1.67,-0.62 -3.05,-1.86 -1.06,-0.3 -4,0.25 -1.31,0.2 -2.23,0.29 -7.04,0.42 -7.73,1.41 2.63,0.43 -5.01,1.09 -0.54,1.12 -0.45,-0.23 -3.92,0.04 -2.82,0.32 z m -1.28,0.91 c 0.46,0.98 4.67,0.37 2.23,0.78 2.23,0.88 6.89,-1.15 2.05,-0.83 -0.89,0.18 -5.17,-0.51 -4.28,0.05 z m 160.93,14.73 c 1.89,0.35 7.14,-1.17 2.58,-1.29 -3.24,-0.5 -6.78,-0.05 -9.54,-1.02 -3.43,1.66 3.77,2.03 5.24,2.25 l 0.85,0.04 z m -25.17,3.62 c -2.36,0.58 3.2,-0.42 4.04,0.33 2,0.5 8.21,0.71 3.78,-1.2 -2.87,-1.22 -5.22,0.19 -7.82,0.87 z m -8.42,-6.04 c 0.81,-0.01 1.46,1.28 -0.37,0.79 2.5,2.49 6.34,1.41 8.91,1.5 1.91,-0.24 6.38,-0.99 5.66,-0.08 1.51,-0.16 6.2,-0.24 2.21,-0.64 -3.44,-0.75 -2.13,-2.75 0.12,-1.6 -2.84,1.84 5.45,2.38 5.47,0.44 3.07,-0.14 -3.3,-1.64 -4.56,-1.03 -2.46,0.55 -4.5,-1.5 -5.62,-0.66 -0.9,0.21 -1.25,2.33 -2.11,0.68 -2.65,-0.48 -5.34,-1.7 -8,-0.36 0.83,1.16 -1.43,-0.07 -1.71,0.96 z m 80.88,57.08 c -3.12,-0.06 3.2,3.15 -0.02,0.55 -0.07,-0.17 0.2,-0.4 0.02,-0.55 z m -7.79,-9.11 c 1.7,0.2 5.64,-2.63 1.53,-1.36 -0.47,-0.2 -0.5,1.33 -1.53,1.36 z m -40.64,36.73 c -2.29,0.38 -3.51,1.08 -5.23,2.73 0.13,-0.02 4.7,-2.12 5.23,-2.73 z m -7.3,2.84 c -1.21,1.14 -2.89,3.28 -0.55,1.04 0.9,-0.66 2.7,-0.78 0.55,-1.04 z m -9.66,-26.71 c 0.75,1.38 -0.43,1.65 -1.91,1.68 -0.17,2.36 -1.31,4.65 0.77,6.5 -1.23,3.17 -0,6.76 -0.66,9.65 0.05,1.47 -1.02,7.12 1.07,3.3 1.11,-1.76 3.47,1.34 3.17,0.46 -0.05,-2.77 -1.34,0.29 -1.58,-2.82 -2.96,-1.39 1.1,-6.32 1.28,-5.58 -0.61,-1.26 4.06,1.68 3.46,1.59 -1.93,-2.09 -2.68,-5.85 -3.35,-7.75 -0.75,0.02 -1.18,-3.19 -0.15,-2.9 -0.66,-1.12 -0.96,-3.6 -0.05,-0.95 -0.34,-2.36 -1.49,-2.05 -1.26,-3.92 -0.65,-0.64 -2.51,-0.14 -0.77,0.74 z m -14.76,-2.79 c -0.45,1.81 3.64,-0.2 1.02,-0.48 -0.44,-0.39 -0.62,0.49 -1.02,0.48 z", - "HT" : "m 266.35,183.21 c 0.99,0.03 4.39,1.37 4.7,-0.3 -1.42,-0.77 -0.59,-2.99 -2.83,-2.75 2.53,-1.63 5.89,0.33 4.66,2.79 -1.39,0.24 1.33,2.8 -1.22,1.39 -1.06,-0.01 -8.54,0.81 -5.31,-1.14 z", - "BA" : "m 515.61,108.85 c 1.82,-0.49 4.8,-0.16 7.39,-0.06 1.25,0.88 3.38,0.03 2.04,2.13 1.88,0.97 -0.1,0.88 0.72,2.1 -1.5,0.44 -2.48,1.02 -2.64,2.86 -2.69,-0.82 -4.05,-3.01 -6.27,-4.99 0.04,-1.12 -1.73,-0.78 -1.25,-2.05 z", - "IN" : "m 661.02,168.77 c 2.15,-2.64 10.72,0.22 6.65,-5.13 -1.73,-1.18 -1.11,-2.71 -2.75,-3.65 0.53,-4.88 5.65,-1.01 7.64,-4.52 1.73,-3 5.85,-5.29 5.99,-8.59 1.43,-1.5 3.18,-2.4 0.21,-3.07 -1.63,-1.59 -1.49,-3.83 -1.68,-5.26 3.14,-1.38 6.62,1.29 9.3,-2.1 2.3,-1.39 2.86,2.18 4.57,3.04 -1.41,1.43 3.61,5 -0.35,4.78 -2.13,-0.68 -0.03,3.77 1.34,3.53 2.41,1.42 5.57,2.61 2.52,5.25 0.4,3.43 5.65,4.33 8.7,5.38 3.86,0 6.89,3.07 10.87,2.88 4.34,1.45 0.38,-6.23 4.38,-4 -0.49,4.9 5.68,2.25 8.5,2.78 1.05,-1.6 -2.06,-2.93 1.09,-2.86 3.05,-2.18 5.91,-4.26 9.57,-3.92 1.62,-0.78 1.39,0.8 2.11,1.23 -1.51,2.39 4,0.44 1.53,3.35 0.15,2.57 -3.8,0 -5.02,2.87 -1.52,2.68 -1.82,7.66 -5.35,7.78 0.34,1.88 -1.46,7.6 -2.6,3.28 0.56,-3.52 -1.66,-2.19 -2.84,-1.16 -2.77,-2.69 5.71,-4.36 1.08,-5.77 -2.64,-0.13 -5.78,0.48 -5.97,-2.74 -1.64,-0.43 -5.01,-2.22 -3.37,1.42 3.43,0.75 -3.64,3.11 0.58,3.64 -0.54,2.11 2.77,6.55 0.32,7.27 0.14,-2.94 -1.22,2.41 -1.79,-0.81 0.35,-1.41 -1.28,1.63 -2.67,1.7 -0.84,2.4 -2.43,5.18 -5.24,4.8 -1.25,2.86 -5.37,5.36 -8.05,7.72 -1.36,2.67 -8.24,3 -6.05,7.72 0.67,2.63 -0.29,5.48 -1.25,8.74 1.46,2.18 -3.6,4.23 -1.64,5.29 -3.2,-0.57 -3.39,5.55 -6.34,1.92 -1.91,-2.81 -1.52,-5.2 -3.5,-8.28 -2.54,-3.3 -2.51,-7.76 -4.9,-11.15 -1.54,-3.02 -2.32,-6.83 -2.3,-10.07 -0.66,-0.95 -0.81,-5.32 -0.56,-7.14 1.96,-0.46 -2.38,-1.05 0.2,-1.88 -3.14,-0.91 -1.37,5.66 -5.59,4.12 -2.56,-0.4 -7.37,-5.37 -2.47,-4.86 3.91,-3.18 -3.31,1.14 -3.81,-2.38 -0.35,-1.97 0.32,-0.7 -1.1,-0.85 l 0.06,-0.34 z m 68.31,30.59 c -0.76,2.09 -0.39,5.08 0.27,1.28 0.49,-1.51 0.24,-4.58 -0.27,-1.28 z", - "CN" : "m 676.19,124.66 c 0.98,-1.83 3.25,-2.89 5.46,-3.21 1.72,2.58 3.49,-2.51 6.01,-1.25 1.96,-1.24 5.07,-2.13 6.86,-3.29 -0.65,-2.73 3.04,-2.13 0.47,-5.26 0.7,-1.82 -0.76,-1.93 -1.33,-2.46 2.18,-1.71 6.37,0.32 7.36,-1.37 -1.71,-0.44 0.85,-4.93 2.17,-4.89 2.66,1.09 7.77,1.38 6.25,-2.85 1.12,-1.02 3.17,-0.74 3.53,-2.58 3.42,-0.89 2.49,1.94 5.53,2.87 2.83,-0.07 6.03,2.03 5.68,5 -0.4,1.63 -1.19,3.52 1.67,3.39 3.81,-0.25 7.11,1.27 10.59,2.43 0.94,2.78 3.39,5.13 6.71,4.15 3.26,0.94 6.58,-0.02 9.86,0.56 3.02,1.55 6.81,1.97 9.99,2.52 3.46,-1.14 7.28,-2.67 11.14,-2.14 3.36,0.17 5.74,-2.56 8.43,-3.8 -3.55,-2.2 0.96,-5.11 3.39,-2.82 2.7,-0.29 4.66,-2.42 7.58,-2.27 1.89,-2.66 5.14,-2.73 8.12,-3.34 3.52,1.8 3.22,-1.63 0.5,-2.54 -2.9,-2.4 -7.09,1.31 -9.71,-1.03 1.84,-1.66 2.23,-6.59 5.67,-4.32 1.73,-0.47 5.28,-0.91 4.66,-2.74 0.65,-2.25 5.72,-3.82 3.46,-5.87 -3.15,-0.11 2.81,-2.56 4.29,-2.25 3.47,-0.72 6.65,0.61 9.85,1.03 1.47,1.29 2.72,2.4 3.14,4.21 1.6,1.71 1.34,4.47 3.28,5.65 2.63,-0.12 6.8,1 7.49,2.86 -0.06,3.38 4.81,2.8 7.08,1.24 2.05,-0.65 5.63,-1.43 3.84,1.81 -2.18,1.1 -1.62,4.59 -3.99,5.76 -0.74,2.42 -3.94,-0.86 -5.37,1.36 -0.68,1.23 1.33,6.54 -1.79,6.4 0.65,1.89 -2.28,-3.04 -2.11,0.29 -1.2,1.07 -3.81,1.45 -4.57,1.93 0.9,3.73 -4.61,-1.94 -5.15,1.91 -2.77,1.4 -5.47,3.91 -8.38,3.98 -1.83,0.26 -4.94,3.72 -5.71,2.3 1.87,-0.72 2.25,-1.37 -0.02,-1.55 1.16,-1.01 4.13,-2.63 1.82,-4.16 -2.71,0.14 -4.38,2.63 -7.17,3.79 -0.26,2.82 -6.3,-0.06 -4.28,3.62 1.87,1.47 4.4,-0.22 3.61,3.08 2.93,1.27 3.81,-3.22 6.7,-0.84 1.85,0.07 4.74,0.71 2.12,1.94 -0.85,-0.61 -2.49,0.66 -4.04,0.94 1.1,0.5 -1.5,1.4 -1.84,1.14 0.85,1.18 -5.19,3.68 -0.97,4.61 3.04,0.63 2.02,5.26 4.61,6.08 0.38,0.89 2.57,2.29 -0.03,1.31 -1.71,-0.33 -3.98,-0.32 -4.77,-1.14 0.2,0.17 1.18,1.11 3.05,1.01 1.24,0.82 5.05,3.07 1.14,3.56 -0.82,1.12 -4.41,1 -1.66,1.07 0.15,1.25 2.24,-0.9 3.32,0.96 1.68,7e-4 -2.37,2.24 -0.01,0.92 1.46,1.66 -2.03,0.31 -0.33,1.92 0.25,0.71 -2.53,0.11 -0.44,0.9 0.21,2.07 -1.3,-0.07 -2.09,1.69 -0.34,-1.27 0.17,3.3 -1.32,1.9 0.31,1.21 -1.28,2.5 -1.15,1.82 -1.91,-0.55 1.16,1.12 -1.18,1.94 -2.52,-0.3 1.93,-0.49 0.12,1.08 0.75,1.16 -1.52,-0.46 -0.8,1.16 -1.3,-0.69 -1,1.85 -2.11,1.43 -1.44,0.56 -1.84,0.37 -1.2,1.22 -0.58,1.11 -3.91,1.83 -3.53,2.7 -0.54,1.17 -3.16,1.16 -3.37,1.31 -0.21,0.3 -1.88,0.26 -2.25,0.37 -0.4,-0.54 -0.32,1.21 -1.98,0.36 -1.09,0.06 -1.43,-1.98 -0.79,-1.66 -2.48,0.28 0.3,1.37 -0.8,2.65 -1.59,-2.37 0.45,1.1 -1.14,0.16 -0.53,2.04 -2.1,-0.49 -2.11,1.18 -1.28,-0.82 -3.27,1.61 -4.19,0.79 -0.95,0.09 -1.82,1.58 -1.18,1.78 1.08,2.17 -1.87,1.65 -1.57,0.11 -0.21,-1.58 0.77,-2.41 -0.73,-2.43 -0.66,1.54 -1.9,-0.84 -2.21,-0.27 -0.84,-1.36 -0.36,1.63 -2.6,0.24 -1.39,0.29 -4.02,-1.33 -2.89,-2.75 -0.33,-1.32 -3.39,-0.8 -4.13,-1.88 -1.6,1.63 -3.37,1.75 -4.75,2.01 -0.87,-0.55 -1.87,0.5 -2.97,-0.31 -0.93,1.27 -3.59,0.13 -1.88,2.76 1.13,2.12 -2.19,1.84 -1.82,-0.17 -3.05,2.72 -2.46,-1.51 -5.31,-0.98 0.41,-1.66 1.61,-2.8 -0.66,-3.07 -0.66,-2.14 -0.16,-3.51 -3.08,-2.08 -1.52,-0.11 -0.44,-4.15 1.31,-4.64 1.63,-0.67 1.84,-5.2 0.32,-5.63 -0.62,-0.82 -1.93,-3.56 -3.2,-1.93 -1.58,-0.67 -3.46,0.33 -2.03,-1.74 -0.71,-0.71 -1.24,0.1 -0.84,-1.18 -1.66,-0.28 -3.02,1.33 -4.67,0.18 -3,0.65 -5.1,5 -7.99,3.9 -2.19,-0.27 -4.92,-2.17 -6.72,0.26 -1.39,2.29 -0.88,0.42 -1.34,-0.74 -2.24,1.12 -6.05,-0.24 -7.37,0.15 -1.72,-1 -3.07,-1.32 -5.2,-2.73 -2.13,-0.8 -4.8,-3.35 -7.47,-3.95 -1.43,1.75 -3.37,-1.06 -4.89,-1.65 -1.25,-0.09 -1.77,-1.57 -2.84,-1.23 0.24,-1.36 -2.08,-4.64 0.61,-2.74 3.94,-1.31 -2.27,-3.7 -0.23,-5.46 -2.53,-0.9 -2.49,-4.23 -5.76,-3.62 -1.19,-0.91 -2.65,-0.68 -2.66,-2.99 -1.4,-0.97 -5.85,-1.1 -2.11,-2.04 -0.68,-1.91 -0.62,-4.36 -3.56,-3.51 0.02,-1.05 -0.58,-1.09 -0.48,-2.31 z m 97.06,56.63 c -1.11,3.9 4.72,3.69 5.27,0.66 1.63,-1.13 0.73,-3.74 -0.44,-2.35 -2.21,-0.55 -3.09,0.13 -4.83,1.69 z m 14.89,-8.96 c 1.82,-0.56 0.14,1.44 0,0 z", - "CA" : "m 244.83,107.58 c 2.56,-1.73 -4.42,-1.05 -3.23,-0.93 1.16,0.78 3.66,0.35 3.23,0.93 z M 104.71,86.08 c 3.08,-0.45 -0.47,0.88 2.33,2.09 2.62,1.96 -2.81,-1.34 -2.42,-1.74 -1.02,0.29 -0.33,-0.53 0.09,-0.35 z m -1.61,-1.25 c -1.31,-3.08 3.61,-0.28 1.49,-0.2 -0.93,0.47 3.48,-2.79 1.31,-0.11 0.03,2.3 -3.46,1.11 -1.72,0.94 0.13,-0.07 -2.15,-0.68 -1.07,-0.63 z m 7.14,-1.3 c -1.97,0.46 -0.13,0.25 -0.04,0.57 0.33,0.02 0.37,-0.51 0.04,-0.57 z m 0.86,1.37 c 2.1,1.83 1.37,-0.53 -0.62,-0.93 l 0.14,0.3 z M 309.76,101.63 c -3.74,1.04 -2.32,-2.06 0.32,-2.47 -0.97,0.04 -3.66,0.15 -1.35,-0.7 -0.84,1.41 2.48,-1.8 2.19,-0.65 0.19,-0.53 -0.89,-1.18 0.45,-1.6 0.95,-2.81 2.42,-5.02 5.54,-5.58 2.59,-0.18 -1.89,0.8 0.31,1.17 -0.88,0.61 -4.78,5.96 -1.61,3.18 0.66,-0.31 3.99,0.11 1,0.89 -1.13,0.11 1.44,-0.04 -0.42,0.73 1.61,0.2 3.54,-0.84 2.04,1.08 1.8,-1.07 2.61,-1.46 5.38,-0.6 -0.87,1.02 -2.5,1.19 -1.2,1.4 0.05,0.34 0.89,0.09 -0.7,1.12 0.85,-0.39 5.1,-1.26 1.4,0.5 -1.56,0.18 0.51,0.26 -0.6,1.31 0.53,1.55 3.59,-3.11 1.88,-0.13 -0.79,1.96 2.57,-1.37 1.04,1.65 -1.29,3.05 -2.65,0.4 -2.49,0.31 -2.83,2.91 0.95,-4.13 -1.92,-1.48 -0.31,0.75 -1.34,0.25 -2.54,1.84 -5.04,0.91 3.13,-2.34 0.7,-1.86 0.01,-0.95 -1.74,0.99 -2.54,0.22 -0.35,0.19 1.48,-1.19 -0.49,-0.8 -1.06,1.54 -4.96,-0.09 -6.38,0.48 z m -13.97,-6.19 c 1.75,0.03 7.41,2.68 2.62,2 -1.7,-0.27 -9.04,-3.24 -2.62,-2 z m 4.16,7.1 c 0.66,-1.17 2.5,-1.07 0.33,-0.31 1.28,-1.24 -0.82,1.46 -0.33,0.31 z m 1.76,4.82 c -1.8,-2.58 4.69,-5.31 2.21,-1.89 0.47,0.45 -2.17,0.92 -0.8,0.9 -2.04,1.42 2.53,0.05 0.14,0.01 2.15,-0.94 -0.29,-0.55 1.6,-0.81 2.95,0.15 -1.22,2.57 -3.16,1.8 z m -6.54,-1.87 c -0.58,-0.96 -3.25,-1.11 -0.83,-2.23 -0.95,2.98 4.97,1.1 5.26,1.88 -1.31,0.29 -1.93,2.05 -2.6,0.23 -0.48,0.53 -1.25,0.39 -1.82,0.12 z M 146.14,38.73 c 2.04,2.16 5.73,2.16 9.08,2.11 1.9,0.06 2.05,3.48 5,1.99 3.34,-0.06 4.47,-0.1 8.62,-0.48 2.71,-0.39 5.75,-1.68 7.96,-1.82 0.12,1.1 4.45,0.21 3.52,1.24 2.83,-0.26 7.06,1.05 9.03,-0.86 -0.38,-0.8 -2.91,-0.99 -3.76,-0.03 1.4,-0.93 -2.45,-1.6 0.72,-0.97 2.01,-1.22 4.15,-0.13 5.74,-0.72 -1.83,-1.48 -4.91,-1.85 -7.57,-2.29 -1.3,-0.45 -3.98,-1.07 -2.25,-2.41 -2.43,-2.5 -4.5,-5.8 -8.66,-4.99 -3.42,-1.76 -2.11,2.72 0.38,3.84 -3.4,2.2 -3.08,-2.67 -6.23,-2.63 -1.42,-0.87 -5.32,-0.51 -1.4,0.18 0.95,0.32 -1.7,-0.12 0.11,0.65 -0.55,-0.65 -6.22,1.4 -4.5,0.11 2.51,-1.3 -6.37,-2.15 -5.77,-0.39 -0.62,-0 -4.26,0.38 -0.94,-0.68 -0.75,-3 -6.07,-0.2 -8.52,-0.27 -1.42,0.62 -5.7,1.08 -3.04,2.03 -1.61,0.03 -4.53,1.63 -1.3,1.71 3.11,-0.04 1.83,-0.01 1.51,0.64 2.2,0.34 7.16,-0.7 7.75,-0.15 -0.67,0.01 -3.39,0.09 -1.34,0.17 -1.74,0.94 -6.48,-0.16 -6.63,1.54 3.31,1.26 7.06,0.66 10.55,0.55 2.33,0.08 6.76,0.17 7.64,1.17 -4.22,0.32 -8.48,-0.56 -12.71,0.23 -1,0.12 -2.1,-0 -3.01,0.54 z m -51.48,2.87 c 1.51,-0.44 0.54,0.2 0,-0.73 2.66,0.85 -1.13,-0.61 1.69,-0.17 0.89,-0.89 6.58,-1.37 2.64,0.17 -1.82,0.74 1.69,2.23 -0.86,0.9 -1.04,-0.24 -2.37,0.11 -3.48,-0.17 z m -11.14,24.71 c -4.74,0.6 -2.53,-5.35 -2.97,-8.32 0.51,-5.66 -0.5,-11.32 0.04,-16.99 0.37,-3.03 6.07,-0.4 8.15,0.13 1.99,0.48 7.51,1.29 7.51,0.89 -1.1,-1.47 5.34,1.78 2.19,-0.64 2.81,-0.87 5.93,-2.03 6.76,-1.83 2.59,-0.42 4.86,-1.4 6.95,-1.35 1.76,1.12 -5.93,1.39 -3.63,2.45 0.33,-0.17 4.33,-2 5.58,-1.66 -1.4,1.69 4.21,-1.53 3.24,-1.01 -3.01,-1.53 3.09,-0.15 3.51,1.65 0.73,1.14 5.49,0.83 2.6,0.69 1.65,-0.06 -0.15,-1.24 2.02,-0.79 -3.09,-0.18 2.76,-1.13 -0.53,-0.74 -1.08,0.04 2.55,-0.88 1.76,0.74 2.39,-0.25 -1.7,1.07 0.84,1.05 3.31,-1.3 7.01,-1.88 10.62,-0.29 3.1,0.19 9.75,2.4 10.88,1.31 2.3,-0.71 9.6,1.99 3.82,2.28 -3.69,1.21 3.34,1.18 5,1.34 3.05,0.26 6.43,-0.99 8.67,-0.54 2.92,1.04 3.42,0.68 5.84,2.08 -1.21,0.61 -2.78,-0.51 -0.62,0.69 0.02,0.11 4.35,2.54 1.08,0.32 -0.2,-1.47 2.67,0.58 0.4,-1.56 -1.79,-2.45 -0.5,-1.93 2.44,-2.39 1.25,-0.6 4.56,-1.41 1.27,-1.14 -1.22,1.15 -5.07,0.43 -4.44,1.07 -2.82,0.55 -2.81,-1.33 0.45,-1.36 2.84,-1.2 5.87,-0.6 7.18,1.02 2.5,0.5 6.03,1.19 9.28,1.53 3.16,-0.39 6.32,0.22 9.42,-0.09 -3.13,-1.65 6.02,1.92 2.48,-0.46 -1.47,0.42 -3.22,-0.33 -2.65,-0.73 -1.46,-0.58 1.58,-0.36 2.14,-0.86 1.7,0.7 3.29,0.69 3.14,1.29 3.15,-2.04 -0.1,1.34 0.82,1.78 0.03,0.71 2.07,0.16 1.6,0.63 2.8,1.45 -4.59,-0.3 -0.84,1.17 1.91,1.41 -1.85,-1.34 1.34,-0.34 2.24,-1.01 -2.52,-3.19 1.31,-3.24 2.32,-0.41 5.92,-1.92 2.95,-2.58 1.52,0.95 -3.62,0.77 -0.77,-0.19 0.69,-0.24 -0.97,-1.12 1.23,-1 1.07,-0.19 -1.05,1.24 1.2,0.11 -1.98,-0.81 -6.79,-0.11 -8.7,-2.42 0.49,-1.44 2.05,-0.47 1.56,-1.36 -3.41,0.98 -1.2,-3.45 0.98,-1.7 0.81,-1.07 -2.56,-0.64 0.04,-1.02 1.52,-0.69 3.3,-0.36 0.61,-0.67 2.31,-0.94 1.96,1.17 4.35,0.52 1.51,0.23 2.43,2.42 2.9,2.66 1.31,1.26 5.29,1.89 1.1,1.83 -0.59,0.47 2.37,0.22 -0.18,0.8 -2.2,0.78 0.07,0.46 1.98,0.93 0.32,-0.62 2.69,-0.19 0.6,0.02 2.11,-0.14 4.46,0.1 1.28,0.73 -1.45,-0.18 2.86,0.97 1.26,2.35 2.09,1.79 1.56,-2.7 4.37,-2.24 1.94,-0.05 4.58,3.11 1.77,2.69 0.16,2.3 2.94,3.74 4.7,2.5 1.67,-1.64 2.36,-4.21 4.92,-4.09 -2.14,-0.41 2.15,-0.47 -0.59,-0.85 -1.27,-0.32 -2,-2.61 1.21,-1.98 1.52,0.28 6.69,0.22 5.83,0.88 -3.77,0.13 1.61,-0.21 0.99,0.83 2.21,-0.61 3.43,0.98 0.4,0.98 3.59,-0.39 1.24,1.58 -0.92,1.12 -1.08,0.83 2.57,1.41 3,3.55 -2.46,1.68 -6.78,3.08 -7.84,1.39 -1.45,-0.72 -0.92,-1.23 -3.01,-0.4 2.13,-0.37 2.4,0.17 3.84,1.87 -1.74,-0.44 -1.92,-0.44 -2.14,-0.01 -1.88,-0.53 -4.67,-1.55 -6.03,-0.58 5.01,0.23 -1.93,4.21 -4.04,2.76 -2.46,-0.63 -0.25,-0.53 -0.98,-0.62 -1.3,-0.23 -4.45,-1.31 -3.5,-0.51 -0.92,-0.36 -5.89,-0.27 -2.81,-0.25 3.62,0.89 7.31,1.87 10.82,2.38 -1.03,1.96 -5.91,3.47 -5.86,3.16 -2.55,-0.41 -1.86,-1.03 -3.11,0.91 -2.26,0.36 -8.59,-1.05 -9.49,-1.16 -1.29,0.69 5.54,0.37 3.02,1.39 2.48,-1.49 7.83,1.65 2.78,2.06 -2,-0.32 -2.91,0.06 -1.22,0.73 -2.3,-0.36 -2.13,1.41 -2.74,0.73 -0.46,1.4 -2,0.53 -1.39,1.69 -2.08,0.11 -1.69,3.18 -3.61,3.39 1.24,2.05 -1.5,4.67 0.69,4.72 1.72,0.47 -0.41,2.56 0.92,0.17 3.52,-1.7 5.11,4.92 4.09,5.11 2.05,-0.87 -0.14,0.49 2.28,-0.39 3.91,-0.93 8.29,0.43 11.65,2.49 1.68,0.86 7.67,1.82 6.77,3.05 3.47,-1.04 5.34,-0.15 8.43,0.06 -0.75,2.1 0.08,4.64 0.26,6.34 0.95,0.51 2.19,1.47 0.57,1.79 1.75,-0.47 5.9,2.21 2.48,3.28 1.45,-1.58 4.45,0.08 4.46,0.44 -2.57,-2.9 1.98,-1.26 1.46,-1.41 -0.03,-0.6 0.01,-1.95 0.9,-2.64 -0.74,-1.25 -1.02,-2.3 -1.44,-3.61 0.46,-0.89 -0.11,-1.27 -1.11,-2.3 -0.61,-1.94 5.15,-1.38 6.52,-3.51 4.22,-2.81 -0.03,-7.89 -3.79,-8.31 0.71,-1.66 2.34,-2.57 2.83,-3.18 2.16,-0.49 -1.96,-1.63 0.02,-2.24 -1.18,-0.38 -0.34,-0.96 -1.74,-0.73 1.34,-1.63 1.99,-2.18 -0.12,-3.43 1.39,-3.46 6.51,0.15 7.76,-0.76 1.59,0.83 7.15,-1.66 7.06,1.25 2.62,-0.24 1.07,0.89 3.46,0.75 -2.6,1.14 3.21,1.14 4.45,2.06 2.49,-1.25 0.42,0.81 0.74,2.26 -1.55,0.38 -5.34,-0.21 -1.48,0.2 2.84,-0.45 0.35,2.25 2.73,2.1 -0.79,0.38 -1.21,1 -1.63,0.92 -3.1,1.8 5.98,-1.97 3.87,2.16 -2.05,0.74 -3.51,1.21 -0.56,0.39 0.74,-0.84 2.92,-2.33 1.42,-0.37 1.54,-2.1 0.73,1.37 1.52,-0.15 2.02,-1.1 3.96,-2.16 4.54,-0.78 -0.45,-1.4 -0.11,-1.39 1.63,-1.63 -1.87,-0.2 -0.13,-1.63 0.85,-0.95 -3,-1.08 0.71,-0.99 -0.29,-1.45 0.91,-2.07 2.88,-0.97 0.98,-0.29 1.57,-0.58 2.12,1.13 2.7,1.58 -0.6,0.25 2.61,0.74 -0.48,1.01 1.67,-0.01 2.25,0.09 2.22,0.58 2.6,0.65 -3.13,1.67 0.2,1.16 1.49,-0.33 1.62,0.85 -0.52,1.25 1.9,-0.82 2.82,-0.05 2.23,0.08 0.83,-0.29 2.46,1.54 0.07,1.35 2.52,0.36 3.26,1.57 1.98,2.24 -0.58,0.44 -2.7,-0.45 -0.87,-0.35 -3.2,-0.39 1.42,0.76 -0.46,0.58 3.04,0.12 -1.17,0.41 1.49,0.85 -0.49,0.02 -1.23,0.41 0.92,0.26 -0.3,1.01 2.15,1.52 2.48,1.25 0.63,1.08 0.41,1.41 -0.1,1.83 -1.42,0.88 2.43,-1.21 0.72,0.34 2.06,-1.37 0.58,-0.05 2.32,-0.32 -1.99,1.75 -0.59,0.5 0.78,-0.21 -0.83,0.96 3.44,0.91 4.93,1.94 -0.91,0.27 -0.18,0.2 -2.27,0.57 -1.84,0.6 -5.63,1.13 -1.65,0.57 2.38,-0.14 -3.16,0.98 -4.22,1.44 -2.7,-0.93 -0.89,-0.3 0.64,0.4 -2.33,1.52 3.75,-1.61 5.49,-1.72 1.43,0.01 -2.41,-0.46 0.42,-0.41 1.33,-0.34 3.51,1.41 1.11,1.71 1.48,0.47 2.57,-1.08 3.17,0.01 0.44,-0.43 2.91,1.71 0.64,1.58 1.75,0.56 -0.62,0.7 1,1.17 -2.22,0.27 -1.65,-0.28 0.39,0.74 -2.99,-0.77 1.74,0.68 -1.38,1.45 -2.37,2.12 -6.86,0.27 -7.89,2.97 -1.65,1.5 -6.45,2.06 -7.47,1.84 -3.18,-0.9 -6.5,0.01 -9.77,-0.48 -3.36,-0.48 -4.38,1.16 -6.78,2.81 -2.39,0.17 -3.24,1.57 -5.77,3.28 -1.99,-1.07 -5.18,-0.85 -1.58,-0.48 5.12,0.4 -6.41,5.83 -0.69,3.68 3.03,-2.92 6.6,-5.2 10.86,-5.86 1.82,-1.26 7.93,0.03 6.2,0.88 1.62,1.52 -3.47,2.53 -4.77,1.78 -4.06,0.15 1.22,0.69 2,1.16 3.73,-1.32 0.07,1.86 0.75,1.84 1.83,0.1 0.7,3.59 3.79,2.65 -1.76,0.9 3.54,1.02 3.53,1.41 1.87,-1.26 6.01,1.52 2.29,1.42 -2.69,0.95 -5.02,1.96 -6.51,1.47 -0.37,0.6 -2.85,2.58 -3.65,2.69 -1.04,1.1 -3.75,-1.22 -1.3,-2.57 -2.36,0.6 1.63,-0.33 0.76,-0.7 2.73,-1.8 3.52,-0.2 5.5,-1.39 1.65,-0.88 -5.93,0.77 -2.59,-1.05 1.32,-0.18 -1.05,-1.65 -0.69,0.14 -1.72,1.42 -4,0.4 -3.9,1.17 -2.12,0.93 -3.27,-0.09 -4.35,-1.4 0.03,-2.33 -0.19,-5.65 -3.46,-4.3 -2.45,-1.44 -3.52,4.25 -5.14,5.43 -2.9,1.15 -7.13,0.8 -10.76,0.87 -2.86,0.95 -5.35,2.75 -7.94,2.49 5.27,0.89 -3.8,-0.49 -5.56,1.57 -1.62,1.44 2.98,0.61 1.28,1.92 -1.93,-0.43 -4.04,0.88 -3.2,0.9 -3.13,-1.58 -5.29,2.34 -7.94,1.28 -0.31,-1.39 2.97,-0.16 1.48,-1.37 1.6,-1.89 3.6,-4.31 3.26,-6.92 -0.97,-1.69 1.66,1.48 1.9,1.01 1.71,1.67 2.32,-1.01 2.7,-0.39 -1.01,-1.37 -1.51,-2.43 -3.69,-3.12 -1.7,-0.13 -2.37,-0.91 -5.5,-0.7 -2.21,-0.29 -4.55,-0.92 -4.02,-2.13 -1.25,-0.79 -0.48,-3.83 -3.11,-2.77 -1.63,-1.3 -2.66,-2.91 -5.18,-2.61 -1.96,-1.73 -1.99,1.66 -2.83,0.8 1.4,-2.08 -2.07,1.92 -0.71,0.05 -2.26,2.27 -5.62,0.96 -8.19,1.03 -2.23,-0.69 -4.28,-1.2 -6.83,-1.39 -1.67,0.55 -2.07,-3.73 -2.84,-0.91 -25.35,0.01 -50.71,-0.04 -76.06,0.02 -2.68,-0.23 0.16,-0.72 -1.56,-1.48 0.63,-0.24 -3,0.57 -1.83,-0.34 1.39,0.7 -0.1,-0.79 -0.32,-1.6 1.24,1.36 -2.46,1.77 -2,-0.42 2.07,-0.8 -2.61,1.02 -0.39,-1.08 0.32,-1.28 -1.91,2.58 -1.73,0.17 -1.48,1.22 -3.29,-0.16 -0.71,-0.12 1.57,-1.91 -1.47,1.23 -1.36,-0.4 -1.97,-0.13 0.79,0.11 -0.92,-0.51 -0.99,1.23 -4.7,-0.38 -1.06,-0.09 2.02,-0.15 -5.01,0.1 -1.14,-0.68 0.94,-0.02 -2.68,0.12 -0.33,-0.91 3.19,-0.33 1.8,0.01 -0.1,-0.34 -0.48,1.5 -1.85,-0.46 -0.45,-0.97 1.47,-1.47 2.44,0.87 2.2,-0.78 -2.45,0.23 0.84,-2.3 -1.41,-0.25 -3.01,1.39 -0.76,-1.05 -2.99,0.49 1.7,-2.23 -1.07,-1.48 -1.47,-3.57 1.57,0.74 4.05,0.59 0.74,0.17 -0.3,-1.19 0.68,-1.5 -0.94,-0.78 -1.22,2.51 -3.85,-1.63 -2.38,-0.97 2.73,-0.79 -2.3,0.68 -1.47,-1.41 2.99,1.86 -1.4,-0.85 1.53,0.03 -2.29,-0.51 2.4,-1.37 -0.15,-1.06 -0.32,-1.5 1.91,-0.87 0.29,-1.81 -0.41,3.34 -0.83,0.2 -0.77,-1.31 -2.81,-0.83 -5.59,-1.48 -6.98,-4.04 -1.8,-2.74 -5.22,-3.62 -7.04,-5.94 -2.86,-1.73 -4.34,2.92 -6.63,1.49 -2.57,-1.25 -4.45,-4.25 -6.79,-3.03 z M 221.95,34.56 c 2.71,1 5.66,0.09 8.24,1.27 -2.22,0.9 -9.4,-1.53 -5.2,1.22 1.53,0.7 2.86,0.59 2.55,0.77 0.85,0.02 3.21,0.3 2.68,-0.32 1.12,0.64 1.95,-0.71 1.86,0.68 1.49,0.87 4.22,0.59 2.18,0.28 3.62,0.1 7.47,0.79 10.93,0.47 -1.54,-0.51 -5.12,-1.38 -1.54,-0.59 1.34,0.63 6.02,1.49 2.2,0.35 0.08,-1.25 7.06,1.95 7.56,-0.38 -1.85,-1.2 -2.64,-0.17 -0.89,-1.44 -0.2,1.08 4.01,0.75 4.52,2.45 2.36,-0.76 -0.69,-0.06 1.66,-0.06 -1.72,1.35 2.73,-0.25 1,0.89 2.05,0.14 3.5,1.75 0.3,1.21 -2.45,1.88 2.27,0.12 3.42,0.41 1.54,-0.85 -0.26,0.19 1.01,0.3 0.43,0.41 2.55,1.08 2.17,0.23 0.79,-0.08 0.08,2.04 1.89,0.94 -0.33,0.35 5.21,3.53 0.97,4.11 1.44,1.85 5.43,-0.13 5.88,-0.08 2.46,1.07 4.84,1.21 3.7,1.53 1.81,0.54 -4.94,0.46 -4.75,1.06 0.01,-2.73 -6.31,-2.19 -8.61,-0.71 -1.09,1.08 4.69,2.44 0.63,2.21 -1.59,0.93 -6.76,0.13 -3.2,1.49 -1.08,1.55 0.2,-1.12 -2.6,-0.91 -2.86,-1.04 -3.86,0.32 -5.85,1.69 1.76,1.72 5.55,1.53 6.77,0.64 0.57,-0.23 4.81,0.61 3.08,-0.99 0.05,0.06 1.43,0.67 1.71,0.62 0.12,1.1 1.18,-0.27 2.6,-0.01 -0.96,1.59 3.24,2.18 2.96,2.51 0.09,-0.66 4.07,0.75 0.7,0.77 -2.35,0.11 4.13,1.16 1.91,1.18 2.86,0.97 4.35,0.24 6.19,1.79 2.74,0.47 5.5,1.08 8.25,1.35 -0.11,-1.4 -3.05,-2.23 -4.52,-3.16 0.28,0.51 -6.01,-2.56 -1.86,-1.87 0.75,0.85 2.44,1.17 0.93,-0.21 2.43,1.5 3.49,1.89 4.08,1.85 0.64,0.73 1.16,-0.32 1.42,0.39 0.89,-0.66 3.78,2.4 1.81,-0.11 3.01,0.9 -0.41,-1 0.83,-1.64 -1.68,-1.57 2.26,2.56 1.18,-0.34 -2.02,-0.73 1.47,0.53 -0.06,-0.55 -0.74,0.15 -1.62,-0.58 -2.38,-1.1 2.33,-0.84 -1.46,-0.09 -0.68,-1.53 -1.39,0.67 -1.8,-0.3 -3.29,-0.56 1.09,0.07 -2.18,-0.92 -0.55,-1 -0.61,-0.17 -1.18,-1.48 -2.49,-0.34 0.66,-1.39 -1.83,-1.01 -0.41,-1.69 -3.28,-0.22 -0.55,-0.65 0.36,0.35 1.4,0.92 3.34,-0.39 0.73,-0.91 -0.34,-0.79 1.69,0.46 1.59,-0.39 -2.57,-0.4 1.89,-1.03 1.78,0.63 0.62,-3.6e-4 2.8,0.28 2.55,-0.25 -3.14,2.77 5.99,-1.54 2.2,0.69 0.2,-0.06 -3.5,1.07 -0.92,1.05 1.72,-0.54 -1.63,0.94 0.94,0.09 -2.62,1.42 2.76,0.13 -0.19,1.01 1.53,0.83 1.55,-0.56 2.22,0.61 1.17,0.58 2.78,-0.06 1.4,-1.24 1.62,-0.12 -1.32,-0.27 0.4,-0.69 -0.89,-0.48 1.85,0.54 1.79,0.4 0.67,-0.07 -0.68,-0.71 1.16,-0.73 -2.52,-0.99 -0.79,-0.18 0.82,-0.38 -1.27,-0.83 -3.37,-0.63 -0.79,-0.79 -2.45,-0.74 4.59,0.41 1.13,-0.3 2.25,-0.38 -2.45,-1.11 0.97,-0.46 1.55,-0.43 -1.67,-1.37 -1.27,-0.96 -0.95,-0.51 -0.81,0.6 -1.97,0.07 -0.18,1.16 -0.94,-1.11 -1.87,0.21 -2.87,0.77 3.39,-1.95 -0.02,-1.18 -1.5,1.27 0.78,-0.56 -1.58,-0.05 -3.98,1.04 0.11,9e-5 -0.62,-0.1 -1.35,0.09 -1.97,0.32 -0.19,0.02 -3.48,-0.35 2.89,0.16 -0.07,-0.52 1.73,-0.83 -1.75,-0.41 -0.64,-1.02 -1.8,0.47 -1.63,0.18 -1.1,-0.59 -1.8,0.51 -0.91,1.28 -2.16,0.13 -1.76,1.97 0.61,-1.73 -1.97,0.31 -0.71,0.48 1.07,-1.45 -0.6,-0.45 -0.14,-0.72 -2.05,-0.68 -2.02,-0.37 1.82,-1.02 -3.16,-0.02 0.29,-0.66 3.62,-0.25 -1.59,0.13 -1.2,-0.42 -2.23,0.35 -3.54,-0.45 -1.47,-0.47 -2.95,-0.13 -3.87,-0.62 -0.53,-0.23 3.06,0.22 -1.26,-0.43 1.24,-0.2 -3.57,-0.65 3.2,-0.18 -0.81,-0.82 -1.4,0.06 -3.08,0.56 -0.81,-0.05 -1.69,-0.24 3.47,0.06 -0.32,-0.43 -2.79,-0.31 3.01,0.39 4.25,0.43 3.6,-0.32 -3.05,-1.18 -4.23,-1.1 -1.64,0.31 -5.3,0.06 -1.61,0.07 1.3,-0.57 6.18,0.08 5.48,-1.19 -2.02,-2.05 -6.01,1.39 -7.26,0.68 1.17,-0.37 5.27,-1.09 1.79,-1.36 -2.38,0.73 -3,1.41 -1.98,0.48 -0.04,-0.45 7.62,-1.24 2.53,-1.95 -1.79,-0.5 -5.98,1.51 -2.17,-0.25 -1.99,-1.75 -5.75,4.13 -3.67,0.87 -1.39,0.36 -3,0.73 -0.92,-0.28 2.35,0.43 3.3,-2.55 0.37,-0.87 -2.24,0.27 -3.61,1.29 -3.14,0.22 -1.43,-0.47 6.13,-0.74 2.1,-2.04 -2.47,-1.32 -4.97,2.51 -4.37,0.64 -1.21,0.07 -1.92,1.54 -0.58,-0.15 -0.29,-1.59 -2.71,1.19 -1.59,-0.17 -2.22,0.38 3.08,-1.33 -0.06,-0.85 -0.1,0.74 -1.76,-0.49 -2.05,1.28 -0.09,0.53 -0.27,-0.92 -0.62,-0.7 2.68,-0.88 -3.2,0.48 0.18,-0.36 -3.59,0.15 5.52,-0.88 0.49,-1.42 -1.76,0.39 -4.96,2.19 -1.67,0.37 -0.55,-0.71 -4.52,0.91 -1.06,-0.29 3.82,0.34 0.2,-1.94 -1.12,-1.17 -1.6,-1.42 -9.64,-0.02 -4.52,0.85 4.93,0.93 -4.8,-0.98 -1.85,0.48 1.22,0.45 2.74,1.09 0.5,0.32 1.89,1.25 -2.8,-1.31 -1.85,0.02 0.15,-0.46 -1.27,-1.66 -2.1,-0.86 -0.92,-1.7 -0.87,0.99 -0.75,0.25 -1.18,-0.77 -2.75,1.87 -2.85,0.28 2.17,0.26 -0.56,-0.31 1.3,-1.04 -2.36,-0 -2.3,0.98 -0.14,-0.53 1.4,-0.93 -1.83,-1.85 -2.94,-2.97 -2.09,-0.41 -6.81,0.29 -6.06,0.8 -1.51,-0.32 -5.69,0.56 -1.78,0.82 5.62,0.68 -6.33,-0.58 -1.39,0.53 1.79,0.35 3.42,0.63 0.69,0.19 -4.06,-1.18 -2.46,2.08 -0.25,1.35 1.59,-0.17 -1.23,0.49 1.24,0.8 1.01,0.88 -3.06,-1.56 -3.72,0.14 -2.2,-0.05 1.07,0.69 1,1 2.38,-1.22 2.32,3.18 0.62,1.73 1.64,-1.16 -7.5,1.08 -2.57,-0.17 1.14,-0.24 5.04,-0.29 1.75,-1.12 -2.5,-0.11 -2.64,-1.91 -3.1,-2.94 -2.31,-1.94 7.89,-3.35 2.28,-3.48 -3.25,0.13 -8.61,-0.33 -10.1,2.89 -2.02,0.44 -1.5,2.27 -1.83,3.77 z m 17.02,15.33 c -3.46,-1.07 1.37,1.92 1.69,0.82 -1.41,0.06 -0.8,-0.36 -1.69,-0.82 z m -0.03,9.98 c 1.39,2.91 8.62,-2.63 3.09,-1.16 -1.48,-0.19 -2.07,0.18 -3.09,1.16 z m -30.66,-27.28 c -1.81,0.47 2.85,0.93 2.9,-0.19 3.01,-1.16 -3.6,-1.76 0.63,-1.67 3.1,0.96 5.95,-0.21 6.97,-1.94 1.64,-0.5 3.5,-1.37 0.63,-1.39 -3.64,0.32 -7.1,-0.84 -10.81,-0.27 -3.63,-0.14 2.04,1.87 -1.22,1 -2.17,-0.37 -1.37,3.3 0.12,3.74 -1.18,1.25 2.23,0.47 0.8,0.72 z m 25.75,23.64 c 0.29,3.94 4.97,0.02 6.58,-1 2.13,0.26 4.2,2.58 7.81,1.32 1.24,-0.34 -0.29,-1 -1.25,-1.17 -2.11,0.15 -2.67,0.67 -2.12,-0.99 -2.59,-0.83 -6.29,-3.41 -8.61,-2.21 -0.52,-1.61 -3.19,-3.22 -3.68,0.18 -0.48,2.35 0.11,3.46 -2.81,3.95 0.12,1.08 3.17,-0.11 4.08,-0.09 z m -45.17,-24.25 c 3.8,-0.46 6.48,3.63 10.14,2.74 0.93,-0.26 -1.44,-2.07 0.17,-0.81 2.26,0.66 5.32,-0.78 4.35,-1.07 0.38,-0.85 -1.56,-0.61 0.47,-1 -0.04,-1.67 -2.77,-0.05 -2.57,-1.6 -1.62,-0.13 -4.72,0.32 -1.32,-0.67 1.67,-0.31 2.15,-0.61 0.62,-0.84 3.92,-0.12 -0.43,-1.57 -1.59,-0.84 -1.45,0.8 -5.86,-0.74 -5.09,-0.04 1.1,-0.05 -5.32,-0.06 -1.53,0.68 -0.99,0.09 -4.41,0.02 -1.21,0.74 1.76,0.03 4.83,0.28 1.28,0.42 1.9,1.07 0.27,0.08 0.1,1.26 -1.76,0.95 -5.62,-2.67 -5.98,0.13 0.14,0.4 3.11,0.53 2.16,0.9 z m -14.12,-3.1 c 2.24,0.22 5.97,3.17 6.62,-0.29 -1.89,-0.62 -5.27,-1.3 -6.62,0.29 z m 29.22,14.16 c 1.91,-0.7 4.92,-0.87 1.8,-1.6 -1.15,-0.65 -5.13,-3.31 -6.77,-1.62 2.04,0.59 -2.2,-0.14 -0.12,0.74 -1.81,-0.18 -4.73,1.57 -1.3,1.12 1.42,0.55 4.22,1.16 6.4,1.36 z m 45.69,-12.48 c 3.56,0.26 7.37,0.17 10.86,-0.09 -2.46,-1.8 -5.96,-2.44 -9.17,-2.05 -1.83,-1 -6.3,0.4 -2.53,1.1 0.44,0.19 0.59,0.68 0.84,1.04 z m 17.77,13.71 c -1.55,-0.69 -4.85,0.08 -1.36,0.7 0.54,0.38 3.29,-0.48 1.36,-0.7 z m -9.77,1.64 c 2.22,2.37 8.93,-1.35 4.35,-2.54 -1.39,-0.2 -5.97,0.43 -4.35,2.54 z m -3.45,-5.48 c -1.79,0.27 -3.67,2.44 -0.69,1.01 0.21,0.13 2.11,-1.15 0.69,-1.01 z m -4.31,-0.3 c 5.15,-1.14 -4.52,-0.79 -1.08,-0.33 l 0.5,0.12 z m 2.74,-18.71 c -2.32,-0.15 -2.08,1.4 0.05,0.73 -1.8,-0.43 -0.14,-0.18 -0.05,-0.73 z m -27.39,-1.39 c 0.43,1.41 0.18,-1.87 0.97,0.6 2.23,-0.02 2.72,-0.23 4.93,-0.19 0.99,-0.29 3.8,1.1 6.18,0.38 -2.31,-0.54 -1.89,-0.54 -0.08,-0.38 0.27,-1.28 4.2,1.23 2.77,-0.63 0.74,1.1 4.92,1.1 2.36,-0.19 1.3,0.8 1.93,-0.3 1.69,0.7 1.92,-0.5 3.39,0.45 3.05,0.98 2.86,-0.68 6.45,-0.28 8.4,-1.97 -1.31,-0.94 -5.27,0.78 -3.52,-0.91 -1.71,-0.65 -3.41,0.59 -3.84,-0.18 -1.52,-0.09 -7.18,-0.11 -2.83,-0.21 0.74,0.04 -2.86,-1.55 -0.18,-0.68 3.42,1.1 7.07,0.92 10.03,0.03 -0.04,-0.92 -2.59,-1.33 0.28,-1.16 1.63,0.32 8.82,-0.43 3.65,-0.56 -2.89,-0.26 7.18,-0 2.2,-0.85 -1.84,-0.04 -3.34,-0.32 -0.62,-0.21 1.92,0.69 5.12,-1.1 1.49,-1.04 -3,-0 -1.49,0.18 -1.61,-0.26 -1.45,-0.52 -7.94,1.17 -4.66,-0.02 -2.21,-0.28 -3.99,-0.11 -0.81,-0.12 1.76,0.12 7.78,-0.03 3.06,-0.3 -1.72,0.03 -5.1,-0.06 -1.51,-0.08 2.28,-0.63 7.24,1.14 7.93,0.18 0.4,-0.67 -6.5,-0.28 -7.74,-0.41 -3.17,-0.12 0.65,-0.38 1.46,-0.31 1.6,0.56 3.73,-0.16 0.84,-0.28 -3.45,-0.22 3.09,0.42 4.35,0.26 1.19,-0.16 7.87,-0.32 3.29,-1.04 -2.19,0.18 -2.73,-0.43 -0.25,-0.26 2.8,0.17 5.47,1.21 8.33,0.1 -3.29,-0.2 3.61,-0.39 -0.21,-0.85 -0.85,0.32 -5.31,0.31 -2.45,0.07 -2.95,-0.53 8.31,0.44 3.53,-1.3 3.49,1.42 6.85,-1.38 10.4,-1.6 1.58,-0.76 6.13,-0.33 5.94,-1.37 -3.32,-0.16 -6.7,0.43 -10.04,0.74 -2.98,0.61 -7.36,0.43 -2.64,0.08 1.95,-0.29 6.47,-0.55 6.8,-0.91 -2.4,-0.22 -5.78,0.49 -5.24,-0.2 -4.16,-0.76 3.11,0.64 4.59,-0.04 2.54,-0.07 4.72,-0.12 3.63,-0.22 4.22,-0.36 8.69,-0.25 12.67,-1.73 -1.97,-1.43 -5.27,-0.1 -5.6,-0.49 1.51,-0.47 -3.45,-0.69 -0.73,-0.78 -3.45,-0.49 -6.93,-0.07 -10.48,-0.08 -1.48,0.13 -6.05,0.61 -2.12,0.17 1.76,0.34 6.35,-0.62 2.28,-0.72 -4.28,0.14 -6.88,-0.27 -10.84,-0.3 -3.47,0.11 2.51,0.8 -1.24,0.45 -0.96,-1.2 -9.33,-0 -3.94,0.42 1.12,0.67 -3.67,-0.45 -4.99,-0.7 -1.87,0.32 -7.19,-0.53 -7.26,0.28 1.72,0.32 3.03,0.31 3.06,0.67 2.57,0.03 1.04,0.6 -0.63,0.52 1.18,-1.12 -6.23,-0.8 -4.76,-1.27 -1.66,0.31 -5.91,-0.46 -5.87,0.28 0.46,0.21 4.51,0.6 4.35,0.5 -2.02,0.34 -6.98,-0.82 -7.21,-0.16 5.35,1.05 -6.51,-0.45 -0.87,0.65 -1.68,-0.4 -4.39,0.47 -1.09,0.68 2.15,0.19 6.78,0.7 7.19,1.24 -3.19,-0.42 -6.77,-1.44 -9.8,-1.09 1.29,0.52 3.88,0.47 0.96,0.34 -2.88,-0.58 -7.8,-1.66 -8.62,-0.88 2.78,0.5 -5.6,0.08 -1.6,0.77 1.74,-0.31 5.95,0.84 1.87,0.43 1.18,0.42 -4.86,-0.7 -3.78,0.17 -3.31,-1.43 -5.85,0.41 -8.09,0.01 -1.79,-0.17 -8.35,1.18 -3.44,0.9 1.42,-0.36 6.26,0.04 2.37,0.06 -2.81,1.45 4.19,-0.05 5.53,0.05 3.08,0.18 2.28,0.16 -0.17,0.07 -1.6,-0.23 -6.35,0.82 -2.42,0.8 1.74,-0.03 -5.74,-0.06 -1.53,0.8 4.08,-0.18 8.23,-0.07 12.24,-0.98 3.81,0.26 -4.02,1.3 -5.65,0.94 -1.55,-0.22 -7.83,0.01 -3.69,0.84 4.19,1.31 7.99,-1.72 12.23,-1.08 1.47,-0.54 7.39,-0.18 3.29,-0.18 -2.88,0.61 -7.5,-0.29 -9.37,1.75 2.81,-0.34 6.24,1.21 8.62,-0.74 1.94,-0.27 -1.29,0.74 1.19,0.28 1.33,-0.72 5.21,-0.13 1.76,-0.16 -4.69,0.67 1.96,0.93 3.56,0.42 2.34,0.16 5.74,-1.7 5.37,-1.5 2.11,0.22 2.88,-0.74 3.34,-0.7 2.52,-0.44 2.76,0.02 0.09,0.21 -1.03,0.17 0.24,0.23 -1.75,0.48 -3.29,1.57 5.86,0.16 4.43,0.92 -2.06,-0.06 -7.47,1.4e-4 -7.17,0.78 1.89,0.01 6.11,-0.05 2.11,0.19 -3.77,0.21 -7.58,0.08 -11.33,0.47 -1.3,1.07 5.45,0.64 3.66,1.82 2.07,0.7 7.61,-0.06 2.51,0.51 -3.64,0.26 -6.99,-2.43 -11,-2.06 -1.31,-0.21 -7.75,-0.14 -3.73,0.92 3.6,0.72 -0.04,-0.6 -1.19,0.33 2.38,0.2 6.66,1.96 7.65,2.28 -1.65,-0.54 -4.61,0.01 -1.2,0.14 1.73,0.3 7.25,0.04 6.54,-0.02 -1.28,0.73 -6.41,0.18 -2.45,0.63 1.98,1.12 -4.75,-0.87 -7.35,-0.42 -2.11,-0.32 -5.18,0.72 -5.56,1 -2.26,0.34 1.27,1.26 -1.02,1.15 1.34,0.86 5.84,-1.66 3.84,0.19 3.04,-0.14 4.24,-1.95 4.07,-0.42 3.38,0.47 -0.1,-0.5 -0.85,0.39 5.16,-0.27 -5.39,0.29 0.08,0.57 3.03,0.07 0.18,-0.59 -1,0.19 1.63,-0.44 -0.98,0.82 1.3,0.46 1.21,-0.39 -0.15,0.77 2.06,0.35 1.94,-0.05 6.84,-2.96 2.95,-0.42 -0.4,0.22 -3.18,0.54 -1.25,0.88 -3.4,0.36 -6.03,-0.21 -9.04,-1.41 -1.65,-0.49 -5.65,0.01 -2.57,1.37 2.47,0.02 1.21,-0.05 1.85,0.28 1.82,0.91 -6.32,-0.29 -6.6,1.5 -1.53,0.72 1.85,1.39 1.9,0.38 z m -12.51,-3.14 c -2.8,-0.02 -6.17,-0.78 -8.66,0.32 2.53,0.58 6.54,0.9 8.66,-0.32 z m -1.82,4.12 c 1.71,-0.98 6.9,1.12 4.27,2.72 1.17,0.75 2.53,2.95 4.68,1.28 -0.05,2.09 7.18,-0.38 6.39,0.5 1.45,1.54 5.25,-0.07 6.91,0.56 2.39,-0.96 4.95,1.12 7.37,-0.98 2.5,1.53 6.29,1.19 8.98,0.2 -2.05,-0.7 4.76,0.05 0.77,-0.71 -3.66,0.36 3.57,-1.08 -0.37,-1.34 -1.24,-0.38 -6.4,-1.58 -9.94,-0.84 -1.68,0.03 -7.01,0.4 -6.27,0.96 1.15,0.08 -2.11,0.59 -2.38,-0.08 -2.27,-0.28 -4.74,-0.33 -6.02,-0.19 -1.03,0.01 -4.09,-0 -1.09,-0.56 -1.31,-0.92 -5,-0.36 -5.17,-0.68 2.33,-0.33 2.14,-0.21 0.57,-0.4 -4.8,-0.6 1.43,-0.23 1.54,-0.18 1.44,0.2 3.84,-0.17 0.94,-0.64 -1.35,-0.28 -6.33,-0.28 -2.36,-0.22 0.86,-0.64 -3.59,-0.82 -4.94,-0.46 -1.51,-0.65 -3.64,1.46 -2.2,-0.32 -3.15,-0.59 -6.64,-1.34 -9.82,-0.55 2.88,0.59 -2.14,0.27 0.77,0.78 0.94,0.34 3.95,0.11 1.28,0.43 1,0.78 5.24,0.32 1.96,0.63 1.36,0.23 2.75,-0.17 4.15,0.1 z m -2.52,1.8 c -1.67,0.15 -3.78,0.65 -2.96,0.86 0.25,-0.07 -3.05,1.2 -0.28,0.98 1.68,1.28 10.19,1.81 5.69,-1.29 -0.78,-0.33 -1.62,-0.49 -2.46,-0.55 z m -7.63,4.34 c -2.25,-0.08 -6.35,0.67 -3.12,0.8 0.94,-0.14 2.62,0.23 3.12,-0.8 z m -6.3,-2.43 c 1.95,-0.49 6.91,0.16 5.93,-0.76 -0.98,-0.36 -0.42,-1.07 1,-0.78 -0.7,-0.84 -1.17,-0.48 -0.45,-1.85 -0.44,-1.5 -4.66,-1.41 -2.97,-1.46 -1.84,1.17 -4.07,-0.63 -6.53,0.5 0.81,0.6 3.87,0.43 1.18,0.57 2.29,0.74 2.38,-0.08 1.44,0.79 1.94,0.66 -2.88,-0.43 -4.17,-1.21 -2.5,-0.37 -1.86,1.12 0.2,0.51 -2.51,0.49 0.26,0.71 0.11,1.16 3.11,0.63 -3.73,-0.55 -2.33,0.3 -3.66,0.88 3.03,0.71 4.25,0.37 2.03,-0.01 6.98,-0.52 2.4,0.04 0.61,0.34 -2.29,0.18 -0.3,0.29 -1.51,0.1 -0.95,0.24 -1.92,0.41 1.18,0.47 2.58,0.08 0.67,0.53 0.4,0.39 1,0.45 1.51,0.58 z m 8,-8.05 c 0.59,-0.63 3.62,0.21 5.55,-0.85 -3.24,-0.45 1.93,-0.65 -1.07,-1.05 -2.75,0.29 -5.61,-1.79 -8.38,-0.56 2.04,0.73 -1.78,0.08 0.61,0.95 0.63,0.38 5.09,0.7 1.38,0.69 -1.06,0.24 1.54,0.29 1.91,0.82 z m -22.65,-1.96 c 3.07,1.42 5.97,-0.12 8.83,0.63 2.41,-0.27 5.97,2.74 7.7,0.59 -1.74,-0.45 -1.52,-1.2 -2.01,-1.58 -2.37,-0.48 -5.02,-1.41 -7.65,-1.04 -2.3,-1.33 -5.88,-1.41 -8.24,-0.32 0.53,0.39 3.35,-0.06 1.54,0.82 1.6,-0.32 3.02,-0.53 2.88,0.17 1.79,-0.18 1.42,0.19 -0.07,0.31 3.68,0.42 -1.5,0.28 -2.52,0.27 z m 0.63,3.86 c 3.65,-0.13 -6.13,-3.42 -2.26,-0.72 0.63,0.55 1.51,0.51 2.26,0.72 z m -14.48,-2.28 c 2.73,-0.92 -3.86,-0.4 -5.02,-0.28 -2.04,-0.51 -6.71,0.96 -2.21,1.73 2.09,0.17 5.69,0.59 6.93,-0.85 -1.36,-0.04 -2.73,-0.65 -0.35,-0.58 z m -16.41,8.08 c 0.08,0.64 1.8,-0.2 2.61,0.13 1.2,0.81 2.85,-0.31 1.77,-0.71 1.61,0.24 1.21,-0.8 3.18,-0.34 -3.97,1.62 2.39,0.28 4.08,0.91 1.83,-0.86 3.62,-0.14 0.77,0.2 -1.82,0.23 -7.76,0.27 -6.94,1.29 4.16,1.61 8.39,-0.49 12.53,-0.89 3.24,-0.92 5.57,0.31 8.81,-0.22 4.38,-0.21 1.85,-4.77 -1.3,-2.84 1.73,1.03 -3.16,0.02 -2.86,0.11 0.88,-0.7 -2.53,0.02 -1.14,-1.26 -1.17,-1.88 -4.15,-1.17 -5.97,-0.03 1.67,0.5 4.13,0.73 1.22,1.39 2.13,-0.3 4.88,1.53 0.98,1 -2.52,0.58 -6.09,-0.95 -6.56,-1 0.85,-1.03 -4.96,-0.62 -6,-1.45 -1.53,-1.29 -7.51,0.23 -3.08,0.59 4.24,0.15 -7.21,-0.34 -2.67,0.93 1.44,-0.29 5.72,-0.06 1.95,0.12 -1.83,-0.32 -6.9,0.82 -2.38,0.81 2.03,-0.2 5.05,-0.63 1.55,-0.05 -2.06,-0.04 -6.99,1.04 -2.38,1.27 0.89,-0.15 1.15,-0.23 1.83,0.04 z m -4.54,-2.95 c -1.7,-0.11 -6.96,1.72 -2.4,1.7 0.6,-0.33 3.32,-0.6 2.4,-1.7 z m -6.46,0.79 c 2.43,0.56 -0.35,-2.6 2.02,-0.76 2.44,-0.46 -0.12,-1.35 2.26,-1.45 2.08,-1.56 0.32,1.94 3.27,0.87 0.85,-1.28 5.07,-0.49 2.59,-1.78 3.33,0.35 -2.38,-0.74 0.95,-0.79 2.88,-0.81 -4.56,-1.34 -3.15,-0.32 -3.97,-0.64 -7.71,0.62 -11.35,2.04 -1.63,0.42 -6.95,1.26 -3.67,1.37 -0.26,1.24 4.24,-0.02 4.98,0.16 1,0.29 0.75,0.76 2.09,0.67 z m -14.58,9.4 c -2.3,1.54 -1.01,1.55 0.54,1.65 3.42,0.13 6.1,4.07 9.46,1.34 3.81,0.68 5.01,-3.62 8.94,-3.85 2.34,-1.26 7.02,-0.58 8.27,-2.29 -2.96,-1.47 -8,-2.13 -9.93,-1.41 -1.54,-0.5 -2.05,0.53 -1.73,-0.27 -3.64,-0.98 -7.3,-0.82 -11.03,-0.58 -3.41,-0.58 -1.6,1.64 -0.6,2.18 -1.44,0.47 -3.24,1.27 -2.29,2.13 -1.83,-0.39 -0.58,0.41 -1.13,0.96 z m 42.07,-16.43 c 4.84,0.17 -2.13,-2.1 -3.6,-0.9 -1.48,0.21 -7.75,0.88 -3.46,0.84 2.41,0.09 4.68,0.21 7.06,0.06 z m 37.7,-4.58 c 2.59,0.46 -1.25,-0.02 1.43,0.8 1.38,0.45 7.38,-0.33 3.11,0.35 -1.88,-0.13 -3.02,0.14 -0.95,0.77 1.75,0.42 3.87,-0.67 3.34,0.09 1.68,-0.37 5.08,-0.8 4.62,-0.28 1.84,0.03 4.39,-0.01 1.12,0.08 -5.99,0.49 8.17,0.14 2.33,0.39 -2.42,0.32 -7.75,-0.34 -8.39,0.74 1.69,0.34 3.63,0.51 0.81,0.42 1.88,0.71 8.33,0.47 3.46,0.66 -2.71,0.42 3.58,1.14 4.97,1.15 1.26,-0.5 0.71,-0.8 2.98,-0.22 1.56,0.64 -2.85,-2.13 -0.15,-0.66 1.16,0.93 3.43,0.83 3.11,-0.38 1.57,0.29 2.33,0.35 1.21,-0.66 1.78,-1.99 -0.26,1.35 2.43,0.32 1.27,-1.67 7.19,-0.69 6.09,-1.91 -1.7,-0.84 -5.18,-0.2 -5.85,-0.62 2.82,-1.14 -2.02,-0.3 1,-0.83 -1.49,-0.81 -2.62,0.15 -1.91,-1.21 -1.43,-0.96 -3.51,-0.15 -2.11,0.57 -2.84,0.07 -1.14,-1.36 -4.36,-1.19 -3.03,0.01 -5.63,-2.64 -9.3,-2.54 -1.73,-0.44 -4.4,0.47 -1.16,0.52 4.81,0.36 -4.41,0.29 -0.62,0.44 -2.55,-0.24 -5.52,0.56 -2.85,0.78 0.98,0.09 3.49,0.28 1.02,0.29 5.34,0.82 -4.69,-0.06 -3.4,0.74 1.92,0.57 -4.53,0.16 -0.94,0.63 1.71,0.25 2.27,-0.16 2.51,0.36 1.16,0.33 4.81,-0.46 1.7,0.09 2.52,1.15 -6.92,-0.96 -4.83,0.22 z m -9.72,0.3 c 1.19,0.3 5.95,0.59 2.61,-0.65 -0.72,0.02 -2.82,-0.62 -2.61,0.65 z m 55.89,67.48 c 1.53,-0.33 0.9,-0.42 1.03,0.1 1.65,-1.15 0.91,0.32 1.58,-1.38 -0.59,2.99 1.24,-1.59 -0.84,-0.05 -1.3,1.74 0.63,-1.57 -1.05,0.46 l -0.44,0.4 z m -135.84,9.1 c 0.95,-1.81 0.57,1.37 1.15,-0.93 -1.24,-2.31 -2.12,1.15 -1.42,-0.37 1.49,0.27 -1.42,0.57 0.27,1.3 z m 5.07,7.51 c 0.64,0.57 4.07,0.48 1.67,1.68 3.17,-0.62 1.37,2.05 4.79,0.91 0.71,-0.85 -2.16,1.57 0.36,1.37 2.35,0.91 5.3,0.72 2.46,-1.11 -2.43,-1.05 -4.67,-4.86 -8.34,-4.36 -1.02,-0.82 -6.32,-1.3 -3.1,0.2 1.37,-0.69 1.6,-0.21 0.18,0.41 -0.28,0.95 2.41,0.35 1.99,0.89 z", - "SV" : "m 222.03,196.98 c 0.88,-1.85 3.05,-2.65 4.44,-0.35 3.04,-1.49 2.33,3.55 -0.45,1.68 -0.11,-0.05 -3.19,-0.56 -3.99,-1.33 z", - "GY" : "m 301.66,218.91 c 0.49,-1.79 1.12,-2.46 2.95,-3.04 -2.84,-1.04 1.95,-3.71 1.27,-3.93 2.24,1.68 -0.88,-0.82 1.59,0.77 2.39,0.75 2.17,4.25 2,4.69 1.27,-2.76 5.15,1.96 3.7,3.65 -2.72,-0.18 -3.01,4.7 -0.29,5.18 -10e-4,2.18 4.29,5.02 0.07,3.89 -2.38,0.99 -4.44,3.28 -6.58,0.57 -1.44,-1.81 -0.19,-4.74 0.04,-6.63 -0.61,-1.32 -1.37,-1.38 -1.21,-3.1 -1.67,0.2 -2.75,-0.41 -3.56,-2.05 z", - "BE" : "m 478.93,91.9 c 2.32,-1.15 4.47,-0.04 6.06,-1.1 1.51,0.32 3.18,0.75 3.06,2.03 3.04,0.69 -0.46,2.11 -0.34,3.56 -2.48,-0.6 -2,-2.13 -4.33,-1.33 0.56,-1.8 -4.26,-1.27 -4.45,-3.16 z", - "GQ" : "m 498.59,231.17 c 0.57,-0.61 -0.03,-2.96 2.29,-1.55 3.75,-1.68 3.3,5.15 -0.4,3.16 -0.91,0.03 -4.04,0.11 -1.89,-1.6 z", - "LS" : "m 546.8,319.01 c 0.71,1.9 2.91,4.13 4.08,1.42 4.63,-0.16 1.3,-6.51 -1.79,-3.51 -0.99,0.45 -1.02,1.91 -2.29,2.09 z", - "BG" : "m 533.97,112.48 c 1.59,-2.91 1.02,1.06 3.37,-0.12 3.37,1 6.48,-0.11 9.72,-0.88 2.31,0.28 5.98,1.47 2.27,2.81 -0.57,1.91 -1.71,1.69 0.14,3.21 -1.73,-0.14 -4.89,-0.3 -5.01,1.49 -2.34,1.77 -4.87,-1.4 -7.43,0.27 -2.24,0.89 -1.01,-2.22 -3.11,-2.68 -0.02,-1.82 2.99,-2.17 0.28,-3.6 z", - "BI" : "m 552.39,243.34 c 0.66,-0.13 2.99,0.31 2.86,-1 2.1,-0.75 0.41,1.93 2.05,1.88 -0.8,1.38 -2.12,4.99 -3.98,3.28 -0.86,-1.35 0.21,-2.98 -0.93,-4.15 z", - "DJ" : "m 587.83,204.6 c -0.8,-2.73 3.53,-6.12 4.51,-3.27 -0.46,1.17 -4.12,2.23 -0.91,1.75 1.34,1.79 -2.93,1.73 -3.6,1.52 z", - "AZ" : "m 596.08,123.95 c 1.37,-0.12 4.67,1.29 3.26,2.25 -1.32,-0.22 -2.65,-1.04 -3.26,-2.25 z m 0.72,-4.49 c 1.06,-0.89 6.64,1.92 3.42,-0.83 1.16,-2.58 3.98,3.43 5.82,-0.11 2.25,-1.16 2.64,3.87 5.38,3.54 -0.25,-0.15 -3.6,0.66 -2.8,3.06 -0.52,1.23 -1.34,-0.09 -1.11,2.38 -2.4,0.12 -2.56,-1.81 -1.48,-2.65 -1.92,-2.61 -5.89,3.52 -5.2,-0.31 -0.9,-0.69 -3.39,-1.11 -1.41,-1.99 -1.93,-0.6 -1.07,-2.48 -2.18,-2.59 l -0.09,-0.14 z", - "MY" : "m 776.03,229.79 c 0.94,1.19 3.66,1.54 4.54,1.91 -1.52,-0.7 0.64,-1.85 -0.2,-2.82 0.71,0.24 1.44,-2.13 3.47,-1.6 3.2,0.14 3.49,-7.1 6.03,-3.04 0.76,-0.77 0.48,-3.7 1.3,-1.03 1.04,0.24 -0.67,-1.97 1.23,-2.07 -0.71,-1.32 2.8,-2.95 3.42,-5.2 -0.23,1.83 1.43,-0.64 2.14,1.28 1.13,1.03 -1.26,2.58 1.24,1.51 -0.72,1.4 1.68,0.18 2.51,1.76 3.12,0.67 -3,0.96 -1.88,1.86 2.74,1.53 -1.92,0.86 -2.26,1.45 -1.8,-0.34 -4.97,-1.38 -5.12,1.37 -0.46,2.54 -1.76,3.45 -2.6,5.97 -2.13,1.99 -5.98,-1.42 -7.81,1.64 -2.57,0.56 -6.2,0.31 -6,-2.98 z m -26.46,-12.24 c 0.81,-1.87 3.14,1.48 2.99,2.15 0.86,-1.4 2.33,0.75 2.47,-1.61 3.54,1.64 4.14,5.64 3.78,9.14 1.49,1.41 2.95,5.27 1.51,4.14 -2.37,0.91 -5.07,-2.51 -7.43,-3.83 -0.75,-2.57 -2.09,-3.59 -2.65,-6.4 -0.03,-1.26 0.13,-2.5 -0.67,-3.59 z", - "PH" : "m 820.11,207.51 c 0.82,1.58 -0.23,-2.89 0,0 z m -3.49,-7.05 c 0.99,1.44 3.32,3.35 0.62,3.2 -1.3,-0.61 0.15,1.59 0.72,1.89 0.16,3.43 1.86,0.36 0.58,-1.65 2.72,2.14 1.73,-1.54 1.01,-2.78 -0.18,-1.27 -2.04,-0.65 -2.93,-0.66 z m -2.51,7.05 c -1.05,4.34 3.36,-4.32 1.39,-2.87 -0.2,1.08 -0.99,1.88 -1.39,2.87 z m -0.55,-5.64 c 0.23,-1.55 2.22,1.26 2.48,0.23 -1.22,-1.33 -2.47,-3.02 -2.48,-0.23 z m -1.69,7.23 c 2.83,2.93 1.01,-2.32 2.62,-3.92 -2.35,-1.67 -1.28,2.68 -3.2,2.71 l 0.19,0.64 z m -1.84,6.41 c 0.78,1.98 2.03,-3.59 2.71,-1.05 0.9,-0.8 1.16,1.09 1.97,-0.84 2.89,0.63 -0.14,6.61 4.16,5.12 0.3,0.06 0.81,2.53 1.59,-0.01 -1.3,-1.4 0.21,-5.55 1.13,-2.03 0.43,2.55 0.28,-0.8 0.74,-0.69 1.78,-2.11 -1.11,-3.92 -0.11,-5.38 -0.33,-1.64 -3.69,-3.74 -2.16,-0.4 -1.91,-0.53 -1.87,1.23 -3.48,1.66 -0.94,1.41 -2.07,1.73 -1.41,-0.27 -1.34,-1.08 -3.18,1.53 -4.58,2.3 0.03,0.58 -0.28,1.11 -0.57,1.58 z m -0.15,-12.99 c 1.37,1.3 -1.23,5.28 2.16,2.82 2.7,-2.22 0.02,-1.86 -1.84,-3.29 z m -5.75,-12.27 c 0.17,2 1.5,6.03 2.43,3.8 2.23,0.61 -1.82,2.67 0.72,2.78 0.63,0.68 3.87,-1.27 4.8,1.72 -0.26,-1.32 -0.91,-3.18 0.93,-0.96 0.43,1.22 2.78,1.88 2.56,1.94 0.3,2.23 1.13,-1.46 -0.36,-1.02 -1.03,-1.16 -0.4,-1.39 0.4,-1.67 -1.58,-0.77 -1.61,-0.73 -2.22,0.11 -0.91,-2.69 -2.4,-0.92 -3.06,-0.55 -1.48,-1.61 -2.71,-5.38 0.33,-6.48 0.05,0.11 1.99,-2.95 0.09,-3.94 1,-2.9 -0.05,-1.62 -1.57,-2.04 -3.66,-2.61 -3.34,3.01 -3.47,5.26 0.66,3.49 -1.7,-1.12 -1.58,1.06 z m 1.47,7.51 c 1.09,1.87 3.92,5.29 3.14,0.86 -0.53,-1.08 -2.14,-1.26 -3.14,-0.86 z m -8.51,13.72 c 0.2,1.1 4.23,-2.57 4.46,-3.92 2.15,-0.13 2.43,-3.15 1.62,-3.68 -0.27,1.18 -0.08,1.27 -0.56,1.34 -0.2,1.79 -1.78,1.81 -2.8,3.74 -0.85,0.86 -2.18,1.29 -2.71,2.52 z m 12.81,5.73 c 1.89,1.01 0.24,-1.57 0,0 z", - "UY" : "m 311.36,321.52 c 1.41,-2.04 4.89,-0.87 5.47,1.5 1.9,-0.63 4.87,2.28 6.66,3.89 1.83,0.85 -0.82,2.69 0.03,4.25 -1.55,3.07 -4.83,2.34 -7.67,2.58 -2.09,-0.87 -8.29,-1.8 -5.1,-5.16 -0.91,-2.46 0.84,-4.7 0.62,-7.05 z", - "CG" : "m 502.78,246.68 c 0.46,-1.75 3.43,-0.13 1.65,-2.27 -0.84,-1.77 -0.21,-2.37 2.04,-2.28 -0.05,-3.58 2.35,2.6 3.6,-0.63 1.31,2.9 2.21,-2.62 2.08,-3.94 -1.87,-0.89 -2.27,-3.03 -0.2,-4.28 -0.2,-3.41 -4.84,0.65 -3.36,-3.12 1.95,-2.02 6.63,0.75 8.01,0.25 0.34,-2.92 1.85,-6.38 5.5,-4.76 3.6,0.03 -1.21,4.29 -0.3,6.41 -0.05,3.99 -1.97,6.86 -4.7,9.61 0.43,3.55 -2.12,6.63 -5.2,7.7 0.46,-3.72 -2.66,1.03 -3.68,-0.77 -1.35,-1.81 -3.39,3.15 -3.85,-0.45 -0.43,-0.58 -1.02,-1.01 -1.57,-1.47 z", - "RS" : "m 527.66,115.24 c 1.53,-1.25 3.09,-1.55 4.56,0.4 -0.18,1.45 -3,2.01 -3.18,1.86 -0.05,-1.09 -1.47,-1 -1.68,-2.1 m -0.84,-9.68 c -2.48,0.14 -2.86,2.04 -0.82,2.79 -2.61,0.83 1.29,0.24 -0.71,1.91 -0.45,0.81 2.48,1.6 0.37,1.44 1.92,1.69 -2.56,1.04 0.33,2.32 1.77,1.82 3.34,-0.1 4.34,0.67 2.54,0.13 0.42,2.83 3.17,1.73 1.9,-0.05 0.7,-1.8 2.51,-2.46 -3.46,-1.24 0.89,-5.32 -2.67,-3.79 -2.5,-0.59 -0.92,-2.05 -3.85,-2.59 0.63,-1.14 -1.77,-2.19 -2.66,-2.01 z", - "ME" : "m 523.1,115.89 c 0.25,-1.66 1.44,-3.47 2.89,-1.55 2.94,0.62 1.38,1.64 -0.11,1.93 0.18,2.71 -1.86,0.38 -2.22,-0.09 0.92,-0.03 -0.85,0.25 -0.57,-0.29 z", - "EE" : "m 537.06,70.85 c 0.6,-1.04 1.34,-0.13 -0.09,-0.76 -0.13,-1.61 2.75,-1.72 4.84,-1.83 1.93,-0.52 7.06,0.13 7.88,0.44 -2.59,0.76 -1.03,3.56 -1.05,4.25 -2.65,2.53 -6.13,-2.06 -9.3,-0.16 1.53,-2.48 -0.87,-0.23 -1.83,-1.72 z m -2.39,-1.43 c -3.01,-0.05 0.01,1.64 0.91,0.45 -0.19,-0.33 -0.67,-0.19 -0.91,-0.45 z m -1.65,3.27 c 0.87,-1.16 5.33,-1.53 1.65,-1.89 -3.01,0.38 -1.52,0.02 -1.65,1.89 z", - "RW" : "m 552,242.64 c 0.4,-2.57 3.25,-3.61 4.42,-3.65 1.72,1.72 1.16,4.36 -1.45,3.13 0.19,2.38 -2.84,0.96 -2.97,0.52 z", - "AM" : "m 592.45,119.98 c 2.56,-0.33 5.77,-0.93 5.47,1.17 0.15,0.96 2.85,1.67 0.42,1.97 2.04,0.44 4.06,3.16 1.45,2.96 -0.61,-2.51 -2.88,-1.32 -4.53,-2.8 -4.29,-0.22 -0.87,-1.32 -2.81,-3.3 z", - "SN" : "m 423.83,194.19 c 0.12,-0.09 2.64,-3.19 2.94,-4.92 2.88,-0.61 7.06,-0.8 8.5,2.4 1.83,1.52 3.8,3.4 3.27,5.66 1.46,0.88 3.16,4.02 -0.27,3.51 -2.77,-0.42 -5.35,-1.28 -8.53,-0.81 -1.93,1.34 -6.57,0.51 -2.35,0.14 1.63,0.26 2.32,-0.91 0.58,0.04 -1.62,-0.22 -4.09,0.03 -1.61,-1.6 2.45,-0.5 4.14,-1.3 6.73,-0.4 0.8,-0.66 -2.59,-1.21 -3.7,-1.32 -2.29,1.53 -4.4,-0.28 -3.54,-0.69 1.42,-1.28 -1.46,1.75 -0.92,-0.96 l -0.47,-0.65 z", - "TG" : "m 471.48,204.3 c 2.11,0.43 3.17,0.03 2.83,2.29 2.39,1.59 2.1,5.22 2.19,7.95 -0.53,1.66 1.21,4.69 -1.64,3.54 -2.84,-1.32 -0.4,-4.57 -1.44,-6.53 -0.4,-0.76 0.18,-2.86 -0.71,-2.83 0.99,-1.66 -0.9,-3.13 -1.23,-4.41 z", - "ES" : "m 481.01,124.75 c -3.23,1.01 -1.72,-2.19 -0.44,-1.14 0.66,0.42 1.44,-0.02 0.44,1.14 z m -34.51,-9.69 c -1.12,-1.61 3.86,-1.24 2.45,-1.98 2.63,-0.74 5.81,0.24 9.04,0.28 3.37,0.18 6.58,0.01 9.89,0.57 0.69,1.2 4.87,2.08 5.98,1.12 1.69,1.81 6.14,0.75 6.81,1.78 -0.36,3.24 -6.37,2.32 -7.21,4.71 -1.76,1.25 -3.38,3.65 -1.23,5.28 -3.13,1.3 -1.31,3.64 -4.82,3.61 -1.54,3.44 -6.17,0.78 -8.96,2.58 -1.53,1.81 -3.61,1.22 -4.39,-0.67 1.04,-0.9 -2.14,-1.43 -2.93,-1.86 -0.2,-1.79 2.55,-1.96 0.46,-3.16 2.46,-1.43 -2.21,-3.58 0.79,-3.38 0.67,-1.89 0.25,-4.13 2.15,-5.44 -1.02,-2.01 -5.14,0.52 -5.33,-1.24 -0.81,-0.18 -2.94,0.94 -1.19,-0.8 -1.06,0.5 -0.05,-0.05 -0.72,-0.56 0.34,-0.26 -0.71,-0.18 -0.43,-0.6 l -0.2,-0.07 z", - "GA" : "m 496.4,238.12 c -0.6,-0.74 1.77,0.08 1.29,-2.52 -0.32,-1.18 3.34,0.41 0.71,-0.82 -1.45,-1.4 0.92,-0.16 0.33,-2.07 2.47,0.48 6.01,0.73 4.55,-2.89 1.57,-1.14 6.76,-1.49 5.26,1.87 0.18,0.66 4.28,-0.8 3.14,2.12 -3.42,2.04 1.38,3.08 0.44,5.63 -0.1,0.9 -1.19,4.99 -2.04,2.09 -1.61,3.01 -3.29,-2.85 -4.08,0.77 -2.37,-0.58 -2.23,1.44 -1.11,2.62 0.67,2.35 -1.95,-0.57 -2.11,1.79 -1.37,-1.68 -4.07,-4.42 -3.38,-4.01 -1.66,-0.56 -1.55,-2.01 -1.3,-1.68 -0.96,-0.41 -1.3,-2.68 -0.49,-0.72 1.96,0.14 -1.03,-0.93 -1.2,-2.16 z", - "HU" : "m 516.57,103.77 c 2.11,-0.35 0.34,-2.99 2.43,-2.38 1.54,-1.19 4.7,0.77 6.02,-0.83 1.53,-0.8 3.17,-0.28 4.4,-1.58 1.7,0.3 5.87,0.26 5.56,2.12 -3.03,0.15 -3,4.63 -6.02,4.69 -3.59,-0.54 -7.33,2.83 -10.43,-0.55 -0.9,-0.17 -1.03,-1.52 -1.96,-1.47 z", - "MW" : "m 562.64,274.16 c 0.55,-1.54 1.02,-3.52 1.93,-3.87 -1.59,-2.89 1.41,-4.69 -0.21,-6.99 -2.72,-2.02 1.67,-0.22 2.39,-0.63 1.41,1.41 1.32,4.73 1.73,5.49 -2.65,2.36 -0.17,5.96 2.15,7.65 1.58,2.22 0.74,5.14 -1.29,6.37 1.59,3.5 -2.26,-0.57 -2.26,-2.16 1.69,-2.24 0.19,-4.57 -2.08,-3.73 -0.59,-1.02 -1.84,-1.13 -2.34,-2.12 z", - "TJ" : "m 658.73,125.13 c 1.18,-1.28 4.56,-0.9 4.21,-2.37 -1.87,-0.4 2.45,0.45 1.19,-1.61 1.26,0.02 5.5,-1.48 2.96,0.74 1.05,1.01 2.39,0.38 0.21,1.41 -1.41,-2.67 -5.48,2.23 -1.02,1.02 1.77,0.59 4.14,-0.45 6.02,1.07 1.94,-1.37 4.89,-0.84 4.35,1.59 2.44,-1.12 3.96,2.41 3.17,3.83 -1.95,-0.91 -3.11,0.52 -4.41,-0.44 -2.4,1.75 -6.63,2.78 -5.15,-1.37 -0.71,-0.18 -1.43,-2.98 -3.1,-0.56 -0.59,1.42 -0.71,1.64 -2.7,1.79 0.25,1.79 -2.81,-0.1 -3.84,1.52 -1.76,-1.7 1.84,-3.13 0.32,-5.05 0.18,-1.17 -1.73,-0.61 -2.23,-1.56 z", - "KH" : "m 755.76,198.21 c 0.59,-3.27 5.73,-3.72 7.96,-2.65 1.54,0.74 2.61,1.15 2.58,-0.36 0.93,-0.6 3.89,-0.27 3.75,-0.38 -0.99,1.74 1.79,5.8 -1.09,6.48 -1.92,0.98 -1.78,1.07 -3.53,1.67 0.39,1.22 1.9,2.95 -0.33,1.71 -1.91,0.06 -3.33,2.31 -5.24,1.16 -1.45,0.92 0.24,-2.88 -1.42,-0.89 -1.22,-0.76 -0.38,-2.35 -1.48,-3.16 0.32,-1.4 -1,-2.27 -1.2,-3.58 z", - "KR" : "m 822.96,129.52 c 0.55,0.4 1.63,-2.7 3.79,-1.66 2.05,-1.89 3.71,2.6 4.27,4.45 0.43,2.34 0.11,4.94 -2.71,4.64 0.09,1.13 -2.54,-0.58 -2.41,1.11 -0.67,-0.96 -0.84,1.65 -1.11,-0.18 -1.09,1.41 -2.53,1.09 -2.41,0.33 1.32,-0.25 -1.3,-1.14 0.86,-2.65 -1.8,0.25 1.81,-1.21 -0.11,-0.92 1.21,-0.17 -0.79,-1.02 -0.24,-1.92 -1.84,-0.48 0.09,-1.84 0.89,-0.5 0.43,-0.92 -0.31,-1.19 -0.81,-2.7 z", - "HN" : "m 224.11,195.03 c 0.55,-2.12 3.29,-4.64 5.8,-3.75 3.09,0.04 4.62,-1.16 7.72,-0.16 2.35,0.74 1.48,0.96 1.03,1.19 0.14,0.13 1.39,0.51 1.63,0.41 -0.9,-0.61 2.59,1.32 -0.25,1 -2.54,0.7 -3.88,0.03 -5.35,2.23 -1.06,0.91 -3.73,0.28 -3.8,2.4 -0.9,1.88 -2.04,-1.1 -2.35,-0.67 0.17,-2.12 -3.09,-0.68 -4.43,-2.65 z", - "IS" : "m 405.62,51.63 c 2.16,-0.72 4.6,-0.3 4.87,-0.3 3.05,-0.07 -3.66,1.31 0.45,1.08 0.6,0.6 -3.4,0.12 -4.54,0.62 -3.06,0.86 4.9,-0.38 3.77,1.05 1.24,0.15 2.59,-0.84 0.71,0.43 -0.23,0.35 0.11,0.02 1.38,0.02 -1.11,0.56 -1.87,0.98 -3.46,1.16 1.65,0.86 5.37,-0.27 6,0.57 0.56,0.2 5.43,1.94 7.36,0.32 1.74,-0.34 5.05,-1.16 7.59,-1.9 2.1,-0.2 2.25,-1.4 3.58,-1.59 -0.35,-0.14 1.01,-0.17 -0.66,-0.4 1.02,0.32 2.79,-0.46 0.57,-0.46 2.34,-0.37 -1.51,0.03 0.73,-0.68 -0.59,-1.36 -3.35,0.61 -1.9,-1.01 -2.62,0.82 0.43,-1.03 -2.22,-1.01 2.25,-1.38 0.06,-0.05 -1.29,-0.27 -1.94,-2.31 -2.55,1.21 -4.65,0.17 -0.86,1.48 -4.09,-1.44 -2.19,1.52 -1.07,-2.17 -3.68,-1.57 -4.19,-0.29 -2.21,-2.41 -1.78,0.14 -2.68,0.63 -1.63,-0.67 -1.58,1.8 -2.3,0.13 -1.44,-1.35 -0.37,0.03 -0.02,-1.27 0.3,-1.04 -7.13,-1.94 -3.28,-0.97 0.94,-0.19 -2.39,0.24 0.11,0.57 0.64,1.46 -3.73,-1.44 -2.37,0.21 -2.91,-0.64 1.75,0.89 -1.02,0.28 0.62,0.58 0.96,0.31 1.21,0.62 -1.59,-0.14 -2.67,-0.42 -1.44,0.41 -1.53,-0.52 -2.19,0.25 -0.11,0.35 z", - "NI" : "m 228.97,198.89 c 2.22,1.54 1.82,-2.21 3.14,-1.96 1.8,-0.48 3.25,-0.98 4.5,-2.96 1.86,1.45 5.3,-2.12 4.28,0.65 -0.25,1.86 -0.79,4.26 -0.92,6.21 -0.06,-2.95 -0.25,1.59 -0.43,1.07 -0.08,1.24 0.94,4.96 -1.84,2.87 -3.7,0.58 -5.7,-2.53 -8.45,-4.88 -0.24,-0.2 -0.57,-0.68 -0.29,-1 z", - "CL" : "m 276.37,385.59 c -0.05,-1.26 1.39,-0.84 0.65,-1.59 1.59,0.13 5.04,-1.84 4.57,1.54 0.28,3.88 0.23,5.47 -3.52,4.19 -0.61,-0.05 -2.89,0.29 -1.99,-0.31 -1.32,-0.12 -2.45,0.16 -3.87,-0.54 0.81,0.32 2.1,-0.39 3.66,-0.26 -1.03,0.77 3.05,0.44 0.34,-0.18 -2.36,-1.03 2.7,0.75 2.19,0 1.41,0.25 1.64,1.19 1.82,0.15 -1.76,-0.03 -4.75,-1.9 -1.19,-2.27 1.7,-1.56 -2.52,0.22 -2.66,-0.71 z m 0.26,-98.36 c 2.02,0.25 1.75,-4.14 3.23,-1.04 0.67,2.13 2.81,4.91 1.41,6.76 2.08,1.77 0.96,7.45 4.58,7.14 1.13,3.77 -4.88,3.71 -4.01,6.44 -0.2,1.91 0.59,4.02 -0.02,5.39 -2.29,1.49 -4.86,5.58 -3.56,8.57 -1.57,0.99 -2.42,4.09 -1.59,5.24 0.87,2.47 1.44,3.61 1.51,6.1 -2.23,1.13 -1.01,4.3 -2.21,5.7 -2.53,1.3 -1.36,4.75 -0.67,6.83 -2.18,1.13 -2.17,3.47 -2.36,4.99 -1.25,1.89 0.52,4.42 -1.11,5.57 0.01,2.29 1.19,2.52 1.22,4.43 -1.71,1.55 3.78,1.37 0.43,2.25 -3.22,-0.51 2.82,1.52 -0.57,2.37 0.34,1.34 -0.01,1.58 0.07,3.02 -0.61,1.46 -2.67,2.58 -1.64,4.61 -0.92,1.62 -4.95,3.2 -2.6,5.74 -0.14,2.05 3.62,-0.36 2.65,2.43 -0.47,3.82 6.22,1.32 8.79,2.7 3.36,0.62 -1.14,-0.41 -2.06,0.91 -2.43,0.02 -3.41,1.26 -3.24,3.58 -1.39,1.23 -5.33,-1.82 -3.06,-1.16 -0.68,0.34 1.72,-0.97 0.55,0.44 1.42,-0.91 3.15,-3.11 0.31,-1.56 -2.07,0.42 -1.23,0.09 -2.01,0.85 1.44,1.92 -4.32,-0.94 -0.61,-0.22 -2.27,-2.3 6.73,-1.24 1.42,-1.92 -1.04,0.64 -0.6,-0.68 -1.92,0.43 1.36,-0.03 -1.56,1.89 -1.2,0.55 0.06,-0.49 1.71,-1.5 0.13,-0.76 -1.35,1.4 -0.79,-1.71 -0.7,-1.26 2.17,0.51 1.54,-0.41 2.66,-0.09 -0.44,3.05 1.46,-2.61 -1.65,-1.74 2.46,0.16 1.67,1.45 -0.24,0.34 1.61,1.45 -0.76,0.42 -0.01,0.85 -0.55,0.96 -1.01,-0.22 -0.6,-0.65 -2.03,-0.12 -0.19,-0.88 -0.41,-0.81 0.36,-0.88 -2.69,-0.9 -0.39,-1.76 0.93,-0.49 0.61,-1.34 -0.61,0.07 -1.22,-1.17 1.08,-0.85 -0.96,-1.29 -2.23,-1.65 3.6,0.7 0.23,-0.81 0.76,-0.65 1.68,0.2 0.18,-0.78 0.06,-0.26 0.08,-1.16 1.53,-0.22 -2.34,-0.58 0.83,-3.46 -1.59,-0.6 -1.78,-1.82 1.42,-2.25 -0.36,-2.59 3.47,0.33 -2.49,-2.26 0.43,-1.15 -0.1,-1.19 4.23,1.11 1.71,-0.74 2.06,1.56 -0.88,-2.02 -0.68,-0.25 -2.66,0.18 -2.16,-0.88 -1.02,-0.42 1.18,0.03 -2.05,-1.18 0.26,-1.08 0.88,-0.99 -0.62,0.01 0.16,-0.9 -1.58,-1.09 -1.28,0.64 -2.57,-0.96 0.74,-0.86 -2.96,0.44 -1.14,0.62 -1.94,0.01 1.62,-1.89 1.86,-2.17 -1.22,0 -0.43,-0.85 0.83,-0.49 1.36,-0.61 1.81,1.23 -0.1,0.86 2.31,-0.08 1.35,0.39 1.99,0.86 0.77,-0.64 1.44,-1.95 0.22,-0.6 0.29,-1.86 1.88,-1.77 0.37,-1.87 0.92,-1.46 3.32,-0.04 0.33,-1.04 0.62,-1.23 4.04,-2.35 0.68,-2.97 0.43,-1.15 0.86,-1.04 0.37,-2.49 1.07,-1.47 0.63,-2.47 1.12,-3.09 1.33,1.3 0.21,-1.02 -0.45,-1.02 2.67,-1.44 0.6,-0.53 -0.81,-0.73 -2.55,2.03 -3.01,-3.42 -0.91,-4.9 1.79,-2.07 -1.93,-6.4 0.04,-7.44 1.43,-1.34 1.51,-3.41 3.03,-5.53 1.21,-3.42 2.91,-6.61 2.07,-10.33 -1.29,-2.93 2.03,-4.84 0.3,-7.64 2.01,-2.99 1.42,-7.08 2.93,-10.02 0.06,-3.01 -0.89,-5.37 0.45,-7.38 0.71,-3.26 0.45,-6.62 -0.05,-9.87 -0.4,-0.74 0.29,-1.76 -0.36,-2.34 z m -6.78,74.23 c 0.56,-1.88 -2.75,-0.01 -1.07,0.52 l 0.56,-0.17 z m -1.96,-8.14 c -1.8,-0.98 -3.3,4.48 -0.93,4.4 1.56,-1.42 -0.04,-2.28 1.05,-3.75 z m -3.57,22.95 c 1.89,-0.19 0.91,-1.17 0.82,-3.19 -1.3,-1.25 -0.81,0.99 -1.43,1.06 -0.68,0.31 -1.56,0.59 0.28,1.59 0.73,-3 0.68,0.64 0.33,0.55 z m 0.61,-3.67 c 0.49,-1.39 -0.84,-1.39 -0.53,-0.75 -1.24,0.1 -0.13,0.98 0.53,0.75 z m -1.6,0.03 c 0.75,-2.37 -2.08,-1.32 -0.39,-0.87 0.23,0.25 -0.02,0.69 0.39,0.87 z m 0.53,7.83 c 1.72,0.13 0.88,-1.72 0,0 z m 2.21,-1.79 c 0.43,-1.09 -2.4,-1.19 0,0 z m -1.46,0.76 c 3.02,-1.15 -1.99,-0.87 0,0 z m -1.63,-0.91 c 1.5,-1.81 -1.25,-0.65 0,0 z m 0.8,-1.39 c 0.78,-1.24 -0.56,-0.17 -0.87,-0.44 -0.26,0.69 0.43,0.93 0.87,0.44 z m 4.34,8.49 c 1.83,0.02 -3.39,-1.61 -3.22,-1.3 0.98,0.8 2.22,0.74 3.22,1.3 z m 9.71,5.08 c 1.02,0.7 2.43,1.2 1.75,0.05 1.18,0.28 3.17,1.85 3.46,0.99 -1.07,-0.7 -2.24,-0.5 -0.26,-0.61 -1.89,-0.56 -2.83,-0.44 -0.48,-0.73 -1.32,-0.58 -3.38,0.33 -4.47,0.31 z m -1.47,0.22 c 1.86,-0.63 -1.32,-0.36 0.45,-0.87 -1.44,0.44 -2.68,-0.18 -0.45,0.87 z m -0.07,-2.73 c 0.23,-1.03 0.35,-2.08 -1.05,-1 0.04,0.55 0.53,0.94 1.05,1 z m -2.1,-0.61 c -3.24,-0.16 2.74,1.87 0,0 z m -1.09,-0.2 c -2.37,-0.68 -0.37,1.88 -0.39,0.54 0.69,0.25 0.1,-0.34 0.39,-0.54 z m -3.2,0.54 c 3.23,-0.71 0.16,-1.7 -1.01,-2 -1.43,0.42 1.49,0.88 -0.77,0.48 -1.27,1.1 3.85,0.62 1.21,1.4 z m 16.09,2.7 c -1.18,-1.36 -5.24,-0.27 -2.03,0.39 0.09,-0.66 1.54,0.87 2.03,-0.39 z", - "MA" : "m 435.34,157.82 c 3.51,-1.58 8.67,-3.15 9.9,-7.6 -1.92,-2.47 1.17,-6.42 3.2,-8.19 3.79,-0.7 6.09,-3.66 7.2,-7.08 2.19,-0.65 3.38,3 6.18,1.58 2.19,-0.14 3.29,-0.27 5.09,1.74 -0.08,1.96 1.14,5.01 1.62,6.42 -0.43,1.66 -4.65,-0.6 -6,1.76 -2.79,-0.04 0.86,2.65 -2.45,2.75 -2.89,1.88 -5.76,2.93 -8.95,3.73 -2.19,0.78 -3.99,2.27 -3.3,4.82 -4.14,0.35 -8.33,0.06 -12.49,0.08 z", - "LR" : "m 440.03,216.14 c 1.83,-1.24 2.39,-4.03 4.44,-4.43 2.22,0.14 0.61,5.84 3.27,2.46 2.46,0.33 -1.11,4.3 2.27,3.96 2.12,1.34 1.66,7.23 -1.53,4.32 -3.12,-1.85 -5.71,-4.25 -8.45,-6.31 z", - "NL" : "m 482.62,90.46 c 1.95,0.97 -0.52,-0.48 2.14,-0.3 1.14,-0.06 -3.78,-0.2 -0.57,-1.79 0.55,-2.7 8.79,-4.99 7.11,-0.85 -1.71,0.01 0.69,1.12 -0.61,1.98 -2.17,0.18 -2.33,0.02 -1.76,1.94 0.3,1.35 -2.06,2.03 -0.81,0.3 -2.1,-1.48 -4.93,-0.13 -6.42,-1.21 l 0.29,-0.07 z", - "CF" : "m 511.86,218.62 c 1.77,-2.21 2.85,-4.56 5.73,-5.01 1.22,1.22 4.09,-0.82 6.16,-0.93 1.69,-1.38 -0.16,-2.94 3.02,-2.46 3.37,-0.04 4.4,-3.88 6.79,-5.2 3.27,-1.11 4.41,4.22 3.67,5.65 0.28,0.52 2.21,0.5 2.35,1.77 2.68,0.6 2.73,3.31 5.43,4.47 -0.45,1.76 3.81,3.45 2.66,4.3 -2.17,0.78 -4.86,-1.52 -6.36,0.42 -2.09,-0.85 -4.18,1.49 -6.17,0.83 -1.28,2.77 -6.09,0.99 -7.68,-0.78 -2.93,-1.92 -4.44,3.1 -4.31,3.91 -2.96,-0.58 -6.01,-0.26 -6.14,3.39 -0.3,0.07 -0.9,-2.78 -2.47,-3.26 -1.22,-2.01 -2.17,-4.62 -2.58,-6.92 z", - "SK" : "m 518.91,98.85 c 2.51,-0.63 5.04,-3.35 7.51,-2.21 2.17,0.85 5.54,-0.96 7.91,1.06 -1.09,3.67 -5.16,-0.25 -7.14,2.45 -2.96,-0.08 -5.13,2.79 -8.14,-0.1 -0.1,-0.39 0.02,-0.81 -0.14,-1.2 z", - "LT" : "m 530.27,77.87 c 3.05,-1.8 6.58,-0.36 9.84,-0.7 1.85,-0.36 7.4,2.36 5.18,3.35 -2.43,0.07 -1.76,2.97 -2.5,2.64 -2.47,0.5 -5.42,1.45 -7.68,-0.54 0.63,-3.74 -5.3,-0.28 -4.84,-4.74 z", - "ZW" : "m 541.96,285.73 c 2.74,0.77 5.77,1.04 7.14,-2.41 3.04,-0.69 3.3,-4.86 7.14,-3.72 1.14,1.68 5.13,2 7.14,3.02 -0.44,2.08 0.95,4.75 -0.74,6.34 1.42,1.95 -0.04,3.83 -0.8,6.08 -0.79,2.91 -4.6,4.41 -7.82,3.01 -1.93,-1.33 -5.66,-1.22 -5.41,-4.73 -2.57,-1.13 -5.49,-4.18 -6.64,-7.58 z", - "LK" : "m 693.19,214.25 c -1.23,4.36 3.86,6.27 5.71,2.37 0.06,-3.36 -1.74,-4.91 -3.65,-7.84 -2.19,-1.63 0.81,0.69 -1.39,-0.75 -0.85,0.54 3.19,1.28 0.23,0.77 -0.38,1.5 -0.88,4.98 -1.19,3.97 -0.03,0.52 0.24,0.98 0.29,1.48 z", - "IL" : "m 566.95,147.85 c 1.69,-1.7 1.42,-5.7 3.8,-5.71 1.34,3.02 -2.94,1.31 -1.6,3.99 0.15,0.56 -1.06,2.06 1.16,0.9 -0.44,1.53 -1.37,8.03 -2.13,3.85 -0.53,-0.96 -0.8,-2.03 -1.22,-3.03 z", - "LA" : "m 749.45,178.39 c 1.02,-1.22 1.78,-2.83 3.12,-3.15 1.11,2.39 2.6,-0.56 1.04,-2.12 1.25,-2.09 3.1,1.91 3.89,1.63 -0.97,2.9 2.55,2.37 3.97,2.31 0.59,1.1 0.04,1.11 1.49,2.11 -0.53,1.53 -4.67,1.18 -1.64,2.82 2.73,0.82 3.04,3.56 5.51,5.17 0.43,2.43 3.48,2.66 2.68,4.57 2.36,1.37 -0.81,4.58 -2.32,2.97 -1.92,0.35 -0.3,2.73 -2.87,1.18 -0.88,-0.47 0.94,-2.86 0.23,-3.61 0.57,-1.96 -3.33,-2.69 -2.12,-5.69 -1.55,-2.5 -3.98,-3.46 -5.69,-1.23 -1.67,-3 -5.88,3.86 -4.29,-0.92 0.59,-2.17 0.5,-4.24 -2.02,-4.08 0.79,-1.19 -0.1,-2.42 -0.98,-1.97 z", - "KP" : "m 816.84,122.85 c 2.59,-1.48 5.26,-2.72 7.31,-4.69 0.86,1.47 5.12,1.43 3.03,-0.63 2.63,0.4 4.45,-1.79 5.8,-2.67 2.59,2.04 0.14,1.73 -1.31,3.76 0.92,3.33 -4.08,3.75 -6.09,5.33 -1.11,1.84 1.86,1.45 2.29,3.44 -1.5,1.01 -3.8,-0.13 -4.84,1.89 -1.84,0.14 -2.7,-0.88 -3.21,0.14 0.39,-0.52 -1.55,-0.36 -0.73,-0.93 -2.55,0.34 0.91,-2.31 1.1,-1.75 -2.6,0.02 1.52,-3.15 -1.87,-2.73 0.01,0.5 -1.79,-0.5 -1.45,-1.17 z", - "GR" : "m 545.17,126.04 c -1.44,-0.12 -1.9,-1.54 0.25,-0.61 0.92,0.89 -0.13,0.09 -0.25,0.61 z m -6.34,10.56 c -3.34,-0.05 -0.37,-2.12 0.68,-0.43 1.73,-0.29 5.08,0.32 4.88,0.94 -2.12,0.27 -3.69,0.25 -5.56,-0.51 z m -1.48,-9.18 c -0.69,-1.04 -2.82,-1.58 -0.46,-1.36 1.55,0.16 4.59,4.29 1.65,1.57 -0.35,-0.18 -0.9,0.16 -1.19,-0.22 z m -8.51,0.26 c 2.24,1.03 -1.41,1.08 0,0 z m -1.41,-3.66 c 2.05,-0.05 2.05,-4.11 4.6,-3.45 2.38,-1.45 5.12,-0.88 7.76,-1.89 1.35,1.16 4.93,1.21 4.87,-0.43 2.5,0.73 -0.92,4.05 -2.73,2.24 -1.49,-0.14 -5.95,0.56 -2.92,1.66 1.81,1.58 -3.07,-1.43 -0.56,0.99 -0.98,-0.49 -2.57,-1.08 -0.83,0.16 -1.52,-0.38 -3.14,-3.48 -2.86,-0.2 1.16,1.09 2.41,3.54 0.78,1.83 -0.6,0.79 1.08,1.42 -0.98,1.31 1.52,0.94 4.64,0.97 4.02,3.5 -1.81,-1.95 -3.74,-0.36 -1.59,0.63 -1.18,0.51 -2.83,-1.15 -1.28,1.18 1.3,3.13 -1.11,-0.93 -1.39,1.49 -0.75,-1.26 -1.3,-1.77 -2.09,-1.03 0.25,-1.99 -3.16,-3.34 0.09,-4.11 1.16,0.66 5.81,1.14 2.4,-0.11 -1.57,-0.44 -4.82,0.91 -5.22,-1.74 2.97,0.28 -1.98,-0.52 -2.05,-2.04 z", - "TM" : "m 617.39,118.21 c 2.91,-3.16 6.68,-0.85 9.06,1.25 2,-0.16 4.6,1 3.87,-1.84 1.02,-1.07 4.14,-1.36 3.4,-1.45 -0.27,-1.6 4.14,0.52 4.74,1.36 -0.37,2.12 2.58,2.39 4.69,2.11 1.64,3.69 4.97,5.76 8.74,7.21 1.42,1.64 6.38,0.8 4.33,3.74 -2.75,-1.31 -4.57,1.15 -5.97,3.21 -3.12,0.45 -2.77,2.05 -5.58,2.97 -1.73,-1.19 -3.96,-1.24 -3.1,-4.16 -3.28,0.38 -4.88,-3.4 -8.24,-3.13 -2.82,-1.64 -5.28,-1.49 -8.31,-0.63 -1.37,1.94 -4.87,2.62 -3.74,-0.96 1.59,-2.44 -3.48,-3.29 -1.37,-3.57 1.62,-0.1 -0.89,-1.71 -1.74,-1.3 0.12,-1.81 1.08,-3.34 -0.79,-4.81 z", - "EC" : "m 247.34,241.79 c 0.56,-1.35 0.41,-4.3 1.59,-4.54 -0.23,-1.3 1.79,-2.25 0.9,-3.85 2.19,-0.37 3.44,-2.62 5.64,-0.29 1.79,0.8 3.64,2.47 5.35,1.47 1.38,1.31 2.48,1.02 1.69,1.84 2.06,2.8 -2.75,6.82 -6.09,7.42 -2.67,0.7 -1.82,6.03 -4.71,5.36 -0.68,-1.98 -4.7,-0.73 -2.12,-2.81 -0.74,-1.59 1.65,-2.89 1.07,-5.11 -0.88,2.01 -0.14,0.99 -1.14,1.43 -0.11,1.34 -1.7,-0.51 -2.16,-0.92 z m 2.63,1.34 c -1.83,1.11 0.51,0.96 0,0 z m -32.07,-7.51 c 2.44,0.88 -1.18,3.78 2,2.57 0.3,-0.63 -1.01,-3.21 -2,-2.57 z", - "BJ" : "m 474.11,205.49 c 0.64,-2.71 4.8,-1.26 4.62,-4.35 2.63,-0.84 4.19,3.7 3.22,5.34 -0.27,2.61 -3.28,3.79 -2.53,6.89 0.52,2.5 0.56,5.54 -3,4.76 -0.07,-2.01 0.47,-6.02 -0.42,-8.64 0.25,-2.12 -1.84,-2.22 -1.88,-4 z", - "SI" : "m 509.32,106.07 c 0.74,-0.2 -0.9,-1.4 0.83,-1.36 2.87,1.35 6.07,-2.33 7.79,0.18 -2.08,-0.27 -3.04,2.13 -3.97,2.88 -1.55,-1.27 -4.75,1.19 -3.91,-0.87 -0.71,-0.11 -0.23,-0.5 -0.75,-0.83 z", - "NO" : "m 485.82,62.84 c 1.26,-0.31 3.08,-0.04 0.79,-0.26 1.08,-0.49 -1.94,-0.11 0.31,-0.42 -2.73,-0.44 1.77,-0.61 2.54,-0.58 2.96,-0.13 -3.4,0.05 -2.8,-0.32 0.18,-0.21 -1.19,-1.24 0.51,-0.14 -0.08,-1.13 3.05,0.62 1.67,-0.79 1.3,0.53 1.37,-1.1 2.56,0.3 -0.34,0.37 1.88,-0.53 -0.51,-0.78 -2.77,-0.03 0.17,-0 -0.91,-0.23 -1.15,-0.92 4.72,0.65 2.98,-0.4 2.37,-0.32 1.02,-0.03 -0.53,-0.15 2.37,-0.31 -2.71,0.23 -0.41,-0.24 -1.95,-1.52 6.06,1.08 2.37,-0.39 -0.46,-0.81 2.72,0.79 0.78,-0.16 -0.54,-0.18 0.32,-0.58 1.65,-0.55 -2.26,-0.71 3.37,-0.25 0.63,-0.7 2.72,-0.69 1.59,0.96 3.94,0.08 1.32,-0.25 -0.46,-0.58 2.03,-0.94 -0.86,-0.59 0.82,-0.83 -0.41,-0.8 -2.29,0.72 0.68,0.45 -1.89,1.28 -2.18,0.93 -1.04,-0.98 -1.87,-0.36 -2,0.03 2.16,-0.67 0.46,-0.77 1.65,-2.29 5.41,-0.44 4.07,-1.96 1.06,-0.19 0.73,-0.91 2.73,-0.54 -1.33,-0.24 -4.9,0.82 -2.23,0 -1.27,-0.01 0.67,-0.28 0.88,-0.6 1.91,-0.35 -0.95,0.49 1.42,0.09 2.26,-0.94 -0.76,0.24 -0.5,-0.61 -1.44,-0.76 2.85,0 0.29,-1.01 0.56,0.15 1.66,-1.02 1.99,-0.79 -3.53,-0.71 5.72,-0.93 1.35,-0.94 -2.63,0.49 0.03,-0.21 -0.97,-0.15 -2.11,-0.8 3.27,-0.55 -0.19,-0.97 1.21,-0.03 -0.25,-0.25 1.69,-0.19 -1.98,-0.16 1.79,-0.11 -0.69,-0.54 1.29,-0.53 3.4,-0 2.48,-0.74 1.64,-0.23 4.96,0.02 1.35,-0.35 -2.63,0.16 0.76,-0.49 -0.08,-0.73 0.18,0.17 3.04,0.75 2.27,-0.03 -3.82,0.08 2.74,-0.95 -1.72,-0.34 -2.44,0.43 1.74,-0.48 -0.75,-0.43 0.35,-0.01 5.19,-0.57 1.31,-0.54 0.83,-0.93 3.01,0.03 2.66,0.31 -0.19,-0.22 2.1,-0.43 0.06,-0.61 0.73,-0.28 -1.14,-0.71 1.36,-0.05 -2.96,-1.35 2.82,0.09 2.15,-0.69 2.17,-0.11 -5.74,0.1 -1.42,-0.83 2.36,0.29 -0.05,-0.37 1.87,-0.17 -1.1,-0.4 1.91,-2.29 2.33,-1.5 2.88,0.47 -2.03,-0.96 1.02,-0.36 2.6,0.67 0.2,0.31 0.52,-0.27 -0.36,0.29 -0.21,-1.03 1.65,-0.76 -0.92,2.87 1.93,-2.06 1.63,0.51 -2.83,1.89 2.37,-0.36 0.96,0.08 0.67,-1.45 1.02,-0.35 2.54,-0.88 2.11,1.14 1.05,-0.53 0.67,-0.46 -4.2,-0.81 2.66,-0.25 1.5,-0.5 1.56,-0.3 1.82,0.72 0.1,0.55 1.62,-0.21 3.8,0.73 2.37,-0.46 0.51,-0.18 3.93,-1.1 3.42,-1.5 -0.84,-0.62 4.06,-0.76 3.55,-0.03 -2,-0.06 -2.62,3.07 -0.8,1.13 1.27,-1.29 4.18,-1.93 3.05,-0.85 0.08,1.6 1.9,-0.07 2.23,-0.36 1.63,-0.17 -1.82,-0.38 0.53,-0.66 1.45,-0.88 4.14,0.8 0.91,0.71 1.69,0.19 -1.86,0.61 0.84,0.26 0.39,0.46 -2.03,0.69 0.52,0.55 -1.21,1.59 2.05,-2.74 2.68,-0.49 2.12,-0.11 2.92,0.19 4.66,0.99 -1.47,1.05 -6.54,0.26 -5.78,0.68 2.79,0.32 1.98,1.46 4.58,0.78 2.52,0.96 -1.66,0.18 -2.23,1.2 -1.23,0.67 -3.88,1.43 -1.48,-0.43 -2.59,-1.43 -7.34,-2.38 -9.52,0.4 -0.81,3.51 -5.16,0.84 -7.65,2.03 -2.68,-0.31 -4.71,-2.68 -6.62,-1.11 -2.13,-0.47 -0.16,0.84 -1.93,1.38 1.27,1.67 -5.73,-1.77 -5.14,1.27 -2.3,-0.22 -6.17,1.15 -4.97,3.04 -1.87,1.2 -3.41,2.53 -4.9,2.95 1.17,2.75 -4.41,3.41 -1.14,4.9 -2.33,0.59 -6.57,0.68 -5.72,4.14 0.71,1.64 -0.32,3.59 2.18,3.87 -0.48,1.36 -2.55,1.05 -0.79,2.71 -0.75,1.79 -3.15,1.78 -2.61,4.23 -1.65,-0.06 -3.3,-1.91 -2.68,-2.73 -0.44,1.06 -1.26,1.03 -0.85,1.82 -2.91,0.76 -2.77,1.61 -6.29,3.04 -1.51,0.83 -4.6,0.12 -4,-0.19 -3.57,-0.14 -3.22,-2.92 -1.57,-1.96 3.17,-0.69 -1.7,0.39 -0.07,-0.73 2.73,-0.65 -2.07,0.06 1.27,-1.03 -1.4,0.45 -2.04,0.14 -1.83,0.63 -1,-0.98 -1.25,1.04 -1.45,-0.77 0.61,0.23 -0.14,0.15 1.61,-0.14 -0.48,-0.38 1.39,-0.2 -0.64,-0.45 1.16,-0.92 2.5,-1.84 2.68,-1.25 2.87,-2 -2.26,0.61 -2.59,0.33 0.21,-0.74 -2.15,0.38 -1.05,-1.04 1.41,0.37 0.99,-0.89 -0.44,-0.22 -1.36,-1.08 2.3,-0.14 -0.5,-0.98 -0.02,-0.36 4.94,-1.06 5.19,0.03 0.68,-0.38 2.26,-0.56 1.62,-1.31 0.43,-0.23 -1.2,1.23 -1.35,0.52 -0.78,-0.42 -6.28,1.02 -4.57,-0.44 1.71,-0.1 -0.99,0.12 -0.92,-0.13 z m 58.18,-26.95 c 1.4,-0.42 -3.26,-0.53 -0.61,0.12 z m -7.07,0.64 c -1.13,-0.1 -1.93,0.41 -4.02,0.38 -1.04,0.42 3.23,0.58 4.02,-0.38 z m -12.74,3.08 c 0.69,-0.98 -1.04,0.02 -1.39,0.06 0.27,-0.41 -1.24,1.38 1.39,-0.06 z m -5.05,1.12 c 0.92,-0.07 -1.34,0.93 1.02,0.37 3.71,-0.07 0.34,-1.81 -0.11,-0.84 1.43,0.21 -2.1,-0.12 -0.91,0.47 z m -4.35,1.58 c -0.36,0.38 -1.74,1.62 0.24,0.71 -0.45,1.34 5.44,-1.86 1.36,-0.69 -0.61,1.24 0,-1.89 -1.16,-0.11 l 0.23,0.1 z m -1.49,0.33 c 3.52,-0.83 -1.42,-1.19 -0.91,-0.12 1.28,-0.2 1.46,-0.52 0.91,0.12 z m -3.59,1.17 c 0.03,0.68 2.78,-0.85 0.05,-0.35 0.45,0.42 -0.75,0.04 -0.05,0.35 z m 20,-26.23 c 1.3,0.65 6.35,-1.22 4.36,0.4 1.8,0.27 5.88,-1.01 6.15,-1.4 -0.88,-0.35 -5.46,0.11 -3.2,-0.94 -1.86,-0.19 -5.96,-0.41 -6.72,0.29 2.63,0.3 0.29,1.07 -0.6,1.64 z m -6.29,-6.99 c -3.2,0.5 3.52,1.05 4.83,0.56 1.93,-0.27 7.79,0.02 2.96,0.31 -1.05,-0.01 -3.58,-0.05 -1.09,0.23 -1.45,-0.02 -5.49,-0.27 -2.02,0.45 3.57,0.43 6.3,-0.3 8.6,0.78 3.9,-0.08 6.43,-0.98 9.59,-1.82 2.52,-1.37 -3.26,-1 -4.41,-1.29 -3,-0.64 -3.17,0.19 -6.22,0.31 1.44,-1.86 -2.02,-0.77 -2.25,0.49 -1.74,-0.8 -1.66,-0.54 -4.15,-0.9 -1.83,-0.94 -3.16,-0.83 -2.83,0.02 -2.44,-0.38 -0.91,0.06 -1,0.53 -1.9,-0.54 -4.83,-0.28 -3.25,0.09 0.33,0.22 2.75,0.09 1.23,0.24 z m -20.56,2.17 c 1.43,0.89 1.1,-0.97 2.49,0 -2.27,0.33 1.45,0.91 -1.14,0.67 -3.69,0.56 6.63,1.44 1.44,1.39 1.84,1.17 7.55,0.74 6.04,-0.63 1.64,0.22 3.04,-0.75 2.54,0.55 2.3,0.1 4.53,-1.15 3.41,0.1 3.93,0.29 -3.43,-0.03 -4.61,0.87 -1.97,0.48 -2.26,-0.11 -3.99,0.62 3.09,1.01 6.56,-0.07 9.79,-0.05 0.24,1 -6.32,0.02 -5.92,0.87 1.73,-0.02 5.43,0.79 1.74,0.25 -1.88,-0.45 -6.66,0.09 -2.25,1.16 1.45,0.41 7.32,0.15 3.01,0.52 -1.21,0.56 4.19,1.65 3.74,0.18 1.03,-1.41 3.41,-2.01 4.35,-3.3 1.63,-0.1 0.89,-1.78 3.66,-1.56 1.49,0.13 6.64,-0.54 2.61,-0.84 -2.92,-0.48 -5.6,-0.41 -6.96,-1.93 -0.79,0.3 -3.04,0.67 -1.18,-0.4 -3.75,-1.72 -6.96,10e-4 -4.33,2.1 -1.55,-0.66 -5.56,-3.79 -6.28,-0.8 -1.96,-0.68 -2.15,-0.85 -4.29,-0.82 1.67,-0.05 6.21,-0.84 1.93,-0.68 -2.82,0.37 -4.57,-0.1 -6.49,0.69 0.91,-0.1 -1.62,0.23 0.7,1.03 z m 2.37,2.41 c -1.6,-0.8 -6.01,-2.2 -2.23,-0.37 0.19,0.02 3.62,1.26 2.23,0.37 z", - "MD" : "m 545.77,99.88 c 2.16,-1.57 4.18,0.57 5.96,0.53 1.43,0.26 2.23,2.93 1.96,2.89 2.88,1.16 0.75,2.71 -0.8,1.4 -0.73,1.37 -3.41,5.07 -3.05,1.08 1.27,-2.27 -2.61,-4.76 -4.07,-5.9 z", - "LB" : "m 569.26,142.56 c 0.93,-1.57 2.6,-6.43 4.07,-3.4 -0.89,1.41 -2.1,3.21 -4.07,3.4 z", - "NP" : "m 694.09,154.14 c 0.44,-1.98 1.75,-3.37 3.45,-3.38 2.26,-2 5.02,3.31 7.74,2.77 1.15,2.11 3.46,1.87 4.73,2.94 1.1,0.54 2.98,0.38 5.37,0.84 1.99,-0.52 0.5,2.96 0.69,3.95 -2.76,0.44 -5.03,-0.77 -7.68,-0.9 -2.02,-2.49 -4.77,-1.25 -7.1,-2.59 -2.56,-0.64 -5.72,-2.18 -7.2,-3.63 z", - "ER" : "m 572.96,193.02 c 1.46,-3.19 1.28,-6.2 5.2,-7.02 2.35,-1.7 2.05,5.09 3.76,6.81 0.36,0.9 0.66,-2.05 1.19,0.41 2.35,0.45 4.82,3.36 6.16,4.47 1.19,1.37 3.37,3.11 0.05,2.85 -2.3,-2.41 -4.43,-6.15 -8.29,-5.72 -0.95,-0.46 -2.9,0.78 -4,-1.06 -0.53,1.56 -0.73,2.6 -2.01,1.23 -1.79,1.42 -2.11,-0.3 -2.05,-1.98 z", - "US" : "m 39.4,68.72 c 2.12,0 5.18,-0.56 5.03,-1.27 -1.37,0.24 -4.62,-0.06 -5.03,1.27 z m -2.83,3.6 c 1.56,1.95 3.92,0.16 0.44,-0.05 z m 93.97,55.56 c -2.1,-1.68 -2.06,-4.52 -3.45,-6.43 1.29,-1.2 -0.18,-3.87 -0.51,-5.8 0.03,-2.69 1.18,-2.04 1.07,-4.81 0.64,-2.31 0.08,-5.98 2.07,-5.16 -1.83,-0.29 -2.6,-0.64 -1.21,-1.37 -2.05,-0.06 0.71,-1.42 -0.98,-0.82 -0.61,-1.79 -3.25,-5.33 0.69,-3.45 2.66,0.08 4.48,0.44 2.04,2.21 0.91,0.69 0.04,-1.37 1.69,-1.13 -0.1,1.81 -0.8,1.18 -1.33,2.02 1.29,0.4 2.83,-2.18 1.4,-3.55 -1.06,-0.23 0.75,-0.82 -0.68,-1.65 4.14,-0.26 8.43,-0.05 12.63,-0.12 21.22,0 42.45,0 63.67,0 0.91,-2.58 1.69,1.99 3.95,1.21 2.54,-0.61 3.95,0.79 6.01,1.34 1.49,-0.47 5.36,-0.02 5.2,0.42 -2.03,0.48 -5.87,2.25 -6.06,3.48 1.45,0.16 3.57,-1.22 3.22,0.14 2.55,0.31 6.38,-2.29 7.03,-0.57 2.84,1.09 5.88,0.96 9.07,0.22 -0.19,1.54 2.5,0.4 2.58,1.82 -0.46,1.52 -5.21,-0.99 -7.18,1.42 0.41,-1.34 -2.3,-0.14 -2.59,1.75 -1.95,1.22 -0.74,1.2 0.68,0.46 -0.91,2.73 -2.75,6.57 -0.09,8.99 5,-0.33 1.65,-5.17 3.02,-7.5 -0.02,-1.89 2.7,-2.63 2.22,-1.81 -0.32,1.22 1.23,-2.01 1.37,-1.35 0.55,-2.08 6.21,0.31 4.66,3 -1.91,0.84 -2,3.23 0.26,1.15 2.45,-1.08 2.74,4.46 0.99,4.09 -1.5,1.24 -2.29,2.82 0.36,2.78 -1.13,0.65 4.19,-0.03 5.39,-1.1 2.29,-0.52 5.75,-1.94 5.26,-3.92 2.22,-0.25 8.31,0.81 7.45,-2.17 0.96,-2.37 6.22,-3.12 9.36,-2.62 3.05,0.22 5.28,-0.17 7.03,-2.44 0.47,-2 2.25,-5.46 4.42,-3.82 3.84,-1.28 1.87,4.47 3.91,5.86 2.36,0.89 -1,1.61 -1.92,2.03 -1.09,-0.48 -1.77,0.7 -2.37,-0.16 -1.62,2.63 -2.84,0.88 -2.92,1.85 -0.57,-0.52 -2.76,2.76 -2.77,3.72 -0.5,1.65 3.15,2.57 2.26,1.27 1.44,2.18 -2.44,0.77 -2.26,1.3 -1.36,-0.01 -0.81,-0.79 -2.35,0.69 -1.85,-0.55 -5.89,1.74 -5.94,0.93 0.08,-1.86 -0.43,1.42 -0.64,1.54 1.07,0.31 0.31,2.04 -0.01,1.54 -0.9,2.28 -2.37,3.6 -3.89,0.92 2.26,-2.12 -1.68,0.74 0.9,2.02 1.32,1.16 -1.51,4.32 -2.25,4.43 1.62,-2.59 -0.02,-2.12 -0.66,-3.71 1.06,0.17 -0.7,-0.53 0.22,-0.82 -1.12,-0.18 2.34,-2.82 0.01,-1.31 -1.19,0.08 -0.93,0.86 -0.68,2.93 -1.98,-2.35 1.7,2.29 -1.13,-0.09 -2.04,0.95 0.34,-3.01 -1.33,-0.26 1.01,0.12 4.53,3.02 1.45,1.58 -0.68,-0.81 3.05,3 0.07,1.22 2.49,1.99 0.13,0.79 -1.37,0.35 2.31,1.44 3.97,0.8 4.64,4.16 -1.47,-3.21 -0.73,-1.15 -1.05,-1.15 -0.61,0.62 -1.78,0.54 -2.16,0.44 0.48,0.52 2.54,0.87 2.11,0.85 2.07,-0.15 -1.61,1.89 -1.63,1.17 -2.95,-1.31 2.28,1.44 -1.22,0.87 1.2,0.56 2.95,0.18 0.85,1.03 -3.03,-0.38 -2.37,2.59 -5.29,2.47 -1.86,1.13 -1.92,2.25 -3.66,3.11 -2.2,1.15 -1.84,0.89 -2.24,1.35 -0.94,1.12 -1.34,1.62 -1.66,2.36 -0.67,0.46 -0.34,3.97 0.86,5.96 1.3,1.56 1.85,5.71 0.94,2.06 -0.69,0.74 2.79,4.86 1.56,7.37 0.64,2.75 -3.75,2.38 -2.46,1.67 -1.2,-0.96 -3.12,-3.38 -2.47,-3.59 -0.87,0.38 -0.31,-1.65 -1.14,-0.72 -1.58,-0.99 -0.03,-3.68 -0.91,-2.8 -1.33,1.64 1.35,-4.09 -1.62,-4.2 -1.3,-3.9 -4.43,-0.17 -5.84,-1.39 -1,-1.43 -0.58,-0.62 -3.17,-1.53 2.66,-0.46 -3.13,0.42 -1.44,-0.27 -0.33,-0.07 -1.32,0.56 -1.31,0.44 -1.8,1.72 -0.82,-2.43 -2.08,-0.11 -2.05,0.26 -4.43,0.11 -5.98,0.62 1.83,0.12 1.44,0.49 2.23,0.54 1.48,0.19 -1.78,1.62 1.17,1.98 0.42,2.21 -1.79,-1.1 -2.75,-0.55 0.67,1.59 -3.11,0.78 -3.19,-0.15 -1.68,-1.66 -4.03,1.09 -5.44,-1.14 0.53,-0.41 -2.14,1.69 -1.44,-0.17 0.3,1.13 -4.08,2.03 -1.94,1.22 -0.53,-0.07 -2.13,-1.1 -1,0.52 -2.02,1.83 -3.54,2.46 -3.8,2.22 -1.35,-0.93 -0.48,0.94 -1.72,0.68 -1.48,0.86 -0.03,0.86 -1.96,1.41 2.07,1.13 -2.37,1.66 0.19,1.61 -1.17,1.85 2.48,5.04 -1.08,3.42 -4.63,0.08 -4.65,-5.18 -7.45,-7.69 -1.23,-3.51 -6.12,-3.84 -7.55,-0.56 -3.97,-0.74 -4.02,-5.1 -7.47,-6.6 -2.22,-2.17 -5.82,-1.46 -7.53,0.12 -3.92,0.02 -7.79,0.07 -11.46,-1.56 -4.73,-1.54 -6.98,-3.2 -12.12,-1.91 -1.1,-3.53 -5.01,-4.7 -8.26,-5.41 -1.69,-0.62 -1.71,-3.37 -3.9,-4.43 -1.73,-0.97 0.03,-2.81 -2.33,-3.35 -1.29,-2.34 0.66,-0.68 0.52,-1.17 0.25,-2.59 -2,0.3 -2.1,-1.48 0.73,0.67 -0.18,-0.45 -0.31,-0.41 z M 104.4,80.81 c 0.33,1.25 2.04,0.65 1.2,-0.13 -0.11,-0.61 -0.94,-0.94 -1.29,-1.14 -0.46,-0.02 2.06,0.19 -0.19,-1.1 -0.89,-0.84 -3.75,-1.73 -2.38,-0.68 -2.16,0.77 1.6,-0.15 0.42,1.52 1.05,-0.32 1.26,0.87 0.18,0.86 0.69,0.15 1.7,0.05 2.06,0.68 z m 0.1,-3.67 c -2.34,0.7 2.58,1.37 -0.2,0.35 l 0.21,-0.12 z m -3.29,-0.28 c 2.41,-0.24 -0.19,-1.07 1.79,-0.84 -2.17,-1.81 -3.48,-1.06 -1.79,0.84 z m -7.89,-4.1 c 1.12,1.18 2.64,1.85 1.61,0.35 1.83,1.35 4.07,0.41 1.03,-0.14 -1.4,-0.69 2.07,0.54 1.38,-0.34 -1.51,-0.94 -1.71,0.28 -2.26,-0.83 -2,-0.35 -1.08,1.03 -1.29,0.8 -0.66,-0.5 -1.34,-0.24 -0.47,0.15 z m 6.37,5.31 c -0.01,-0.77 1.79,-2.12 0.45,-1.96 -1.55,-1.36 -0.65,0.17 -0.73,1.05 0.26,-0.11 -0.42,0.78 0.28,0.91 z m -2.69,-1.66 c 0.4,-1.03 1.59,2.83 1.3,-0.2 -0.84,-2.96 -3.62,-2.69 -1.9,-0.7 -0.6,0.36 1.04,0.37 0.6,0.89 z M 0.07,57.92 c -0.4,-1.9 5.96,0.26 2.01,-0.03 -1.59,0.66 -0.57,0.63 -2.01,0.03 z M 20.67,80.91 c -1.34,-0.5 -1.14,0.58 -1.77,0.11 1.22,-0.83 4.87,-3.75 6.46,-2.6 0.35,0.4 2.71,0.41 1.19,-0.48 2.49,-2.14 5.1,-1.84 7.04,-4.16 2.94,1.25 -1.15,-2.12 2.2,-1.81 -3.58,-0.13 3.7,-4.04 -0.4,-1.86 -1.86,1.57 -4.72,-0.66 -2.12,-0.48 -2.6,-1.73 -1.27,3.51 -3.8,0.64 -1.82,-0.72 -4.13,-0.54 -6.71,0.48 -0.61,-0.02 1.89,-1.72 -0.33,-1.64 1.49,-1.38 -2.1,-3.72 -0.13,-4.18 -1.65,0.26 -0.43,2.97 -3.37,2.31 -2.26,0.51 -4.6,-1.57 -5.32,-2.26 0.81,-1.41 2.91,0.03 2.49,0.1 0.64,-0.75 3.62,0.47 1.28,-0.66 1.91,-0.57 -5.18,0.24 -3.21,-0.77 -1.12,-1.18 -0.77,0.65 -2.64,-0.74 1.02,-0.52 -2.33,-0.86 0.32,-0.9 -0.94,-0.56 2.18,-3.04 3.26,-2.16 -1.33,-0.27 1.28,-1.29 -0.53,-0.44 -0.88,-1.58 1.84,-0.74 0.88,-1.63 2.88,-0.58 1.38,1.17 3.97,0.24 1.37,-1.94 7.74,0.22 5.33,-3.41 -2.71,-0.4 2.89,-0.61 0.23,-1.59 -0.7,0.36 -2.98,0.31 -4.67,1.54 -0.62,-0.83 -2.2,-1.05 -0.89,-0.26 -2.9,-1.25 -7.61,1.13 -9.42,-1.3 -3.9,-1.57 3.76,-0.3 -0.4,-1.33 -2.08,0.34 -5.88,-1.45 -2.97,-0.96 1.88,-0.94 3.67,-1.4 5.92,-1.25 -2.66,-0.56 6.5,-2.5 4.29,-0.4 0.32,0.68 5.32,1.26 6.89,0.05 3.27,0.23 -1.44,-0.02 -1.57,-0.95 -3.08,-1.31 0.04,-0.48 1.12,0.3 1.36,0.43 6.18,0.27 2.37,-0.36 -0.73,0.47 -4.09,0.17 -2.23,-0.92 -2.45,-1.03 -4.35,0.94 -7.06,-1.7 -1.65,-1.27 -6.85,-1.73 -6.54,-2.33 2,-2.26 7.61,-1.14 9.13,-2.59 2.26,-3.26 5.43,-2.28 8.87,-3.57 -0.37,1.11 0.32,0.47 1.97,0.2 -3.35,0.42 -1.08,-1.3 -0.36,-0.75 4.21,1.35 7.14,-3.3 10.49,-0.78 -3.14,1.51 0.55,-0.02 1.71,-0.13 1.84,0.3 0.02,1.06 2.4,0.87 2.04,-1.23 7.42,0.57 4.26,0.68 2.93,0.38 5.81,0.31 9.47,0.19 3.54,0.82 7.19,0.78 10.75,1.26 3.13,0.64 5.69,-1.02 8.99,0.57 5.49,-0.45 2.11,5.94 3.07,9.47 0.65,5.66 -0.39,11.42 0.14,17.05 1.93,1.51 5.09,-0.95 5.87,1.33 2.45,1.47 5.47,4.28 7.14,0.99 3.25,-1.67 4.58,2.07 7.43,2.95 2.73,2.04 3.75,5.53 7.2,5.96 2.91,-0.05 4.17,3.88 1.06,4.73 -0.43,-0.14 -1.2,-0.77 0.58,-1.57 -1,1.16 -2.73,-0.19 -0.38,0.05 -1.54,-0.37 -0.74,-3.32 -2.81,-1.78 0.23,-0.76 -2.33,2.61 -1.14,-0.16 0.25,-1.29 2,-0.1 -0.16,-1 0.54,1.59 -2.17,-1.07 -0.19,-0.1 -1.39,-1.21 -1.71,-1.91 -3.82,-2.35 1.92,-0.47 -0.2,-0.37 -0.38,-1.4 2.86,1.19 -1.63,-1.11 1.31,-0.45 -2.03,-0.04 -1.48,-0.27 -2.63,-1.03 2.12,-1.23 -2.64,0.72 -2.56,-1.52 -1.39,-3.25 -1.37,-0.67 -0.21,1.37 -0.78,-0.06 -3.5,-0.43 -1.91,-1.68 -1.16,0.41 -3.82,-0.64 -3.15,0.07 1.24,0.19 3.5,1.5 1.06,1.36 -0.35,0.97 -4.8,-1.66 -5.23,-2.26 -1.97,0.64 -4.62,-2.08 -2.4,-1.81 -0.08,0.76 2.12,-0.31 -0.26,-0.45 -2.5,1.73 -4.67,-0.19 -6.26,0.02 -2.92,-0.98 -7.63,1.05 -8.66,-1.54 1.63,-1.19 -3.96,1.85 -2.33,-0.39 -1.99,0.22 -0.65,-0.38 -2.67,-0.13 3.29,-0.61 -2.25,-0.23 0.86,-1.07 -1.41,0.17 -3.88,0.35 -3.56,0.28 -0.9,1.2 -1.15,-0.87 -0.97,-0.57 -0.84,0.92 -2.12,-0.02 -0.89,0.61 -3.1,0.9 1.81,0.48 -1.22,1.4 3.19,-1.11 0.67,0.89 1.28,0.62 -0.36,1.79 -3.91,0.06 -3.91,1.21 -0.34,-0.05 -2.06,1.11 -2.04,0.69 -1.52,0.4 -2.66,1.72 -4.47,0.64 1.73,-0.82 3.58,-1.19 0.78,-0.91 -1.15,-0.94 2.13,-1.74 0.78,-2.95 1.59,-1.26 6.46,-0.37 6.08,-0.55 -2.11,0 -3.05,-1.57 -0.34,-1.59 -2.86,0.34 -5.31,0.77 -7.89,2.48 -0.42,2.05 -3.85,-0.08 -1.12,1.68 -1.77,0.87 -1.55,0.52 -3.27,1.61 -2.15,0.5 -0.73,0.95 1.12,1.69 -3.04,0.92 -1.89,2.07 -4.37,2.23 -2.09,1.25 -4.42,1.37 -4.9,2.88 -2.63,0.77 -2.93,1.18 -5.09,1.68 -0.74,0.59 1.6,0.19 0.03,1.2 0.26,-0.8 -2.29,0.3 -2.85,0.95 -0.77,-0.7 -2.72,0.37 -4.25,0.69 -2.45,0.36 1.11,-0.77 -1.44,-0.56 -0.68,2 -2.34,1.34 -2.73,1.35 0.35,0.11 0.1,0.54 -0.14,0.36 z m 26.99,-8.45 c 1.93,-0.85 3.42,-0.67 0.41,-1.24 -0.19,0.63 -2.14,0.53 -0.41,1.24 z m -2.98,3.04 c -0.67,1.22 1.57,-0.57 1.01,-0.48 1.9,-0.39 0.78,-0.73 2.64,-0.74 -2.75,-0.74 2.92,0.27 0.56,-1.22 -0.86,-0.19 -2.3,-0.51 -2.04,-0.25 -1.04,0.87 -2.82,-0.49 -1.47,0.92 -0.85,0.3 0.26,0.88 -1.18,-0.24 -3.45,-0.69 0.16,2.92 -0.51,1.47 -1.1,0.14 2.13,-0.32 0.99,0.54 z M 8.31,66.85 c 1.35,0.96 6.08,0.52 3.05,-1.04 -0.44,0.04 -5.38,0.22 -3.05,1.04 z m 17.8,12.93 c -1.12,1.49 1.56,0.1 0,0 z m 36.12,-12.93 c -0.52,1.89 3.71,-2.69 0.58,-0.16 z M 14.45,82.02 c 0.46,1.06 5.29,-0.53 4.55,-0.44 -0.89,-1.32 -3.62,-0.52 -4.55,0.44 z m -7.91,3.79 c 2.65,-0.21 5.15,-1.86 2.83,-2.13 -2.47,0.5 1.02,0.87 -1.38,1.1 1.05,0.67 -3.21,0.78 -1.44,1.03 z M 106.8,80.01 c 0.83,-0.58 0.7,-0.69 0.73,0.13 0.87,0.7 2,-1.92 -0.5,-1.82 0.13,0.39 -0.84,0.05 -0.23,1.69 z m -8.44,-6.19 c 1.08,-0.61 -0.74,2.49 1.17,0.71 1.96,0.03 -1.92,-3.63 0.88,-0.96 -0.99,-2.16 -4.33,-3.14 -2.05,0.25 z m 881.51,16.69 c -0.15,-1.56 3.37,-0.74 0,0 z m 16.68,-33.32 c -2,1.09 -3.57,-1.54 -0.74,-0.51 1.3,-0.8 4.62,0.32 2.98,0.96 -0.08,-0.58 -3.3,-0.68 -2.25,-0.45 z m -10,31.78 c -3.35,0.61 -0.63,0.14 1.28,0.03 0.08,-1.38 -0.06,-0.71 -1.28,-0.03 z m -8.59,1.35 c 2.07,-0.17 2.04,-1.3 0,0 z m -0.77,0.17 c 2.08,-1.56 -1.65,-0.91 0,0 z m -25.36,-3.25 c 3.52,-0.32 -2.58,-1.27 -0.45,-0.18 l 0.19,0.1 z M 40.21,182.25 c 3.59,-0.27 1.71,-4.09 -0.35,-3.14 -0.51,0.81 -0.55,2.33 0.35,3.14 z m -1.97,-4.52 c 3.2,-0.59 -2.98,-2.16 0,0 z M 227.78,102.47 c 1.48,-2.16 -4.13,2.08 0,0 z m 40.46,18.76 c -2.1,0.97 -1.64,-1 1.1,-0.77 1.53,-0.1 2.19,-1.01 1.41,0.06 4.61,-1.37 -1.64,1.1 -2.51,0.71 z", - "KZ" : "m 635.48,106.92 c 0.85,0.58 0.85,1.1 1.4,0.98 -0.06,1.45 -2.75,-0.73 -1.37,-0.98 m -34.27,-8.19 c 1.87,-1.3 -0.29,-2.91 1.88,-4.33 0.77,-2.08 4.91,3.38 3.99,-0.56 -0.22,-1.67 5.03,-2.02 5.66,-3.84 2.5,1.26 3.81,-0.22 6.2,0.77 2.81,-0.79 4.79,4.77 4.62,1.32 2.54,2.56 4.49,-0.52 7.02,-0.04 1.56,0.8 3.36,-1.01 4.84,0.91 2.25,1.26 2.97,-1.12 5.37,0.13 4.15,-1.28 0.43,-2.62 -1.75,-3.35 -2.3,-0.64 4.55,-0.85 1.32,-2.37 0.62,-1.47 6.13,-0.31 2.29,-1.49 -2.87,-0.18 1.71,-1.17 -1.18,-0.99 -1.25,-1.99 3.47,-0.56 5.06,-1.45 2.11,-0.76 5.14,-0.05 6.85,-1.43 3.21,-0.32 6.7,-0.54 9,-1.89 1.36,-0.49 4.81,-0.11 6.37,0.69 0.83,1.68 -0.1,3.23 2.83,2.23 0.89,-0.92 1.32,1.48 1.88,0.55 -0.43,-0.19 5.25,-0.11 1.72,1.04 2.26,1.53 5.58,-1.12 8.38,-1.86 2.56,-0.65 0.87,0.29 0.7,0.89 3.19,1.36 5.73,3.73 7.7,6.55 0.84,2.51 2.64,3.17 3.86,1.09 1.75,1.5 4.49,2.17 7.47,0.82 2.83,1.04 4.28,4.83 7.79,4.13 1.77,-1.65 1.23,0.86 3.1,1.28 -2.05,-0.27 -2.18,2.4 -4.57,2.28 0.3,1.93 -0.29,4.78 -2.86,3.6 -2.35,0.22 -5.16,-1.75 -5.54,1.95 -1.78,1.45 -0.09,2.31 -0.4,3.3 -2.16,-0.69 -5.75,-0.33 -7.13,0.85 2.3,-0.22 0.81,3.12 2.35,4.62 -1.09,0.68 -1.69,0.94 -1.55,2.8 -3.23,-2.28 -7.38,-2.07 -11.24,-2.07 -2.43,1.3 -7.39,-3.12 -7.37,1.39 -2.92,-1.13 -6.59,-1.72 -8.04,1.07 -1.93,0.67 -5.37,1.79 -5.58,4.09 -1.83,-0.48 -1.91,-2.53 -4.49,-1.42 -1.63,-0.37 -1,-2.74 -2.74,-3.09 1.03,-2.29 -1.64,-3.09 -3.39,-4.11 -2.22,0.8 -4.63,-0.29 -6.91,0.43 -2.26,-0.9 -5.8,-3.2 -5.06,-5.65 -2.74,-0.28 -1.35,-0.29 -0.6,-0.7 -0.37,-0.54 0.4,-0.87 -1.21,-0.94 -0.69,-2.11 -0.39,2.46 -1.53,0.68 -1.61,-0.35 -2.77,1.73 -5.65,1.57 -5.86,-0.35 -2.77,6.16 -3.42,9.74 -0.79,4.85 -4.39,-3.89 -7.64,-1 -1.94,1.39 -3.02,1.34 -1.61,-1.03 0.38,-0.93 -3.8,-0.84 -3.84,-2.55 -0.49,-1.71 -5.18,-3.45 -1.17,-3.16 2.17,0.77 1.7,0.06 0.4,-0.86 0.58,-2.69 6.52,-0.37 5.37,-1.44 -0.75,-0.8 1.98,-4.85 -1.49,-4.23 -2.7,-0.43 -5.14,-0.39 -7.64,1.08 -0.69,-0.24 -2.03,1.33 -3.14,-0.52 3.21,0.38 -1.77,-4.38 -3.24,-2.86 -0.39,0.14 -1.02,-0.86 -0.39,-0.93 -0.16,-0.54 -0.54,-0.79 -1.12,-0.79 -0.49,-0.05 -0.8,-0.43 -0.51,-0.89 z", - "SZ" : "m 557.32,310.75 c 1.26,2.66 4.82,1.23 3.68,-1.1 -1.1,-2.6 -3.34,-0.91 -3.68,1.1 z", - "UZ" : "m 634.94,107.63 c 2.49,0.38 1.12,2.32 0.89,2.72 -1.58,0.97 -0.69,-0.89 -0.98,-0.64 1.01,-1.7 -0.67,0.41 0.09,-2.08 z m -7.78,1.44 c 1.67,-0.03 7.15,-2.58 6.73,-0.72 -1.66,2.59 1.05,2.25 2.03,3.18 0.97,0.87 3.67,-0.43 4.43,-1.27 2.09,2.38 4.37,3.47 7.5,2.72 2.67,0.25 5.12,-0.95 6.82,1.84 1.29,-0.11 -0.59,3.17 1.78,2.97 -0.51,3.95 4.61,0.47 4.78,3.45 1.45,-0.04 2.7,-3.27 5.3,-3.4 1.18,-1.19 4.61,-1.27 1.45,-0.08 -3.27,0.81 2.64,3.36 2.68,0.97 0.4,2 6,1.64 2.49,2.82 -1.22,0.94 -3.79,1.37 -6.13,0.45 2.54,-1.53 -0.46,-1.91 -1.88,-0.75 -1.91,-1.12 -0.27,2.46 -2.47,1.25 0.35,-0.03 0.17,2.48 -2.73,1.7 -3.17,1.35 2.25,1.41 0.93,3.28 1.64,1.79 -1.59,4.69 -3.64,3.06 -1.43,-0.27 0.25,-2.77 -2.4,-2.43 -3.38,-1.17 -7.08,-2.94 -9.81,-5.29 -0.68,-3.64 -3.37,-3.1 -6.13,-3.51 0.41,-2.53 -2.07,-2.53 -3.94,-3.75 -2.78,-0.67 0.42,1.77 -1.96,0.57 -0.85,1.13 -3.88,1.11 -2.72,3.36 -5.77,1.58 -1.93,-7.55 -3.09,-10.4 z", - "MN" : "m 715.47,97.3 c 2.21,-1.36 4.58,-0.74 6.08,-2.4 2.56,-0.79 5.4,-2.44 7.78,-2.08 1.76,0.76 4.35,0.26 5.77,2.15 3.17,-0.53 7.33,2.18 9.44,-1.13 -2.94,-2.15 1.68,-5.81 3.83,-4.23 2.9,1.17 7.1,0.22 7.76,3.94 3.36,2.26 6.88,-0.66 10.43,0.34 3.49,0.12 5.14,3.12 8.55,3.04 3.6,0.7 7.68,-0.1 10.9,-1.49 3.04,-2.41 6.37,0.05 9.52,0 -1.05,1.66 -1.83,3.52 -3.06,5.03 1.09,1.42 4.03,0.25 5.64,0.57 2.34,-2.62 9.85,4.62 3.86,3.15 -3.45,-0.03 -6.71,0.89 -8.92,3.33 -3.61,-0.16 -6.31,3.89 -9.99,1.24 -2.64,0.18 -2.1,2.81 -0.75,3.9 -3.19,1.47 -5.91,4.43 -9.81,3.6 -3.87,-0.76 -7.6,2.86 -11.05,1.72 -3.6,0.51 -6.48,-2.04 -9.86,-2.18 -3.79,0.03 -7.61,-0.37 -11.42,-0.41 -2.84,-0.96 -3.18,-5.25 -6.83,-5.27 -2.75,-2.39 -8.44,0.46 -9.88,-3.04 2.35,-1.88 -0.41,-6.01 -2.61,-6.12 -1.91,-0.46 -5.47,-1.59 -5.22,-3.38 z", - "BT" : "m 718.13,159.29 c 1.2,-1.82 3.41,-4.27 5.2,-2.5 2.47,-0.34 3.75,1.18 3.95,3.26 -3.04,-0.14 -6.66,1.35 -9.15,-0.76 z", - "NC" : "m 927.62,293.83 c 1.71,1.96 4.72,3.95 6.28,4.45 3.03,0.03 -2.85,-2.47 -3.41,-3.67 -1.14,-0.87 -5.55,-4.18 -2.87,-0.78 z", - "FJ" : "m 971.09,281.12 c -2.23,-0.19 -6.1,3.14 -2.02,1.59 1.31,0.61 2.75,-1.28 0.65,-0.15 0.53,-0.42 0.79,-1.08 1.36,-1.45 z m -5.31,8.4 c 2.08,-0.7 -0.46,-0.63 0,0 z m -1.54,-2.83 c 2.75,1.62 4.33,-1.95 1.39,-2.17 -1.03,-0.23 -3.15,1.74 -1.39,2.17 z", - "KW" : "m 601,153.77 c 0.56,-1.79 3.68,-4.46 4.28,-1.29 -2.6,-0.55 3.37,3.63 -0.75,2.94 -1.1,-0.89 -1.42,-2.21 -3.53,-1.65 z", - "TL" : "m 815.54,262.09 c 2.29,-1.66 1.58,1.43 0.01,-0.01 m 3.21,-0.55 c 0.81,0.53 5.95,-1.08 5.79,-2.43 -1.86,0.72 -6.82,-0.29 -5.79,2.43 z", - "BS" : "m 267.62,176.8 c 0.17,-1.42 3.32,-0.79 0.79,-0.07 z m -8.13,-12.64 c -0.72,-1.44 2.35,2.69 1.06,1.5 0.67,-0.84 -0.6,-1.2 -1.06,-1.5 z m -1.78,-1.31 c -0.33,-0.79 0.35,-3.18 -2.04,-2.86 1.85,-0.39 2.76,1.35 2.04,2.86 z m -1.2,6.06 c 0.21,0.35 -1.09,-1.92 -0.14,-1.27 -0.3,0.42 1.04,-0.31 0.43,1.01 z m -1.5,-4.16 c 3.19,1.57 -1.35,3.32 -0.11,1.1 0.29,-0.29 0.18,-0.76 0.11,-1.1 z", - "VU" : "m 938.23,281.65 c 1.61,-0.58 -1.85,-0.74 0,0 z m -1.79,0.66 c 2.46,-0.54 -2.57,-3.16 -0.26,-0.67 l 0.07,0.35 z m -1.18,-4.14 c -0.37,-0.81 -1.02,0.61 -1.56,-1.17 -0.6,1.6 1.95,4.29 1.56,1.17 z", - "FK" : "m 371.78,390.14 c 1.36,-0.97 -1.93,-2.38 -3.9,-2.41 -3.05,-0.14 0.58,0.28 0.74,0.68 1.16,0.24 2.29,0.94 3.16,1.73 z m -65.58,-7.9 c 1.78,1.15 1.13,-0.67 2.93,-0.17 -1.32,-0.96 3.77,-0.56 2.02,-1.48 0.92,-0.53 -1.79,-0.21 -0.97,0.15 -0.75,-1.74 -2.42,0.03 -2.42,0.37 -0.86,-0.02 -0.93,1.02 -1.56,1.13 z m -1.55,-2.08 c 0.91,0.01 0.35,-0.34 0,0 z m 0.78,0.07 c -1.32,0.17 -2.19,-0.12 -0.23,0.83 -3,-0.14 0.37,0.45 -0.87,0.2 -0.08,1.01 -2.44,0.7 -0.81,1.17 1.24,-0.02 6.78,-3.02 1.91,-2.2 z", - "GM" : "m 425.26,198.03 c 0.71,0.78 4.95,-0.82 1.67,-0.13 -2.57,-0.56 2.45,-0.38 3.36,-1.13 0.97,0.82 5.3,1.12 1.67,1.51 -2.03,-2.19 -5.77,2.16 -6.69,-0.26 z", - "QA" : "m 612.64,164.51 c -0.22,-1.8 2.78,-3.37 2.25,0.05 0.69,2.01 -2.87,3.02 -2.25,-0.05 z", - "JM" : "m 254.5,184.26 c 1.77,-2.44 8.32,1.83 4.21,0.87 -1.02,1.21 -2.73,-0.09 -4.21,-0.87 z", - "CY" : "m 561.46,137.2 c 1.04,-0.9 5.64,-1.47 5.97,-1.65 -1.79,1.36 -1.58,1.89 -3.94,2.84 -0.7,-0.33 -1.76,-0.28 -2.03,-1.19 z", - "PR" : "m 288.97,185.11 c -1.94,1.26 -5.5,-1.35 -2.16,-1.59 0.95,0.19 4.71,0.05 2.16,1.59 z", - "PS" : "m 568.89,145.08 c 2.09,-3.37 1.99,4.04 -0.09,1.92 1.69,-1.65 -0.49,0.09 0.09,-1.92 z", - "BN" : "m 788.31,222.72 c 1.27,-0.22 3.44,-2.27 1.95,0.11 0.51,2.62 -1.33,0.75 -1.95,-0.11 z", - "TT" : "m 300.22,207.39 c 2.05,-0.48 0.12,-3.15 2.58,-1.96 0.31,2.2 -0.78,1.84 -2.58,1.96 z", - "PF" : "m 57.69,285.59 c 1.46,0.8 -1.48,-1.8 -0.45,-0.06 z", - "WS" : "m 991.64,273.63 c -1.72,1.32 3.38,0.32 0,0 z", - "LU" : "m 487.81,95.39 c 0.65,-2.6 3.8,2.42 0.17,0.89 0.5,-0.17 -0.04,-0.74 -0.17,-0.89 z", - "KM" : "m 592.41,269.2 c 0.31,-2.77 -1.68,-1.13 0,0 z", - "FO" : "m 452.8,60.76 c -2.56,-1.32 1.36,1.68 0,0 0.91,0.61 0.44,-0.7 -0.34,-0.19 z", - "SS" : "m 566.64,207.99 c -0.19,2.08 0.23,4.73 -2.7,4.14 -1.45,2.41 2.99,1.96 3.64,4.3 1.51,1.46 1.41,4.35 3.61,4.48 1.29,3.62 -5.24,-0.17 -6.05,3.95 -2.72,0.1 -4.39,0.87 -6.86,0.14 -1.77,2.62 -3.4,-4.33 -5.5,-1.69 -2.28,0.44 -5.15,-0.75 -5.45,-3.69 -2.8,-1.08 -2.37,-4.15 -5.49,-5.07 0.86,-2.33 -4.24,-1.45 -2.5,-3.64 1.26,-1.32 1.02,-3.42 2.14,-5.03 3.11,-1.81 2.65,4.17 5.98,2.03 1.8,0.07 3.66,2.2 4.99,-0.26 1.68,-0.25 2.29,-3.22 4.19,-0.41 2.39,0.9 4.63,-3.17 4.68,-5.07 -0.07,-1.62 -1.35,-1.85 0.96,-1.89 0.29,-1.86 2.27,-0.18 1.05,1.26 -0.23,2.66 2.99,4.66 2.5,6.51 l 0.51,0.04 z" - } - } - } - } - ); - - return Mapael; - -})); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.min.js deleted file mode 100644 index b0c3916..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries.min.js +++ /dev/null @@ -1,6 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("jquery-mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries:{width:999.29852,height:392.03476,getCoords:function(a,b){return{x:2.775076875916*b+471.505926315,y:-2.8112860731578*a+235.89691962022}},elems:{PE:"m 246.37,248.26 c 0.32,-1.79 4.23,-4.35 2.73,-1.46 -1.45,2.09 2.59,0.39 3.11,2.75 2.72,-1.13 1.47,-5.5 4.96,-5.95 3.11,-0.83 7.69,-4.81 5.11,-7.43 2.35,-1.19 4.43,3.08 6.14,4.56 0.7,2.08 3.04,2.21 4.97,1.17 2.11,-0.15 5.75,1.18 2.69,3.69 -0.51,0.71 3.29,2.56 0.76,1.93 -3.16,0.08 -7.44,1.58 -7.92,5.32 -0.06,2.05 -3.42,3.58 -1.21,5.52 0.76,1.37 2.13,3 1.77,3.78 2.26,0.16 3.53,3.49 5.91,0.61 2.26,-1.86 -1.32,6.12 2.9,3.61 2.5,1.32 3.37,4.79 2.23,7.29 0.95,2.52 -2.79,6.04 0.3,7.72 -0.57,1.85 -2.55,3 -2.55,4.98 -3.44,2.21 -5.57,-4.41 -9.39,-4.56 -3.34,-1.31 -6.28,-3.43 -8.43,-6.26 0.32,-1.93 -1.53,-4.59 -2.66,-7.02 -2.53,-2.81 -3.15,-7.33 -5.63,-10.49 -0.47,-3 -4.42,-4.05 -5.21,-5.89 1.88,0.13 -1.01,-3.15 -0.55,-3.87 z",BF:"m 456.58,206.27 c 1.04,-2.27 -0.4,-4.54 2.65,-4.79 0.7,-1.85 0.88,-4.37 3.11,-3.1 0.83,-0.73 0.44,-1.27 1.59,-1.56 1.43,-1.81 4.2,-2.03 6.48,-3.6 3.23,-0.6 1.57,4 4.41,4.53 1.15,0.24 -1.42,0.91 0.87,2 1.62,0.34 2.62,-0.07 2.39,1.8 0.95,2.4 -3.19,1.99 -4.47,3.19 -3.06,-0.32 -7.13,-0.27 -9.66,0.43 -0.06,1.39 1.22,5.92 -0.89,2.56 -2.2,-0.12 -4.4,1.93 -5.53,-1.03 -0.26,-0.14 -0.88,0.05 -0.95,-0.42 z",FR:"m 320.44,229.09 c 3.5,-2.22 -0.96,-5.61 1.06,-8.23 1.75,-3.18 5.63,1.18 6.32,2.34 0.23,-1.32 1.46,1.48 -0.36,2.69 -1.07,2.79 -2.6,4.03 -5.24,3.39 -0.49,0.72 -1.29,0.16 -1.78,-0.18 z m -17.32,-33.96 c -1.44,-0.36 -0.63,-2.45 0.08,-0.26 z m 192.61,-78.74 c 1.65,-1.47 3.13,-2.32 2.66,0.76 -1.27,4.32 -2.55,0.43 -2.66,-0.76 z m -36.96,-15.9 c 2.7,-0.08 -1.08,-0.93 1.51,-0.72 -4.33,-0.12 3.07,-2.66 4.28,-0.7 1.46,-0.41 2.78,0.1 3.08,-0.51 -0.68,-1.77 -1.57,-3.78 0.78,-2.26 1.39,1.11 5.71,0.69 4,-0.37 2.05,-0.92 4.59,-0.73 4.1,-3.44 2.64,-1.5 4.35,1.69 6.91,1.76 -0.28,2.27 2.31,-0.77 2.15,1.29 2.43,0.75 4.64,1.76 7.05,1.89 3.81,0.08 -0.46,2.1 0.15,4.48 -2.03,-0.09 -2.17,1.61 -4.01,3.03 -0.88,1.88 2.46,-1.44 2.47,1.52 -0.67,0.65 1.58,2.16 -0.98,2.37 1.7,0.78 0.11,3.19 2.93,2.66 -1.77,2.7 -4.67,3.56 -7.34,2.1 0.36,-0.21 -3.5,-0.83 -5.33,0.71 0.58,2.4 -1.63,2.53 -3.83,1.72 -1.61,-1.41 -4.18,-10e-4 -6.48,-0.95 -2.3,-0.72 -3.81,-0.89 -2.1,-3.18 0.98,-2.31 -0.1,-1.94 0.71,-4.33 1.35,0.73 2.04,2.86 0.92,0.27 -2.12,-1.23 -0.46,-0.44 -0.93,-2.5 -1.83,0.71 -4.34,-3.53 -1.71,-2.49 -2.59,-0.07 -1.33,-0.92 -3.27,-0.96 1.23,-0.3 -1.33,0.1 -0.81,-0.41 -0.69,-0.31 -3.16,-0.22 -4.24,-0.98 z",LY:"m 497.92,151.14 c 1.22,-1.02 3.3,-2.31 2.26,-4.45 1.64,-1.36 4.45,-1.74 3.66,-4.37 2.93,1.82 6.41,0.15 9.36,2.05 2,0.86 2.23,4.49 5.53,3.54 3.2,0.07 6.84,5.03 9.01,0.5 -2.33,-4.25 4.21,-6.37 7.31,-4.84 1.14,2.42 5.27,1.09 6.57,3.1 -1.75,2.8 -0.4,6.49 -0.36,9.96 -0.07,7.58 0.05,15.16 -0.06,22.74 -1.18,0.21 -3.56,-0.76 -2.74,1.4 -7.23,-3.84 -14.52,-7.62 -22,-10.94 -2.87,0.55 -5.22,3.4 -7.74,0.43 -3.87,0.51 -4.52,-4.36 -8.24,-3.67 -0.09,-2.15 -4.24,-4.5 -1.19,-6.01 -0.81,-3.08 1.09,-6.77 -1.38,-9.44 z",BY:"m 536.15,88.53 c 2.51,-0.84 2.42,-2.61 0.94,-4.65 2.05,0.38 5.52,-0.77 6.14,-1 -1.65,-1.71 4.41,-2.24 2.21,-3.4 2.47,-1.46 5.19,-2 8.01,-1.21 0.87,0.9 5.84,-0.04 4.08,3.31 1.82,2.07 3.09,2.51 5.12,3.65 -0.7,1.84 -5.16,-0.46 -3.09,2.59 1.51,1.91 -4.05,1.08 -2.99,3.57 -2.54,-1.13 -4.21,-0.29 -6.38,-0.94 -2.85,0.32 -5.9,-1.52 -9.1,-0.89 -1.6,-0.22 -4.73,2.54 -3.66,-0.47 -0.38,-0.29 -0.92,-0.21 -1.27,-0.56 z",PK:"m 640.67,151.64 c 3.95,1.79 8.26,1.07 12.34,0.72 4.22,1.01 1.66,-5.15 5.25,-4.55 2.06,0.2 0.74,-1.54 3.23,-1.54 2.86,1.63 2.24,-2.57 3.79,-3.75 3.59,0.37 -1.34,-3.47 1.89,-2.43 2.95,0.23 1.1,-2.43 3.35,-3.6 -0.01,-1.31 -2.18,-3.16 0.77,-3.47 2.85,-1.65 6.81,-1.33 9.59,-1.23 2.13,0.39 1.58,3.56 3.46,3.2 1.26,1.55 5.23,0.15 1.53,1.71 -1.9,2.5 -5.73,1.36 -8.5,1.33 -1.73,1.51 1.24,1.92 0.04,3.16 -1.34,2.56 5.7,3.16 2.32,4.38 -1.97,1.16 0.04,3.18 -2.52,4.09 -1.14,1.82 -3.07,3.92 -4.92,5.76 -1.17,3.02 -4.19,1.45 -5.74,1.86 -1.69,1.44 -2.62,3.46 0.03,4.04 -0.74,2.43 3,2.59 2.19,5.35 -0.7,0.83 -4.08,0.91 -6.22,0.54 -1.11,2.01 -2.29,1.6 -3.54,0.89 -0.58,-0.52 -0.41,-2.6 -2.23,-2.62 0.82,-1.92 -2.84,-2.17 -0.57,-1.34 -3.12,0.1 -5.6,0.7 -7.75,0.13 -1.6,0.26 -4.51,1.16 -5.62,0.13 -0.69,-4.03 4.36,-2.41 4.62,-5.27 -2.66,0.34 -0.14,-4.03 -3.41,-3.72 -1.62,-0.75 -1.86,-2.85 -3.39,-3.79 z",ID:"m 844.1,252.59 c 0.28,1.08 0.13,-2.98 1.43,-0.99 0.85,2.54 -1.43,2.01 -1.43,0.99 z m -70.2,-19.41 c 0.55,-1.5 1.03,-0.93 0.47,-1.62 1.7,-4.63 2.41,3.7 5.92,1.12 2.7,0.67 3.97,-2.97 6.65,-0.62 2.54,-0.19 3.17,-1.43 4.17,-3.33 0.53,-1.38 1.48,-3.37 2.12,-5.45 2.11,0.1 5.07,0.12 4.94,1.43 1.01,1.31 -2.48,-0.15 -0.69,1.65 -0.18,0.67 2.72,2.27 1.24,3.68 1.07,1.24 5.35,3.79 1.08,3.13 -1.78,-1.04 -2.61,3.94 -1.82,4.68 -0.99,0.36 -2.22,1.17 -2.39,1.26 -1.79,1.91 -0.28,1.88 -0.58,3.73 -1.09,0.57 -0.82,3.52 -4.02,4.03 -2.06,1.1 -1.24,-3.42 -2.78,-1.91 -1.62,1.17 -2.41,-2.34 -3.81,0.19 -1.82,-0.08 -2.62,0.99 -2.68,-1.63 -2.12,1.16 -2.49,0.45 -4.17,0.2 -0.82,-2.04 0.27,-5.83 -2.53,-5.61 1.04,-0.68 -1.46,-1.32 -0.21,-2.52 -0.6,-0.57 -1.28,-1.56 -0.93,-2.41 z m -3.25,9.64 c -1.93,3.7 4.6,0.57 0,0 z m -6.54,-2.36 c -1.17,1.33 2.05,1.13 2.02,3.17 2.09,2.06 2.52,-1.43 0.47,-1.37 -0.4,-3.22 -1.04,-2.02 -2.49,-1.8 z m -6.41,-7.05 c -2.5,-2.43 -1.84,1.04 0,0 z m -14.87,0.47 c 2.59,-1.55 -4.34,-4.6 0,0 z m -0.58,-13.04 c -2.16,1.1 -4.7,-1.74 -6.38,-0.52 0.8,3.59 5,4.51 6.74,7.4 0.7,2.45 4.36,2.68 4.04,6.05 1.16,2.15 3.68,3.94 4.67,6.59 1.11,3.63 4.3,6.14 7.08,8.63 1.57,0.47 4.02,4.81 3.73,2.14 1.72,1.03 1.63,-0.27 3.17,0.77 0.5,-2.69 -0.31,-5.3 0.77,-7.65 -0.83,-1.61 -3.03,-3.22 -4.09,-1.06 1.48,-1.31 -0.14,-3.14 -1.22,-4.66 -2.88,-0.05 -1.81,-2.35 -2,-2.39 2.65,-1.16 -1.22,-2.63 -2.39,-1.04 -0.85,0.26 3.05,-1.4 0.22,-1.54 -1.79,-1.19 -3.08,-3.65 -5.05,-4.24 0.97,2.75 -2.27,-2.24 -2.25,-1.11 -0.91,-2.81 -5,-3.14 -5.7,-6.04 -0.29,-0.58 -0.86,-0.92 -1.34,-1.33 z m 94.76,34.81 c -2.37,1.03 -0.94,4.18 0.01,0.75 -0.25,-0.4 0.73,-0.48 -0.01,-0.75 z m -16.26,2.53 c 1.92,0.08 3.88,-1.52 0.8,-0.88 -0.51,-0.19 -0.78,0.52 -0.8,0.88 z m -3.62,0.33 c -1.7,1.62 3.67,0.44 0.84,0.12 l -0.42,-0.08 z m -2.98,0.4 c -1.36,2.21 2.94,-1.13 0.38,0.28 0.21,-0.23 -0.21,-0.46 -0.38,-0.28 z m -9.47,1.52 c 2.72,0.11 5.82,0.66 7.79,-1.08 1.07,-2.18 -0.65,1.4 -2.62,0.11 -1.61,0.69 -5.33,-2.08 -5.54,0.96 l 0.15,0.13 z m -2.95,2.04 c 1.18,0.19 5.35,3.62 4.82,0.86 -1.41,-1.2 -3.09,-1.98 -4.82,-0.86 z m -2.85,-1.73 c 1.18,-1.38 2.5,0.46 2.65,-0.56 2.04,-0.15 -0.51,-1.28 -0.71,-1.21 -0.94,0 -3.71,-1.15 -1.29,0.64 0.46,1.44 -4.5,-1.9 -3.7,1.37 0.95,0.64 2.05,-0.35 3.06,-0.24 z m -4.33,-1.99 c -1.7,1.09 -1.19,2.65 0.49,1.64 0.52,-0.83 0.94,-1.71 -0.49,-1.64 z m -5.16,-0.35 c 1.23,1.07 1.75,2.98 3.21,1.1 0.5,-2.05 -2.43,-0.3 -3.21,-1.1 z m -4.26,-3.37 c -2.23,2.03 6.23,-0.05 1.48,-0.02 -0.49,-0.01 -0.99,-0.1 -1.48,0.02 z m -17.24,-2.34 c -2.16,-1.59 -3.86,2.62 -3.51,2.14 3.4,-0.5 2.28,2.56 5.73,2.02 3.28,0.83 6.78,0.67 10.2,1.96 3.01,0.08 7.42,0.77 9.28,1.2 -0.36,-1.74 -0.25,-3.59 -2.97,-2.58 -2.68,-0.14 -1.7,-3.15 -4.88,-2.73 -1.48,-0.51 -2.83,-1.36 -3.81,0.5 -3.04,0.39 -4.71,-1.18 -6.93,-2.09 -1.3,-0.08 -1.96,-1.08 -3.1,-0.43 z m 46.68,11.07 c -0.68,2.23 3.93,-0.11 4.33,-1.86 0.55,-2.56 -2.33,0.27 -2.46,0.44 -1.17,-0.63 -1.28,0.52 -1.88,1.42 z m 19.83,-26.89 c 0.96,-0.2 -1.01,-1.41 0.79,-0.29 2.41,-1.1 -4.14,-0.71 -1.17,0.04 l 0.24,-0.12 z m -1.92,4.45 c 2.66,0.34 -0.48,-2.04 -0.41,-0.14 z m -0.02,4.1 c 2.13,1.84 3.14,0.23 1.08,-1.3 -2.01,-0.19 -6.73,-1.71 -6.8,1.46 0.13,-2.06 2.17,0.07 2.86,-0.49 1.1,0.73 2.05,-0.7 2.86,0.33 z m -6.51,-9.78 c -0.04,1.56 3.12,3.66 1.01,0.99 -2.27,-3.46 2.38,-1.26 1.92,-2.11 -3.14,-0.41 2.08,-3.57 -0.99,-3.05 -0.12,0.95 -3.06,2.86 -1.18,0.71 0.36,-1.5 0.16,-4.13 -1.02,-1.09 -0.89,1.52 0.52,2.99 0.25,4.55 z m -0.53,4.05 c -0.8,1.66 3.89,0.54 0.65,-0.16 h -0.31 z m 0.13,-3.16 c -1.86,0.54 2.01,2.75 0.39,0.39 l -0.11,-0.15 z m -2.29,9.9 c 4.74,-0.87 -3.2,-3.92 -1.39,-0.73 0.41,0.34 0.92,0.5 1.39,0.73 z m -6.26,-6.11 c -0.8,2.07 4.64,-0.11 1.11,0.16 l -0.62,-0.15 z m -3.27,-0.05 c 1.79,-0.81 -1.37,-2.18 -1.02,-0.14 1.05,-1.09 0.3,-0.5 1.02,0.14 z m -0.52,7.77 c -1.92,1.21 -1.02,5.26 0.11,2.25 -1.83,-0.61 1.19,-1.26 -0.11,-2.25 z m -1.48,2.9 c 1.73,-3.14 -1.78,-1.56 -0.22,-0.2 l 0.06,-0.18 z m -8.79,-0.75 c -0.46,2.31 4.29,1.43 2.53,-0.51 1.29,-2.09 -1.63,-7.27 2.21,-6.28 -0.53,1.72 -0.32,3.05 1.43,3.94 -1.14,1.89 1.48,2.61 1.8,0.87 2.98,0 1.1,-1.2 0.14,-2.61 1.21,-1.12 -1.82,-3.54 -2.58,-4.95 2.21,0.86 4.01,-3.08 5.78,-2.6 -0.09,-1.6 -2.38,-0.18 -1.96,-0.29 -2.28,0.21 -3.49,0.41 -5.06,1.85 -3,-0.9 -3.37,-6.82 0.98,-5.19 3.28,-1.16 7.69,2.35 9.98,-1.5 2.41,-2.9 -0.75,-1.66 -1.84,0.03 -3.07,0.67 -6.23,-0.21 -9.11,-1.01 -1.06,1.59 -3.12,1.29 -3.23,3.95 -0.71,-0.41 1.08,2.83 -0.42,2.18 -0.21,2.8 -2.89,4.96 -1.82,7.66 2.5,-1.68 2.02,3.47 1.17,4.47 z m -63.9,-21.23 c 1.46,-0.3 -3.53,-2.47 -0.65,-0.5 l 0.38,0.19 z m 96.92,9.51 c 1.18,-1.98 4.71,-1.91 6.93,-0.68 2.5,0.02 0.1,5.72 2,5.35 0.45,-1.2 1.5,4.18 3.35,1.35 1.75,-2.47 3.53,-3.07 5.68,-4.58 2.94,0.89 5.63,2.49 8.67,3.03 0.6,2.99 0.4,7.71 -0.01,11.23 0.48,1.8 0.85,6.39 -0.18,6.81 -1.4,-2.86 -3.85,-2.48 -5.38,-2.53 1.09,-1.45 -0.76,-2.94 0.76,-2.52 -1.89,-0.05 -1.63,-1.63 0.12,-0.65 -2.37,-0.6 -2.13,-3.71 -3.2,-4 -1.28,-1.43 -5.02,-2.77 -7.57,-3.05 -2.1,-0.01 -1.41,-1.84 -1.44,-1.56 -1.47,0.45 -3.78,-0.48 -2.6,-2.4 -0.46,-0.51 -1.7,5.09 -3.09,1.82 1.88,-1.26 -4.51,-3.14 -0.21,-2.72 2.01,-1.5 2.99,0.56 3.52,-1.18 0.19,-1.16 -4.95,0.93 -5.48,-1.23 0.65,-1.76 -2.77,-0.49 -2.4,-1.85 z m 17.69,20.64 c 1.89,1.91 6.05,-3.52 1.68,-2.47 -1.02,0.41 -1.3,1.56 -1.68,2.47 z m -5.92,-18.96 c 0.85,1.34 6.01,0.49 1.74,0.18 -0.58,-0.06 -1.16,-0.13 -1.74,-0.18 z",YE:"m 619.35,188.7 c -1.65,-1.63 -1.51,-5.17 -3.76,-6.5 -3.5,0.77 -7.67,0.07 -10.51,2.66 -1.04,1.42 -2.24,4.24 -3.93,2.02 -3.11,0.26 -7.42,-1.26 -9.6,0.49 -0.06,1.62 -1.53,3.91 -1.31,5.28 1.62,1.29 0.77,6.66 3.08,7.25 3.29,1.04 4.59,-2.58 7.98,-2.06 4,-1.07 6.96,-3.4 10.98,-4.53 2.43,-0.43 4.63,-1.26 4.89,-3.69 0.67,-0.45 1.49,-0.49 2.17,-0.91 z m 1.62,12.3 c 6.67,-0.85 -4.22,-1.91 0,0 z",MG:"m 591.79,297.71 c 1.2,2.82 0.97,7.37 2.95,8.73 2.79,1.88 7.92,0.75 8.65,-2.85 1.29,-3.83 2.44,-7.72 3.73,-11.54 1.42,-3.12 1.53,-7.02 3.01,-9.95 -0.6,-1.37 -0.73,-4.62 0.82,-1.66 1.9,-2.04 -0.38,-5.85 -0.85,-8.49 -0.87,-0.29 -1.43,-3.51 -1.9,-1.92 -1.27,0.91 -0.45,3.18 -2.27,4.06 -0.19,0.19 -1.97,-1.07 -0.92,0.84 -0.11,0.93 -1.26,1.18 -0.04,2.22 -0.91,-0.83 -1.7,1.65 -1.62,-0.1 -1.26,1.44 -0.18,2.8 -1.67,1.53 -1.92,1.31 -0.6,1.96 -2.14,1.61 -1.5,0.4 -3.11,0.31 -4.4,1.58 -1.71,2.75 -1.33,5.74 0.02,8.72 0.17,2.82 -2.6,4.67 -3.36,7.2 z",BO:"m 278.97,266.42 c 2.55,0.92 4,-0.24 6.07,-1.58 1.83,-1.59 7.41,-3.49 5.45,0.89 -0.13,2.3 1.75,4.96 4.28,5.04 2.75,0.15 4.61,3.2 7.62,2.87 3.23,0.65 1.54,4.44 2.41,5.56 -0.88,4.62 6.82,0.07 5.04,4.31 2.5,1.45 2.99,4.61 1.14,7.11 1.18,3.96 -2.48,-2.62 -5.16,-0.73 -4.44,-0.31 -7.07,2.7 -7.15,6.88 -0.06,2.22 -5.32,-1.01 -5.13,3.18 -0.31,-2.5 -4.81,-2.91 -5.54,-2.31 -1.52,1.17 -4.75,4.3 -4.51,0.3 -0.15,-2.22 -2.81,-4.42 -1.84,-6.01 0.49,-2.31 -1.73,-4.83 -2.44,-7.31 -1.14,-1.06 3.63,-3.14 0.56,-3.99 -0.32,-3.06 1.21,-5.67 1.05,-9.02 1.58,-1.37 -1.62,-3.65 -1.83,-5.21 z",CI:"m 448.04,217.31 c 1.43,-1.6 0.22,-2.8 1.35,-3.91 0.59,-0.67 -1.34,-2.42 1.31,-1.34 -0.95,-1.89 -0.32,-2.29 -1.43,-4.1 0.82,-2.97 3.97,0.01 4.46,-2.12 1.36,-0.64 0.77,1.88 2.83,0.49 1.82,1.17 2.93,3.02 5.18,1.42 2.95,-0.26 4.17,4.14 1.97,6.31 -2.43,2.51 1.76,6.79 -0.06,7.18 -0.54,-0.78 -3.11,0.31 -2.31,-0.69 -0.76,0.31 -4.38,0.61 -1,0.18 1.23,0.64 -5.22,0.11 -2.31,0.45 -3.1,-0.38 -9.05,4.8 -6.65,-1.41 -0.79,-1.62 -2.12,-1.85 -3.34,-2.47 z",DZ:"m 447.83,158.87 c -1.42,-4.06 2.69,-6.52 5.93,-6.61 2.69,-0.8 5.76,-2.94 8.06,-4.1 -1.83,-1.76 2.54,-2.76 4.09,-2.99 3.3,1.15 3.26,-1.18 1.37,-3.08 0.44,-1.92 -0.86,-4.75 -0.94,-5.19 2.13,-1.53 4.57,-1.62 6.46,-3.05 3.12,-1.42 6.64,-1.21 9.8,-1.92 2.76,0.4 5.39,0.34 7.65,-0.34 1.96,-0.05 4.13,0.03 5.43,0.53 -2.12,1.45 1,6.38 -2.98,7.8 0.47,3.54 5.03,4.58 5.13,8.4 0.23,3.1 1.52,5.64 1.57,9.07 -0.83,1.67 0.58,3.63 -1.37,4.66 1.84,2.02 1.64,5.46 5.08,5.02 4.96,2.86 -2.46,4.34 -4.43,6.15 -3.83,2.19 -7.47,4.71 -10.7,7.7 -2.4,-0.07 -8.29,3.34 -7.19,-1.03 -2.48,-1.01 -5.22,-1.52 -6.15,-4 -6.84,-4.13 -13.22,-9.02 -20.11,-13.09 -2.21,-1.35 -4.46,-2.64 -6.71,-3.93 z",CH:"m 488.45,105.83 c 1.29,-2.14 2.66,-4.1 4.76,-4 2.28,0.2 3.51,-1.55 5.32,0.74 -0.98,1.45 4.27,0.74 1.85,1.94 -0.53,1.03 -1.24,0.84 -2.77,0.41 -0.61,3.86 -2.74,-1.95 -3.77,1.37 -3.11,1.46 -2.84,-3 -5.4,-0.46 z",CM:"m 495.72,222.09 c 0.47,-3.22 3.41,-5.46 5.57,-6.53 1.27,2.08 2.15,2.36 3.29,0.26 0.18,-2.57 2.73,-4.33 2.93,-6.51 2.19,-1.52 1.75,-5.62 4.98,-6.24 1.08,-1.83 -3.37,-3.4 -0.72,-4.23 3.2,2.1 0.52,6.67 3.61,8.69 -2.26,-0.37 -6.76,0.32 -3.01,2.82 3.73,1.91 2.38,5.81 -0.14,7.91 -0.42,2.53 1.22,5.29 2.32,7.46 2.54,0.81 3.26,6.86 -0.01,4.31 -3.04,-0.52 -5.92,-0.7 -9.02,-0.83 -1.81,-0.39 -6.9,2.06 -6.2,-1.63 -0.19,-1.82 -0.76,-2.84 -0.86,-3.33 -1,1.33 -2.12,-2.49 -2.94,-1.55 z",MK:"m 528.66,118.73 c 0.72,-2.03 2.99,-1.79 4.92,-2.22 2.81,0.77 2.27,4.33 -0.81,3.59 -1.58,0.85 -4.12,1.04 -4.1,-1.37 z",BW:"m 527.36,305.27 c 0.81,-2.27 -1.87,-8.12 1.68,-7.74 2.46,-1.12 0.37,-6.2 1.08,-8.87 -0.38,-2.72 4.82,-1.97 6.6,-2.11 1.16,2.25 5.11,-3.32 6.09,0.9 1.25,4.17 6.02,4.42 6.41,8.27 1.43,1.11 5.97,1.59 2.48,3.25 -3.21,0.74 -4.64,4.07 -6.95,6.05 -2.13,0.14 -1.28,4.09 -4.34,3.16 -2.45,-0.7 -5.26,-2.69 -6.1,1.11 -1.71,2.37 -6.82,3.13 -4.88,-1.17 -0.38,-1.17 -1.04,-2.17 -2.09,-2.86 z",UA:"m 533.33,99.45 c 0.38,-2.42 2.62,-0.95 1.55,-3.19 1.51,-2.24 5.9,-2.87 2.56,-5.17 1.24,-1.88 5.76,-1.8 8.43,-1.21 2.08,0.47 4.68,1.02 6.24,0.62 1.37,0.15 3.91,1.05 4.74,0.38 0.25,-3 4.8,-1.41 6.48,-2.35 2.03,-0.95 4.88,1.12 3.49,2.26 0.42,1.56 4.07,0.15 3.62,3.02 2.25,0.9 4.97,-0.87 6.7,1.19 1.53,0.31 6.03,0.27 5.9,2.18 -1.87,0.91 0.64,0.9 -1.06,1.74 3.11,2.67 -4.06,1.43 -3.8,3.68 -2.7,1.82 -6.53,0.96 -9.21,3.43 2.58,-2.32 -2.41,0.17 0.41,1.46 1.07,1.21 5.82,-0.36 2.73,1.55 -2.21,-1.2 -6.6,3.05 -7.27,0.97 1.25,-2.46 -5.49,-1.56 -0.98,-2.96 4.95,-1.59 -4.78,-0.76 -3.46,-2.07 -3.23,-0.26 4.67,-0.42 0.65,-0.42 -1.37,-1.95 0.32,-0.22 -1.65,-0.07 -0.22,-1.27 -3.13,2.33 -3.62,0.72 0.24,0.25 0.69,1.87 -1.3,2.11 1.92,-1.05 -1.71,-0.2 -0.1,0.98 -0.61,-0.67 -6.41,0.78 -2.76,-1.71 0.93,-2.27 1.5,-1.55 3.85,-1.53 -0.18,-1.02 -2.58,-1.29 -1.6,-2.59 -0.99,-1.59 -2.48,-2.46 -4.37,-2.61 -2.58,-1.71 -4.68,1.24 -7.34,0.98 -2.41,0.31 -5.68,-0.1 -7.92,-0.87 -0.4,-0.01 -0.51,-0.49 -0.9,-0.53 z",KE:"m 565.98,238.45 c -1.07,-3.74 2.54,-5.6 3.18,-8.69 -1.15,-1.8 -1.5,-4.12 -2.68,-5.32 0.29,-3.5 6.28,-1.26 8.65,-0.77 2.74,2.44 6.51,2.92 8.94,0.29 1.02,-0.16 4,0.51 3.69,0.99 -3.5,3.08 -1.82,7.92 -2.24,12.02 0.81,1.63 2.52,4.78 -0.33,4.2 0.79,1.52 -2.38,1.75 -2.35,3.92 -0.94,2.23 -1.95,5.44 -4.46,2.07 -2.59,-1.71 -2.38,-4.35 -6.03,-5.25 -2.2,-0.99 -4.16,-2.68 -6.39,-3.46 z",TW:"m 805.03,169.47 c -0.48,1.96 2.33,6.52 2.74,2.31 0.92,-1.65 3.91,-7.83 0.29,-6.84 -1.39,1.01 -2.44,2.92 -3.04,4.53 z",JO:"m 568.85,153.04 c 0.91,-3.06 1.42,-6.72 2.23,-9.42 2.89,2.96 6.55,-2.17 8.62,-1.24 2.67,3.53 -1.78,4.19 -4.98,4.69 0.47,0.91 3.25,2.52 2.05,2.92 -1.97,1.51 -4.82,4.48 -7.93,3.06 z",MX:"m 146.91,144.12 c 4.03,-0.61 6.19,-0.66 9.33,0.98 3.78,0.9 7.36,3.02 11.36,2.39 1.8,-0.09 4,0.57 4.58,-1.3 3.87,-0.71 7.78,1.72 9.43,5.05 1.12,2.54 5,3.88 6,0.6 4.48,-1.37 5.43,4.11 8.08,6.22 0.1,3.47 3.3,3.99 5.99,4.78 1.66,0.21 -1.86,4.93 -0.82,6.79 -1.12,2.04 1,5.79 0.91,5.71 -2.07,-3.94 0.48,2.62 1.93,3.59 1.77,1.76 2.02,5.25 2.55,3.87 2.27,0.76 5.91,2.4 5.97,1.14 2.66,-0.29 4.19,-1.31 5.88,-0.17 1.6,-1.88 -1.16,-0.68 1.42,-1.96 2.46,-2.61 0.26,-6.77 5.15,-6.31 3.48,-0.81 3.86,-0.36 6.33,-0.19 0.26,2.44 -2.58,4.46 -2.14,5.95 0.62,0.64 -0.9,4.29 -1.51,1.72 -1.52,1.82 -2.49,2.76 -4.99,2.52 -1.62,-0.04 -3.27,-0.35 -3.18,1.62 -2.43,-0.32 5.21,3.74 0.25,3.3 -3.93,-1.31 -2.58,6.77 -4.69,2.76 -0.69,-1.06 -6.52,-4.51 -3.45,-2.55 -3.28,-1.38 -1.63,-0.96 -5.09,0.37 -3.83,1.6 -7.15,-1.96 -10.81,-2.44 -3.76,-1.96 -7.39,-3.38 -11.04,-5.17 -1.44,-1.39 -7.37,-3.65 -4.34,-5.73 -1.08,-0.83 1.2,-2.68 -1.02,-3.9 -0.19,-2.82 -5.05,-6.01 -5.47,-6.73 -0.63,-1.05 -3.04,-3.19 -3.99,-3.34 -1.06,0.21 -1.42,-1.5 -0.43,-2.24 -0.91,-1.2 -4.58,-1.95 -3.82,-4.15 -2.28,0.08 -4.27,-2.95 -5.37,-4.94 -1.41,-2.21 -1.42,-5.35 -4.29,-5.46 -1.79,0.17 -3.23,-2.4 -2.32,0.28 -0.23,3.69 3.17,5.75 4.96,8.27 0.78,1.45 3.2,4.8 3.49,5.02 0.49,-0.56 2.41,4.15 3.06,5.6 0.06,2.72 2.23,0.16 2.89,3 2.19,1.7 -2.08,2.99 -1.92,0.26 -2.75,-2.57 -6,-2.84 -5.08,-6.62 -1.52,-0.71 -2.61,-3.46 -3.45,-2.34 -1.97,-0.2 -6.6,-4.19 -2.34,-2.76 1.72,1.22 0.86,-0.5 0.25,-0.24 1.51,-2.83 -4.23,-4.37 -4.82,-7.38 -1.2,-1.22 -1.91,-4 -3.41,-5.63 z",AE:"m 614.9,167.34 c 1.12,1.33 4.68,0.15 7.22,0.3 0.84,-0.73 3.89,-4.15 5.57,-5.23 0.32,1.15 1.11,4.3 -0.84,3.09 -0.43,1.59 0.57,2.62 -0.88,3.06 -0.36,3.02 -1.96,4.08 -4.92,2.93 -3.16,0.32 -4.78,-1.53 -6.14,-4.15 z",BZ:"m 224.45,190.94 c 0.24,-3.09 -0.56,-6.25 2.53,-7.3 0.29,1.75 0.85,5.64 -1.6,6.97 l -0.06,0.33 z",BR:"m 266.7,256.8 c 1.46,-2.11 2.75,-3.84 3.14,-6.74 2.29,-1.46 5.6,-3.35 7.84,-2.31 0.57,-3.26 2.17,-6.93 1.28,-10.19 -1.94,-1.19 -1.76,-4.64 1.04,-3.76 0.18,-1.73 -3.3,-0.97 -1.54,-3.06 3.03,0.03 4.52,0.14 6.33,-1.04 1,1.65 1.4,3.9 4.06,3.71 1.53,-1.52 1.23,1.67 2.51,-0.87 2.04,-0.84 3.65,-2.08 4.62,-3.66 -2.79,0.11 -1.74,-4.02 -3.65,-5.3 1.71,0.49 4.48,1.94 5.53,1.46 0.52,-2 6.46,-0.98 5.62,-4.04 2.95,-1.06 1.23,2.16 2.82,2.76 -0.07,2.41 -1.85,6.71 1.73,8.09 1.93,0.81 3.93,-2.13 6.16,-1.54 2.09,0.09 2.63,0.19 2.43,-1.56 2.53,-1.05 4.4,1.51 6.59,0.45 3.41,1.99 3.65,-5.35 6.01,-4.79 -0.54,-2.73 1.11,2 1,0.3 0.25,3.01 0.78,5.59 3.32,6.7 -0.09,1.92 -4.17,4.12 -5.06,7.04 -0.34,1.56 -4.33,1.35 -1.45,1.78 1.67,0.03 4.62,-3.81 4.25,0.41 1.46,1.61 4.74,-1.62 3.38,1.58 -0.5,0.81 2.36,-3.23 2.79,-2.35 1.43,-0.16 -0.83,0.06 0.54,-1.23 1.18,-1.57 2.7,-1.1 3.66,-0.82 0.73,0.05 1.03,0.82 2.11,0.83 1.07,0.67 2.48,0.63 2.32,1.38 0.78,-0.13 1.62,-0.15 1.87,0.67 1.16,0.13 -1.26,2.24 0.79,1.18 -0.69,1.26 -1.58,4.64 0.01,1.46 1.86,-2.63 -0.55,1.94 1.3,-0.46 1.59,-1.38 4.26,0.93 5.97,0.64 2.74,0.42 6.44,-0.33 8.95,2.53 2.13,3.18 5.69,3.83 8.9,4.58 1.09,3.16 1.62,4.91 1.4,7.38 -0.38,3.15 -2.76,4.44 -3.38,6.11 -2.21,1.74 -3.17,2.31 -3.54,3.19 -0.25,0.79 -2.34,6.81 -3.79,3.74 -0.42,1.14 -1.31,3 -0.85,3.69 -0.01,1.34 0.72,6.53 -0.56,9.43 -0.34,2.2 -1.91,4.24 -1.69,6.7 -1.24,2.13 -3.31,3.79 -3.37,6.7 -2.84,0.59 -2.01,3.47 -5.06,2.71 -1.22,-1.53 -0.6,0.65 -3.13,0.33 2.75,-0.82 -3.29,-0.52 -1.79,0.67 -1.69,0.79 -3.67,1.71 -4.9,1.86 -3.43,1.46 -4.25,4.41 -6.41,3.93 1.76,0.96 -0.49,1.07 0.3,2.05 -0.9,0.64 0.67,3.24 0.07,4.84 -0.26,2.68 -4.11,4.03 -5.09,7.86 -0.66,2.16 -7.08,5.51 -3.13,2.81 1.27,-0.99 4.21,-4.65 1.47,-3.73 -1.31,-1.93 -0.07,1.79 -0.93,1.26 -1.83,1.86 -2.32,3.24 -2.93,5.11 0.04,2.12 -4.51,4.63 -2.66,1.15 0.95,-2.58 -4.38,-3.84 -5.93,-5.87 -1.77,1.23 -2.88,-3.55 -5.59,-1.85 1.22,-1.65 4.21,-4.54 5.22,-5.85 2.71,-1.71 7.57,-3.48 4.51,-7.29 -3.94,1.35 1.69,-5.48 -2.17,-4.73 -3,1.6 -1.94,-7 -4.92,-4.41 -2.28,0.5 -5.22,-0.81 -3.49,-3.69 -0.95,-1.92 -0.41,-2.95 -0.14,-4.92 1.86,-2.56 0.16,-4.82 -1.6,-6.55 1.79,-3.82 -6.05,0.49 -4.98,-4.03 -0.75,-1.12 0.85,-5.38 -2.7,-5.56 -2.5,0.22 -4.23,-2.13 -6.37,-2.71 -2.28,0.01 -5.18,-1.62 -4.99,-4.14 -0.44,-2.07 0.99,-4.92 -2.61,-3.53 -2.64,0.91 -4.45,2.73 -6.87,3.62 -2.12,-1.36 -6.87,1.41 -5.16,-3.45 1.08,-3.21 -4.45,3.31 -4.83,-1.02 -1.8,-0.36 -2.28,-0.1 -2.04,-1.84 -1.24,-1.17 -1.54,-2.65 -2.51,-3.78 z m 64.34,-17.04 c 1.69,1.81 4.29,0.77 5.82,-0.97 2.76,-3.8 -3.6,-2.64 -5.41,-2.38 0.34,1.32 -0.93,1.2 0.01,2.25 1.2,0.1 -1.24,-0.03 -0.42,1.1 z",SL:"m 435.02,210.22 c 1.93,-1.56 5.36,-4.95 7.22,-0.74 1.09,1.13 -0.89,3.59 1.16,2.39 -1.16,2.19 -3.35,5.68 -6.08,2.91 1.45,-0.71 -1.26,-0.53 -1.72,-2.37 -1.36,-0.45 1.89,-1.32 -0.29,-0.89 -0.48,-0.9 1.07,-0.74 -0.28,-1.31 z",ML:"m 437.94,194.09 c 2.04,0.27 0.91,-4.28 3.33,-1.43 0.66,-0.14 2.73,-0.47 4.23,-0.55 2.58,-0.13 7.07,-0.19 10.4,-0.03 2.61,-1.65 -0.96,-6 -0.22,-8.98 -0.61,-5.94 -1.17,-11.89 -2.04,-17.8 2.18,0.22 4.68,-0.68 6.45,0.99 5,3.35 10.11,6.64 14.98,10.12 0.79,2.34 3.83,2.32 5.75,3.54 -0.87,2.43 0.94,2.51 2.85,1.83 -0.17,3.51 0.95,7.94 -1.95,10.48 -3.03,-0.07 -6.2,0.86 -9.14,1.22 -2.98,-1.16 -5.79,2.3 -8.35,2.58 -0.66,1.62 -1.51,1.07 -1.88,2.53 -3.32,-2.45 -1.5,3.09 -4.45,3.36 -1.6,0.57 0.02,4.22 -2.58,4.94 -1.29,0.07 -0.15,-2.12 -1.6,-1.03 -0.4,1.08 -1.89,1.12 -3.22,0.55 -1.36,2.1 -1.08,-2.87 -2.67,-1.59 1.46,-1.31 -0.82,-2.75 -1.47,-4.3 -0.46,1.21 -3.4,1.35 -4.37,1.04 -1.52,0.18 -2.09,0.26 -1.85,-1.7 -0.05,-2.03 -2.16,-2.23 -1.89,-4.57 -0.51,-0.29 0.13,-0.87 -0.33,-1.19 z",CD:"m 505.77,251.86 c 1.11,-0.45 1.26,-4.86 3.32,-2.51 1.04,-1.47 3.32,-2.13 3.01,-0.08 3.18,-1.06 5.29,-4.26 5.08,-7.65 2.52,-2.81 4.78,-5.42 4.56,-9.55 0.61,-2.99 2.06,-6.3 2.13,-8.9 2.02,-4.45 4.64,0.54 7.38,0.4 2.12,0.77 3.39,0.33 4.39,-1.51 2.2,1.04 4.02,-1.17 6.29,-0.61 1.13,-1.59 4.43,0.23 6.29,0.12 1.5,3.66 5.21,-0.2 6.72,2 2.14,1.43 3.1,2.6 2.3,5.16 3.85,1.6 -3.17,3.66 -2.74,6.36 0.38,3.32 -2.26,5.6 -2.13,8.35 1.51,3.41 0.61,7.8 2.24,10.97 1.86,1.39 4,5.34 0.03,4.67 -3.03,-0.07 -4.18,2.35 -3.41,4.97 -0.48,2.25 -0.88,7.37 2.73,5.97 1.08,-0.64 0.96,4.79 -0.18,2.86 -2.42,1.32 -2.68,-3.38 -5.42,-2.94 -0.95,-3.24 -2.96,0.76 -5.34,-1.31 -1.27,-0.74 -0.93,-2.21 -3.01,-0.96 -0.5,-0.98 -1.88,-1.79 -3.82,-0.94 -1.87,0.16 -3.53,0.88 -2.39,-1.55 -1.9,-2.75 -1.01,-6.14 -1.62,-9.07 -1.53,-0.06 -3.51,0.31 -3.49,-1.1 -2.15,0.08 -3.24,0.79 -3.08,3.1 -2.11,-0.79 -4.92,1.62 -5.92,-1.16 -1.4,-2.23 -1.11,-6.26 -5.05,-4.86 -2.81,-0.23 -6.65,0.7 -8.88,-0.26 z",IT:"m 507.51,129.94 c -3.05,-1.56 2.25,-1.9 3.67,-1.24 1.87,-0.1 5.68,-1.88 2.74,1.15 1.11,2.58 -1.33,3.18 -3.09,1.38 -1.28,-0.02 -2.12,-1.1 -3.32,-1.29 z m -12.37,-8.02 c -1.85,-1.43 1.82,-2.01 2.86,-1.99 1.23,0.55 1.16,4.18 0.05,5.58 -1.7,1 -3.95,0.46 -2.47,-1.54 -0.34,-0.72 -0.13,-1.18 -0.44,-2.05 z m -4.9,-13.17 c 3.1,-0.02 -1.04,-2.76 2.09,-2.35 2.48,-0.19 2.62,-2.39 4.57,0.34 -0.27,-2.86 2.83,-0.83 2.93,-1.72 0.94,-1.14 3.02,-1.32 5.54,-1.83 0.95,1.66 5.23,1.16 4.21,3.41 2.1,1.41 -2.13,-0.39 -3.2,1.12 -0.43,-0.49 -1.01,1.04 0.12,1.66 -2.29,2.57 4.77,3.24 4.6,6.55 0.65,2.38 6.19,0.94 5.12,2.54 0.55,2.04 7.22,1.64 6.66,5.04 -1.28,-1.22 -5.59,-2.89 -4.92,0.65 3.38,1.22 -0.58,2.57 -1.22,4.3 -2.73,1.61 -0.35,-1.81 0,-2.41 -0.55,-2.94 -2.96,-3.35 -4.6,-4.73 -1.02,-1.37 -5.06,-1.66 -6.86,-3.77 -3.53,-0.91 -3.86,-4.73 -7.02,-6.29 -1.56,-2.47 -6,3.28 -5.14,0.18 -3.86,0.28 -0.56,-1.71 -2.89,-2.69 z",SO:"m 585.58,229.11 c 0.69,-4.69 6.2,-7.52 10.68,-7.31 2.28,-1.77 4.01,-4.34 6.21,-6.28 1.31,-1.33 3.8,-3.01 0.32,-2.36 -3.72,-1.45 -8.97,-1.63 -11.19,-5.33 -3.05,-1.74 0.89,-6.67 2.05,-2.34 2.51,2.1 5.36,-0.94 8.17,-0.4 2.93,-1.76 6.73,-0.59 9.82,-2.27 3.25,-3.21 1.61,3.36 2.25,3.39 1.32,-0.12 -2.15,0.54 -0.97,2.35 -1.4,3.16 -3.42,5.74 -4.82,8.9 -1.89,4.51 -5.29,8.36 -9.04,11.49 -4.21,2.3 -7.59,5.75 -10.67,9.35 -0.46,0.71 -1.19,3.14 -2.01,0.66 -1.7,-2.5 -0.43,-5.99 -0.81,-8.9 l 0,-0.47 z",AF:"m 639.74,139.82 c 1.69,-1.45 1.23,-5.93 4.7,-3.54 1.43,1.33 2.67,-1.68 3.45,-1.57 3.5,0.06 3.17,-4.17 6.08,-4.32 2.12,-0.55 5.14,0.72 7.27,1.14 1.63,-1.71 3.03,0.55 3.91,-1.65 2.23,1.22 1.92,-4.15 4.62,-1.79 0.27,1.14 0.98,1.67 0.38,3.63 1.58,2.07 5.54,-3.13 6.54,-0.84 2.18,-0.77 3.22,-0.4 2.08,0.59 -2.94,0.85 -7.6,-0.11 -9.19,2.95 2.67,2.03 -1.37,3.58 -0.54,5.27 -2.16,0.74 -4.42,-0.54 -2.19,2.29 -3.26,-0.32 -1.84,4.85 -4.25,4.39 -1.55,-0.59 -3.3,0.83 -3.34,1.36 -3.63,-1.33 -2.64,3.38 -4.45,4.24 -4.18,0.55 -8.59,1.68 -12.69,0.06 -3.07,-0.31 4.68,-5.14 -1.31,-5.25 -0.69,-1.82 -0.25,-4.72 -0.62,-5.58 -0.62,-0.14 -0.37,-0.99 -0.44,-1.38 z",BD:"m 716.95,161.12 c 0.8,-0.22 1.8,1.17 2.06,0.38 1.27,1.37 2.41,0.19 2.29,3 1.76,0.89 7.81,-0.72 6.42,1.69 -1.03,1.41 -4.28,2.92 -2.37,4.04 1.32,2.74 1.74,-3.85 2.7,-0.2 -0.07,1.9 2.06,6.05 -0.4,5.62 0.02,3.91 -0.92,-4.11 -1.4,-3.01 -0.46,-2.79 -2.64,1.38 -2.92,-2.19 0.42,-2.1 -0.97,-0.41 -0.61,-0.49 0.43,1.3 -0.12,2.01 0.29,3.26 -0.2,-0.37 -1.91,2.15 -0.98,0.24 -0.49,0.49 -0.68,-0.2 -0.82,-0.86 0.03,2.56 -1.46,1.13 -0.88,0.69 -0.26,0.81 -0.26,-1.15 -0.23,0.9 -0.62,0.75 -0.11,-1.06 -0.79,0.58 -0.52,-2.38 -1.15,-4.56 -1.56,-6.27 1.17,-1.53 -3.4,-2.26 -0.76,-3.09 1.6,-0.72 2.09,-1.06 0.18,-1.93 -2.43,-0.94 1.25,-2 -0.22,-2.35 z m 6.09,10.81 c 0.03,1.88 0.88,2.41 0.6,0.18 -0.25,-0.23 -0.31,-0.96 -0.6,-0.18 z",DO:"m 272.83,184.89 c -0.53,-1.77 0.29,-3.1 0.36,-5.21 2.54,-0.49 5.56,1.5 6.64,1.93 -2.86,-0.43 5.6,2.18 1.12,2.37 -2.45,-0.36 -4.34,0.19 -6.19,0.35 -0.48,1.5 -1.01,2.47 -1.93,0.57 z",GW:"m 425.53,200.98 c 2.38,-0.33 4.57,-1.22 7.02,-1.01 2.59,-0.24 0.04,1.59 1.2,2.64 -2.43,-0.49 -3.7,3.48 -4.57,1.09 0.75,-1.43 0.86,-0.14 -0.24,-1.09 2.76,-0.42 0.44,-0.85 -1.35,0.03 2.05,-1.52 -2.31,0.28 -0.46,-1.61 -0.69,0.1 -0.93,0.55 -1.61,-0.05 z",GH:"m 463.12,218.04 c -0.22,-3.53 2.96,-6.14 1.13,-9.66 -0.36,-2.09 -1.06,-4.54 2.09,-3.68 2.18,0.85 5.88,-1.57 5.79,1.26 1.67,1.44 -0.15,3.04 1.26,3.69 0.13,2.29 0.34,4.75 0.19,7.43 1.73,0.4 1.94,2.6 0.15,2.09 -0.84,-0.97 -1.55,-0.77 0.01,-0.12 -3.22,0.88 -6.4,4.07 -9.73,2.5 -1.54,0.11 1.78,-1.18 -0.32,-1.76 0.11,-0.64 -0.23,-1.24 -0.57,-1.76 z",AT:"m 498.33,102.64 c 0.57,-1.73 2.38,0.79 3.17,-0.71 2.12,0.58 4.66,-0.95 6.64,-0.11 -1.9,-2.04 1.39,-2.14 2.12,-3.4 2.58,1.59 3.61,-1.95 6.56,0.05 3.57,-0.79 2.09,3.65 1.2,3.27 -0.3,2.95 -3.14,2.19 -5.71,3.3 -2.34,-0.32 -6.06,-0.31 -7.08,-1.78 -2.62,0.75 -4.48,0.69 -6.73,-0.02 l 0.01,-0.32 z",SE:"m 503.07,69.37 c 2.29,1.64 0.79,-3.19 3.48,-2.93 1.06,-1.32 -1.91,-2.64 0.84,-2.85 0.63,-1.42 -2.73,-1.22 -1.44,-3.27 -1.05,-2.33 -0.33,-5.19 2.99,-4.95 1.69,0.79 3.22,-1.25 0.83,-1.43 2.34,-0.66 2.48,-3.52 3.11,-4.4 1.67,-0.14 3.98,-2.03 4.49,-3.23 -1.16,-1.42 3.27,-2.43 4.88,-2.38 -0.36,-2.99 6.56,0.79 5.61,-1.45 0.75,-2.79 6.02,1.11 8.74,1.36 1.76,0.22 -0.56,2.09 1.31,2.27 -1.16,0.73 1.47,1.77 -0.24,2.84 2.9,2.24 -1.35,1.51 -1.95,1.63 -2.18,-0.67 -1.63,1.02 -3.03,0.7 0.16,0.51 -1.39,0.13 -0.93,1.34 -3.45,0.72 2.08,1.59 -1.5,2.46 -1.99,1.99 -4.11,1.55 -6.45,2.85 -1.95,0.25 0.37,0.75 -1.88,0.98 0.4,0.08 -1.63,-1.45 -0.21,0.24 -0.86,0.96 -1.99,0.69 -1.09,1.46 -0.52,2.59 -1.41,0.78 -1.07,2.37 -0.25,3.19 3.46,1.91 4.93,4.05 0.88,1.07 -4.17,1.6 -0.98,1.79 -0.31,-0.45 -1.15,1.75 -2.7,0.64 0.72,1.18 -3.27,1.21 -3.17,1.26 2.66,0.54 -1.56,0.14 0.83,1.06 -0.62,1.31 -0.04,1.66 -1.19,4.34 -0.86,3.05 -6.6,0.05 -5.62,3.58 -2,-0.05 -4.22,0.96 -4.17,-1.25 -1.78,-1.45 1.78,-1.69 -1.27,-3.17 -1.84,-1.15 -1.31,-2.93 -1.87,-3.66 -0.87,-0.06 0.36,-0.36 -0.86,-0.2 -0.39,0.39 -0.79,-1.77 -0.43,-2.02 z m 19.78,5.86 c 1.67,-0.89 2.56,-3.93 -0.46,-1.71 -0.09,0.69 -0.24,2.77 0.46,1.71 z m -5.45,1.61 c 0.61,1.22 3.14,-5 0.72,-1.2 -0.33,0.31 -0.83,0.66 -0.72,1.2 z",TR:"m 544.2,124.61 c -0.19,-3.46 5.6,-2.64 5.36,-2.55 1.31,-0.09 3.86,0.31 2.53,-0.61 2.88,-0.79 2.42,0.17 0.35,-1.24 2.89,-0.92 6.58,0.52 9.35,-1.99 3.33,-0.86 6.8,-1.32 9.09,0.22 1.54,0.31 3.87,1.67 6.25,1.93 3.71,0.27 7.46,-0.25 10.79,-1.28 2,-0.43 3.08,-0.35 4.43,0.78 1.22,1.57 -0.08,3.67 2.78,3.29 2.74,1.29 -2.71,1.04 -0.37,3.34 -0.08,2.03 0.48,2.83 1.38,4.65 -1.79,0.36 -4.56,-1.14 -6.84,-0.22 -3.3,-0.31 -6.8,1.88 -10.22,1.34 -1.74,-0.49 -4.1,0.38 -5.62,0.15 0.58,1.1 -1.19,2.8 -1.8,1.96 -1.11,-0.92 2,-3.14 -0.57,-2.19 -0.84,1.09 -4.26,-0.84 -5.19,1.34 -2.98,3.2 -7.33,-4.03 -9.27,-0.46 -1.59,2.06 -4.09,-0.49 -5.63,-0.92 -1.1,0.37 -1.36,0.57 -1.51,0.13 -4.23,0.77 3.27,-0.76 -0.58,-0.85 -2.1,0.18 -1.05,0.28 -0.63,-0.64 -1.89,-0.4 -0.01,-2.04 -2.33,-2.61 -1.69,0.79 -0.65,-2.62 0,-0.43 2.24,0.08 -0.69,-0.86 0.78,-1.55 -1.97,-1.18 1.52,-2.33 -2.52,-1.57 z m -0.08,-3.56 c 2.53,-1.48 -0.23,-4.36 3.83,-3.6 1.87,-0.15 2.85,1.97 4.5,2.55 -2.73,0.01 -5.63,0.78 -7.84,2.96 0.29,-1.45 3.13,-1.91 -0.16,-1.53 l -0.21,-0.12 z",UG:"m 553.91,238.9 c -0.39,-4.17 2.3,-6.77 4.75,-9.42 -2.41,0.04 -1.63,-5.56 0.75,-4.17 1.7,0.21 3.32,-0.39 5.57,-0.42 2.14,-2.38 2.72,2.71 4,4.52 0.43,3.24 -4,4.5 -2.99,8.06 -1.04,2.18 -5.96,0.5 -8.56,0.92 -1.39,0 -2.88,2.34 -3.52,0.5 z",MZ:"m 555.68,277.82 c 3.38,-0.51 7.85,-4.21 10.07,-1.42 4.51,-0.87 -0.98,5.86 3.59,6.74 0.61,2.22 -0.65,-2.7 1.56,-2.32 2.53,-3.74 -2.44,-6.16 -3.24,-8.98 -1.9,-4.36 3.49,-4.31 5.89,-3.25 1.32,-0.53 2.84,0.44 3.87,-1.29 2.26,1.88 7.76,-4.55 6.8,-0.28 -0.52,2 0.53,4.58 0.1,6.64 0.2,2.16 0.97,3.01 0.4,4.25 -0.43,1.98 -3.01,5.04 -5.57,5.78 -3.19,1.08 -5.18,2.18 -6.33,4.8 -1,-0.6 -4.36,4.09 -4.82,2.41 0.15,2.61 1.46,4.11 1.84,6.62 -0.17,2.65 1.06,-1 0.49,1.71 0.65,1.67 -1.08,3.66 0.13,3.82 -0.58,3.45 -10.01,3.24 -7.47,6.38 2.13,1.12 -2.26,3.35 -1.99,0.39 -0.65,-3.17 -0.44,-6.79 -1.88,-10.02 -0.89,-2.83 3.92,-3.48 3.06,-6.29 2.7,-1.94 -0.57,-4.19 1.33,-6.02 -0.33,-2.62 0.82,-5.75 -2.86,-5.66 -2.16,-2 -5.13,0.08 -4.95,-4.02 z",JP:"m 856.18,127.94 c -1.84,1.01 0.27,2.23 0,0 z m 8.64,-20.15 c 0.38,2.34 0.31,7.64 -3.24,5.92 0.46,1.55 -3.12,2.39 -0.87,4.1 -1.78,2.55 5.43,-0.24 1.23,-0.76 -1.88,-2.01 2.04,0.05 3.04,-1.31 1.98,0.42 4.65,3.42 5.48,-0.05 1.5,-1.31 5.08,-0.78 5.48,-2 -1.46,0.31 -1.51,-1.51 -0.94,-2.78 -2.12,2.33 -5.03,0.1 -7.2,-1.25 -0.96,-0.69 -1.68,-2.33 -2.98,-1.87 z m -25.3,33.26 c -1.96,1.25 -0.79,0.12 0.08,1.06 -0.66,1.4 2.1,2.1 2.13,-0.17 1.59,-0.98 2.83,0.63 3.83,-1.61 -0.73,-3.04 -3.47,0.43 -4.98,-0.63 -0.33,0.44 -0.48,1.13 -1.04,1.36 z m -4.43,-0.85 c 1.96,-0.48 3.46,0.68 4.31,-1.17 2.06,0.38 3.71,-0.69 5.65,-1.14 1.06,0.33 3.92,-0.05 1.52,1.29 -0.04,2.5 3,2.91 3.71,0.24 2.76,0.37 -1.03,-2 1.2,-2.22 -0.8,1.25 2.05,-0.16 0.73,1.18 2.25,-0.07 3.07,-0.2 4.69,-1.45 -0.84,1.6 1.08,1.49 1,-0.46 1.69,1 1.25,-1.62 2.53,-0.79 -2.34,2.74 0.98,1.33 1.51,-0.29 0.85,-0.39 -0.74,-3.11 1.07,-3.95 0.41,-1.16 -0.91,-4.42 1.52,-3.5 0.7,-2.16 2.14,-4.91 -0.38,-6.96 1.19,-1.59 -1.49,-2.88 -1.55,-1.2 2.79,-0.41 -0.65,2.12 -0.91,-0.01 -0.96,0.48 -1.8,1.83 -1.8,3.26 -1.26,0.07 2,1.61 -0.15,3.1 -1.01,2.68 -5.58,6.7 -7.62,5.5 -0.92,-0.68 2.17,-2.09 -0.47,-1.18 -0.41,1.88 -2.34,3.69 -2.79,5 -2.16,1.03 -1.9,-1.28 -4.8,0.22 -3.81,-0.99 -5.72,2.44 -9.06,3.44 l -0.04,0.57 z m -3.05,1.69 c -1.65,0.19 1.8,1.81 -0.39,1.11 1.03,1.15 2.45,0.91 1.24,-0.52 3.49,0.55 -2.05,4.9 1.23,5.48 -0.19,-1.7 1.19,-1.77 0.25,0.42 2.1,-0.6 3.06,-4.2 3.57,-5.74 -1.92,-0.54 0.47,-2.18 -2.22,-1.51 -0.75,-2.25 -2.9,0.43 -3.68,0.77 z m -5.99,20.39 c 1.34,-1.15 2.28,-2.78 0.65,-1.35 -0.25,0.41 -0.91,0.79 -0.65,1.35 z",NZ:"m 980.38,359.42 c 1.59,0.63 -0.23,-0.77 1.18,-0.76 -2.77,0.04 -0.77,-0.16 -1.18,0.76 z m -23.67,-7.74 c 2.14,2.42 4.24,-1.63 5.73,-3.43 -0.09,-1.29 0.81,-3.97 2.77,-2.23 0.11,-1.33 3.61,-5.66 -0.04,-4.42 -2.7,2.86 -6.03,-1.77 -6.17,-2.62 -1.34,-2.4 0.57,3.23 -1.32,0.45 -1.54,0.37 -1.17,-2.95 -2.07,-3.17 1.31,0.47 -1.09,-2.61 -0.89,-1.21 -0.64,-1.78 -3.1,-0.5 -3.03,-2.47 -1.58,-0.97 0.72,3.28 1.2,2.63 -0.84,-0.87 2.64,4.36 1.51,2 1.37,-0.12 1.56,1.23 0.71,1.18 0.74,1.83 2.19,0.91 1.26,2.12 0.85,1.57 0.3,5.01 -2.42,5.22 0.8,1.83 6.18,3.35 2.38,6.16 h 0.35 z m -23.16,13.34 c 1.43,-0.64 -0.04,1.31 2.71,0.51 2.11,0.86 4.97,2.3 7.18,0.16 2.23,-1.12 1.62,-1.84 3.08,-4.28 1.22,-2.98 4.59,-2.2 5.41,-2.8 -2.75,-1.32 2.77,-3.59 3.2,-5.59 -1.26,-1.38 1.75,-1.87 -0.72,-1.42 1.64,-1.35 -1.32,0.96 -0.13,-0.9 -1.84,1.5 -2.02,0.63 -3.02,-0.32 -1.28,-0.72 1.64,-1.16 -0.99,-0.6 -1.6,2.24 -2.96,4.34 -4.78,6.58 -3.04,1.83 -7.46,3.44 -9.11,5.24 -1.94,0.98 -0.67,1.81 -2.02,1.88 -1.19,0.79 2.01,-0.37 -0.12,0.44 1.48,0.34 -1.01,0.13 -0.68,1.1 z m 4.23,2.52 c 0.39,-1.85 -2.66,1.98 0.05,0.67 1.38,0.02 -0.1,-0.55 -0.05,-0.67 z", -CU:"m 241.98,175.35 c -2.12,-0.41 1.52,-2.41 0.61,-0.14 z m -5.53,-1.26 c 2.2,-0.06 1.37,-3.05 4.41,-3.05 3.72,-0.8 5.87,-0.72 9.13,0.22 1.3,1.13 4.9,1.77 6.58,3.1 1.31,0.86 -0.15,-0.99 1.4,0.57 -0.58,0.42 2.65,0.95 4.2,1.75 -1.67,0.65 7.22,1.75 2.29,2.73 -2.01,0.36 -5.38,-0.1 -8.08,0.44 1.59,-1.04 2.34,-2.98 -0.59,-2.44 -1.98,-0.84 -1.67,-3.44 -4.25,-2.54 -2.82,-1.76 -5.11,-1.09 -7.22,-2.28 3.23,-0.68 -3.4,-1.54 -3.71,0.57 -1.75,0.07 -2.86,1.63 -4.15,0.93 z",VE:"m 268.42,209.82 c 0.97,-2.58 3.12,-7.68 5.32,-7.2 -3.36,0.3 1.55,3.51 -1.64,5.08 -0.12,3.73 4.58,2.02 1.93,-0.83 -2.24,-2.86 4.14,-3.18 4.38,-3.78 -2.75,0.43 -0.26,-3.72 0.01,-0.24 1.91,0.5 4.17,1.08 4.61,3.31 3.18,-1.09 6.18,0.35 8.7,1.24 2.75,-1.2 3.12,-1.35 2.53,-1.66 1.61,-0.19 8.79,-0.45 3.86,0.26 -2.39,-0.24 1.52,1.3 -0.96,1.24 1.21,-0.35 1.63,0.38 2.13,0.76 -0.13,0.15 0.68,0.47 0.21,-0.33 0.87,0.79 2.07,-0.05 3.73,1.72 -0.17,0.75 -2.12,2.37 -1.78,2.29 0.79,0.3 6.07,-1.08 3.6,1.46 -3.33,1.26 1.48,3.28 -2.31,3.6 -1.81,1.84 0.24,3.32 0.99,5.23 -1.62,1.67 -4.02,1.65 -5.92,2.58 0.24,2.11 -2.51,-0.76 -3.65,-0.22 -3.92,-1.92 0.79,2.1 0.24,4.27 3.91,0.06 -0.98,2.09 -1.1,2.94 -1.76,0.26 -2.96,3.24 -3.63,1.35 -3.83,2.2 -3.61,-4.88 -5.84,-5.46 2.84,-1.65 -2,-5.15 0.54,-7.64 1.68,-4.03 -5.54,0.73 -6.18,-2.84 -1.67,-2.55 -5.64,0.37 -7.24,-2.33 0.7,-1.68 -0.57,-5.67 -2.53,-4.79 z",PT:"m 445.98,125.1 c 1.66,-1.86 2.37,-5.18 1.31,-6.81 0.24,-1.34 2.63,-1.51 2.05,-0.28 2.16,-1.06 7.75,0.04 3.38,2.22 0.21,1.55 0.62,4.19 -1.74,3.81 2.54,1.22 -0.16,3.54 1.44,4.41 -1.67,1.35 -1.15,4.11 -4.28,2.74 -2.59,1.02 1.31,-5.72 -1.84,-3.62 0.53,-1.15 1.43,-1.51 -0.56,-0.75 -0.57,-0.46 0.26,-1.17 0.24,-1.72 z",CO:"m 252.95,231.17 c -0.47,-0.82 1.85,-0.35 0.81,-1.95 2.5,-0.46 3.03,-2.26 4.08,-4.06 -0.63,-0.77 -0.28,-1.72 -0.65,-4.65 1.16,-2.12 -1.46,-4.1 -0.91,-6.37 2.5,1.42 -0.06,-4.87 1.91,-1.82 1.43,2.74 -0.39,-2.04 2.18,-2 2.56,-1.09 1.18,-3.33 2.83,-4.85 0.82,-1.6 2.69,-1.01 2.08,-0.06 1.3,-2.42 5.88,-1.87 7,-4.17 0.13,-0.9 4.12,0.24 1.1,1.26 -2.95,0.87 -4.41,5.94 -4.39,7.25 2.84,-0.06 0.85,5.72 3.84,6.14 3.15,-0.97 5.11,0.97 7.27,2.49 2.47,-0.41 6.43,-0.86 3.69,2.39 -0.77,2.77 2.44,5.6 0.14,6.98 2.41,-0.07 2.68,7.45 1.64,2.71 -0.67,-1.62 -2.32,0.65 -2.92,-0.01 -1.16,1.25 -5.74,-1.2 -4.46,2.22 2.38,-0.47 2.33,1.82 0.01,1.18 -1.81,2.49 3.12,5.09 0.67,8.27 -0.55,2.31 0.13,6.66 -2.61,4.32 -1.04,-0.94 3.03,-3.69 -0.15,-3.93 -2,-1.89 -6.61,2.13 -7.17,-1.54 -1.85,-1.51 -3.21,-3.79 -5.46,-5.19 -2,-0.1 -3.19,-1.6 -5.33,-1.01 -1.52,-1.26 -3.67,-1.92 -5.19,-3.56 z",MR:"m 424.61,177.22 c -0.18,-2.88 3.65,-1.21 5.47,-1.61 1.9,-0.07 3.87,0.15 5.71,-0.11 -0.74,-2.93 -0.09,-5.47 2.88,-6.22 0.32,-2.63 -1.73,-8.14 2.76,-6.78 2.11,-0.06 4.26,0.13 6.34,-0.11 0.26,-2.03 -0.54,-4.73 2.1,-2.35 2.48,1.6 7.23,3.93 8.25,5.27 -1.49,0 -2.98,0 -4.47,0 1.24,7.82 1.65,15.77 2.77,23.59 2.5,5.12 -5.53,2.42 -8.24,3.23 -2.38,-0.56 -5.24,0.51 -6.98,0.52 -2.36,-3.17 -1.71,3.69 -3.97,0.76 -2.4,-2.45 -4.97,-5.97 -9.03,-4.15 -1.92,-0.86 -2.62,2.9 -1.79,-0.59 2.27,-2.58 -0.3,-7.76 0.03,-8.08 1.44,-2.05 -1.06,-4.04 -1.7,-3.88 z",AO:"m 505.24,249.73 c 1.06,-2.15 4.38,-1.73 1.43,-0.01 -0.06,3.73 -1.21,1.68 -1.43,0.01 z m -0.75,34.43 c -0.43,-3.48 1.32,-6.18 1.89,-9.52 0.53,-3.17 4.76,-4.24 3.86,-7.99 -0.67,-2.52 -3.67,-6 -1.22,-6.6 0.42,-2.56 -3.79,-5.84 -2.23,-7.43 3.48,-0.43 8.63,-1.53 11.43,0.41 0.16,3.55 2.62,6.51 6.32,5.06 2.05,-0.06 0.7,-3.78 3.81,-3.01 0.94,0.03 0.46,1.77 2.4,1.03 3.94,-0.19 -0.04,5.91 2.74,7.85 0.65,1.46 -1.06,4.29 1.57,2.75 3.2,-0.66 3.98,-0.14 3.38,3.14 1.5,5.03 -7.79,-0.5 -5.61,5.38 -0.48,3.98 0.1,8.09 4.15,10 -3.67,0.81 -7.28,1.24 -10.98,0.58 -3.36,-1.38 -6.89,-1.35 -10.78,-1.21 -4.13,0.37 -6.81,-1.83 -10.75,-0.44 z",DE:"m 510.16,83.58 c 0.63,-0.95 1.7,1.39 0.28,0.42 -0.06,-0.51 1.11,-0.31 -0.28,-0.42 z m -1.91,-0.81 c 0.29,-1.17 1.74,-0.71 1.27,0.04 -0.42,0 -0.91,0.39 -1.27,-0.04 z m -13.09,-1.84 c -0.92,1.13 0.26,0.4 0,0 z m 0.4,0.28 c -0.93,0.06 0.94,0.06 0,0 z m 1.14,0 c -0.85,-0.17 0.1,1.88 -0.49,1.71 -0.35,0.34 2.73,2.01 2.47,1.98 -1.79,-2.3 -3.58,0.65 -3.51,0.01 -0.07,0.76 -4.12,-1.38 -3.41,0.7 1.74,0.46 -2.97,2.47 -0.29,2.83 -0.71,2.07 -4.39,0.32 -2.35,2.67 -1.72,1.83 1.3,2.48 0.02,4.05 0.58,1.79 2.43,2.59 4.8,2.63 1.09,-0.33 -3.22,5.13 0.68,4.01 1.11,-1.14 4.44,0.48 6.08,0.54 1.81,-0.1 5.13,-1.41 7.28,-0.3 -1.19,-1.95 0.91,-2.39 2.28,-3.45 -1.92,-1.32 -6.51,-4.24 -3.32,-4.71 2.63,-0.73 4.66,-1.76 6.27,-1.77 -0.5,-1.5 -0.12,-3.85 -1.78,-4.92 1.1,-1.9 -1.09,-3.73 -2.81,-4.21 -0.88,-0.97 -3.87,0.28 -1.14,-0.43 -2.35,0.63 -3.33,1.16 -5.29,1.44 -0.74,-0.78 1.55,-1.66 -0.99,-1.3 -2.62,0.04 -0.5,-1.54 -4.5,-1.47 z",SD:"m 570.73,170.57 c -2.63,0.94 -4.06,5.29 -7.24,3.16 -3.38,0.23 -4.32,-0.56 -7.36,0.02 -4.97,0 -9.94,0 -14.9,0 -0.25,2.4 1.29,6.69 -2.45,5.63 -1.09,3.03 0.86,9.72 -1.01,11.93 -3.25,-0.03 -3.01,4.18 -4.46,5.78 1.11,1.37 -2.43,3.26 0.78,2.88 -0.09,2.13 1.2,3.44 1.72,5.6 3.53,1.87 -0.67,6.52 3.46,5.66 1.28,-1.28 0.81,-3.4 2.08,-4.86 2.28,-3.07 2.9,3.17 5.53,1.67 2.07,-0.75 4.03,2.41 5.57,-0.39 1.7,-0.24 2.31,-3.24 4.22,-0.43 2.37,0.91 4.6,-3.2 4.67,-5.07 -0.08,-1.6 -1.33,-1.84 0.95,-1.89 0.3,-1.87 2.28,-0.18 1.05,1.27 -0.14,2.63 2.85,4.67 2.53,6.51 1.7,-0.03 1.07,-3.87 2.87,-2.76 -0.47,-3.3 3.08,-4.68 3.64,-6.92 1.05,-3.04 0.78,-6.4 1.91,-9.4 0.5,-2.13 7.1,-3.34 2.97,-5.26 -3.39,-1.34 -1.59,-6.55 -2.49,-8.22 -0.46,-2.5 -2.62,-3.15 -4.02,-4.91 z m -31.67,40.88 c -0.81,0.98 0.37,0.36 0,0 z",TH:"m 741.93,183.35 c 2.23,0.61 0.18,-4.66 3.68,-3.29 1.64,-0.78 3.08,-2.49 4.83,-1.43 -0.46,2.03 0.96,2 2.18,2.36 0.78,1.75 -2.19,7.33 1.32,4.33 0.93,-1.95 3.82,1.42 4.39,-1.39 3.6,-0.35 4.08,3.63 4.74,5.91 2.02,0.95 2.14,4 0.43,5.64 -2.29,-0.61 -6.2,-1.05 -7.24,1.99 -1.45,0.48 2.75,7.69 0.09,3.84 -0.68,0.12 -2.15,-2.05 -4.64,-1.33 1.64,-3.49 -3.45,-2.96 -2.56,0.21 0.04,3.19 -3.25,5.95 -2.05,9.21 2.48,-0.33 3.27,4.51 3.3,5.61 -1.87,-3.06 0.99,2.69 3.08,1.41 2.88,1.99 0.28,3.65 -1.46,2.95 1.04,-1.79 -2.61,-2.53 -2.74,-2.3 -1.12,-1.85 -1.8,-2.07 -3.03,-3.96 -0.79,-1.73 -2.47,0.52 -1.87,-2.29 -0.38,-4.12 5.04,-6.66 3.14,-10.45 -0.44,-2.75 -1.62,-4.86 -3.33,-7.09 1.02,-0.93 1.38,-2.68 1.89,-3.94 -0.71,0.38 -1.61,-2.78 -3.04,-3.56 0.11,-1.31 -0.76,-1.44 -1.12,-2.41 z",AU:"m 791.49,330.29 c 2.22,-0.61 0.81,-3.23 1.35,-3.26 0.11,-3.48 -2.66,-6.34 -2.72,-9.87 -1.04,-2.38 -3.46,-6.91 -3.96,-7.92 -0.32,-0.75 1.81,2.65 1.06,0.08 -1.89,-1.68 0.38,-2.2 0.04,-0.08 0.58,-1.11 1.32,2.13 1.48,-0.5 -1.84,-2.55 -3.18,-5.44 -1.22,-8.35 -1.21,-1.64 1.49,-5.18 0.83,-1.49 2.25,-2.24 5.68,-5.3 8.69,-5.12 3.16,-0.68 5.84,-2.23 9.27,-2.56 2.63,-0.92 3.32,-3.52 4.69,-5.04 -1.41,-1.75 2.24,-5.39 2.3,-3.34 1.25,2.77 1.12,1.55 1.8,0.85 1.47,-0.05 -1.6,-1.49 -0.25,-2.15 -0.62,-0.78 2.79,0.71 2.77,0.08 -1.8,-0.46 1.11,-1.31 -0.78,-1.83 0.35,-2.27 2.85,0.37 1.53,-1.36 -0.71,-0.63 2.12,0.16 0.7,-1.33 0.83,-0.19 1.58,-2.32 1.2,-0.37 1.82,0.48 0.79,-3.25 1.65,-1.29 0.67,-0.2 1.52,-0.17 2.1,-1.11 2.29,0.21 3.67,4.58 3,4.35 0.52,0.45 0.86,-2.72 2.97,-0.78 0.29,0.69 0.33,-1.37 1.29,0.37 -0.4,-0.52 1.58,-1.1 -0.06,-1.51 0.74,0.21 -1.69,-1.36 0.43,-1.8 -0.06,-1.85 2.25,-1.31 1.33,-2.93 1.48,-0.55 0.59,-2.1 2.15,-0.89 -0.94,-2.38 3.04,-0.45 4.05,-1.18 1.86,-0.94 -0.62,-2.21 -1.7,-2.65 1.28,0.17 0.77,-0.92 2.45,0.71 0.63,-0.77 2.6,1.36 3.21,0.84 1.4,0.66 3.93,1.65 4.79,0.4 1.96,-1.3 -0.68,1.49 1.03,0.73 1.07,1.52 1.41,-2.07 2.08,-0.07 1.34,0.47 -1.12,2.28 -0.55,2.66 -1.11,-0.21 -2.16,0.86 -1.46,1.97 -1.19,1.83 -2.53,3.38 0.37,4.36 2.4,1.97 5.27,3.02 8.25,4.58 2.66,4.45 7.1,-0.33 6.64,-4.26 0.64,-2.11 -0.6,-7.36 1.17,-7.41 -1.54,-1.68 0.84,-2.32 0.7,-5.3 1.91,-2.41 1.62,2.91 2.73,3.04 1.28,1.63 0.3,6.44 2.73,6.53 1.46,-0.82 3.69,1.89 3.32,3.67 0.61,3.17 2.37,4.32 2.29,7.52 0.2,1.62 1.99,3.14 3.41,2.71 0.65,1.97 2.53,1.64 3.8,2.69 0.47,0.26 -0.89,1.6 0.83,1.83 1.17,1.86 1.88,5.94 2.95,3.73 1.84,0.39 1.6,1.25 2.07,3.57 1.45,-0.32 0.24,1.18 2.14,1.3 1.76,1.71 3.34,4.29 4.26,5.55 -1.36,3.4 2.44,5.95 0.59,9.3 -1.26,3.24 -0.54,7.74 -3.5,9.71 -1.67,0.98 -2.22,2.93 -3.4,4.84 0.03,2.08 -1.93,2.42 -2.2,5.28 0.47,3.49 -1.89,4.72 -5.46,4.37 -1.69,0.74 -4.28,2.3 -5.05,2.95 1.38,0.61 -2.78,-0.25 -2.36,-1.91 -1.21,0.89 -2.66,0.73 -0.99,-0.26 -1.04,-1.73 -1.87,0.42 -1.43,0.41 -2.75,3.08 -5.83,-0.71 -8.88,0.26 -2.22,-1.14 -5.08,-2.7 -4.63,-5.8 -1.21,-1.52 -3.23,-2.95 -0.52,-0.82 1.39,1.17 -2.72,-2.42 -0.62,-1.09 -0.06,-2.24 -2.63,1.53 -3.09,-0.47 2.22,-1.63 -1.2,-5.85 -1.29,-1.34 -1.47,1.42 -3.85,0.01 -0.79,-0.32 -0.06,-2.15 2.52,-5.48 0.97,-6.19 -0.45,2.95 -4.21,3.34 -5.39,5.77 1.68,1.61 -3.7,-0.88 -1.29,-0.71 -0.16,-2.72 -2.99,-3.32 -3.23,-4.96 0.26,-0.87 -2.59,-1.94 -4.61,-2.05 -2.96,-1.22 -6.47,-1.72 -9.95,-0.76 -3.74,2.19 -8.2,0.83 -11.77,3.34 -2.38,0.79 -3.1,4.24 -6.11,2.78 -2.76,0.09 -7.41,-0.79 -9.12,1.7 -2.95,0.97 -5.53,2.7 -8.77,0.95 -0.79,-0.98 -5.26,-2.21 -2.32,-3.31 z m 90.47,17.83 c 1.93,2.47 0.52,-2.1 0,0 z m -11.14,0 c 1.48,1.07 0.1,-2.86 0,0 z m 9.64,7.83 c 0.39,1.2 1.83,-0.28 1.11,0.95 1.34,0.97 0.48,-4.13 1.87,-2.77 0.18,-2.25 -0.41,-4.84 -2.96,-3.2 -1.65,1.37 -5.44,-1.05 -7.36,-0.47 -0.42,2.13 3.78,5.1 1.59,4.31 -0.12,2.14 3.71,2.53 2.25,3.28 1.32,0.04 2.92,0.54 2.84,-1.03 0.68,0.92 1.13,-0.65 0.67,-1.08 z m -27.37,-18.87 c 4.04,-0.72 -1.41,-1.98 -2.43,-0.45 0.61,0.92 1.68,-0.14 2.43,0.45 z m -17.24,-69.43 c -1.28,-0.58 -3.73,-0.24 -0.99,1.44 1.71,0.6 2.21,-2.97 0.99,-1.44 z m -2.05,1.26 c 0.84,-1.66 -2.21,-0.8 -0.55,-0.1 z",PG:"m 878.44,241.91 c 0.38,-1.94 3.55,0.33 0.52,-0.28 l -0.27,0.12 z m 23.31,11.21 c 0.44,2.12 4.23,2 1.66,-0.11 -1.33,-1.54 -3.89,-3.41 -1.66,0.11 z m -6.43,-6.65 c -1.02,-1.69 -7.66,-4.86 -3.27,-2.06 2.63,0.3 3.1,3.93 4.06,4.53 0.86,-0.9 0.27,-2.19 -0.79,-2.47 z m -5.01,17.27 c 1.29,0.67 1.17,-0.09 -0.41,-0.7 l 0.25,0.34 z m -5.57,-11.37 c 2.18,1.61 6.09,0.82 7.63,-1.15 2.41,0.24 0.05,-1.92 2.11,-2.38 0.29,-2.22 -3.39,-1.69 -2.14,0.63 -1.15,0.47 -4.02,3.23 -4.25,0.64 0.41,-0.42 -1.53,2.45 -3.13,1 -2.21,-0.35 -2.21,0.62 -0.21,1.26 z m -21.82,8.94 c 0.3,-3.07 -0.44,-6.05 0.01,-8.89 0.2,-2.99 -0.51,-7.15 0.5,-9.44 2.67,1.59 5.78,2.02 8.42,3.39 2.57,0.46 4.08,3.15 5.01,4.82 1.45,0.26 7.22,2.26 4.05,3.42 -3.79,-0.23 1.5,3.53 1.92,4.33 0.26,1.95 2.05,2.12 3.05,2.48 -1.12,1.72 3.73,0.92 1.16,1.82 0.85,1.51 4.63,0.93 1.81,1.61 2.04,1.17 -1.89,0.41 -1.22,0.26 -2.15,-1.44 -4.95,-0.07 -6.75,-1.87 -2.29,-1.7 -3.02,-5.59 -6.68,-5.64 -1.76,-1.77 -1.54,0.89 -3.91,-1.05 1.21,1.3 0.71,2.14 -0.81,1.29 2.25,2.18 -6.1,0.35 -0.96,1.49 2.94,2.84 -3.46,2.3 -5.06,2.15 l -0.26,0.03 z",IQ:"m 579.52,141.76 c 3.35,-1.23 8.01,-3.06 6.94,-7.36 0.04,-1.98 3.23,-3.11 4.84,-3.85 2.48,0.07 3.33,0.76 5,0.95 -0.02,2.44 3.84,3.56 3.45,3.77 0.58,1.72 -1.45,2.49 -1.72,3.64 -0.51,1.59 1.97,2.82 2.09,4.02 2.7,0.67 5.14,2.81 4.32,5.55 0.65,0.26 3.36,4.41 0.38,2.48 -3.04,-0.74 -3.3,4.74 -7.03,2.77 -3.58,-0.26 -5.88,-3.65 -8.86,-5.36 -2.74,-1.21 -5.2,-3.27 -8.37,-3.12 0.26,-0.46 -0.96,-2.2 -1.04,-3.49 z",HR:"m 520.86,114.99 c 1.93,-0.01 2.97,2.11 0.72,0.38 -1.74,-0.36 -3.2,-1.21 -0.72,-0.38 z m -11.29,-7.28 c 2.63,-0.58 5.72,0.79 5.65,-1.9 2.54,-2.52 4.79,1.54 8.03,1.02 1.28,-0.8 1.93,2.07 2.02,1.81 -1.06,1.36 -4.28,-0.31 -6.63,-0.24 -1.29,0.48 -4.75,-0.22 -2.16,1.72 0.08,2.02 4.02,3.27 4.12,4.66 -1.62,-1.77 -6.82,-1.63 -6.22,-3.67 0.49,0.88 -2.49,-4.97 -3.21,-2.02 -0.96,1.61 -1.74,-0.94 -1.6,-1.37 z",GL:"m 350.08,66.85 c -1.04,-0.38 1,-0.77 2.1,0 -1.44,-0.58 -0.63,0.6 -2.1,0 z m -72.85,-47.31 c 1.2,0.31 8.15,0.27 3.75,0.53 -1.87,-0.15 -3.55,0.83 -0.86,1.06 1.35,0.34 5.81,1 6.17,0.53 -3.96,-0.92 2.94,-0.21 2.81,-0.39 1.66,0.42 4.52,-0.36 6.93,-0.46 3.5,0.33 7.71,0.64 10.68,1.36 0.53,0.15 4.8,0.51 2.25,1.44 1.17,0.27 4.31,1.26 4.77,1.66 -0.04,0.42 3.72,0.85 0.63,0.9 2.78,0.13 -0.9,0.33 1.2,0.41 -1.34,0.2 -4.2,0.74 -1.17,0.47 1.83,-0.47 1.52,0.57 3,1.12 -3.5,-0.1 3.32,0.98 0.44,1.23 0.2,0.59 -1.07,0.55 1.18,0.62 0.86,0.88 1.41,0.65 0.08,1.39 4.92,0.42 -4.31,-0.02 -0.48,0.47 3.36,-0.43 -3.71,1.92 0.82,1.18 3.77,-0.89 -6.22,0.85 -0.86,1.72 0.07,0.06 4.32,0.05 3.55,-0.77 1.03,-0.13 1.48,-0.84 0.16,-1.91 0.56,-0.73 1.05,2.76 3.04,0.96 -4.13,1.84 6.46,0.3 1.37,1.29 -5.64,0.62 6.11,-0.2 0.75,0.31 -3.73,1.41 4.05,-0.34 -0.45,0.78 2.56,0.1 4.76,0.57 0.64,0.35 2.44,0.47 4.16,0.73 1.98,0.92 0.37,0.07 2.86,0.24 0.86,0.19 2.05,0.68 -3,-0.32 -0.02,0.48 -0.73,0.11 2.39,-0.09 0.34,0.39 -2.79,-0.54 -9.21,-2.3 -9.88,-0.72 2.87,1.02 8.68,1.77 9.51,1.79 2.13,-0.68 2.67,0.57 0.72,0.84 2.12,-0 -2.01,0.41 0.87,0.35 0.74,-0.44 -3.56,1.46 -0.75,0.75 2.42,3.6e-4 -0.62,0.59 1.22,0.73 -1.18,-0.49 -3.54,0.02 -2.16,0.67 1.93,0.24 -3.47,0.94 -2.71,0.41 -1.98,0.07 0.72,0.04 -1.67,0.31 0.82,0.26 -3.9,0.81 -0.58,0.46 -1.15,0.35 5.51,0.55 3.23,-0.24 1.62,0.13 2.65,-0.58 0.87,0.49 2.03,0.31 -1.81,0.02 1.04,0.48 2.46,0.43 2.02,0.59 -0.03,0.17 -2.22,-0.06 -5.34,-0.54 -4.8,-0.28 -3.64,-0.76 -0.29,0.72 1.46,0.45 -1.66,0.11 -3.3,-0.49 -2.82,-0.03 -0.4,0.14 -3.02,1.14 -0.29,0.96 2.47,-0.86 5.66,-1.26 3.09,-0.46 1.96,0.56 1.48,-0.58 3.2,-0.4 -2.02,0.32 0.8,0.61 0.77,0.07 3.15,0.31 -4.4,0.6 -0.14,0.68 3.01,-0.57 -2.16,0.45 1.19,0.45 -0.94,-0.05 -7.09,-1.23 -7.74,-0.39 -2.6,0.41 -2.17,1.61 0.28,0.88 1.75,0.09 5.92,-0.72 4.59,0.2 1.54,0.42 3.58,0.01 0.77,0.39 -2.16,-1.22 -8.38,-0.3 -7.04,0.09 1.57,-0.21 -1.61,0.22 0.89,0.23 -3.99,0.14 3.61,0.25 -0.16,0.39 0.18,-0.45 5.35,0.02 1.5,0.07 -1.54,-0.11 1.33,0.22 -0.73,0.31 3.14,0.03 -3.4,0.19 0.51,0.59 3.74,-0.33 -5.46,0.38 -0.54,0.69 -3.31,1.06 2.91,-0.19 3.76,-1.33 1.7,-0.44 4.12,-1.25 4.01,-0.7 1.32,-0.07 -4.05,0.36 -0.24,0.42 -2.39,-0.51 -7.95,2.07 -7.65,2.35 -1.96,0.45 2.19,-0.23 -0.21,0.3 1.56,0.11 6.15,-0.7 2.21,0.16 -2.55,-0.08 -1.9,0.59 -0.59,0.43 -0.34,0.72 0.51,-0.06 0.44,0.86 1.23,-0.68 5.28,-1.43 4.94,-0.74 -1.83,-1.11 -6.89,1.86 -3.64,1.1 -1.78,2.76 4.25,-0.2 0.3,1.38 -1.43,1.79 1.29,1.85 1.96,0.1 0.04,0.88 2.46,-0.1 0.7,-1.29 0.52,0.38 2.46,1.52 2.4,1.49 0.24,0.24 2.44,1.69 -0.14,0.55 -1.82,-1.32 -1.75,0.17 -0.32,0.23 -2.2,-0.1 -1.68,0.91 -3.99,0.61 1.13,-0.08 -0.22,0.55 1.7,0.33 1.58,-0.67 2.43,-0.51 2.43,-0.26 -1.74,-0.19 -5.32,0.95 -2,0.68 -3.84,0.82 0.54,1 0.56,0.78 -2.51,0.25 1.34,0.26 -1.27,0.55 3.05,0.5 1.1,-0.32 0.53,0.6 0.51,0.39 3.05,-0.58 1.27,0.6 1.22,0.05 0.04,0.72 1.31,0.16 -1.85,1.31 1.85,-0.48 -0.52,0.92 0.11,1.44 2.65,0.9 2.58,1.43 -2.95,0.92 3.57,-0.74 -0.06,0.77 0.14,0.79 2.09,-1.25 0.62,0.38 1.12,-0.55 -0.32,0.77 1.3,0.29 -4.1,0.51 3.79,0.01 -0.63,0.5 -0.06,0.32 1.66,0.07 1.2,0.74 0.75,0.37 1.48,-1.01 0.94,0.2 2.49,-0.05 -2.28,0.69 0.27,0.36 2.28,-0.26 -2.45,0.8 0.68,0.53 2.38,-0.21 -1.41,-0.27 1.14,-0.36 2.09,0.46 3.09,-0.42 4.44,-1.05 -0.6,1.36 -0.31,0.74 1.2,0.51 0.81,0 -3.01,0.96 -2,0.88 -0.67,0.72 3.94,-1.14 0.83,0.32 -0.23,0.43 -0.42,0.26 0.19,0.32 0.53,0.59 2.01,-1.02 0.68,0.26 0.53,0.01 1.7,-0.49 1.79,-0.24 -2.69,2.52 2.84,-1.05 -0.42,1.05 -0.16,1.61 3.24,-1.26 2.66,0.15 0.99,1.17 2.71,-0.08 0.94,0.01 2.82,0.35 0.35,-0.67 0.62,-0.92 -3.5,-0.59 0.22,-0.12 0.32,-0.21 2.15,-0.08 -2.6e-4,0.1 1.51,-0.39 -2.62,0.46 1.39,-0.27 -1.76,-0.42 2.04,0.25 1.61,-0.04 -0.16,-0.31 2.71,0.35 1.81,-0.58 -0.35,-0.54 2.71,0.37 1.38,-0.32 1.98,-0.15 1.57,-0.24 -2.6,-0.56 0.41,-0.38 1.75,-0.81 -3.03,-0.74 0.6,-0.68 1.57,-0.69 -2.52,-0.6 0.29,-0.59 1.17,-0.78 -0.56,-0.25 0.15,-1.5 -2.26,-0.93 -1.46,-0.34 0.46,-0.25 -0.23,-0.41 -4.35,-1.23 -1.13,-0.86 -0.38,-0.79 1.85,-0.54 0.49,-3.6e-4 1.37,-0.35 2.79,-0.62 0.66,-1.38 0.53,0.62 2.37,0.47 0.8,-0.03 2.98,1.02 -1.49,-1.48 1.15,-0.22 2.42,0.74 -1.98,-1.28 0.89,-0.09 -2.35,-0.7 3.25,-0.24 -0.72,-1.26 -1.15,-0.26 3.49,0.66 2.12,-0.6 -0.26,-0.82 -4.04,-0.72 -0.74,-1.02 3.71,0.7 -2.99,-2.72 1.28,-2.03 1.85,0.37 1.92,-1.01 1.14,-1.37 1.84,-0.42 3.25,-0.05 4.2,-0.36 2.05,0.4 -0.95,-1.43 1.26,-0.75 1.08,-0.91 -0.82,-1.61 1.16,-1.17 3.26,-0.42 -2.51,1.33 0.84,1.41 1.25,-0.64 2.63,0.03 4.93,-0.79 -1.93,-1.74 1.8,0.28 1.33,-0.61 2.18,-0.69 2.47,-0.97 3.61,-2.01 1.42,-0.93 1.89,-2.45 4.67,-2.36 0.28,-1.12 -0.69,-0.69 -0.63,-1.24 -1.23,-1.48 2.23,0.71 2.62,0.73 1.9,0.22 2.23,-0.23 2.32,-0.37 2.16,0.94 0.29,-1.07 2.9,-0.12 2.72,-0.54 5.43,-0.92 8.68,-1.16 2.84,-0.84 2.79,-1.58 4.89,-1.64 -1.03,-0.38 1.71,-0.69 1.87,-0.75 1.81,-0.33 -0.57,-0.64 1.71,-0.73 1.91,0.12 -0.57,-0.25 1.88,-0.31 2.99,-1.05 -4.32,-0.11 -5.76,-1.1 -2.97,-0.84 -6.86,1.37 -10.57,0.58 1.49,0.1 5.77,-0.51 5.57,-1.1 -1.94,-0.07 -6.85,0.28 -6.8,0.04 1.81,0.5 2.94,-1.78 2.21,-1.44 2.37,0.44 -0.22,-1.23 2.17,0.04 2.18,0.75 8.25,-1.6 2.87,-1.53 -2.29,-0.11 -3.09,-0.46 -5.68,-0.24 1.53,0.18 4.4,-0.39 1.22,-0.92 -0.07,0.32 -3.32,-1.14 -0.41,-0.33 3.63,2.13 9.05,0.12 11.64,3.95 1.84,1.75 4.21,-0.84 4.06,0.14 2.19,1.31 2.66,-0.71 1.88,-0.67 1.32,-0.91 -2.71,-0.71 0.22,-1.01 -0.69,-0.56 0.6,-1.07 -1.71,-0.59 -1.71,0.08 2.65,-1.75 -0.43,-0.81 0.18,-0.31 -2.77,0.14 -0.58,-0.59 -0.57,-0.82 -7.23,-1.51 -7.57,-1.55 -3.69,-0.03 4.51,0.2 0.78,-1.14 -2.45,0.05 -4.43,0.71 -4.44,-0.01 -5.34,-0.35 6.43,0.45 3.84,-0.79 -2.4,-0.56 -9.52,0.6 -3.87,-0.21 1.44,-0.47 -4.17,-1.17 -0.64,-0.56 1.58,0.85 6.31,-0.26 5.6,-0.61 -2.53,-0.68 -1.86,-1.31 0.15,-0.07 2.26,-0.72 4.76,-0.11 7.26,-0.03 -1.4,0.19 -7.18,-0.69 -3.04,0.55 2.61,0.32 7.08,0.96 8.43,-1.28 -2.06,-0.86 -4.62,0.06 -4.37,0.11 -0.93,-0.88 -2.16,-0.27 -0.58,-0.98 -2.68,-0.48 2.73,-0.08 0.09,-1.04 2.95,-0.04 6.03,1.67 8.79,0.26 -1.23,-0.81 -5.75,-0.36 -5.19,-0.49 2.25,-1.81 -4.72,-0.52 -3.67,-1.25 1.91,0.75 6.46,-0.28 2.18,-0.79 -1.54,-0.13 -3.22,-0.44 -0.55,-0.2 -4.3,-1.32 3.43,0.42 4.74,0.88 3.79,-1.39 -2.77,-3.43 -4.94,-2.39 -2.01,0.21 8.54,-0.13 3.5,-0.84 -2.11,-0.34 -2.46,-0.06 -0.28,0.36 -2.01,-0.29 -4.7,-0.75 -5.12,-0.95 2.34,0.01 0.16,0.12 1.47,-0.13 -0.75,-0.08 -3.92,-0.39 -1.14,-0.95 1.86,1.32 4.87,-0.52 1.21,-0.1 1.84,0.08 2.89,-0.01 2.47,-0.29 2,-0.79 7.37,2.12 7.18,-0.63 -2.26,-0.27 -4.39,-0.53 -6.74,-0.6 3.04,-0.01 0.35,-0.22 -1.06,-0.35 1.75,0.29 2.76,-0.31 0.28,-0.35 1.9,-0.2 7.71,0.39 2.93,-0.57 -2.53,-1.39 -5.38,1.85 -5.7,0.15 2.25,-0.98 -0.23,-0.77 1.63,-1.07 -0.15,-0.9 1.72,-1.28 -0.04,-1.17 1.23,-0.87 4.18,-0.78 6.45,-1.87 -4.29,0.69 0.27,-2.19 2.55,-1.44 4.73,-1.19 -2.21,-0.94 -4,-0.69 -1.73,0.37 -1.09,1.09 -3.02,0.61 1.88,-2.36 6.92,-0.48 10.29,-1.24 2.63,-0.27 2.82,-1.16 0.12,-0.99 -3.84,0.35 -7.67,-0.47 -11.49,0.12 1.35,-0.64 6.81,0.21 9.63,-0.74 2.17,0.36 7.34,0.16 7.65,-0.63 0.66,-0.8 5.84,-0.44 7.96,-1.82 -5.09,-0.65 -10.21,-1.31 -15.34,-0.63 0.5,1.64 -5.67,0.8 -7.6,0.93 1.55,-1.01 -3.99,0.56 -5.15,0.88 -2.91,0.58 -9.45,3.25 -4.08,0.7 2.06,-0.33 6.93,-3.18 2,-3.26 -3.57,0.24 -6.75,1.75 -10.45,1.85 -1.74,0.31 -2.71,0.34 -2.34,0.02 -0.92,-0.89 8.17,-0.04 4.82,-1.7 -6.82,-0.18 -13.65,0.3 -20.43,1.09 1.29,-1.99 7.63,-0.03 7.69,-1.44 -1.17,-0.48 -5.4,0.08 -1.92,-0.16 5.02,0.28 10.05,0.12 15.07,0.12 3.88,-0.52 7.9,0.06 11.65,-1.2 -3.81,-1.07 -6.85,-0.48 -9.93,-0.81 -1.28,0.3 -3.97,0.5 -1.1,0.11 3.16,-0.86 -2.93,-1.11 -4.29,-0.71 -4.73,0.17 -9.47,-0.2 -14.19,0.31 -2.97,0.04 -8.63,0.48 -9.42,0.46 -0.02,-0.8 7.39,-0.26 7.08,-0.72 -3.68,-0.42 3.37,0.34 4.75,-0.09 4.97,-0.37 9.98,0.22 14.94,-0.42 -2.84,-1.02 -6.66,-0.36 -8.36,-0.47 0.57,-0.19 -5.13,-0.42 -7.56,-0.34 -2.96,-0.3 -6.86,0.05 -7.72,0.04 -1.9,0.07 -6.83,-0.34 -6.75,0.27 0.56,0.48 -3.85,-0.53 -5.26,0.09 -2.91,0.78 7.57,0.72 2.53,0.92 -1.77,-0.1 -4.34,0.14 -1.2,0.16 5.43,0.03 -6.63,-0.4 -1.37,0.55 -2.92,-0.43 -7.67,-0.49 -9.54,-1.07 -2.13,-0.51 -4.02,-0.02 -3.22,0.06 -3.05,-0.15 -1.17,0.15 0.76,0.27 -1.87,-0.12 -7.22,-0.27 -6.87,-0 1.18,0.23 5.1,0.61 1.77,0.37 -2.62,-0.36 -6.01,-0.3 -4.16,0.1 -4.03,-0.01 4.56,0.54 3.64,0.07 4.58,0.27 9.38,-0.28 13.81,0.87 1.25,1.43 -6.53,-2.03 -4.74,0.28 -2.72,-1.55 -9.86,-0.82 -10.47,-0.51 3.59,0.54 4.96,1.12 8.47,1.27 -2.19,0.13 -6.47,-0.76 -6.46,0.45 -1,0.4 2.84,0.84 -0.35,0.81 -5.07,-0.68 -10.07,-1.94 -15.2,-2.2 -4.51,-0.43 0.15,1.93 2.23,1.74 -1.98,0.59 -6.22,-0.42 -2.07,0.51 2.77,0.96 -4.34,-0.76 -6.01,-0.63 -1.58,-0.79 -4.66,3.04 -3.5,-0.27 -4.27,-1.74 -7.34,0.23 -12.12,-0.21 -1.77,0.05 -5.97,0.4 -1.97,0.77 1.62,0.83 8.52,1.78 3.67,1.17 -3.45,-0.49 -6.83,-1.99 -10.36,-1.1 -1.06,1.27 2.02,0.82 -0.23,1.66 1.43,1.67 -5.11,-0.83 -5.7,0.73 3.34,1.97 -2.2,-1.42 -3.72,0.26 -2.24,1.25 -6.51,0.43 -7.63,2.45 2.8,0.82 8.22,0.08 9.32,0.11 -2.38,-0.55 -2.49,0.99 -2.92,2.13 -3.75,1.08 -7.7,0.47 -11.5,1.22 0.33,0.33 -4.54,0.64 -6.12,0.92 -3.19,-0.23 -6.62,1.43 -2.07,1.86 2.43,0.3 2.68,0.56 5.74,0.22 -4.72,0.85 3.75,0.18 -0.18,0.7 -0.47,0.48 3.6,0.41 4.41,-0.03 1.72,1.03 6.5,-1.24 6.2,0.47 -2.28,-0.14 1.31,0.89 -1.32,0.41 -2.01,-0.73 -9.17,0.17 -3.66,0.3 1.66,-0.01 7.67,0.03 2.86,0.1 -3.86,0.07 -7.78,-0.5 -11.6,0.14 -0.82,0.87 2.96,0.21 0.63,0.57 0.94,1.34 5.75,-1.79 2.71,0.38 z m 132.2,12.52 c -1.59,-0.6 3.65,0.15 -0.05,-0.84 -1.37,-1.04 -7.96,-0.86 -3.67,0.54 0.65,0.18 6.83,1.56 3.72,0.3 z m -8.88,3.59 c -1.57,0.39 -6.63,0.59 -6.22,1.84 1.86,-0.25 9.2,0.01 6.19,-1.58 z m 19.57,-14.37 c -0.09,-3.96 -2.53,0.26 0,0 z m 1.99,2.22 c -1.38,-0.31 -4.15,1.28 -1.17,1.05 2.3,0.21 4.03,-0.09 0.81,-0.51 l 0.75,-0.25 z m -5.73,1.9 c 1.97,-1.23 -4.11,-0.66 -0.42,0.09 z m -2.69,0.78 c -1.92,-0.24 -3.67,0.98 -0.63,0.98 2.3,0.11 4.16,-0.43 0.63,-0.98 z m -2.67,4.26 c -1.66,-0.74 -7.55,-0.67 -6.21,-0.02 2.38,-0.41 6.14,1.58 6.21,0.02 z m 7.04,-16.54 c 0.81,-0.83 -2.47,0.39 0.48,0.07 z M 340.48,3.07 c 2.14,0.65 6.97,1.81 6.72,0.61 1.52,-0.55 -3.67,-1.42 -5.09,-1.18 -0.89,0.06 -4.14,0.09 -1.63,0.57 z M 330.4,38.95 c -2.3,0.49 0.91,1.63 0.43,0.12 z m -10.12,-0.22 c 2.72,0.25 -2.42,0.09 0.62,0.9 -3.41,-0.35 2.03,0.77 2.01,0.48 2.87,-0.13 -3.74,0.24 -0.05,0.7 1.7,0.29 7.63,-1.19 3.07,-1.89 -0.96,-0.54 -6.82,-2.06 -5.64,-0.19 z",NE:"m 472.53,195.05 c -0.75,-2.18 2.68,-1.53 4.08,-2.47 2.43,-0.56 5.27,0.81 6.33,-1.99 2.35,-2.68 -1.72,-9.21 3.14,-9.31 3.87,-0.56 5.85,-4.74 9.41,-6.21 3.12,-1.84 6.25,-3.67 9.42,-5.39 3.3,-0.57 6.46,3.04 8.67,1.73 -0.4,3.12 2.65,5.56 2.09,8.04 -1.29,3.47 0.67,8.09 -2.66,10.59 -1.98,1.89 -4.03,5.09 -3.75,6.99 -2.89,3.51 -7.48,-0.93 -10.4,2.34 -2.67,0.41 -5.33,-2.05 -7.76,-0.39 -1.36,-2.74 -6.89,-3.28 -7.81,-0.17 -1.64,1.53 -0.88,5.55 -3.1,2.2 -1.66,-0.94 -1.67,2.51 -2.44,-0.17 1.27,-1.19 -4.63,-1.04 -2.67,-2.69 0.23,-0.28 -2.57,-1.65 -2.55,-3.1 z",DK:"m 495.21,76.19 c -0.44,-2.15 3.9,-0.81 4.89,-2.71 2.49,-0.81 0.08,2.94 -1.9,1.63 -1.84,-0.67 -2.84,1.45 -2.99,1.08 z m 7.13,5.32 c 2.8,1.22 2.68,-0.62 0.13,-0.32 l 0.22,0.24 z m 0.3,-1.57 c 2.3,0.37 1.55,1.39 2.62,1.82 -0.59,-1.14 1.46,-1.07 0.72,-2.45 2.45,-2.14 -2.03,-1 -0.8,-0.55 -0.37,-0.06 -0.84,0.36 -1.21,-0.54 -0.05,0.27 -2.79,0.52 -1,1.57 l -0.08,0.11 z m -3.83,-0.45 c 0.48,2.01 4.2,1.24 2.49,-0.3 -0.23,0.82 -1.44,-0.23 -2.49,0.3 z m -4.36,-3.04 c 0.99,0.09 3.68,-0.25 2.92,-0.28 0.65,-2.73 4.5,0.4 2.46,-7.2e-4 0.21,0.8 1.86,-0.2 2.24,1.05 -1.31,0.45 -1.95,0.52 -2.47,1.41 0.41,0.8 -2.47,-0.01 -0.44,0.54 -1.25,0.79 -0.42,2.08 -0.54,2.11 -3.23,0.8 -2.36,-1.44 -3.91,-1.8 -0.76,-1.62 1.08,-0.89 -0.39,-1.78 l -0.02,-0.43 z",LV:"m 530.16,76.64 c 0.3,-2.33 4.87,-5.24 7.05,-1.36 3.35,0.59 1.1,-3.97 4.66,-2.94 1.99,1.68 6.31,0.33 7.07,2.64 -0.07,0.92 2.46,2.76 -0.51,3.69 -2.9,0.81 -5.39,-1.02 -8.03,-1.68 -3.25,0.69 -7.16,-0.89 -10.12,0.76 -0.3,-0.29 -0.22,-0.77 -0.13,-1.11 z",RO:"m 528.08,105.9 c 3.05,0.28 3.81,-3.14 5.89,-4.6 2.82,-2 6.18,0.64 9.05,-0.62 2.26,-0.8 4.32,-0.99 5.44,1.71 3.09,1.12 -0.25,6.94 3.88,5.75 3.2,-1.84 1.01,3.23 0.12,1.24 -0.87,-0.78 -0.25,1.39 -0.65,0.71 0.2,0.38 -0.75,3.91 -2.79,1.87 -3.58,-1.5 -6.51,1.86 -10.13,0.74 -2.41,-0.32 -4.26,-0.29 -4.36,-2.31 0.71,-0.32 -4.34,0.19 -3.1,-1.71 -2.07,-0.49 -1.75,-1.75 -3.35,-2.78 z",ZM:"m 532.92,281.12 c 0.13,-2.93 -0.39,-6.24 0.25,-8.95 3.23,0.4 6.48,0.56 5.29,-3.6 -0.37,-3.2 0.74,-1.97 1.41,-0.82 2.72,-1.79 2.32,2.13 5.56,1.48 1.49,-0.27 2.14,-1.59 2.94,0.77 2.67,-0.14 3.74,4.3 5.71,3.22 1.04,0.13 0.76,-5.12 -0.93,-2.58 -4.74,-1.4 -0.18,-6.33 -2.57,-8.87 1.47,-3.13 5.81,-3.76 8.61,-1.69 1.4,1.36 4.69,1.44 5.11,3.68 2.05,1.86 -1.93,4.4 0.56,6.69 -1.68,0.43 -3.04,4.51 -1.09,4.43 -0.87,2.05 -9.5,0.98 -7.63,4.68 -3.81,-0.6 -4.39,3.14 -7.48,4.27 -1.36,3.74 -5.32,2.41 -7.91,1.2 -3.67,0.48 -5.88,-0.51 -7.86,-3.9 z",IR:"m 594.01,124.87 c 2.29,-2.79 4.55,3.52 7.72,0.9 1.39,-2.34 5.8,-1.64 3.41,0.44 2.62,1.02 2.25,4.53 5.71,4.22 2.37,2.95 6.36,2.25 9.56,1.4 2.1,-0.3 -0.77,0.55 1.31,0.14 -0.81,-2.08 2.61,-1.48 3.62,-3.28 2.96,-0.75 5.14,-0.76 7.93,0.75 3.37,-0.31 4.9,3.68 8.23,3.11 0.61,2.16 -0.29,4.89 -0.85,6.38 -2.57,1.29 1.27,2.5 -0.69,3.99 0.86,2.3 0.22,4.85 3.38,4.77 -0.06,2.59 -4.49,3.82 -0.92,6.16 1.33,2 4.63,2.02 3.94,5.11 3.5,1.76 -3.36,1.63 -3.11,3.85 -0.01,3.99 -3.48,0.77 -5.33,1.49 -2.6,-0.63 -5.52,-0.09 -7.42,-1.84 0.25,-4.75 -4.26,-2.89 -6.48,-1.43 -3.79,0.01 -5.73,-3.2 -9.13,-3.81 -1.53,-1.87 -1.89,-3.1 -2.65,-4.49 -1.02,-2.53 -2.21,-1.34 -3.9,-2.11 -1.26,-0.45 0.73,-1 -0.75,-0.49 -0.64,3.09 -2.51,-1.04 -3.15,-1.73 0.77,-2.94 -2.24,-4.73 -4.63,-5.73 -0.52,-1.35 -2.98,-3.72 -1.24,-4.84 1.63,-0.71 0.92,-2.55 1.48,-2.98 -2.84,0.39 -3.19,-2.43 -4.25,-4.34 -1.58,-1.89 -0.35,-3.31 -1.81,-5.64 z m 32.76,35.03 c -3.1,1.47 -0.07,0.94 1.27,-0.07 -0.42,-0.38 -0.83,0.25 -1.27,0.07 z",MM:"m 727.56,176.02 c 0.68,-1.15 1.81,0.25 1.16,-2.16 1.11,-0.04 2.07,-0.87 1.49,-3.05 1.46,-0.74 -0.37,-4.26 2.76,-2.25 1.11,-2.81 2.28,-4.89 2.84,-7.7 1.65,-1.14 4.22,-2.64 5.53,-1.71 -1.55,-1.04 1.2,-3.42 1.57,-3.51 1.76,1 1.47,2.48 2.85,3.12 0.44,2.99 -0.31,4.89 -2.55,5.84 -0.63,1.41 -1.49,5.21 1.31,3.17 2.75,-1.17 0.15,3.21 3.26,3.06 -0.29,1.23 -1.55,3.36 1.37,2.79 -0.36,2.73 2.63,0.88 3.27,1.29 -1.48,1.93 -2.69,3.05 -4.53,3.93 -1.35,0.72 -2.76,1.49 -4.36,1.72 -0.34,1.57 -0.81,3.14 -1.38,3.4 1.11,1.68 3.34,5.13 4.09,5.85 -1.37,2.06 -3.07,4.4 0.17,6.29 0.35,2.99 3.27,6.53 0.02,9.02 -0.88,1.05 -1.51,3.79 -1.45,0.58 1.47,-2.49 0.58,-2.87 0.55,-4.18 0.45,-0.21 -0.96,-5.69 -1.22,-4.71 -0.39,1.23 -0.56,-3.14 -1.2,-3.34 -0.63,-2.51 0.31,-4.23 -1.54,-5.18 -0.73,-2.35 -0.82,-1.04 -1.53,0.65 -1.53,0.73 -1.12,-1.58 -1.29,0.67 -1.3,0.4 -2.69,2.31 -2.68,1.26 0.14,0.34 -0.59,0.2 -0.29,-0.59 -1.4,2.94 0.08,-2.26 -1.25,0.8 0.28,-1.45 -0.56,0.59 0.12,-1.92 -1.99,3.38 -1.02,-1.22 -0.38,-2.76 -0.76,-2.36 -1.51,-6.26 -2.23,-4.05 -2.15,-1.88 1.58,-0.27 0.06,-2.15 -0.67,-0.85 -2.15,-1.08 -1.94,-0.82 -0.43,0.34 0.3,-2.48 -0.88,-0.57 0.26,-1.72 -0.85,0.45 -1.44,-2.03 z",ET:"m 563.4,213.45 c 0.41,-2.63 4.67,-0.69 3.05,-4.4 0.31,-2.14 0.94,-4.2 2.39,-4.16 -0.44,-3.5 3.54,-4.53 3.9,-7.41 -0.38,-2.92 3.11,-2.05 3.6,-2.06 0.25,-3.07 2.69,0.6 4.13,-0.79 3.42,-0.22 6.63,2.85 8.8,5.71 -1.22,1.87 -2.62,5.61 1.23,4.23 -0.31,2.08 2.43,6.23 5.78,6.5 2.36,1.18 7.39,2.1 8.26,2.46 -2.82,2.52 -5.32,5.37 -7.89,8.12 -3.82,-0.82 -6.13,2.51 -9.57,2.78 -1.89,-0.93 -4.24,-0.87 -5.48,1.61 -3.65,0.27 -5.98,-3.07 -9.52,-2.92 -1.46,-0.87 -0.49,-3.09 -2.49,-2.94 -1.11,-2.91 -3.05,-5.97 -6.2,-6.73 z",GT:"m 216.08,194.7 c 0.19,-3 1.54,-5.27 4.97,-4.34 0.45,-2.13 -4.34,-2.79 -1.53,-3.79 -0.1,-2.22 3.45,-0.63 5,-1.07 -0.3,2.68 -0.01,6.85 2.21,5.6 0.96,0.96 -2.99,1.76 -2.22,3.57 -1.96,2.49 -4.96,2.64 -7.74,0.59 l -0.35,-0.28 z",SR:"m 311.83,225.6 c -1.86,-2.17 -0.51,-4.3 1.36,-4.72 -1.09,-3.3 3.77,-1.06 3.81,-1.81 1.55,-0.63 2.77,0.68 2.53,-0.34 5.17,-0.24 -0.95,4.68 2.55,6.9 -0.55,1.82 -0.99,4.41 -3.31,2.84 -1.51,0.27 -2.85,0.17 -2.08,1.85 -3.33,0.41 -2.96,-3.89 -4.86,-4.72 z",EH:"m 424.61,177.22 c -0.57,-3.33 2.36,-5.36 3.44,-8.22 -0.84,-0.49 3.7,-3.2 3.23,-5.89 1.56,-1.8 3.26,-3.74 4.73,-5.39 3.91,0.25 7.93,-0.07 11.78,0.22 0.81,3.33 0.01,5.55 -3.6,4.57 -1.85,0.06 -3.74,-0.12 -5.56,0.07 -0.71,2.52 1.86,7.31 -1.96,7.8 -2.24,1.66 0.93,6.76 -3.79,5.24 -2.65,0.12 -5.38,-0.24 -7.97,0.18 -0.34,0.39 -0.36,0.95 -0.29,1.43 z",CZ:"m 505.43,94.08 c 1.9,0.8 5.69,-2.65 7.09,-1.6 1.57,-0.48 3.15,0.71 4.83,0.81 -1.65,0.84 2.5,2.19 1.44,0.45 1.85,0.84 4.05,0.97 5.27,2.63 -2.52,1.33 -4.66,2.74 -7.41,2.08 -3.07,-1.86 -4.49,2.17 -7.59,-0.68 -2.06,-0.99 -2.46,-2.18 -3.63,-3.69 z",TD:"m 509.24,195.08 c 1.48,-2.82 4.26,-5.02 5.68,-7.87 -0.28,-3.18 1.06,-6.8 0.67,-9.54 -1.33,-2.22 -3.92,-7.42 0.52,-7.93 3.16,1.08 6.13,3.02 9.28,4.31 4.31,2.16 8.65,4.26 12.85,6.62 0.46,2.85 0.05,5.99 0.22,8.96 0.87,3.04 -3.56,0.7 -3.31,3.81 -1.45,2.08 -1.68,4.21 -2.39,6.6 2.59,-0.38 0.77,2.95 2.83,3.93 -0.68,1.21 -3.59,1.09 -4.14,3.15 -1.42,2.85 -4.89,3.04 -7.1,3.71 1.33,2.52 -5.01,2.76 -6.23,3.16 -0.82,-0.61 -3.7,1.92 -3.59,-1.07 -0.59,-1.8 -6.5,-5.42 -1.71,-5.29 2.76,0.24 2.38,-0.04 0.94,-2.07 -0.03,-2.51 0.04,-5.91 -2.67,-6.71 -1.21,-0.75 -1.72,-2.4 -1.86,-3.75 z",AL:"m 525.44,121.31 c 1.54,-1.75 -0.99,-4.9 1.34,-5.31 2.94,-0.14 1.39,3.01 2.7,4.49 1.52,0.75 -1.08,3.52 -2.05,3.53 -1.17,-2.05 -1.54,-1.21 -1.99,-2.71 z",FI:"m 529.12,41.38 c 2.56,-2.1 5.75,2.56 9.33,0.6 2.86,1.35 4.92,-0.31 6.08,-2.55 2.54,-1.03 6.96,-1.07 8.41,0.84 -1.36,0.95 -0.21,1.5 -2.17,1.55 1.62,-0.03 -0.92,2.36 2.03,2.15 3.51,0.77 1.39,2.16 -0.08,3.59 1.4,1.31 3.55,3.09 1.83,3.8 -0.44,1.18 -0.66,1.88 1.11,2.32 -1.82,0.82 3.3,1.44 0.04,2.38 -1.35,0.88 6.42,1.82 2.5,3.91 -3.11,2.05 -6.4,3.94 -9.71,5.53 -2.85,-0.3 -4.48,0.39 -6.26,0.69 -2.51,0.7 -6.01,0.85 -6.38,1.06 1.01,-0.54 -0.75,-1.1 -0.29,-1.29 -1.71,-0.09 -5.49,-0.39 -3.9,-2.99 1.08,-0.93 -2.85,-4.07 0.38,-4.7 -0.66,-0.96 2.72,-0.7 2.07,-1.3 2.69,-0.72 4.69,-3.33 7.68,-3.76 1.73,-0.72 -1.1,-2.71 -3.01,-2.98 -2.52,-0.88 0.57,-2.67 -1.37,-3.73 0.8,-0.59 -1.01,-1.45 -0.05,-2.2 -2.56,-1.37 -5.52,-1.7 -8.24,-2.91 z m -2.08,25.16 c 0.52,-0.52 1.92,-0.26 -0.15,-0.81 1,1.23 -1.72,-0.5 0.15,0.81 z",SY:"m 570.71,142.04 c 1.24,-0.86 4.03,-3.39 1.3,-3.78 -0.74,-1.31 -1.53,-4.12 0.8,-3.94 0.49,-0.93 0.77,-0.66 0.69,-2.15 3,-0.13 6.21,0.39 9.34,-0.18 1.85,-0.58 5.4,-1.41 6.57,-0.64 -1.6,1.39 -3.85,1.65 -2.88,4.25 0.05,4.11 -4.64,4.87 -7.54,6.57 -2.31,1.62 -7.03,3.78 -8.2,0.71 l 0.05,-0.54 z",KG:"m 664.63,122.89 c 2.3,-0.76 2.91,1.05 4.92,-0.68 2.16,0.88 2.87,-0.65 4.86,-1.21 -0.49,-0.36 -3.37,-1.38 -3.76,-1.96 -0.9,1.93 -6.12,-0.69 -2.2,-1.54 2.08,-0.21 -1,-1.68 1.71,-2.16 2.49,-1.24 5.94,2.82 6.18,-0.91 3.03,-0.69 5.82,1.61 9.09,0.29 3.21,0.13 6.71,0.36 9.06,2.49 -3.42,1.01 -6.11,3.32 -9.58,3.35 -1.69,3.44 -4.52,-0.76 -6.55,2.11 -2.02,0.38 -1.34,2.99 -4.23,2.23 -2.52,0.68 -3.84,-0.77 -6.29,-0.4 -0.74,-0.83 -5.5,1.09 -3.22,-1.61 z",SB:"m 920.68,265.88 c 4.3,0.98 -3.81,-3.21 -0.58,-0.43 z m -2.7,-4.52 c 2.63,3.35 0.38,-2.51 -0.68,-2.14 0.29,0.7 0.26,1.5 0.68,2.14 z m -2.42,1.9 c 3.89,0.96 1,-1.56 -0.98,-1.53 -0.68,0.61 0.43,1.39 0.98,1.53 z m -2.42,-4.8 c 3.82,2.44 0.25,-1.32 -1.78,-1.66 0.4,0.71 0.97,1.41 1.78,1.66 z m -3.66,1.29 c 1.31,-1.32 -2.71,-1.95 -1.05,-0.8 0.66,-0.18 0.38,0.8 1.05,0.8 z m -2.61,-4.1 c 5.19,3.39 -3.75,-4.46 0,0 z",OM:"m 616.21,182.18 c 4.03,-1.59 9.69,-1.6 9.78,-7.19 0.72,-2.21 -2.22,-3.76 -0.06,-6.07 -0.12,-1.28 2.14,-0.6 0.67,-2.41 1.15,-3.21 3.41,3.36 6.79,2.52 1.82,0.51 4.03,2.77 4.29,4.28 -1.6,1.93 -3.06,5.18 -5.09,4.88 -1.36,1.73 0.91,4.9 -2.5,4.41 -1.15,1.87 -2.49,2.84 -4.65,3.28 -0.26,2.97 -4.49,1.94 -6.41,2.5 -0.82,-2.08 -1.92,-3.93 -2.82,-6.21 z m 11.24,-19.87 c 1.9,-2.52 0.3,3.26 0,0 z",PA:"m 241.78,212.35 c 1.11,-1.13 -0.69,-4.84 1.73,-3.09 -0.08,1.32 1.78,1.39 1.57,0.83 3.02,2.42 6.44,-3.33 9.12,-0.92 2.98,0.48 4.49,4.97 2.09,5.28 -1.41,2.51 -2.85,-4.05 -0.02,-1.68 -1.8,-1.71 -1.46,-0.33 -3.65,-2.48 -1.61,-0.09 -3.23,1.89 -3.78,2.6 3.24,1.84 -2.42,3.88 -1.76,0.51 -0.87,1.82 -2.54,-1.89 -4.53,-1.17 -0.78,0.1 -0.34,1.43 -0.77,0.11 z", -AR:"m 281.51,383.73 c 2.4,1.32 -0.98,1.37 1.51,2.11 1.77,2.42 5.58,3.4 8.14,3.74 -2.66,1.38 -6.38,0.26 -9.44,0.18 -0.35,-1.88 -0.25,-4.06 -0.2,-6.04 z m -3.74,-65.8 c 1.13,-2.35 2.71,-5.43 4.55,-6.82 -0.44,-2.38 -1.63,-6.25 1.48,-7.3 3.3,-1.08 0.72,-5.21 4.14,-6.15 0.57,-1.26 2.94,0.69 4.48,0.41 1.12,2.15 1.13,1.78 2.01,-0.28 3.81,-1.96 5.04,2.92 7.84,4.31 3.17,1.67 7.5,2.66 9.95,5.27 -0.97,1.96 -5.1,5.98 -0.45,5.17 2.5,0.64 4.03,0.33 5.96,-0.2 1.34,-1.24 3.14,-2.44 2.81,-4.7 3.6,-1.07 3.05,5.99 -0.72,5.55 -2.56,1.8 -4.01,3.69 -6.41,6.17 -1.84,1.24 -2.25,3.28 -2.35,5.19 -0.73,2.27 -0.81,4.15 -1.4,6.21 -1.45,2.99 5.21,2.63 3.15,5.81 1.23,1.37 3.08,2.52 0.53,4.44 -1.81,3.61 -6.24,3.53 -9.77,4.18 -1.73,0.82 -6.12,-1.55 -3.98,1.19 0.09,0.85 -1.25,2.97 -0.48,3.95 -2.34,2.46 -6.17,-0.27 -7.67,0.15 -0.93,2.03 0.88,5.54 2.72,4.15 -1.82,-0.73 2.92,-0.79 1.15,1.34 -1.12,0.98 -3.33,-2.2 -3.28,0.26 3.11,0.18 -2.79,1.81 -1.17,4.26 -1.06,1.43 -1.16,1.79 -3.41,2.02 -3.12,0.46 -4.22,4.97 -0.11,5.5 2.5,-1.09 2.92,2.55 0.42,2.24 4.03,0.07 -3.58,2.29 -3.98,4.27 1.91,-0.03 -1.58,3.8 -2.46,0.96 1.37,0.97 -2.11,0.74 0.24,0.81 1.78,0.32 -4,2.73 -1.29,3.19 1.02,1.96 -3.25,1.19 0.2,1.42 1.71,1.25 2.07,2.82 -0.53,1.43 -2.48,-0.71 -5.1,-0.27 -7.6,-0.49 -2.44,-0.66 0.7,-5.17 -3.05,-3.47 -1.46,-1.34 -1.9,-4.01 0.28,-5.03 2.81,-0.82 0.2,-3.91 3,-4.94 -0.54,-1.08 1.09,-2.38 0.32,-3.13 -0.48,-1.25 2.67,-2.7 -0.09,-3.26 -2.17,-0.4 4.2,-0.77 0.96,-1.47 -1.77,-0.08 -0.35,-2.36 -1.11,-3.09 -0.73,-0.48 -1.48,-3.09 0.16,-3.65 -0.77,-2.43 -0.04,-5.42 0.85,-6.82 -0.11,-2.32 2.89,-2.81 0.79,-5.23 -1.04,-3.28 3.32,-4.38 2.05,-7.13 0.95,-1.8 2.76,-4.49 0.99,-5.93 0.39,-2.26 -2.32,-3.83 -0.66,-6.04 0.88,-1.84 1.61,-2.36 0.95,-4.74 z",GB:"m 468.18,66.85 c 0.73,0.5 0.74,-2.55 -0.62,-1.46 1.42,0.81 -1.37,0.46 0.75,1.28 z m -13.62,10.44 c 2.34,0.35 1.14,-1.51 -0.23,-0.73 0.93,0.37 0.65,0.52 0.23,0.73 z m 2.74,17.69 c 1.94,-1.8 4.37,-0.14 5.49,-1.81 2.97,0.29 4,-0.48 6.51,-0.56 1.81,0.42 5.84,0.27 6.27,-1.37 -2.46,-0.63 -2.69,0.17 -1.35,-1.05 -0.28,-0.25 1.95,-0.5 0.86,-0.91 4.04,-1.89 -1.41,-3.09 -3.21,-2.42 3.28,-1.88 -4.93,-2.87 -0.12,-2.21 0.67,-0.33 -1.42,-2.82 -3.46,-2.88 -0.53,-3.86 -4.23,-3.68 -7.05,-4 1.74,0.94 4.67,-1.34 1.43,-0.7 2.63,0.19 6.43,-5.05 1.4,-3.72 -2.31,-0.11 -5.91,0.89 -2.97,-0.38 -4.23,0.6 5.56,-2.36 0.85,-2.28 -2.58,0.5 -4.16,-0.23 -4.71,1.2 0.8,1.49 -2.11,0.36 -0.97,1.89 -2.22,0.06 1.76,0.51 -0.25,0.7 1.35,0.33 -0.33,0.5 -0.4,1.51 -2.78,-0.01 2.14,0.13 -0.35,0.25 1.87,0.7 3.13,-1.11 1.67,0.55 1.08,-0.88 -1.51,1.53 -0.73,1.44 0.63,0.34 -0.92,2.98 0.56,0.87 0.23,-1.39 1.08,-2.15 0.48,-0.62 0.95,0.66 0.6,-1.55 1.98,-0.18 -1.65,-0.35 0.4,2.76 -1.47,2.71 -0.18,1.03 2.74,0.56 4.25,-0.04 3.47,-0.7 -2.01,1.39 0.97,2.08 0.38,0.57 1.55,-0.34 0.51,1.4 -0.38,0.59 1.65,1.62 -0.37,1 0.46,0.91 -6.04,-0.4 -2.91,0.49 -2.13,1.49 -0.99,0.66 0.22,1.2 2.05,1.41 -5.17,2.73 -1.98,2.81 -1.74,0.99 2.93,-0.46 1.97,0.67 1.61,0.12 3.23,0.73 4.81,-0.64 -1.47,2.76 -5.23,0.39 -6.34,3.11 -0.58,0.81 -4.7,1.75 -1.57,1.9 z m -2.12,-19.78 c 1.63,-0.56 -1.14,-2.33 -2,-1.23 0.05,0.77 2.63,0.37 2,1.23 z m -1.93,-2.72 c 2.2,-0.45 0.89,-1.79 -0.58,-0.66 -1.07,0.55 0.17,0.89 -0.16,1.32 0.35,-0.04 0.65,-0.32 0.74,-0.66 z m -3.97,10.04 c 0.86,-0.99 5.51,-3.9 6.54,-0.8 0.26,-0.02 1.21,1 0.38,0.7 0.14,1.77 -3.34,0.88 -4.31,0.42 -0.25,1.29 -2.03,-0.1 -2.62,-0.32 z",CR:"m 233.81,206.48 c 0.33,-1.46 0.15,-3.05 2.63,-1.75 1.26,-0.41 3.08,0.93 3.6,0.56 0.32,2 4.06,3.34 1.96,3.95 0.36,1.38 0.15,5.52 -0.99,2.05 -0.87,-0.61 0.42,1.87 -1.24,0.14 0.64,-2.43 -3.28,-2.77 -4.36,-4.72 2.83,2.83 -1.34,1.74 -1.6,-0.24 z",PY:"m 298.18,298.18 c 1.02,-3.67 1.45,-8.62 6.57,-8.05 3.56,-1.4 6.47,1.43 6.83,4.47 -1.78,2.94 1.27,4.86 3.71,3.31 3.62,0.26 1.32,7.01 5.7,4.96 1.04,1.71 -1.13,4.37 -0.59,6.64 -0.96,2.02 -3.48,3.27 -5.13,3.5 -1.63,-0.54 -5.65,0.06 -5.82,-1.27 1.08,-2.1 4.76,-5.63 0.07,-6.27 -2.98,-1.78 -6.39,-2.41 -9,-4.65 -0.75,-0.97 -1.33,-1.92 -2.34,-2.65 z",GN:"m 430.29,204.77 c 0.33,-2.42 4.58,-1.46 3.32,-3.67 1.08,-2.79 4,1.15 6.35,-0.44 0.05,1.12 0.93,1.05 1.95,0.85 0.99,0.45 3.86,0.23 4.5,-1.01 0.56,1.49 3.03,3.02 1.43,4.31 1.61,-0.95 0.9,2.02 1.89,2.32 -0.98,1.79 0.93,2.72 0.52,3.91 1.83,1.69 -2.98,-0.02 -0.4,2.04 -0.69,1.73 -2.13,0.55 -3.22,2.32 -1.39,-0.69 -0.34,-5.01 -3.64,-3.51 -1.2,1.08 0.1,-2.46 -1.36,-3.31 -2.24,-3.04 -4.72,0.61 -6.61,1.65 0.51,-0.33 -1.42,-2.45 -1.34,-2.35 -0.73,-0.99 -3.15,-1.08 -2.02,-2.82 -1.2,1.34 0.12,-1.08 -1.37,-0.28 z",IE:"m 444.11,90.46 c -0.13,-0.4 1.83,-0.99 -0.44,-0.38 -1.79,-0.58 2.78,-1.53 -0.36,-1.09 -1.39,-0.37 2.35,-0.25 1.36,-0.92 1.45,-0.45 4.34,-1.04 1.19,-0.5 -3.64,0.91 3.84,-2.69 -0.27,-1.7 -2.94,-0.59 -0.76,-1.01 -0.54,-1.8 -1.56,-0.16 -0.99,-2.2 1.47,-0.74 1.83,-0.48 3.13,-1.09 1.36,-1.72 0.6,-0.78 2.86,-1.81 3.28,-0.91 -0.2,-1.24 2.32,-0.5 0.16,0.34 -1.91,0.64 -2.14,2.7 0.58,1.99 0.61,-0.54 3.44,0.81 2.42,1.05 1.41,1.91 0.22,5.57 -1.81,4.63 -1.85,0.81 -3.68,0.65 -4.27,1.59 -2.38,0.59 -3.98,0.52 -3,-0.14 l -0.42,0.04 z",NG:"m 479.33,213.43 c -0.74,-3.13 2.48,-4.29 2.68,-6.99 0.86,-1.84 -1.53,-5.34 1.23,-7.33 0.72,-3.9 6.68,-2.57 8.22,-0.04 3.1,-2.33 6.54,2.67 9.38,-0.98 3.15,-0.3 5.91,1.56 8.43,-1.04 2.01,1.12 1.79,3.72 3.2,4.78 0.16,2.42 -3.57,2.63 -3.59,5.45 -0.53,2.4 -2.48,3.65 -3.28,6.1 -0.85,1.35 -2.04,6.12 -3.53,2.87 -1.55,-1.18 -3.97,1.25 -5.54,3.03 0.46,1.96 -1.51,2.94 -1.66,2.96 -1.22,1.07 -3.43,0.25 -3.54,0.36 -0.26,-0.19 -0.24,1.57 -0.61,-0.46 0,2.25 -0.2,0.07 -0.89,1.32 -0.71,0.74 -3.87,-1.61 -2.56,-2.93 0.19,-0.74 -1.69,0.23 -0.33,-0.75 -1.03,0.52 -0.43,-1.14 -1.01,-0.35 0.07,-2.63 -6.4,-1.2 -3.46,-2.39 -1.78,0.87 -3.75,1.15 -2.82,-1.83 0.04,-0.6 0.02,-1.25 -0.32,-1.77 z",TN:"m 492.73,139.84 c 2.59,-1.31 2.36,-3.83 2.33,-6.21 -0.86,-2.13 4.15,-3.27 4.79,-2.72 0.36,2.04 1.6,0.55 2.76,0.85 -1.84,1.44 -2.03,2.98 -0.07,4.34 -0.98,2.24 -4.61,4.64 -0.5,5.19 0.95,-0.06 2.98,2.36 1.05,3.54 -3.75,0.6 -1.75,4.67 -4.77,5.76 -0.31,-3.76 -2.59,-6.57 -5.09,-8.89 -0.09,-0.65 -0.7,-1.13 -0.51,-1.85 z",PL:"m 511.14,86.91 c 1.18,-1.07 0.14,-2.61 1.23,-2.64 -2.71,-0.48 3.59,-0.81 4.68,-1.52 1.76,-1.47 7.6,-1.81 6.35,-0.5 1.16,1.25 3.78,-0.39 2.09,0.68 3.65,-0.2 8.06,-0.79 11.41,0.55 1.73,2.21 1.59,4.08 -0.5,5.24 2.09,0.18 -0.1,3.42 2.48,3.85 0.22,1.59 -5.48,2.45 -3.53,5.21 -2.76,-1.91 -6.66,-0.13 -8.87,-1.25 -2.82,0.03 -4.86,-2.26 -7.69,-2.79 0.45,1.84 -2.54,0.21 -1.59,-0.6 -1.56,-0.4 -4.91,-0.16 -3.77,-2 -1.91,-1.14 0.23,-3.58 -2.28,-4.23 z",NA:"m 504.49,284.16 c 2.67,-0.59 4.83,-0.78 7.32,0.45 3.68,-0.16 7.38,-0.03 11.06,-0.07 2.77,2.04 6.86,1.64 10.15,1.42 2.28,-0.53 8.45,-1.96 8.32,-0.28 -2.14,0.01 -3.73,3 -5.16,0.58 -2.85,0.57 -7.67,-0.11 -6.03,4.33 -0.21,2.99 1.49,7.83 -2.81,7.26 0.04,5.88 0.15,11.82 -0.09,17.68 -1.9,1.55 -5.65,2.34 -7.23,-0.2 -1.21,-2.07 -2.61,2.63 -4.13,-0.62 -2.03,-2.42 -2.71,-5.57 -2.83,-8.65 -2.09,-3.07 0.35,-7.14 -2.64,-9.75 -2.17,-2.8 -2.68,-6.66 -5.37,-9.07 -0.59,-0.91 -0.65,-2.04 -0.57,-3.09 z",ZA:"m 517.64,316.02 c 1.19,-1.75 2.24,-1.55 2.91,0.34 2.74,0.95 4.87,0.75 6.81,-0.97 0.05,-3.37 0.13,-6.75 0,-10.11 2.76,1 1.69,4.81 2.21,5.84 3.4,1.06 4.82,-2.6 6.62,-4.38 2.3,1.28 7.34,2.96 7.44,-1.4 3.59,-1.1 4.32,-5.96 8.43,-6.63 1.66,-1.27 5.99,-0.87 7.01,1.02 1.42,3.41 1.71,6.92 1.74,10.57 0.81,1.51 3.16,0.61 1.66,3.16 -0.2,3.58 -4.05,3.76 -5.13,7.09 -2.03,3.26 -5.17,5.67 -8.18,7.99 -3.36,2.5 -6,2.18 -9.22,3.16 -3.5,-1.28 -6.2,0.4 -9.48,0.63 -2.63,1.1 -5.23,1.31 -6.64,-0.86 -1.62,1.82 -0.59,-2.47 -1.89,-2.84 -1.44,-0.92 2.3,-1.41 0.56,-3.41 -2.1,-2.85 -3.25,-6.13 -4.83,-9.22 z",EG:"m 540.62,151.24 c 0.62,-2.12 -0.39,-5.44 2.84,-4.44 3.39,0.06 6.21,1.69 9.5,2.06 2.81,-1.31 3.87,-1.98 4.7,-1.77 0.47,-0.55 4.95,0.31 2.55,0.41 1.25,0.78 3.94,1.03 6.56,0.05 2.29,3.29 1.8,6.73 0.16,10.07 -2.92,-0.61 -3.58,-6.11 -5.17,-5.73 -0.08,2.73 3.43,4.48 3.31,6.42 1.6,2.88 2.84,6.25 4.98,9.06 2.21,1.08 -0.78,0.82 0.53,2.94 -1.41,1.63 -3.38,2.62 -5.01,4.17 -2.06,-1.14 -5.94,-0.88 -6.85,-0.91 -2.87,0.38 -5.9,0.08 -8.84,0.17 -2.85,-0.03 -5.72,0.05 -8.56,-0.01 -0.52,-6.86 0.27,-13.84 -0.17,-20.72 -0.11,-0.61 -0.23,-1.24 -0.51,-1.79 z",TZ:"m 553.31,249.69 c 0.05,-2.04 3.18,-2.61 3.48,-4.46 1.9,-1.22 -2.19,-2.05 0.62,-3.11 0.28,-1.93 -2.42,-4.35 1.3,-3.68 3.3,0.31 7.01,-0.92 9.83,1.32 3.58,1.98 7.47,3.62 9.08,6.89 2.99,1.01 3.44,3.34 1.84,5.82 1.21,1.91 2.3,3.4 1.63,5.05 -0.44,2.33 0.58,3.64 1,5.64 -0.1,1.36 3.86,1.55 0.32,3.04 -2.86,1.07 -5.18,1.74 -7.74,2.08 -1.96,0.13 -4.23,-0.06 -5.95,-0.53 -1.33,-1.85 -0.81,-6.41 -3.9,-5.14 -2.7,-1.2 -5.66,-1.91 -7.67,-3.9 -0.76,-3.22 -4.06,-4.84 -3.5,-8.25 z m 28.59,0 c -0.2,2.46 1.25,0.12 0,0 z",GE:"m 582.88,113.61 c 2.79,-0.74 6.67,0.6 9.61,1.38 1.83,1.51 4.27,-0.27 6.31,1.21 -0.92,1.66 3.09,0.79 1.37,2.38 3.41,2.97 -2.66,-0.44 -3.79,1.12 -2.66,0.97 -4.88,-0.74 -6.53,-0.77 -1.84,0.24 -3.15,0.32 -2.29,-1.68 -0.23,-2.66 -3.01,-2.48 -4.68,-3.63 z",SA:"m 590.61,189.47 c -0.88,-2.99 -3.92,-4.58 -4.89,-7.97 -1.27,-3.07 -6.19,-3.66 -5.52,-7.9 0.39,-2.99 -1.87,-5.27 -4.52,-6.93 -0.65,-2.58 -2.92,-5.29 -4.69,-7.94 -0.06,-2.16 -2.94,-1.82 -2.91,-2.56 0.23,-2.93 1.6,-3.33 4.3,-2.82 1.27,-1.95 4.6,-2.38 4.88,-3.78 -1.29,-1.21 -3.84,-3.03 -0.42,-3.02 3.89,-1.94 8.22,-0.99 11.6,1.61 3.52,1.8 6.13,5.86 10.43,5.55 2.65,-0.37 4.65,0.71 6.44,1.64 2.33,0.35 1.6,2.87 3.14,3.21 1.82,1.38 2.95,2.21 2.39,3.91 0.18,1.21 2.56,4.27 3.61,4.3 1.04,2.59 4.1,5.36 7.63,4.83 3.93,-0.7 5.02,2.87 3.03,5.92 -0.74,3.57 -5.79,2.83 -8.46,4.41 -3.59,1.37 -8.49,0.07 -11.59,3.09 -1.02,2.11 -2.19,3.42 -4.17,1.94 -2.95,-0.03 -6.49,-0.82 -8.92,0 0.04,0.99 -0.26,2.74 -1.34,2.51 z",VN:"m 755.17,172.63 c 0.91,-1.98 2.34,0.56 3.54,-0.94 1.04,0.45 2.54,0.26 4.02,-0.74 1.02,-2.2 3.13,0.9 5.07,0.38 -0.86,1.7 0.74,3.22 2.41,3.54 2.96,-0.51 -1.88,2.41 -2.21,1.77 0.48,1.03 -2.31,2.48 -2.75,4.57 -1.54,2.03 3.01,3.94 1.85,4.62 2.04,2.46 3.28,2.9 4.87,4.81 0.05,-0.85 1.95,1.9 1.82,2.41 1.55,3.64 0.92,3.94 1.59,7.16 -0.67,-0.85 -0.52,1.4 -0.52,1.15 0.64,1.16 -2.21,3.59 -4.5,4.49 -1.66,0.8 -2.66,-0.69 -2.43,0.39 -0.15,0.91 -1.37,0.04 0.09,0.95 -1.36,0.66 -1.47,-1.28 -0.44,0.82 -2.44,-1.62 -0.12,-0.77 -0.39,0.78 -1.94,-0.57 -1.84,-2.06 -0.82,0.3 -2.07,0.81 -4.16,4.06 -3.82,0.99 0.78,-2.37 0.92,-2.65 -1.03,-3.75 1.68,-0.88 2.76,-2.29 4.83,-1.03 -0.67,-1.4 -1.31,-3.13 0.78,-2.89 1.61,-0.85 4.31,-1.91 3.12,-4.9 -1.35,-2.37 1.11,-4.83 -1,-6.45 1.26,-1.25 -2.9,-1.71 -2.51,-3.92 -2.51,-1.44 -2.46,-4.26 -5.2,-4.92 -3.29,-1.8 0.52,-1.56 1.45,-2.95 -1.87,-0.74 -0.48,-2.8 -3.09,-2.24 -2.24,1.73 -2.61,-2.83 -2.89,-2.56 -0.49,0.58 -1.33,-1.6 -1.86,-1.83 z",RU:"m 971.63,34.32 c -1.5,-0.19 -5.91,2.38 -2.08,1.91 2.33,-1.01 8.44,0.86 8.55,-1.53 -2.14,-0.48 -4.28,-0.89 -6.47,-0.38 z M 699.9,23.18 c -3.3,0.24 -0.12,1.64 0,0 z m -33.68,5.84 c -1.81,2.27 7.41,0.46 3.17,0.09 0.98,-0.56 -2.87,-0.28 -3.17,-0.09 z m -31.55,9.7 c 0.94,-0.02 3.93,1.6 4.89,0.34 -2,-1.28 -6.78,-2.58 -4.89,-0.34 z M 645.6,7.94 c 2.1,0.81 6.73,0.71 7.81,-0.79 -2.55,-0.76 -5.11,0.83 -7.81,0.79 z m -9.12,0.95 c 2.18,0.64 7.53,0.74 7.73,-1.03 -3.66,0.05 -4.99,-0.33 -7.91,0.71 z M 623.91,28.36 c -4.56,1.43 2.66,0.38 3.65,0.95 1.19,0.47 4.53,-0.33 1.95,-1.01 2,0.9 2.82,-0.47 0.2,-0.48 -1.21,-0.19 5.53,0.74 1.33,-0.65 0.73,-0.06 5.38,0.3 2.36,-1.36 2.9,0.68 2.13,-0.65 4.55,-0.29 -1.54,-0.19 1.53,-0.23 1.67,-0.46 0.13,-0.76 -2.34,0.04 0.06,-0.73 2.54,-0.34 5.76,-1.32 8.84,-1.66 4.99,-0.57 10.06,-0.97 14.86,-2.56 -1.87,-2.8 -8.01,-0.49 -8.89,0.04 -3.71,0.39 -7.48,1.2 -11.28,0.77 -1.77,-0.36 -3.22,1.48 -3.1,0.45 -2.2,0.2 -0.1,0.46 -2.95,0.51 -4.08,0.54 -4.67,1.68 -7.82,1.94 0.15,0.68 -4.98,0.18 -1.05,0.85 1.4,0.2 -3.27,0.59 0.06,0.67 3.97,0.31 -5.23,-0.06 -0.89,0.73 1.24,0.01 -4.22,0.13 -1.04,0.61 -2.54,-0.21 -1.1,0.04 0.47,0.44 -2.25,-0.51 -4.99,0.93 -5.67,1.12 0.61,0.54 6.12,-0.52 2.67,0.12 z m -5.88,2.75 c 1.68,0.11 1.59,-0.22 0.24,0.32 1.51,-0.45 -0.47,0.57 -0.24,0.71 -1.06,0.7 -5.24,0.87 -2.19,2.36 1.86,-0.28 4.85,0.15 4.97,0.36 -0.41,0.75 2.03,0.62 0.25,0.77 -1.12,-0.13 0.72,0.92 -0.99,0.67 2.84,0.54 5.41,0.4 7.21,0.61 1.05,0.34 2.39,0.25 0.79,-0.27 2.41,0.43 2.75,0.37 2.04,0.24 4.33,-0.45 -4.41,-0.98 -4.36,-3.97 0.1,-1.36 -0.47,-1.57 0.41,-1.44 0.29,-0.6 1.54,-0.35 -0.03,-0.74 1.52,0.53 2.74,-0.78 0.38,-0.46 1.41,0.09 2.26,-0.42 0.53,-0.26 4.28,-0.45 -3.39,-1.33 -4.83,-0.64 -2.97,-0.14 -2.08,1.5 -4.89,1.6 z m -7.43,9.53 c -1.67,-2.02 -7.61,1.11 -3.2,1.55 0.98,-0.01 5.53,-0.93 3.2,-1.55 z M 626.15,6.83 c 1.89,0.57 9.44,-0.37 3.92,-0.56 -0.39,0.08 -2.89,-0.15 -1.08,0.44 -0.44,0.01 -3.74,-0.5 -2.84,0.12 z m -9.1,3.04 c 1.78,0.7 6.23,-0.28 2.16,-0.59 -0.28,0.25 -3.39,0.33 -2.16,0.59 z m -13.03,0.4 c 0.78,0.15 5.2,-0.26 2.8,-0.59 2.36,-0.85 6.52,-0.52 7.91,-1.38 -1.22,-0.29 -4.91,0.3 -1.6,-0.28 -0.59,-0.58 -3.5,0.14 -1.34,-0.24 -3.13,-0.25 -2.81,0.57 -3.31,0.85 -1.9,0.22 -7.46,0.41 -2.75,0.61 -2.3,-0.15 0.42,0.53 -2.01,0.44 -7.49,0.01 3.22,-0.16 0.3,0.59 z m -7.39,-1.66 c 3.46,1.24 7.04,-0.96 10.56,-0.08 -1.62,-1.32 -7.35,0.24 -10.56,0.08 z M 550.76,41.81 c 2.52,-0.75 5.08,-1.98 6.88,-2.34 0.83,0.45 2.94,-0.54 3.58,-0.55 1.61,0.32 3.8,1.03 0.66,0.9 -2.9,-0.77 1.31,0.46 -0.7,0.49 1.53,-0.15 3.23,-0.12 3.2,0.35 0.65,0.34 -2.22,1.33 0.48,0.31 3.07,-0.65 6.96,-0 10.19,1.01 3.84,1.6 6,1.58 9.2,2.84 3.79,0.78 1.59,4.16 -1.47,4.37 -4.11,1.23 -8.3,-0.06 -12.43,-0.41 -2.29,-1 -5.99,-0.44 -7.02,-1.96 -1.92,-0.17 -4.1,-0.36 -1.1,0.3 -1,0.77 3.67,0.87 0.81,1.12 1.5,-0.05 2.08,0.13 0.26,0.22 0.82,0.03 2.97,0.23 0.97,0.57 1.94,-0.29 6.08,1.31 3.11,2.8 2.07,1.43 0.39,2.95 3.74,2.79 1.49,0.82 5.7,2.62 6.11,0.27 -1.26,-0.29 -6.55,-1.72 -2.32,-2.66 1.78,0.52 3.44,1 2.99,1.37 2.04,-0.56 8.95,1.76 4.63,-1.44 -0.68,-2.3 5.02,-2.1 6.68,-3.68 1.48,0.13 4.51,0.29 3.19,1.35 1.11,-1.54 2.52,1.82 1.93,-0.73 2.17,-1.28 0.18,-2.28 -0.97,-2.98 2.76,-1.95 0.07,-3.27 -0.76,-3.71 2.57,0.57 8.38,-0.19 8.42,2.42 -2.12,-0.45 -6.53,1.12 -2.4,2.09 2.21,1.21 2.8,0.62 5.62,0.23 -0.91,-2.75 3.9,-1.49 3.35,-2.25 -0.81,-0.51 3.82,-0.62 4.96,-1.57 2.57,-0.84 3.87,-0.01 5.58,-0.28 -3.18,-1.57 8.33,-1.77 3.14,-1.4 -1.33,0.27 1.2,-0.16 -0.05,0.79 1.06,1.15 -3.55,0.91 -0.29,1.24 2.91,0.48 5.56,-2.03 9.15,-1.01 2.48,-0.4 6.59,-2.15 6,-0.25 0.12,1.82 2.64,0.33 2.43,-0.11 3.13,0.15 2.36,-1.62 0.18,-2.43 3.11,-1.19 6.74,-0.36 10.13,-0.11 1.58,0.26 3.57,0.97 3.25,1.14 2.44,0.14 5.15,0.73 8.09,1.98 1.56,2.29 5.21,-2.21 1.82,-1.33 -1.13,-1.89 -3.26,-1.52 -4.87,-2.19 1.38,-0.81 1.37,-1.23 1.32,-3.03 -4.77,-0.76 4.39,-1.49 4.45,-4.43 1.95,-2.69 4.8,-1.07 8.35,-1.33 4.1,-0.82 2.93,3.44 0.05,3.74 1.68,0.94 3.6,2.18 1.73,3.93 0.86,1.89 -1.11,4.11 2.42,4.15 0.76,1.93 -3.34,4.01 -4.19,4.65 -2.24,1.3 -6.63,0.18 -7.57,0.78 3.24,1.44 7.59,1.87 10.57,0.09 2.11,-0.42 4.07,-2.19 5.25,-3.57 -3.52,-2.7 3.66,-3.35 5.21,-2.4 3.33,0.55 -0.34,4.1 3.31,3.5 2.06,0.07 3.91,-0.08 1.06,-0.3 -2.07,0.51 -2.85,-1.52 -0.6,-1.72 -1.7,-3.02 -6.11,-2.78 -9.2,-2.28 -3.32,1.25 -4.05,-3.19 -1.18,-4.22 -1.37,-1.81 -5.14,-2.02 -1.67,-3.51 2.76,0.11 4.47,-1.6 3.74,-2.88 4.25,0.41 -2.19,5.52 2.88,4.66 2.84,-0.4 5.34,1.47 8.25,0.58 -2.11,0.46 -2.66,-1.43 -5.43,-1.02 -2.46,0.05 -3.97,-2.26 -0.53,-1.84 1.8,1.27 5.53,-0.37 1.63,-0.18 1.45,-1.57 8.02,-0.68 8.84,0.14 1.57,1.18 8.01,1.5 4.08,-0.7 -2.4,0.18 -4.08,-0.51 -4.45,-2.45 -2.02,-1.1 4.3,-1.77 7.14,-1.4 3.48,-0.3 8.76,0.04 11.02,-1.07 2.34,-0.1 -4.74,-0.7 -2.39,-0.95 -0.42,-0.13 4.58,0.38 1.01,-0.39 0.57,0.25 -3.6,-0.71 -0.97,-0.71 1.82,1.27 2.53,-0.93 3.62,-0.68 -3.88,-0.68 2.51,0.27 3.54,-1.02 2.47,-0.31 7.11,-1.08 10.59,-1.06 1.75,-0.02 6.32,-0.75 2.14,-0.57 -3.2,0.14 2.48,-0.71 1.89,-0.48 1.44,0.03 8.01,-0.59 4.39,0.68 2.73,-0.33 6.46,-0.1 6.71,-0.79 1.53,-0.5 7.67,0.84 3.11,-0.6 0.9,-0.72 6.18,-0.34 8.72,-0.09 -3.83,0.29 -4.57,-2.17 -0.62,-2.7 0.92,-0.73 6.69,-1.44 9.5,-0.53 5.79,0.7 -7.79,1.3 -2.14,1.22 1.05,0.09 4.77,-0.38 1.9,0.35 1.69,-0.44 8.06,-0.46 3.4,1.12 -1.39,0.48 3.57,0.27 4.44,-0.48 3.58,0.25 7.62,-0.79 10.87,0.72 -0.84,0.42 2.48,-0.24 1.6,1.27 1.98,-0.48 0.95,-0.87 2.48,0.42 2.08,1.99 -5.7,-1.07 -2.24,0.93 4.73,-0 -1.11,2.27 -2.81,2.4 -1.94,0.31 -5.86,1.12 -5.85,1.26 -0.9,1.24 -6.22,1.45 -8.63,2.71 -1.8,0.05 -6.59,2.58 -2.26,1.24 2.16,-1.56 5.9,-0.49 8.13,-1.3 2.01,-0.61 3.05,-0.34 6.04,-1.01 -1.37,-0.24 -5.76,0.35 -2.07,-0.9 2.24,0.69 3.44,-0.75 4.09,0.77 2.3,1.09 4.96,-1.83 4.83,0.98 1.66,0.24 1.77,0.4 0.3,-0.3 4.8,-0.78 9.67,-0.25 14.49,-0.31 1.31,0.49 -2.79,0.97 0.54,1.44 4.1,0.37 8.27,0.6 12.35,0.24 1.32,-0.38 -1.11,-2.03 1.18,-1.71 2.19,-1.28 4.98,1.13 7.38,0.3 -0.95,0.87 4.04,-0.89 5.45,0.66 1.57,0.25 2.9,0.72 0.29,0.99 1.1,0.24 3.22,0.23 0.84,0.44 3.89,0.1 -3.53,0.87 0.5,0.78 3.52,0.89 -0.52,1.51 -2.08,0.92 1.24,2.04 2.83,0.75 2.99,0.75 0.84,0.89 -2.7,0.35 0.17,1.39 2.02,1.74 6.76,2.73 7.4,-0.04 1.99,-3.1 6.22,1.88 8.33,-0.22 2.53,-1.29 6.77,0.83 8.07,0.88 -1.07,-0.26 2.51,-0.22 0.21,-0.7 0.86,-1.55 7.15,1.34 4.48,-1.25 -1.52,-0.35 3.99,-1.31 0.04,-0.9 -3.64,-0.53 4.95,-0.88 3.67,-1.44 -1.78,-1.2 3.85,0.5 4.95,-0.03 3.78,0.46 7.81,-0.29 11.41,1.08 -1.97,0.11 -6.62,-0.64 -6.82,0.4 1.84,-0.05 5.37,-0.93 6.18,0.11 -1.39,0.83 -1.65,0.91 -1.09,-0.09 -0.72,0.29 -1.94,-0.53 -1.24,0.75 -5.07,-0.17 0.46,1.63 2.66,-0.53 2.46,-1.06 7.58,-1.06 8.91,0.76 -1.79,-0.38 -4.53,0.84 -1.05,0.47 1.15,0.28 4.44,0.6 1.29,1.23 2.21,-1.04 6.84,0.24 4.96,0.85 5.17,1 10.36,-1.23 15.56,-0.33 2.68,-0.3 8.1,1.17 6.57,2.79 -1.16,1.6 4.4,1.44 5.94,1.15 4.24,-0.26 8.41,0.19 12.63,0.51 2.15,-0.66 4.01,-1.15 5.28,0.74 2.64,0.49 6.14,2.47 6.98,0.05 -1.24,-1.52 -3.26,-0.69 -1.32,-2.19 0.7,-1.37 8.12,1.13 7.9,0.16 3.46,0.52 7.04,-0.18 10.46,0.85 1.35,0.51 6.14,0.35 4.29,0.92 0.79,-0.46 4.68,1.19 2.41,0.52 2.16,0.46 5.41,1.1 5.43,1.55 1.19,0.56 3.35,0.93 0.79,0.09 2.16,0.97 5.03,1.12 7.95,2.4 1.33,0.64 1.4,1.9 1.88,2.97 0.84,1.19 3.75,0.75 1.22,0 2.47,-0.77 -2.9,-1.74 0.45,-1.46 1.76,0.08 2.44,0.01 2.51,0.67 0.81,-0.43 3.29,0.07 0.65,-0.46 2.22,-0.49 6.18,1.78 7.69,2.37 -0.96,0.09 1.65,0.5 -0.56,0.77 -0.76,2.14 -4.58,-0.74 -1.93,1.06 -2.47,0.6 -2.35,-0.21 -5,-0.36 2.44,0.29 1.25,1.6 0.94,1.38 2.18,0.9 -3.6,1.04 -1.04,1.29 -1.43,-0.11 3,1.25 0.18,0.73 -0.3,0.17 -1.68,1.32 -1.72,-0.36 -1.51,1.26 -4.85,-0.64 -6.58,-1.32 -1.81,-3.33 -6.72,0.72 -8.23,-2.23 -0.61,-0.31 1.99,-2.18 -0.21,-0.88 -1.28,-0.91 -1.46,-0.1 -2.74,0.68 2.99,0.99 -0.19,1.65 -0.28,1.65 3.75,-0.02 -5.6,2.72 -3.73,1.89 -2,0.91 -6.16,-1.99 -6.2,-0.85 3.84,0.06 0.17,0.91 -1.55,0.24 2.36,0.43 -0.59,1.16 1.81,0.69 1.75,-0.28 2.11,-0.33 2.58,1.05 2.16,-0.14 3.34,0.5 3.34,1.94 -1.67,-0.07 1.26,0.52 1.03,0.8 2.43,1.15 0.52,3.62 -2.11,2.22 -1.33,0.29 -4.96,-1.63 -2.89,-0.15 -3.34,0.63 -6.6,1.85 -8.87,2.22 -2.5,0.64 -3.1,1.12 -4.43,1.7 -0.56,0.3 -2.37,1.48 -4.94,1.89 -0.74,1.29 -1.85,2.25 -3.1,0.15 -3.55,-1.16 -6.98,0.24 -9.9,1.78 2.5,-3.25 -2.42,-0.68 -2.59,-0.69 -0.29,1.42 -3.63,-0.72 -3.75,0.28 -2.2,0.8 -0.97,2.76 -2.67,3 -2.8,1.07 -1.97,4.41 0.19,2.71 3.15,0.22 -2.73,3.14 1.25,3.62 1.02,2.49 -3.36,1.43 -0.75,0.35 -1.62,0.1 -5.18,2.81 -2.6,4.89 -1.79,1.07 -7.62,0.75 -5.76,4.09 0.54,0.69 -4.84,0.51 -3.78,1.21 0.26,2.66 -4.19,5.47 -5.34,4.98 -1.23,-1.82 -0.28,-3.97 -1.79,-4.95 -0.41,-3.63 -2.89,-7.71 0.14,-10.94 0.78,0.26 2.73,-2.06 2.57,-2.91 2.48,-0.16 4.7,-0.97 6.7,-2.47 1.76,-2.35 5.38,-3.06 7.18,-4.99 2.5,-0.93 5.74,-0.98 4.96,-3.13 0.24,-2.16 3.65,-2.8 3.73,-2.53 2.99,0.51 -2.88,-1.13 -4.15,-0.39 -2.79,0.04 -0.26,3.84 -2.75,2.81 -2.29,-0.33 -6.12,3.78 -7.01,2.35 1.19,-1.04 -2.28,-0.34 -0.36,-1.72 2.14,-2.08 -0.23,-0.94 -1.49,-1.11 -2.69,-0.3 -6.59,-0.44 -8.43,1.64 -1.71,1.5 -7.4,3.4 -6.03,4.97 0.96,-1.1 3.85,1.21 0.73,0.68 -3.09,0.1 -5.55,0.89 -8.63,0.83 -3.18,-0.96 4.91,-0.49 0.68,-1.26 -2.13,-0.49 -5.39,-1.56 -7.38,-0.56 1.01,0.46 -1.95,-0.17 -0.43,0.88 -2.55,-0.2 -5.58,-0.7 -7.83,0.16 -2.34,-1.32 -6.17,-0.32 -9.07,-0.26 -3.53,1.16 -5.89,3.73 -9.04,5.38 -3.56,1.69 -5.69,4.21 -9.53,5.74 -2.6,0.19 -3.31,2.3 -0.27,2.04 2.61,-0.94 2.14,1.14 2.26,2.27 2.19,0.07 -0,-1.75 2.56,-1.47 -3.02,1 1.77,0.77 -0.67,1.65 -1.82,2.34 5.63,-2.43 2.06,0.65 2.26,-0.43 0.18,-3.46 3.17,-2.04 1.97,-0.28 4.66,2.3 5.58,3.22 -1.6,0.15 -1.95,-0.45 -0.19,1.01 -0.15,1.5 1.17,2.27 -1.22,3.44 -1.55,2.06 -0.54,4.25 -1.6,6.27 0.41,3.03 -4.64,4.81 -5.79,7.92 -2.09,2.7 -5.25,4.3 -7.35,6.9 -1.64,1.88 -5.23,4.21 -7.92,3.24 -1.8,0.11 -0.61,-1.9 -2.3,-0.7 -0.16,-1.65 -1.87,2.49 -3.28,1.31 0.46,1.81 -1.75,-1.25 1.09,-0.86 1.52,-2.63 -2.24,-6.36 2.34,-6.58 3,2.1 3.84,-1.39 5.39,-2.88 -0.38,-2.5 3.83,-3.99 1.6,-5.81 -3.45,0.24 -6.72,3.17 -10.12,1.43 0.13,-2.81 -1.87,-2.89 -4.03,-4.41 -2.43,-0.09 -5.88,-0.38 -5.77,-3.74 -1.45,-1.8 -2.14,-4.2 -3.6,-5.7 -2.3,-1.41 -5.07,-1.76 -7.89,-2.02 -2.79,0.1 -7.06,0.22 -8.32,2.4 4.53,0.5 -1.32,3.5 -1.93,5.45 -0.81,1.4 -0.35,2.28 -2.87,2.41 -2.78,2.08 -5.92,-1.06 -8.94,-0.42 -3.56,-2.26 -6.54,2.47 -10.36,1.78 -3.78,1.2 -8.2,0.14 -11.23,-1.73 -3.43,-2.39 -7.69,-0.54 -11.49,-0.62 -3.53,0 -2.29,-4.58 -6.08,-3.84 -3.47,-1 -7.32,-2.39 -8.77,1.51 2.67,2.58 -1.84,4.43 -4.22,3.08 -2.65,0.3 -5.06,-0.22 -6.91,-1.86 -3.05,-0.27 -5.04,-1.01 -8.15,0.62 -3.41,0.72 -4.12,2.94 -7.39,2.57 -2.57,3.54 -4.17,-2.26 -5.85,-0.12 -3.45,0.09 -4.91,-3.11 -7.92,-4.23 -1.79,0.67 -5.66,1.46 -6,-0.37 -1.76,-1.57 -3.29,3.16 -4.42,-0.56 -2.08,-2.7 -4.08,-5.81 -7.45,-6.99 -2.94,-0.65 2.26,-2.26 -1.52,-1.44 -2.68,0.52 -4.55,2.65 -7.12,2.07 -1.71,1.15 -1.51,-1.01 -0.09,-1.09 -0.96,0.21 -3.6,-0.82 -3.19,0.06 -0.64,-1.58 -2.14,0.01 -4.41,-0.88 1.6,-1.26 -0.94,-3.7 -2.77,-2.54 -3.35,-1.83 -4.38,0.94 -7.69,1.08 -3.32,-0.09 -5.6,1.49 -8.71,1.36 -2.79,0.62 -4.93,1.23 -7.82,0.89 -0.95,0.56 -0.85,1.29 0.85,1.36 -3.67,0.63 4.3,1.18 0.3,1.57 -1.27,-0.73 -3.63,0.61 -1.72,1.73 -1.63,0.74 -4.26,1.08 -1.26,1.96 2.69,-0.04 3.89,2.45 0.51,2.77 -2.59,-1.22 -3.45,1.54 -6.07,-0.6 -1.28,-1.9 -3.02,0.94 -4.63,-0.61 -2.08,0.38 -3.98,2.57 -6.19,0.18 -0.36,0.13 -0.41,2.64 -0.76,0.47 -2.31,-1.41 -5.48,-3.19 -7.58,-1.69 -2.42,-1.77 -3.19,0.57 -6.05,1 -0.91,1.62 -3.37,0.79 -1.95,3.21 -1.78,1.59 -3.66,-3.44 -4.48,-0.03 -2.34,1.01 0.7,2.74 -1.77,3.83 1.72,0.88 1.16,2.91 3.55,2.32 1.92,0.42 4,3.42 2.02,3.3 3.17,0.87 0.68,1.16 0.15,1.87 0.14,0.2 -3.39,1.02 -3.1,0.78 0.05,0.65 -2.16,2.52 -2.08,3.59 2.36,0.01 1.19,3.75 2.55,1.49 -3.08,2.65 4.55,4.97 1.08,6.89 -2.15,1.53 -4.26,-2.15 -6.69,-2.29 -0.24,-2.22 -3.9,-0.8 -5.31,-1.29 -3.01,-1.83 -6.89,-1.88 -10.23,-2.23 -1.78,-0.19 -4.76,-3.39 -6.74,-3.27 -1.46,-0.98 -3.03,-1.13 -2.39,-2.05 -0.52,0.01 3.77,0.8 2.26,-0.72 1.23,-0.82 1.38,-1.35 2.52,-1.35 -1.99,-0.82 -2.6,-1.9 -0.03,-1.48 0.08,-0.87 4.3,-1.72 0.79,-1.49 -1.7,0.19 0.99,-0.52 -1.29,0.13 -1.34,-2.6 5.48,-1.24 4.27,-3.36 0.06,-0.72 -0.91,-1.17 0.33,-1.54 -1.63,0.07 2.15,-2.61 -0.74,-2.02 -2.43,-1.28 -4.96,-0.76 -6.99,-2.3 -2.48,1.01 -5.03,-0.02 -5.75,-2.1 -2.48,0.45 -2.83,-1.27 -2.31,-2.1 -1.74,-3.01 -5.47,0.3 -7.34,-1.15 -0.7,-1.78 -1.35,-3.13 1.38,-2.27 3.16,-0.33 0.44,-2.32 -0.94,-2.06 -0.65,-1.4 -3.51,-2.48 -2.43,-4.79 -2.86,-1.11 -4.55,-0.8 -7.42,-1.56 -0.34,-1.92 -1.75,-2 -1.49,-3.59 -2.06,-0.78 1.47,-1.38 -0.64,-2.52 -0.39,-2.21 2.22,-2.82 1.75,-4.13 1.41,-0.3 5.09,-0.54 5.47,-0.65 -2.54,-0.54 -4.68,-1.21 -4.25,-2.06 -4.58,1.28 2.09,-1.55 3.43,-2.54 2,-1.25 7.48,-3.89 2.47,-5.11 -3.07,-0.74 -0.25,-1.08 -0.51,-2.36 -2.14,-0.64 -0.29,-1.41 -2.37,-1.96 0.74,-0.38 -0.53,-2.35 1.36,-2.08 -1.86,-2.36 -3.8,-3.95 -0.44,-5.63 -1.21,-1.25 -5.27,-1.27 -3.5,-3.22 z m -24,40.71 c 0.88,-1.73 2.7,-1.43 4.13,-2.53 -2.85,1.07 0.58,1.91 0.81,0.07 2.08,0.22 6.34,0.97 4.11,2.79 -2.19,-0.03 -8.09,0.44 -7.89,-0.69 2.88,-0.71 -0.85,-0.45 -1.16,0.35 z m 223,-67.55 c -4.59,2.22 3.76,0.36 5.68,0.55 2.84,-0.28 8.08,0.35 9.36,-1.46 -2.8,-0.94 -5.59,-1.47 -8.48,-0.35 2.46,-1.14 1.51,-1.97 -0.83,-1.28 0.14,-0.04 -4.27,0.2 -2.19,0.83 -2.54,-0.13 0.16,1.15 -2.09,0.62 -0.66,0.05 -1.03,0.67 -1.45,1.09 z m -15.19,-4.39 c -2.63,0.17 1.01,0.57 -1.42,0.71 -2.13,0.29 -4.71,0.8 -1.08,0.67 1.38,0.3 5.95,1.77 9.06,1.42 2.18,0.49 5.08,0.87 8.3,-0.03 -1.67,-0.82 -3.11,-0.54 -0.78,-1.18 2.16,-2.45 -3.42,-1.89 -4.48,-1.31 -2.13,0.5 -2.34,0.64 -0.16,-0.48 -3.02,-0.52 -6.41,-0.32 -9.44,0.2 z m -8.47,-0.91 c 1.77,-0.54 6.96,0.07 2.33,-0.04 -2.54,0.03 3.07,0.57 -0.35,0.37 0.98,0.78 6.2,0.36 8.94,-0.08 2.09,-0.12 5.73,0.71 4.54,-1.43 4.76,-0.14 -1.67,-0.62 -3.05,-1.86 -1.06,-0.3 -4,0.25 -1.31,0.2 -2.23,0.29 -7.04,0.42 -7.73,1.41 2.63,0.43 -5.01,1.09 -0.54,1.12 -0.45,-0.23 -3.92,0.04 -2.82,0.32 z m -1.28,0.91 c 0.46,0.98 4.67,0.37 2.23,0.78 2.23,0.88 6.89,-1.15 2.05,-0.83 -0.89,0.18 -5.17,-0.51 -4.28,0.05 z m 160.93,14.73 c 1.89,0.35 7.14,-1.17 2.58,-1.29 -3.24,-0.5 -6.78,-0.05 -9.54,-1.02 -3.43,1.66 3.77,2.03 5.24,2.25 l 0.85,0.04 z m -25.17,3.62 c -2.36,0.58 3.2,-0.42 4.04,0.33 2,0.5 8.21,0.71 3.78,-1.2 -2.87,-1.22 -5.22,0.19 -7.82,0.87 z m -8.42,-6.04 c 0.81,-0.01 1.46,1.28 -0.37,0.79 2.5,2.49 6.34,1.41 8.91,1.5 1.91,-0.24 6.38,-0.99 5.66,-0.08 1.51,-0.16 6.2,-0.24 2.21,-0.64 -3.44,-0.75 -2.13,-2.75 0.12,-1.6 -2.84,1.84 5.45,2.38 5.47,0.44 3.07,-0.14 -3.3,-1.64 -4.56,-1.03 -2.46,0.55 -4.5,-1.5 -5.62,-0.66 -0.9,0.21 -1.25,2.33 -2.11,0.68 -2.65,-0.48 -5.34,-1.7 -8,-0.36 0.83,1.16 -1.43,-0.07 -1.71,0.96 z m 80.88,57.08 c -3.12,-0.06 3.2,3.15 -0.02,0.55 -0.07,-0.17 0.2,-0.4 0.02,-0.55 z m -7.79,-9.11 c 1.7,0.2 5.64,-2.63 1.53,-1.36 -0.47,-0.2 -0.5,1.33 -1.53,1.36 z m -40.64,36.73 c -2.29,0.38 -3.51,1.08 -5.23,2.73 0.13,-0.02 4.7,-2.12 5.23,-2.73 z m -7.3,2.84 c -1.21,1.14 -2.89,3.28 -0.55,1.04 0.9,-0.66 2.7,-0.78 0.55,-1.04 z m -9.66,-26.71 c 0.75,1.38 -0.43,1.65 -1.91,1.68 -0.17,2.36 -1.31,4.65 0.77,6.5 -1.23,3.17 -0,6.76 -0.66,9.65 0.05,1.47 -1.02,7.12 1.07,3.3 1.11,-1.76 3.47,1.34 3.17,0.46 -0.05,-2.77 -1.34,0.29 -1.58,-2.82 -2.96,-1.39 1.1,-6.32 1.28,-5.58 -0.61,-1.26 4.06,1.68 3.46,1.59 -1.93,-2.09 -2.68,-5.85 -3.35,-7.75 -0.75,0.02 -1.18,-3.19 -0.15,-2.9 -0.66,-1.12 -0.96,-3.6 -0.05,-0.95 -0.34,-2.36 -1.49,-2.05 -1.26,-3.92 -0.65,-0.64 -2.51,-0.14 -0.77,0.74 z m -14.76,-2.79 c -0.45,1.81 3.64,-0.2 1.02,-0.48 -0.44,-0.39 -0.62,0.49 -1.02,0.48 z",HT:"m 266.35,183.21 c 0.99,0.03 4.39,1.37 4.7,-0.3 -1.42,-0.77 -0.59,-2.99 -2.83,-2.75 2.53,-1.63 5.89,0.33 4.66,2.79 -1.39,0.24 1.33,2.8 -1.22,1.39 -1.06,-0.01 -8.54,0.81 -5.31,-1.14 z",BA:"m 515.61,108.85 c 1.82,-0.49 4.8,-0.16 7.39,-0.06 1.25,0.88 3.38,0.03 2.04,2.13 1.88,0.97 -0.1,0.88 0.72,2.1 -1.5,0.44 -2.48,1.02 -2.64,2.86 -2.69,-0.82 -4.05,-3.01 -6.27,-4.99 0.04,-1.12 -1.73,-0.78 -1.25,-2.05 z",IN:"m 661.02,168.77 c 2.15,-2.64 10.72,0.22 6.65,-5.13 -1.73,-1.18 -1.11,-2.71 -2.75,-3.65 0.53,-4.88 5.65,-1.01 7.64,-4.52 1.73,-3 5.85,-5.29 5.99,-8.59 1.43,-1.5 3.18,-2.4 0.21,-3.07 -1.63,-1.59 -1.49,-3.83 -1.68,-5.26 3.14,-1.38 6.62,1.29 9.3,-2.1 2.3,-1.39 2.86,2.18 4.57,3.04 -1.41,1.43 3.61,5 -0.35,4.78 -2.13,-0.68 -0.03,3.77 1.34,3.53 2.41,1.42 5.57,2.61 2.52,5.25 0.4,3.43 5.65,4.33 8.7,5.38 3.86,0 6.89,3.07 10.87,2.88 4.34,1.45 0.38,-6.23 4.38,-4 -0.49,4.9 5.68,2.25 8.5,2.78 1.05,-1.6 -2.06,-2.93 1.09,-2.86 3.05,-2.18 5.91,-4.26 9.57,-3.92 1.62,-0.78 1.39,0.8 2.11,1.23 -1.51,2.39 4,0.44 1.53,3.35 0.15,2.57 -3.8,0 -5.02,2.87 -1.52,2.68 -1.82,7.66 -5.35,7.78 0.34,1.88 -1.46,7.6 -2.6,3.28 0.56,-3.52 -1.66,-2.19 -2.84,-1.16 -2.77,-2.69 5.71,-4.36 1.08,-5.77 -2.64,-0.13 -5.78,0.48 -5.97,-2.74 -1.64,-0.43 -5.01,-2.22 -3.37,1.42 3.43,0.75 -3.64,3.11 0.58,3.64 -0.54,2.11 2.77,6.55 0.32,7.27 0.14,-2.94 -1.22,2.41 -1.79,-0.81 0.35,-1.41 -1.28,1.63 -2.67,1.7 -0.84,2.4 -2.43,5.18 -5.24,4.8 -1.25,2.86 -5.37,5.36 -8.05,7.72 -1.36,2.67 -8.24,3 -6.05,7.72 0.67,2.63 -0.29,5.48 -1.25,8.74 1.46,2.18 -3.6,4.23 -1.64,5.29 -3.2,-0.57 -3.39,5.55 -6.34,1.92 -1.91,-2.81 -1.52,-5.2 -3.5,-8.28 -2.54,-3.3 -2.51,-7.76 -4.9,-11.15 -1.54,-3.02 -2.32,-6.83 -2.3,-10.07 -0.66,-0.95 -0.81,-5.32 -0.56,-7.14 1.96,-0.46 -2.38,-1.05 0.2,-1.88 -3.14,-0.91 -1.37,5.66 -5.59,4.12 -2.56,-0.4 -7.37,-5.37 -2.47,-4.86 3.91,-3.18 -3.31,1.14 -3.81,-2.38 -0.35,-1.97 0.32,-0.7 -1.1,-0.85 l 0.06,-0.34 z m 68.31,30.59 c -0.76,2.09 -0.39,5.08 0.27,1.28 0.49,-1.51 0.24,-4.58 -0.27,-1.28 z",CN:"m 676.19,124.66 c 0.98,-1.83 3.25,-2.89 5.46,-3.21 1.72,2.58 3.49,-2.51 6.01,-1.25 1.96,-1.24 5.07,-2.13 6.86,-3.29 -0.65,-2.73 3.04,-2.13 0.47,-5.26 0.7,-1.82 -0.76,-1.93 -1.33,-2.46 2.18,-1.71 6.37,0.32 7.36,-1.37 -1.71,-0.44 0.85,-4.93 2.17,-4.89 2.66,1.09 7.77,1.38 6.25,-2.85 1.12,-1.02 3.17,-0.74 3.53,-2.58 3.42,-0.89 2.49,1.94 5.53,2.87 2.83,-0.07 6.03,2.03 5.68,5 -0.4,1.63 -1.19,3.52 1.67,3.39 3.81,-0.25 7.11,1.27 10.59,2.43 0.94,2.78 3.39,5.13 6.71,4.15 3.26,0.94 6.58,-0.02 9.86,0.56 3.02,1.55 6.81,1.97 9.99,2.52 3.46,-1.14 7.28,-2.67 11.14,-2.14 3.36,0.17 5.74,-2.56 8.43,-3.8 -3.55,-2.2 0.96,-5.11 3.39,-2.82 2.7,-0.29 4.66,-2.42 7.58,-2.27 1.89,-2.66 5.14,-2.73 8.12,-3.34 3.52,1.8 3.22,-1.63 0.5,-2.54 -2.9,-2.4 -7.09,1.31 -9.71,-1.03 1.84,-1.66 2.23,-6.59 5.67,-4.32 1.73,-0.47 5.28,-0.91 4.66,-2.74 0.65,-2.25 5.72,-3.82 3.46,-5.87 -3.15,-0.11 2.81,-2.56 4.29,-2.25 3.47,-0.72 6.65,0.61 9.85,1.03 1.47,1.29 2.72,2.4 3.14,4.21 1.6,1.71 1.34,4.47 3.28,5.65 2.63,-0.12 6.8,1 7.49,2.86 -0.06,3.38 4.81,2.8 7.08,1.24 2.05,-0.65 5.63,-1.43 3.84,1.81 -2.18,1.1 -1.62,4.59 -3.99,5.76 -0.74,2.42 -3.94,-0.86 -5.37,1.36 -0.68,1.23 1.33,6.54 -1.79,6.4 0.65,1.89 -2.28,-3.04 -2.11,0.29 -1.2,1.07 -3.81,1.45 -4.57,1.93 0.9,3.73 -4.61,-1.94 -5.15,1.91 -2.77,1.4 -5.47,3.91 -8.38,3.98 -1.83,0.26 -4.94,3.72 -5.71,2.3 1.87,-0.72 2.25,-1.37 -0.02,-1.55 1.16,-1.01 4.13,-2.63 1.82,-4.16 -2.71,0.14 -4.38,2.63 -7.17,3.79 -0.26,2.82 -6.3,-0.06 -4.28,3.62 1.87,1.47 4.4,-0.22 3.61,3.08 2.93,1.27 3.81,-3.22 6.7,-0.84 1.85,0.07 4.74,0.71 2.12,1.94 -0.85,-0.61 -2.49,0.66 -4.04,0.94 1.1,0.5 -1.5,1.4 -1.84,1.14 0.85,1.18 -5.19,3.68 -0.97,4.61 3.04,0.63 2.02,5.26 4.61,6.08 0.38,0.89 2.57,2.29 -0.03,1.31 -1.71,-0.33 -3.98,-0.32 -4.77,-1.14 0.2,0.17 1.18,1.11 3.05,1.01 1.24,0.82 5.05,3.07 1.14,3.56 -0.82,1.12 -4.41,1 -1.66,1.07 0.15,1.25 2.24,-0.9 3.32,0.96 1.68,7e-4 -2.37,2.24 -0.01,0.92 1.46,1.66 -2.03,0.31 -0.33,1.92 0.25,0.71 -2.53,0.11 -0.44,0.9 0.21,2.07 -1.3,-0.07 -2.09,1.69 -0.34,-1.27 0.17,3.3 -1.32,1.9 0.31,1.21 -1.28,2.5 -1.15,1.82 -1.91,-0.55 1.16,1.12 -1.18,1.94 -2.52,-0.3 1.93,-0.49 0.12,1.08 0.75,1.16 -1.52,-0.46 -0.8,1.16 -1.3,-0.69 -1,1.85 -2.11,1.43 -1.44,0.56 -1.84,0.37 -1.2,1.22 -0.58,1.11 -3.91,1.83 -3.53,2.7 -0.54,1.17 -3.16,1.16 -3.37,1.31 -0.21,0.3 -1.88,0.26 -2.25,0.37 -0.4,-0.54 -0.32,1.21 -1.98,0.36 -1.09,0.06 -1.43,-1.98 -0.79,-1.66 -2.48,0.28 0.3,1.37 -0.8,2.65 -1.59,-2.37 0.45,1.1 -1.14,0.16 -0.53,2.04 -2.1,-0.49 -2.11,1.18 -1.28,-0.82 -3.27,1.61 -4.19,0.79 -0.95,0.09 -1.82,1.58 -1.18,1.78 1.08,2.17 -1.87,1.65 -1.57,0.11 -0.21,-1.58 0.77,-2.41 -0.73,-2.43 -0.66,1.54 -1.9,-0.84 -2.21,-0.27 -0.84,-1.36 -0.36,1.63 -2.6,0.24 -1.39,0.29 -4.02,-1.33 -2.89,-2.75 -0.33,-1.32 -3.39,-0.8 -4.13,-1.88 -1.6,1.63 -3.37,1.75 -4.75,2.01 -0.87,-0.55 -1.87,0.5 -2.97,-0.31 -0.93,1.27 -3.59,0.13 -1.88,2.76 1.13,2.12 -2.19,1.84 -1.82,-0.17 -3.05,2.72 -2.46,-1.51 -5.31,-0.98 0.41,-1.66 1.61,-2.8 -0.66,-3.07 -0.66,-2.14 -0.16,-3.51 -3.08,-2.08 -1.52,-0.11 -0.44,-4.15 1.31,-4.64 1.63,-0.67 1.84,-5.2 0.32,-5.63 -0.62,-0.82 -1.93,-3.56 -3.2,-1.93 -1.58,-0.67 -3.46,0.33 -2.03,-1.74 -0.71,-0.71 -1.24,0.1 -0.84,-1.18 -1.66,-0.28 -3.02,1.33 -4.67,0.18 -3,0.65 -5.1,5 -7.99,3.9 -2.19,-0.27 -4.92,-2.17 -6.72,0.26 -1.39,2.29 -0.88,0.42 -1.34,-0.74 -2.24,1.12 -6.05,-0.24 -7.37,0.15 -1.72,-1 -3.07,-1.32 -5.2,-2.73 -2.13,-0.8 -4.8,-3.35 -7.47,-3.95 -1.43,1.75 -3.37,-1.06 -4.89,-1.65 -1.25,-0.09 -1.77,-1.57 -2.84,-1.23 0.24,-1.36 -2.08,-4.64 0.61,-2.74 3.94,-1.31 -2.27,-3.7 -0.23,-5.46 -2.53,-0.9 -2.49,-4.23 -5.76,-3.62 -1.19,-0.91 -2.65,-0.68 -2.66,-2.99 -1.4,-0.97 -5.85,-1.1 -2.11,-2.04 -0.68,-1.91 -0.62,-4.36 -3.56,-3.51 0.02,-1.05 -0.58,-1.09 -0.48,-2.31 z m 97.06,56.63 c -1.11,3.9 4.72,3.69 5.27,0.66 1.63,-1.13 0.73,-3.74 -0.44,-2.35 -2.21,-0.55 -3.09,0.13 -4.83,1.69 z m 14.89,-8.96 c 1.82,-0.56 0.14,1.44 0,0 z", -CA:"m 244.83,107.58 c 2.56,-1.73 -4.42,-1.05 -3.23,-0.93 1.16,0.78 3.66,0.35 3.23,0.93 z M 104.71,86.08 c 3.08,-0.45 -0.47,0.88 2.33,2.09 2.62,1.96 -2.81,-1.34 -2.42,-1.74 -1.02,0.29 -0.33,-0.53 0.09,-0.35 z m -1.61,-1.25 c -1.31,-3.08 3.61,-0.28 1.49,-0.2 -0.93,0.47 3.48,-2.79 1.31,-0.11 0.03,2.3 -3.46,1.11 -1.72,0.94 0.13,-0.07 -2.15,-0.68 -1.07,-0.63 z m 7.14,-1.3 c -1.97,0.46 -0.13,0.25 -0.04,0.57 0.33,0.02 0.37,-0.51 0.04,-0.57 z m 0.86,1.37 c 2.1,1.83 1.37,-0.53 -0.62,-0.93 l 0.14,0.3 z M 309.76,101.63 c -3.74,1.04 -2.32,-2.06 0.32,-2.47 -0.97,0.04 -3.66,0.15 -1.35,-0.7 -0.84,1.41 2.48,-1.8 2.19,-0.65 0.19,-0.53 -0.89,-1.18 0.45,-1.6 0.95,-2.81 2.42,-5.02 5.54,-5.58 2.59,-0.18 -1.89,0.8 0.31,1.17 -0.88,0.61 -4.78,5.96 -1.61,3.18 0.66,-0.31 3.99,0.11 1,0.89 -1.13,0.11 1.44,-0.04 -0.42,0.73 1.61,0.2 3.54,-0.84 2.04,1.08 1.8,-1.07 2.61,-1.46 5.38,-0.6 -0.87,1.02 -2.5,1.19 -1.2,1.4 0.05,0.34 0.89,0.09 -0.7,1.12 0.85,-0.39 5.1,-1.26 1.4,0.5 -1.56,0.18 0.51,0.26 -0.6,1.31 0.53,1.55 3.59,-3.11 1.88,-0.13 -0.79,1.96 2.57,-1.37 1.04,1.65 -1.29,3.05 -2.65,0.4 -2.49,0.31 -2.83,2.91 0.95,-4.13 -1.92,-1.48 -0.31,0.75 -1.34,0.25 -2.54,1.84 -5.04,0.91 3.13,-2.34 0.7,-1.86 0.01,-0.95 -1.74,0.99 -2.54,0.22 -0.35,0.19 1.48,-1.19 -0.49,-0.8 -1.06,1.54 -4.96,-0.09 -6.38,0.48 z m -13.97,-6.19 c 1.75,0.03 7.41,2.68 2.62,2 -1.7,-0.27 -9.04,-3.24 -2.62,-2 z m 4.16,7.1 c 0.66,-1.17 2.5,-1.07 0.33,-0.31 1.28,-1.24 -0.82,1.46 -0.33,0.31 z m 1.76,4.82 c -1.8,-2.58 4.69,-5.31 2.21,-1.89 0.47,0.45 -2.17,0.92 -0.8,0.9 -2.04,1.42 2.53,0.05 0.14,0.01 2.15,-0.94 -0.29,-0.55 1.6,-0.81 2.95,0.15 -1.22,2.57 -3.16,1.8 z m -6.54,-1.87 c -0.58,-0.96 -3.25,-1.11 -0.83,-2.23 -0.95,2.98 4.97,1.1 5.26,1.88 -1.31,0.29 -1.93,2.05 -2.6,0.23 -0.48,0.53 -1.25,0.39 -1.82,0.12 z M 146.14,38.73 c 2.04,2.16 5.73,2.16 9.08,2.11 1.9,0.06 2.05,3.48 5,1.99 3.34,-0.06 4.47,-0.1 8.62,-0.48 2.71,-0.39 5.75,-1.68 7.96,-1.82 0.12,1.1 4.45,0.21 3.52,1.24 2.83,-0.26 7.06,1.05 9.03,-0.86 -0.38,-0.8 -2.91,-0.99 -3.76,-0.03 1.4,-0.93 -2.45,-1.6 0.72,-0.97 2.01,-1.22 4.15,-0.13 5.74,-0.72 -1.83,-1.48 -4.91,-1.85 -7.57,-2.29 -1.3,-0.45 -3.98,-1.07 -2.25,-2.41 -2.43,-2.5 -4.5,-5.8 -8.66,-4.99 -3.42,-1.76 -2.11,2.72 0.38,3.84 -3.4,2.2 -3.08,-2.67 -6.23,-2.63 -1.42,-0.87 -5.32,-0.51 -1.4,0.18 0.95,0.32 -1.7,-0.12 0.11,0.65 -0.55,-0.65 -6.22,1.4 -4.5,0.11 2.51,-1.3 -6.37,-2.15 -5.77,-0.39 -0.62,-0 -4.26,0.38 -0.94,-0.68 -0.75,-3 -6.07,-0.2 -8.52,-0.27 -1.42,0.62 -5.7,1.08 -3.04,2.03 -1.61,0.03 -4.53,1.63 -1.3,1.71 3.11,-0.04 1.83,-0.01 1.51,0.64 2.2,0.34 7.16,-0.7 7.75,-0.15 -0.67,0.01 -3.39,0.09 -1.34,0.17 -1.74,0.94 -6.48,-0.16 -6.63,1.54 3.31,1.26 7.06,0.66 10.55,0.55 2.33,0.08 6.76,0.17 7.64,1.17 -4.22,0.32 -8.48,-0.56 -12.71,0.23 -1,0.12 -2.1,-0 -3.01,0.54 z m -51.48,2.87 c 1.51,-0.44 0.54,0.2 0,-0.73 2.66,0.85 -1.13,-0.61 1.69,-0.17 0.89,-0.89 6.58,-1.37 2.64,0.17 -1.82,0.74 1.69,2.23 -0.86,0.9 -1.04,-0.24 -2.37,0.11 -3.48,-0.17 z m -11.14,24.71 c -4.74,0.6 -2.53,-5.35 -2.97,-8.32 0.51,-5.66 -0.5,-11.32 0.04,-16.99 0.37,-3.03 6.07,-0.4 8.15,0.13 1.99,0.48 7.51,1.29 7.51,0.89 -1.1,-1.47 5.34,1.78 2.19,-0.64 2.81,-0.87 5.93,-2.03 6.76,-1.83 2.59,-0.42 4.86,-1.4 6.95,-1.35 1.76,1.12 -5.93,1.39 -3.63,2.45 0.33,-0.17 4.33,-2 5.58,-1.66 -1.4,1.69 4.21,-1.53 3.24,-1.01 -3.01,-1.53 3.09,-0.15 3.51,1.65 0.73,1.14 5.49,0.83 2.6,0.69 1.65,-0.06 -0.15,-1.24 2.02,-0.79 -3.09,-0.18 2.76,-1.13 -0.53,-0.74 -1.08,0.04 2.55,-0.88 1.76,0.74 2.39,-0.25 -1.7,1.07 0.84,1.05 3.31,-1.3 7.01,-1.88 10.62,-0.29 3.1,0.19 9.75,2.4 10.88,1.31 2.3,-0.71 9.6,1.99 3.82,2.28 -3.69,1.21 3.34,1.18 5,1.34 3.05,0.26 6.43,-0.99 8.67,-0.54 2.92,1.04 3.42,0.68 5.84,2.08 -1.21,0.61 -2.78,-0.51 -0.62,0.69 0.02,0.11 4.35,2.54 1.08,0.32 -0.2,-1.47 2.67,0.58 0.4,-1.56 -1.79,-2.45 -0.5,-1.93 2.44,-2.39 1.25,-0.6 4.56,-1.41 1.27,-1.14 -1.22,1.15 -5.07,0.43 -4.44,1.07 -2.82,0.55 -2.81,-1.33 0.45,-1.36 2.84,-1.2 5.87,-0.6 7.18,1.02 2.5,0.5 6.03,1.19 9.28,1.53 3.16,-0.39 6.32,0.22 9.42,-0.09 -3.13,-1.65 6.02,1.92 2.48,-0.46 -1.47,0.42 -3.22,-0.33 -2.65,-0.73 -1.46,-0.58 1.58,-0.36 2.14,-0.86 1.7,0.7 3.29,0.69 3.14,1.29 3.15,-2.04 -0.1,1.34 0.82,1.78 0.03,0.71 2.07,0.16 1.6,0.63 2.8,1.45 -4.59,-0.3 -0.84,1.17 1.91,1.41 -1.85,-1.34 1.34,-0.34 2.24,-1.01 -2.52,-3.19 1.31,-3.24 2.32,-0.41 5.92,-1.92 2.95,-2.58 1.52,0.95 -3.62,0.77 -0.77,-0.19 0.69,-0.24 -0.97,-1.12 1.23,-1 1.07,-0.19 -1.05,1.24 1.2,0.11 -1.98,-0.81 -6.79,-0.11 -8.7,-2.42 0.49,-1.44 2.05,-0.47 1.56,-1.36 -3.41,0.98 -1.2,-3.45 0.98,-1.7 0.81,-1.07 -2.56,-0.64 0.04,-1.02 1.52,-0.69 3.3,-0.36 0.61,-0.67 2.31,-0.94 1.96,1.17 4.35,0.52 1.51,0.23 2.43,2.42 2.9,2.66 1.31,1.26 5.29,1.89 1.1,1.83 -0.59,0.47 2.37,0.22 -0.18,0.8 -2.2,0.78 0.07,0.46 1.98,0.93 0.32,-0.62 2.69,-0.19 0.6,0.02 2.11,-0.14 4.46,0.1 1.28,0.73 -1.45,-0.18 2.86,0.97 1.26,2.35 2.09,1.79 1.56,-2.7 4.37,-2.24 1.94,-0.05 4.58,3.11 1.77,2.69 0.16,2.3 2.94,3.74 4.7,2.5 1.67,-1.64 2.36,-4.21 4.92,-4.09 -2.14,-0.41 2.15,-0.47 -0.59,-0.85 -1.27,-0.32 -2,-2.61 1.21,-1.98 1.52,0.28 6.69,0.22 5.83,0.88 -3.77,0.13 1.61,-0.21 0.99,0.83 2.21,-0.61 3.43,0.98 0.4,0.98 3.59,-0.39 1.24,1.58 -0.92,1.12 -1.08,0.83 2.57,1.41 3,3.55 -2.46,1.68 -6.78,3.08 -7.84,1.39 -1.45,-0.72 -0.92,-1.23 -3.01,-0.4 2.13,-0.37 2.4,0.17 3.84,1.87 -1.74,-0.44 -1.92,-0.44 -2.14,-0.01 -1.88,-0.53 -4.67,-1.55 -6.03,-0.58 5.01,0.23 -1.93,4.21 -4.04,2.76 -2.46,-0.63 -0.25,-0.53 -0.98,-0.62 -1.3,-0.23 -4.45,-1.31 -3.5,-0.51 -0.92,-0.36 -5.89,-0.27 -2.81,-0.25 3.62,0.89 7.31,1.87 10.82,2.38 -1.03,1.96 -5.91,3.47 -5.86,3.16 -2.55,-0.41 -1.86,-1.03 -3.11,0.91 -2.26,0.36 -8.59,-1.05 -9.49,-1.16 -1.29,0.69 5.54,0.37 3.02,1.39 2.48,-1.49 7.83,1.65 2.78,2.06 -2,-0.32 -2.91,0.06 -1.22,0.73 -2.3,-0.36 -2.13,1.41 -2.74,0.73 -0.46,1.4 -2,0.53 -1.39,1.69 -2.08,0.11 -1.69,3.18 -3.61,3.39 1.24,2.05 -1.5,4.67 0.69,4.72 1.72,0.47 -0.41,2.56 0.92,0.17 3.52,-1.7 5.11,4.92 4.09,5.11 2.05,-0.87 -0.14,0.49 2.28,-0.39 3.91,-0.93 8.29,0.43 11.65,2.49 1.68,0.86 7.67,1.82 6.77,3.05 3.47,-1.04 5.34,-0.15 8.43,0.06 -0.75,2.1 0.08,4.64 0.26,6.34 0.95,0.51 2.19,1.47 0.57,1.79 1.75,-0.47 5.9,2.21 2.48,3.28 1.45,-1.58 4.45,0.08 4.46,0.44 -2.57,-2.9 1.98,-1.26 1.46,-1.41 -0.03,-0.6 0.01,-1.95 0.9,-2.64 -0.74,-1.25 -1.02,-2.3 -1.44,-3.61 0.46,-0.89 -0.11,-1.27 -1.11,-2.3 -0.61,-1.94 5.15,-1.38 6.52,-3.51 4.22,-2.81 -0.03,-7.89 -3.79,-8.31 0.71,-1.66 2.34,-2.57 2.83,-3.18 2.16,-0.49 -1.96,-1.63 0.02,-2.24 -1.18,-0.38 -0.34,-0.96 -1.74,-0.73 1.34,-1.63 1.99,-2.18 -0.12,-3.43 1.39,-3.46 6.51,0.15 7.76,-0.76 1.59,0.83 7.15,-1.66 7.06,1.25 2.62,-0.24 1.07,0.89 3.46,0.75 -2.6,1.14 3.21,1.14 4.45,2.06 2.49,-1.25 0.42,0.81 0.74,2.26 -1.55,0.38 -5.34,-0.21 -1.48,0.2 2.84,-0.45 0.35,2.25 2.73,2.1 -0.79,0.38 -1.21,1 -1.63,0.92 -3.1,1.8 5.98,-1.97 3.87,2.16 -2.05,0.74 -3.51,1.21 -0.56,0.39 0.74,-0.84 2.92,-2.33 1.42,-0.37 1.54,-2.1 0.73,1.37 1.52,-0.15 2.02,-1.1 3.96,-2.16 4.54,-0.78 -0.45,-1.4 -0.11,-1.39 1.63,-1.63 -1.87,-0.2 -0.13,-1.63 0.85,-0.95 -3,-1.08 0.71,-0.99 -0.29,-1.45 0.91,-2.07 2.88,-0.97 0.98,-0.29 1.57,-0.58 2.12,1.13 2.7,1.58 -0.6,0.25 2.61,0.74 -0.48,1.01 1.67,-0.01 2.25,0.09 2.22,0.58 2.6,0.65 -3.13,1.67 0.2,1.16 1.49,-0.33 1.62,0.85 -0.52,1.25 1.9,-0.82 2.82,-0.05 2.23,0.08 0.83,-0.29 2.46,1.54 0.07,1.35 2.52,0.36 3.26,1.57 1.98,2.24 -0.58,0.44 -2.7,-0.45 -0.87,-0.35 -3.2,-0.39 1.42,0.76 -0.46,0.58 3.04,0.12 -1.17,0.41 1.49,0.85 -0.49,0.02 -1.23,0.41 0.92,0.26 -0.3,1.01 2.15,1.52 2.48,1.25 0.63,1.08 0.41,1.41 -0.1,1.83 -1.42,0.88 2.43,-1.21 0.72,0.34 2.06,-1.37 0.58,-0.05 2.32,-0.32 -1.99,1.75 -0.59,0.5 0.78,-0.21 -0.83,0.96 3.44,0.91 4.93,1.94 -0.91,0.27 -0.18,0.2 -2.27,0.57 -1.84,0.6 -5.63,1.13 -1.65,0.57 2.38,-0.14 -3.16,0.98 -4.22,1.44 -2.7,-0.93 -0.89,-0.3 0.64,0.4 -2.33,1.52 3.75,-1.61 5.49,-1.72 1.43,0.01 -2.41,-0.46 0.42,-0.41 1.33,-0.34 3.51,1.41 1.11,1.71 1.48,0.47 2.57,-1.08 3.17,0.01 0.44,-0.43 2.91,1.71 0.64,1.58 1.75,0.56 -0.62,0.7 1,1.17 -2.22,0.27 -1.65,-0.28 0.39,0.74 -2.99,-0.77 1.74,0.68 -1.38,1.45 -2.37,2.12 -6.86,0.27 -7.89,2.97 -1.65,1.5 -6.45,2.06 -7.47,1.84 -3.18,-0.9 -6.5,0.01 -9.77,-0.48 -3.36,-0.48 -4.38,1.16 -6.78,2.81 -2.39,0.17 -3.24,1.57 -5.77,3.28 -1.99,-1.07 -5.18,-0.85 -1.58,-0.48 5.12,0.4 -6.41,5.83 -0.69,3.68 3.03,-2.92 6.6,-5.2 10.86,-5.86 1.82,-1.26 7.93,0.03 6.2,0.88 1.62,1.52 -3.47,2.53 -4.77,1.78 -4.06,0.15 1.22,0.69 2,1.16 3.73,-1.32 0.07,1.86 0.75,1.84 1.83,0.1 0.7,3.59 3.79,2.65 -1.76,0.9 3.54,1.02 3.53,1.41 1.87,-1.26 6.01,1.52 2.29,1.42 -2.69,0.95 -5.02,1.96 -6.51,1.47 -0.37,0.6 -2.85,2.58 -3.65,2.69 -1.04,1.1 -3.75,-1.22 -1.3,-2.57 -2.36,0.6 1.63,-0.33 0.76,-0.7 2.73,-1.8 3.52,-0.2 5.5,-1.39 1.65,-0.88 -5.93,0.77 -2.59,-1.05 1.32,-0.18 -1.05,-1.65 -0.69,0.14 -1.72,1.42 -4,0.4 -3.9,1.17 -2.12,0.93 -3.27,-0.09 -4.35,-1.4 0.03,-2.33 -0.19,-5.65 -3.46,-4.3 -2.45,-1.44 -3.52,4.25 -5.14,5.43 -2.9,1.15 -7.13,0.8 -10.76,0.87 -2.86,0.95 -5.35,2.75 -7.94,2.49 5.27,0.89 -3.8,-0.49 -5.56,1.57 -1.62,1.44 2.98,0.61 1.28,1.92 -1.93,-0.43 -4.04,0.88 -3.2,0.9 -3.13,-1.58 -5.29,2.34 -7.94,1.28 -0.31,-1.39 2.97,-0.16 1.48,-1.37 1.6,-1.89 3.6,-4.31 3.26,-6.92 -0.97,-1.69 1.66,1.48 1.9,1.01 1.71,1.67 2.32,-1.01 2.7,-0.39 -1.01,-1.37 -1.51,-2.43 -3.69,-3.12 -1.7,-0.13 -2.37,-0.91 -5.5,-0.7 -2.21,-0.29 -4.55,-0.92 -4.02,-2.13 -1.25,-0.79 -0.48,-3.83 -3.11,-2.77 -1.63,-1.3 -2.66,-2.91 -5.18,-2.61 -1.96,-1.73 -1.99,1.66 -2.83,0.8 1.4,-2.08 -2.07,1.92 -0.71,0.05 -2.26,2.27 -5.62,0.96 -8.19,1.03 -2.23,-0.69 -4.28,-1.2 -6.83,-1.39 -1.67,0.55 -2.07,-3.73 -2.84,-0.91 -25.35,0.01 -50.71,-0.04 -76.06,0.02 -2.68,-0.23 0.16,-0.72 -1.56,-1.48 0.63,-0.24 -3,0.57 -1.83,-0.34 1.39,0.7 -0.1,-0.79 -0.32,-1.6 1.24,1.36 -2.46,1.77 -2,-0.42 2.07,-0.8 -2.61,1.02 -0.39,-1.08 0.32,-1.28 -1.91,2.58 -1.73,0.17 -1.48,1.22 -3.29,-0.16 -0.71,-0.12 1.57,-1.91 -1.47,1.23 -1.36,-0.4 -1.97,-0.13 0.79,0.11 -0.92,-0.51 -0.99,1.23 -4.7,-0.38 -1.06,-0.09 2.02,-0.15 -5.01,0.1 -1.14,-0.68 0.94,-0.02 -2.68,0.12 -0.33,-0.91 3.19,-0.33 1.8,0.01 -0.1,-0.34 -0.48,1.5 -1.85,-0.46 -0.45,-0.97 1.47,-1.47 2.44,0.87 2.2,-0.78 -2.45,0.23 0.84,-2.3 -1.41,-0.25 -3.01,1.39 -0.76,-1.05 -2.99,0.49 1.7,-2.23 -1.07,-1.48 -1.47,-3.57 1.57,0.74 4.05,0.59 0.74,0.17 -0.3,-1.19 0.68,-1.5 -0.94,-0.78 -1.22,2.51 -3.85,-1.63 -2.38,-0.97 2.73,-0.79 -2.3,0.68 -1.47,-1.41 2.99,1.86 -1.4,-0.85 1.53,0.03 -2.29,-0.51 2.4,-1.37 -0.15,-1.06 -0.32,-1.5 1.91,-0.87 0.29,-1.81 -0.41,3.34 -0.83,0.2 -0.77,-1.31 -2.81,-0.83 -5.59,-1.48 -6.98,-4.04 -1.8,-2.74 -5.22,-3.62 -7.04,-5.94 -2.86,-1.73 -4.34,2.92 -6.63,1.49 -2.57,-1.25 -4.45,-4.25 -6.79,-3.03 z M 221.95,34.56 c 2.71,1 5.66,0.09 8.24,1.27 -2.22,0.9 -9.4,-1.53 -5.2,1.22 1.53,0.7 2.86,0.59 2.55,0.77 0.85,0.02 3.21,0.3 2.68,-0.32 1.12,0.64 1.95,-0.71 1.86,0.68 1.49,0.87 4.22,0.59 2.18,0.28 3.62,0.1 7.47,0.79 10.93,0.47 -1.54,-0.51 -5.12,-1.38 -1.54,-0.59 1.34,0.63 6.02,1.49 2.2,0.35 0.08,-1.25 7.06,1.95 7.56,-0.38 -1.85,-1.2 -2.64,-0.17 -0.89,-1.44 -0.2,1.08 4.01,0.75 4.52,2.45 2.36,-0.76 -0.69,-0.06 1.66,-0.06 -1.72,1.35 2.73,-0.25 1,0.89 2.05,0.14 3.5,1.75 0.3,1.21 -2.45,1.88 2.27,0.12 3.42,0.41 1.54,-0.85 -0.26,0.19 1.01,0.3 0.43,0.41 2.55,1.08 2.17,0.23 0.79,-0.08 0.08,2.04 1.89,0.94 -0.33,0.35 5.21,3.53 0.97,4.11 1.44,1.85 5.43,-0.13 5.88,-0.08 2.46,1.07 4.84,1.21 3.7,1.53 1.81,0.54 -4.94,0.46 -4.75,1.06 0.01,-2.73 -6.31,-2.19 -8.61,-0.71 -1.09,1.08 4.69,2.44 0.63,2.21 -1.59,0.93 -6.76,0.13 -3.2,1.49 -1.08,1.55 0.2,-1.12 -2.6,-0.91 -2.86,-1.04 -3.86,0.32 -5.85,1.69 1.76,1.72 5.55,1.53 6.77,0.64 0.57,-0.23 4.81,0.61 3.08,-0.99 0.05,0.06 1.43,0.67 1.71,0.62 0.12,1.1 1.18,-0.27 2.6,-0.01 -0.96,1.59 3.24,2.18 2.96,2.51 0.09,-0.66 4.07,0.75 0.7,0.77 -2.35,0.11 4.13,1.16 1.91,1.18 2.86,0.97 4.35,0.24 6.19,1.79 2.74,0.47 5.5,1.08 8.25,1.35 -0.11,-1.4 -3.05,-2.23 -4.52,-3.16 0.28,0.51 -6.01,-2.56 -1.86,-1.87 0.75,0.85 2.44,1.17 0.93,-0.21 2.43,1.5 3.49,1.89 4.08,1.85 0.64,0.73 1.16,-0.32 1.42,0.39 0.89,-0.66 3.78,2.4 1.81,-0.11 3.01,0.9 -0.41,-1 0.83,-1.64 -1.68,-1.57 2.26,2.56 1.18,-0.34 -2.02,-0.73 1.47,0.53 -0.06,-0.55 -0.74,0.15 -1.62,-0.58 -2.38,-1.1 2.33,-0.84 -1.46,-0.09 -0.68,-1.53 -1.39,0.67 -1.8,-0.3 -3.29,-0.56 1.09,0.07 -2.18,-0.92 -0.55,-1 -0.61,-0.17 -1.18,-1.48 -2.49,-0.34 0.66,-1.39 -1.83,-1.01 -0.41,-1.69 -3.28,-0.22 -0.55,-0.65 0.36,0.35 1.4,0.92 3.34,-0.39 0.73,-0.91 -0.34,-0.79 1.69,0.46 1.59,-0.39 -2.57,-0.4 1.89,-1.03 1.78,0.63 0.62,-3.6e-4 2.8,0.28 2.55,-0.25 -3.14,2.77 5.99,-1.54 2.2,0.69 0.2,-0.06 -3.5,1.07 -0.92,1.05 1.72,-0.54 -1.63,0.94 0.94,0.09 -2.62,1.42 2.76,0.13 -0.19,1.01 1.53,0.83 1.55,-0.56 2.22,0.61 1.17,0.58 2.78,-0.06 1.4,-1.24 1.62,-0.12 -1.32,-0.27 0.4,-0.69 -0.89,-0.48 1.85,0.54 1.79,0.4 0.67,-0.07 -0.68,-0.71 1.16,-0.73 -2.52,-0.99 -0.79,-0.18 0.82,-0.38 -1.27,-0.83 -3.37,-0.63 -0.79,-0.79 -2.45,-0.74 4.59,0.41 1.13,-0.3 2.25,-0.38 -2.45,-1.11 0.97,-0.46 1.55,-0.43 -1.67,-1.37 -1.27,-0.96 -0.95,-0.51 -0.81,0.6 -1.97,0.07 -0.18,1.16 -0.94,-1.11 -1.87,0.21 -2.87,0.77 3.39,-1.95 -0.02,-1.18 -1.5,1.27 0.78,-0.56 -1.58,-0.05 -3.98,1.04 0.11,9e-5 -0.62,-0.1 -1.35,0.09 -1.97,0.32 -0.19,0.02 -3.48,-0.35 2.89,0.16 -0.07,-0.52 1.73,-0.83 -1.75,-0.41 -0.64,-1.02 -1.8,0.47 -1.63,0.18 -1.1,-0.59 -1.8,0.51 -0.91,1.28 -2.16,0.13 -1.76,1.97 0.61,-1.73 -1.97,0.31 -0.71,0.48 1.07,-1.45 -0.6,-0.45 -0.14,-0.72 -2.05,-0.68 -2.02,-0.37 1.82,-1.02 -3.16,-0.02 0.29,-0.66 3.62,-0.25 -1.59,0.13 -1.2,-0.42 -2.23,0.35 -3.54,-0.45 -1.47,-0.47 -2.95,-0.13 -3.87,-0.62 -0.53,-0.23 3.06,0.22 -1.26,-0.43 1.24,-0.2 -3.57,-0.65 3.2,-0.18 -0.81,-0.82 -1.4,0.06 -3.08,0.56 -0.81,-0.05 -1.69,-0.24 3.47,0.06 -0.32,-0.43 -2.79,-0.31 3.01,0.39 4.25,0.43 3.6,-0.32 -3.05,-1.18 -4.23,-1.1 -1.64,0.31 -5.3,0.06 -1.61,0.07 1.3,-0.57 6.18,0.08 5.48,-1.19 -2.02,-2.05 -6.01,1.39 -7.26,0.68 1.17,-0.37 5.27,-1.09 1.79,-1.36 -2.38,0.73 -3,1.41 -1.98,0.48 -0.04,-0.45 7.62,-1.24 2.53,-1.95 -1.79,-0.5 -5.98,1.51 -2.17,-0.25 -1.99,-1.75 -5.75,4.13 -3.67,0.87 -1.39,0.36 -3,0.73 -0.92,-0.28 2.35,0.43 3.3,-2.55 0.37,-0.87 -2.24,0.27 -3.61,1.29 -3.14,0.22 -1.43,-0.47 6.13,-0.74 2.1,-2.04 -2.47,-1.32 -4.97,2.51 -4.37,0.64 -1.21,0.07 -1.92,1.54 -0.58,-0.15 -0.29,-1.59 -2.71,1.19 -1.59,-0.17 -2.22,0.38 3.08,-1.33 -0.06,-0.85 -0.1,0.74 -1.76,-0.49 -2.05,1.28 -0.09,0.53 -0.27,-0.92 -0.62,-0.7 2.68,-0.88 -3.2,0.48 0.18,-0.36 -3.59,0.15 5.52,-0.88 0.49,-1.42 -1.76,0.39 -4.96,2.19 -1.67,0.37 -0.55,-0.71 -4.52,0.91 -1.06,-0.29 3.82,0.34 0.2,-1.94 -1.12,-1.17 -1.6,-1.42 -9.64,-0.02 -4.52,0.85 4.93,0.93 -4.8,-0.98 -1.85,0.48 1.22,0.45 2.74,1.09 0.5,0.32 1.89,1.25 -2.8,-1.31 -1.85,0.02 0.15,-0.46 -1.27,-1.66 -2.1,-0.86 -0.92,-1.7 -0.87,0.99 -0.75,0.25 -1.18,-0.77 -2.75,1.87 -2.85,0.28 2.17,0.26 -0.56,-0.31 1.3,-1.04 -2.36,-0 -2.3,0.98 -0.14,-0.53 1.4,-0.93 -1.83,-1.85 -2.94,-2.97 -2.09,-0.41 -6.81,0.29 -6.06,0.8 -1.51,-0.32 -5.69,0.56 -1.78,0.82 5.62,0.68 -6.33,-0.58 -1.39,0.53 1.79,0.35 3.42,0.63 0.69,0.19 -4.06,-1.18 -2.46,2.08 -0.25,1.35 1.59,-0.17 -1.23,0.49 1.24,0.8 1.01,0.88 -3.06,-1.56 -3.72,0.14 -2.2,-0.05 1.07,0.69 1,1 2.38,-1.22 2.32,3.18 0.62,1.73 1.64,-1.16 -7.5,1.08 -2.57,-0.17 1.14,-0.24 5.04,-0.29 1.75,-1.12 -2.5,-0.11 -2.64,-1.91 -3.1,-2.94 -2.31,-1.94 7.89,-3.35 2.28,-3.48 -3.25,0.13 -8.61,-0.33 -10.1,2.89 -2.02,0.44 -1.5,2.27 -1.83,3.77 z m 17.02,15.33 c -3.46,-1.07 1.37,1.92 1.69,0.82 -1.41,0.06 -0.8,-0.36 -1.69,-0.82 z m -0.03,9.98 c 1.39,2.91 8.62,-2.63 3.09,-1.16 -1.48,-0.19 -2.07,0.18 -3.09,1.16 z m -30.66,-27.28 c -1.81,0.47 2.85,0.93 2.9,-0.19 3.01,-1.16 -3.6,-1.76 0.63,-1.67 3.1,0.96 5.95,-0.21 6.97,-1.94 1.64,-0.5 3.5,-1.37 0.63,-1.39 -3.64,0.32 -7.1,-0.84 -10.81,-0.27 -3.63,-0.14 2.04,1.87 -1.22,1 -2.17,-0.37 -1.37,3.3 0.12,3.74 -1.18,1.25 2.23,0.47 0.8,0.72 z m 25.75,23.64 c 0.29,3.94 4.97,0.02 6.58,-1 2.13,0.26 4.2,2.58 7.81,1.32 1.24,-0.34 -0.29,-1 -1.25,-1.17 -2.11,0.15 -2.67,0.67 -2.12,-0.99 -2.59,-0.83 -6.29,-3.41 -8.61,-2.21 -0.52,-1.61 -3.19,-3.22 -3.68,0.18 -0.48,2.35 0.11,3.46 -2.81,3.95 0.12,1.08 3.17,-0.11 4.08,-0.09 z m -45.17,-24.25 c 3.8,-0.46 6.48,3.63 10.14,2.74 0.93,-0.26 -1.44,-2.07 0.17,-0.81 2.26,0.66 5.32,-0.78 4.35,-1.07 0.38,-0.85 -1.56,-0.61 0.47,-1 -0.04,-1.67 -2.77,-0.05 -2.57,-1.6 -1.62,-0.13 -4.72,0.32 -1.32,-0.67 1.67,-0.31 2.15,-0.61 0.62,-0.84 3.92,-0.12 -0.43,-1.57 -1.59,-0.84 -1.45,0.8 -5.86,-0.74 -5.09,-0.04 1.1,-0.05 -5.32,-0.06 -1.53,0.68 -0.99,0.09 -4.41,0.02 -1.21,0.74 1.76,0.03 4.83,0.28 1.28,0.42 1.9,1.07 0.27,0.08 0.1,1.26 -1.76,0.95 -5.62,-2.67 -5.98,0.13 0.14,0.4 3.11,0.53 2.16,0.9 z m -14.12,-3.1 c 2.24,0.22 5.97,3.17 6.62,-0.29 -1.89,-0.62 -5.27,-1.3 -6.62,0.29 z m 29.22,14.16 c 1.91,-0.7 4.92,-0.87 1.8,-1.6 -1.15,-0.65 -5.13,-3.31 -6.77,-1.62 2.04,0.59 -2.2,-0.14 -0.12,0.74 -1.81,-0.18 -4.73,1.57 -1.3,1.12 1.42,0.55 4.22,1.16 6.4,1.36 z m 45.69,-12.48 c 3.56,0.26 7.37,0.17 10.86,-0.09 -2.46,-1.8 -5.96,-2.44 -9.17,-2.05 -1.83,-1 -6.3,0.4 -2.53,1.1 0.44,0.19 0.59,0.68 0.84,1.04 z m 17.77,13.71 c -1.55,-0.69 -4.85,0.08 -1.36,0.7 0.54,0.38 3.29,-0.48 1.36,-0.7 z m -9.77,1.64 c 2.22,2.37 8.93,-1.35 4.35,-2.54 -1.39,-0.2 -5.97,0.43 -4.35,2.54 z m -3.45,-5.48 c -1.79,0.27 -3.67,2.44 -0.69,1.01 0.21,0.13 2.11,-1.15 0.69,-1.01 z m -4.31,-0.3 c 5.15,-1.14 -4.52,-0.79 -1.08,-0.33 l 0.5,0.12 z m 2.74,-18.71 c -2.32,-0.15 -2.08,1.4 0.05,0.73 -1.8,-0.43 -0.14,-0.18 -0.05,-0.73 z m -27.39,-1.39 c 0.43,1.41 0.18,-1.87 0.97,0.6 2.23,-0.02 2.72,-0.23 4.93,-0.19 0.99,-0.29 3.8,1.1 6.18,0.38 -2.31,-0.54 -1.89,-0.54 -0.08,-0.38 0.27,-1.28 4.2,1.23 2.77,-0.63 0.74,1.1 4.92,1.1 2.36,-0.19 1.3,0.8 1.93,-0.3 1.69,0.7 1.92,-0.5 3.39,0.45 3.05,0.98 2.86,-0.68 6.45,-0.28 8.4,-1.97 -1.31,-0.94 -5.27,0.78 -3.52,-0.91 -1.71,-0.65 -3.41,0.59 -3.84,-0.18 -1.52,-0.09 -7.18,-0.11 -2.83,-0.21 0.74,0.04 -2.86,-1.55 -0.18,-0.68 3.42,1.1 7.07,0.92 10.03,0.03 -0.04,-0.92 -2.59,-1.33 0.28,-1.16 1.63,0.32 8.82,-0.43 3.65,-0.56 -2.89,-0.26 7.18,-0 2.2,-0.85 -1.84,-0.04 -3.34,-0.32 -0.62,-0.21 1.92,0.69 5.12,-1.1 1.49,-1.04 -3,-0 -1.49,0.18 -1.61,-0.26 -1.45,-0.52 -7.94,1.17 -4.66,-0.02 -2.21,-0.28 -3.99,-0.11 -0.81,-0.12 1.76,0.12 7.78,-0.03 3.06,-0.3 -1.72,0.03 -5.1,-0.06 -1.51,-0.08 2.28,-0.63 7.24,1.14 7.93,0.18 0.4,-0.67 -6.5,-0.28 -7.74,-0.41 -3.17,-0.12 0.65,-0.38 1.46,-0.31 1.6,0.56 3.73,-0.16 0.84,-0.28 -3.45,-0.22 3.09,0.42 4.35,0.26 1.19,-0.16 7.87,-0.32 3.29,-1.04 -2.19,0.18 -2.73,-0.43 -0.25,-0.26 2.8,0.17 5.47,1.21 8.33,0.1 -3.29,-0.2 3.61,-0.39 -0.21,-0.85 -0.85,0.32 -5.31,0.31 -2.45,0.07 -2.95,-0.53 8.31,0.44 3.53,-1.3 3.49,1.42 6.85,-1.38 10.4,-1.6 1.58,-0.76 6.13,-0.33 5.94,-1.37 -3.32,-0.16 -6.7,0.43 -10.04,0.74 -2.98,0.61 -7.36,0.43 -2.64,0.08 1.95,-0.29 6.47,-0.55 6.8,-0.91 -2.4,-0.22 -5.78,0.49 -5.24,-0.2 -4.16,-0.76 3.11,0.64 4.59,-0.04 2.54,-0.07 4.72,-0.12 3.63,-0.22 4.22,-0.36 8.69,-0.25 12.67,-1.73 -1.97,-1.43 -5.27,-0.1 -5.6,-0.49 1.51,-0.47 -3.45,-0.69 -0.73,-0.78 -3.45,-0.49 -6.93,-0.07 -10.48,-0.08 -1.48,0.13 -6.05,0.61 -2.12,0.17 1.76,0.34 6.35,-0.62 2.28,-0.72 -4.28,0.14 -6.88,-0.27 -10.84,-0.3 -3.47,0.11 2.51,0.8 -1.24,0.45 -0.96,-1.2 -9.33,-0 -3.94,0.42 1.12,0.67 -3.67,-0.45 -4.99,-0.7 -1.87,0.32 -7.19,-0.53 -7.26,0.28 1.72,0.32 3.03,0.31 3.06,0.67 2.57,0.03 1.04,0.6 -0.63,0.52 1.18,-1.12 -6.23,-0.8 -4.76,-1.27 -1.66,0.31 -5.91,-0.46 -5.87,0.28 0.46,0.21 4.51,0.6 4.35,0.5 -2.02,0.34 -6.98,-0.82 -7.21,-0.16 5.35,1.05 -6.51,-0.45 -0.87,0.65 -1.68,-0.4 -4.39,0.47 -1.09,0.68 2.15,0.19 6.78,0.7 7.19,1.24 -3.19,-0.42 -6.77,-1.44 -9.8,-1.09 1.29,0.52 3.88,0.47 0.96,0.34 -2.88,-0.58 -7.8,-1.66 -8.62,-0.88 2.78,0.5 -5.6,0.08 -1.6,0.77 1.74,-0.31 5.95,0.84 1.87,0.43 1.18,0.42 -4.86,-0.7 -3.78,0.17 -3.31,-1.43 -5.85,0.41 -8.09,0.01 -1.79,-0.17 -8.35,1.18 -3.44,0.9 1.42,-0.36 6.26,0.04 2.37,0.06 -2.81,1.45 4.19,-0.05 5.53,0.05 3.08,0.18 2.28,0.16 -0.17,0.07 -1.6,-0.23 -6.35,0.82 -2.42,0.8 1.74,-0.03 -5.74,-0.06 -1.53,0.8 4.08,-0.18 8.23,-0.07 12.24,-0.98 3.81,0.26 -4.02,1.3 -5.65,0.94 -1.55,-0.22 -7.83,0.01 -3.69,0.84 4.19,1.31 7.99,-1.72 12.23,-1.08 1.47,-0.54 7.39,-0.18 3.29,-0.18 -2.88,0.61 -7.5,-0.29 -9.37,1.75 2.81,-0.34 6.24,1.21 8.62,-0.74 1.94,-0.27 -1.29,0.74 1.19,0.28 1.33,-0.72 5.21,-0.13 1.76,-0.16 -4.69,0.67 1.96,0.93 3.56,0.42 2.34,0.16 5.74,-1.7 5.37,-1.5 2.11,0.22 2.88,-0.74 3.34,-0.7 2.52,-0.44 2.76,0.02 0.09,0.21 -1.03,0.17 0.24,0.23 -1.75,0.48 -3.29,1.57 5.86,0.16 4.43,0.92 -2.06,-0.06 -7.47,1.4e-4 -7.17,0.78 1.89,0.01 6.11,-0.05 2.11,0.19 -3.77,0.21 -7.58,0.08 -11.33,0.47 -1.3,1.07 5.45,0.64 3.66,1.82 2.07,0.7 7.61,-0.06 2.51,0.51 -3.64,0.26 -6.99,-2.43 -11,-2.06 -1.31,-0.21 -7.75,-0.14 -3.73,0.92 3.6,0.72 -0.04,-0.6 -1.19,0.33 2.38,0.2 6.66,1.96 7.65,2.28 -1.65,-0.54 -4.61,0.01 -1.2,0.14 1.73,0.3 7.25,0.04 6.54,-0.02 -1.28,0.73 -6.41,0.18 -2.45,0.63 1.98,1.12 -4.75,-0.87 -7.35,-0.42 -2.11,-0.32 -5.18,0.72 -5.56,1 -2.26,0.34 1.27,1.26 -1.02,1.15 1.34,0.86 5.84,-1.66 3.84,0.19 3.04,-0.14 4.24,-1.95 4.07,-0.42 3.38,0.47 -0.1,-0.5 -0.85,0.39 5.16,-0.27 -5.39,0.29 0.08,0.57 3.03,0.07 0.18,-0.59 -1,0.19 1.63,-0.44 -0.98,0.82 1.3,0.46 1.21,-0.39 -0.15,0.77 2.06,0.35 1.94,-0.05 6.84,-2.96 2.95,-0.42 -0.4,0.22 -3.18,0.54 -1.25,0.88 -3.4,0.36 -6.03,-0.21 -9.04,-1.41 -1.65,-0.49 -5.65,0.01 -2.57,1.37 2.47,0.02 1.21,-0.05 1.85,0.28 1.82,0.91 -6.32,-0.29 -6.6,1.5 -1.53,0.72 1.85,1.39 1.9,0.38 z m -12.51,-3.14 c -2.8,-0.02 -6.17,-0.78 -8.66,0.32 2.53,0.58 6.54,0.9 8.66,-0.32 z m -1.82,4.12 c 1.71,-0.98 6.9,1.12 4.27,2.72 1.17,0.75 2.53,2.95 4.68,1.28 -0.05,2.09 7.18,-0.38 6.39,0.5 1.45,1.54 5.25,-0.07 6.91,0.56 2.39,-0.96 4.95,1.12 7.37,-0.98 2.5,1.53 6.29,1.19 8.98,0.2 -2.05,-0.7 4.76,0.05 0.77,-0.71 -3.66,0.36 3.57,-1.08 -0.37,-1.34 -1.24,-0.38 -6.4,-1.58 -9.94,-0.84 -1.68,0.03 -7.01,0.4 -6.27,0.96 1.15,0.08 -2.11,0.59 -2.38,-0.08 -2.27,-0.28 -4.74,-0.33 -6.02,-0.19 -1.03,0.01 -4.09,-0 -1.09,-0.56 -1.31,-0.92 -5,-0.36 -5.17,-0.68 2.33,-0.33 2.14,-0.21 0.57,-0.4 -4.8,-0.6 1.43,-0.23 1.54,-0.18 1.44,0.2 3.84,-0.17 0.94,-0.64 -1.35,-0.28 -6.33,-0.28 -2.36,-0.22 0.86,-0.64 -3.59,-0.82 -4.94,-0.46 -1.51,-0.65 -3.64,1.46 -2.2,-0.32 -3.15,-0.59 -6.64,-1.34 -9.82,-0.55 2.88,0.59 -2.14,0.27 0.77,0.78 0.94,0.34 3.95,0.11 1.28,0.43 1,0.78 5.24,0.32 1.96,0.63 1.36,0.23 2.75,-0.17 4.15,0.1 z m -2.52,1.8 c -1.67,0.15 -3.78,0.65 -2.96,0.86 0.25,-0.07 -3.05,1.2 -0.28,0.98 1.68,1.28 10.19,1.81 5.69,-1.29 -0.78,-0.33 -1.62,-0.49 -2.46,-0.55 z m -7.63,4.34 c -2.25,-0.08 -6.35,0.67 -3.12,0.8 0.94,-0.14 2.62,0.23 3.12,-0.8 z m -6.3,-2.43 c 1.95,-0.49 6.91,0.16 5.93,-0.76 -0.98,-0.36 -0.42,-1.07 1,-0.78 -0.7,-0.84 -1.17,-0.48 -0.45,-1.85 -0.44,-1.5 -4.66,-1.41 -2.97,-1.46 -1.84,1.17 -4.07,-0.63 -6.53,0.5 0.81,0.6 3.87,0.43 1.18,0.57 2.29,0.74 2.38,-0.08 1.44,0.79 1.94,0.66 -2.88,-0.43 -4.17,-1.21 -2.5,-0.37 -1.86,1.12 0.2,0.51 -2.51,0.49 0.26,0.71 0.11,1.16 3.11,0.63 -3.73,-0.55 -2.33,0.3 -3.66,0.88 3.03,0.71 4.25,0.37 2.03,-0.01 6.98,-0.52 2.4,0.04 0.61,0.34 -2.29,0.18 -0.3,0.29 -1.51,0.1 -0.95,0.24 -1.92,0.41 1.18,0.47 2.58,0.08 0.67,0.53 0.4,0.39 1,0.45 1.51,0.58 z m 8,-8.05 c 0.59,-0.63 3.62,0.21 5.55,-0.85 -3.24,-0.45 1.93,-0.65 -1.07,-1.05 -2.75,0.29 -5.61,-1.79 -8.38,-0.56 2.04,0.73 -1.78,0.08 0.61,0.95 0.63,0.38 5.09,0.7 1.38,0.69 -1.06,0.24 1.54,0.29 1.91,0.82 z m -22.65,-1.96 c 3.07,1.42 5.97,-0.12 8.83,0.63 2.41,-0.27 5.97,2.74 7.7,0.59 -1.74,-0.45 -1.52,-1.2 -2.01,-1.58 -2.37,-0.48 -5.02,-1.41 -7.65,-1.04 -2.3,-1.33 -5.88,-1.41 -8.24,-0.32 0.53,0.39 3.35,-0.06 1.54,0.82 1.6,-0.32 3.02,-0.53 2.88,0.17 1.79,-0.18 1.42,0.19 -0.07,0.31 3.68,0.42 -1.5,0.28 -2.52,0.27 z m 0.63,3.86 c 3.65,-0.13 -6.13,-3.42 -2.26,-0.72 0.63,0.55 1.51,0.51 2.26,0.72 z m -14.48,-2.28 c 2.73,-0.92 -3.86,-0.4 -5.02,-0.28 -2.04,-0.51 -6.71,0.96 -2.21,1.73 2.09,0.17 5.69,0.59 6.93,-0.85 -1.36,-0.04 -2.73,-0.65 -0.35,-0.58 z m -16.41,8.08 c 0.08,0.64 1.8,-0.2 2.61,0.13 1.2,0.81 2.85,-0.31 1.77,-0.71 1.61,0.24 1.21,-0.8 3.18,-0.34 -3.97,1.62 2.39,0.28 4.08,0.91 1.83,-0.86 3.62,-0.14 0.77,0.2 -1.82,0.23 -7.76,0.27 -6.94,1.29 4.16,1.61 8.39,-0.49 12.53,-0.89 3.24,-0.92 5.57,0.31 8.81,-0.22 4.38,-0.21 1.85,-4.77 -1.3,-2.84 1.73,1.03 -3.16,0.02 -2.86,0.11 0.88,-0.7 -2.53,0.02 -1.14,-1.26 -1.17,-1.88 -4.15,-1.17 -5.97,-0.03 1.67,0.5 4.13,0.73 1.22,1.39 2.13,-0.3 4.88,1.53 0.98,1 -2.52,0.58 -6.09,-0.95 -6.56,-1 0.85,-1.03 -4.96,-0.62 -6,-1.45 -1.53,-1.29 -7.51,0.23 -3.08,0.59 4.24,0.15 -7.21,-0.34 -2.67,0.93 1.44,-0.29 5.72,-0.06 1.95,0.12 -1.83,-0.32 -6.9,0.82 -2.38,0.81 2.03,-0.2 5.05,-0.63 1.55,-0.05 -2.06,-0.04 -6.99,1.04 -2.38,1.27 0.89,-0.15 1.15,-0.23 1.83,0.04 z m -4.54,-2.95 c -1.7,-0.11 -6.96,1.72 -2.4,1.7 0.6,-0.33 3.32,-0.6 2.4,-1.7 z m -6.46,0.79 c 2.43,0.56 -0.35,-2.6 2.02,-0.76 2.44,-0.46 -0.12,-1.35 2.26,-1.45 2.08,-1.56 0.32,1.94 3.27,0.87 0.85,-1.28 5.07,-0.49 2.59,-1.78 3.33,0.35 -2.38,-0.74 0.95,-0.79 2.88,-0.81 -4.56,-1.34 -3.15,-0.32 -3.97,-0.64 -7.71,0.62 -11.35,2.04 -1.63,0.42 -6.95,1.26 -3.67,1.37 -0.26,1.24 4.24,-0.02 4.98,0.16 1,0.29 0.75,0.76 2.09,0.67 z m -14.58,9.4 c -2.3,1.54 -1.01,1.55 0.54,1.65 3.42,0.13 6.1,4.07 9.46,1.34 3.81,0.68 5.01,-3.62 8.94,-3.85 2.34,-1.26 7.02,-0.58 8.27,-2.29 -2.96,-1.47 -8,-2.13 -9.93,-1.41 -1.54,-0.5 -2.05,0.53 -1.73,-0.27 -3.64,-0.98 -7.3,-0.82 -11.03,-0.58 -3.41,-0.58 -1.6,1.64 -0.6,2.18 -1.44,0.47 -3.24,1.27 -2.29,2.13 -1.83,-0.39 -0.58,0.41 -1.13,0.96 z m 42.07,-16.43 c 4.84,0.17 -2.13,-2.1 -3.6,-0.9 -1.48,0.21 -7.75,0.88 -3.46,0.84 2.41,0.09 4.68,0.21 7.06,0.06 z m 37.7,-4.58 c 2.59,0.46 -1.25,-0.02 1.43,0.8 1.38,0.45 7.38,-0.33 3.11,0.35 -1.88,-0.13 -3.02,0.14 -0.95,0.77 1.75,0.42 3.87,-0.67 3.34,0.09 1.68,-0.37 5.08,-0.8 4.62,-0.28 1.84,0.03 4.39,-0.01 1.12,0.08 -5.99,0.49 8.17,0.14 2.33,0.39 -2.42,0.32 -7.75,-0.34 -8.39,0.74 1.69,0.34 3.63,0.51 0.81,0.42 1.88,0.71 8.33,0.47 3.46,0.66 -2.71,0.42 3.58,1.14 4.97,1.15 1.26,-0.5 0.71,-0.8 2.98,-0.22 1.56,0.64 -2.85,-2.13 -0.15,-0.66 1.16,0.93 3.43,0.83 3.11,-0.38 1.57,0.29 2.33,0.35 1.21,-0.66 1.78,-1.99 -0.26,1.35 2.43,0.32 1.27,-1.67 7.19,-0.69 6.09,-1.91 -1.7,-0.84 -5.18,-0.2 -5.85,-0.62 2.82,-1.14 -2.02,-0.3 1,-0.83 -1.49,-0.81 -2.62,0.15 -1.91,-1.21 -1.43,-0.96 -3.51,-0.15 -2.11,0.57 -2.84,0.07 -1.14,-1.36 -4.36,-1.19 -3.03,0.01 -5.63,-2.64 -9.3,-2.54 -1.73,-0.44 -4.4,0.47 -1.16,0.52 4.81,0.36 -4.41,0.29 -0.62,0.44 -2.55,-0.24 -5.52,0.56 -2.85,0.78 0.98,0.09 3.49,0.28 1.02,0.29 5.34,0.82 -4.69,-0.06 -3.4,0.74 1.92,0.57 -4.53,0.16 -0.94,0.63 1.71,0.25 2.27,-0.16 2.51,0.36 1.16,0.33 4.81,-0.46 1.7,0.09 2.52,1.15 -6.92,-0.96 -4.83,0.22 z m -9.72,0.3 c 1.19,0.3 5.95,0.59 2.61,-0.65 -0.72,0.02 -2.82,-0.62 -2.61,0.65 z m 55.89,67.48 c 1.53,-0.33 0.9,-0.42 1.03,0.1 1.65,-1.15 0.91,0.32 1.58,-1.38 -0.59,2.99 1.24,-1.59 -0.84,-0.05 -1.3,1.74 0.63,-1.57 -1.05,0.46 l -0.44,0.4 z m -135.84,9.1 c 0.95,-1.81 0.57,1.37 1.15,-0.93 -1.24,-2.31 -2.12,1.15 -1.42,-0.37 1.49,0.27 -1.42,0.57 0.27,1.3 z m 5.07,7.51 c 0.64,0.57 4.07,0.48 1.67,1.68 3.17,-0.62 1.37,2.05 4.79,0.91 0.71,-0.85 -2.16,1.57 0.36,1.37 2.35,0.91 5.3,0.72 2.46,-1.11 -2.43,-1.05 -4.67,-4.86 -8.34,-4.36 -1.02,-0.82 -6.32,-1.3 -3.1,0.2 1.37,-0.69 1.6,-0.21 0.18,0.41 -0.28,0.95 2.41,0.35 1.99,0.89 z",SV:"m 222.03,196.98 c 0.88,-1.85 3.05,-2.65 4.44,-0.35 3.04,-1.49 2.33,3.55 -0.45,1.68 -0.11,-0.05 -3.19,-0.56 -3.99,-1.33 z",GY:"m 301.66,218.91 c 0.49,-1.79 1.12,-2.46 2.95,-3.04 -2.84,-1.04 1.95,-3.71 1.27,-3.93 2.24,1.68 -0.88,-0.82 1.59,0.77 2.39,0.75 2.17,4.25 2,4.69 1.27,-2.76 5.15,1.96 3.7,3.65 -2.72,-0.18 -3.01,4.7 -0.29,5.18 -10e-4,2.18 4.29,5.02 0.07,3.89 -2.38,0.99 -4.44,3.28 -6.58,0.57 -1.44,-1.81 -0.19,-4.74 0.04,-6.63 -0.61,-1.32 -1.37,-1.38 -1.21,-3.1 -1.67,0.2 -2.75,-0.41 -3.56,-2.05 z",BE:"m 478.93,91.9 c 2.32,-1.15 4.47,-0.04 6.06,-1.1 1.51,0.32 3.18,0.75 3.06,2.03 3.04,0.69 -0.46,2.11 -0.34,3.56 -2.48,-0.6 -2,-2.13 -4.33,-1.33 0.56,-1.8 -4.26,-1.27 -4.45,-3.16 z",GQ:"m 498.59,231.17 c 0.57,-0.61 -0.03,-2.96 2.29,-1.55 3.75,-1.68 3.3,5.15 -0.4,3.16 -0.91,0.03 -4.04,0.11 -1.89,-1.6 z",LS:"m 546.8,319.01 c 0.71,1.9 2.91,4.13 4.08,1.42 4.63,-0.16 1.3,-6.51 -1.79,-3.51 -0.99,0.45 -1.02,1.91 -2.29,2.09 z",BG:"m 533.97,112.48 c 1.59,-2.91 1.02,1.06 3.37,-0.12 3.37,1 6.48,-0.11 9.72,-0.88 2.31,0.28 5.98,1.47 2.27,2.81 -0.57,1.91 -1.71,1.69 0.14,3.21 -1.73,-0.14 -4.89,-0.3 -5.01,1.49 -2.34,1.77 -4.87,-1.4 -7.43,0.27 -2.24,0.89 -1.01,-2.22 -3.11,-2.68 -0.02,-1.82 2.99,-2.17 0.28,-3.6 z",BI:"m 552.39,243.34 c 0.66,-0.13 2.99,0.31 2.86,-1 2.1,-0.75 0.41,1.93 2.05,1.88 -0.8,1.38 -2.12,4.99 -3.98,3.28 -0.86,-1.35 0.21,-2.98 -0.93,-4.15 z",DJ:"m 587.83,204.6 c -0.8,-2.73 3.53,-6.12 4.51,-3.27 -0.46,1.17 -4.12,2.23 -0.91,1.75 1.34,1.79 -2.93,1.73 -3.6,1.52 z",AZ:"m 596.08,123.95 c 1.37,-0.12 4.67,1.29 3.26,2.25 -1.32,-0.22 -2.65,-1.04 -3.26,-2.25 z m 0.72,-4.49 c 1.06,-0.89 6.64,1.92 3.42,-0.83 1.16,-2.58 3.98,3.43 5.82,-0.11 2.25,-1.16 2.64,3.87 5.38,3.54 -0.25,-0.15 -3.6,0.66 -2.8,3.06 -0.52,1.23 -1.34,-0.09 -1.11,2.38 -2.4,0.12 -2.56,-1.81 -1.48,-2.65 -1.92,-2.61 -5.89,3.52 -5.2,-0.31 -0.9,-0.69 -3.39,-1.11 -1.41,-1.99 -1.93,-0.6 -1.07,-2.48 -2.18,-2.59 l -0.09,-0.14 z",MY:"m 776.03,229.79 c 0.94,1.19 3.66,1.54 4.54,1.91 -1.52,-0.7 0.64,-1.85 -0.2,-2.82 0.71,0.24 1.44,-2.13 3.47,-1.6 3.2,0.14 3.49,-7.1 6.03,-3.04 0.76,-0.77 0.48,-3.7 1.3,-1.03 1.04,0.24 -0.67,-1.97 1.23,-2.07 -0.71,-1.32 2.8,-2.95 3.42,-5.2 -0.23,1.83 1.43,-0.64 2.14,1.28 1.13,1.03 -1.26,2.58 1.24,1.51 -0.72,1.4 1.68,0.18 2.51,1.76 3.12,0.67 -3,0.96 -1.88,1.86 2.74,1.53 -1.92,0.86 -2.26,1.45 -1.8,-0.34 -4.97,-1.38 -5.12,1.37 -0.46,2.54 -1.76,3.45 -2.6,5.97 -2.13,1.99 -5.98,-1.42 -7.81,1.64 -2.57,0.56 -6.2,0.31 -6,-2.98 z m -26.46,-12.24 c 0.81,-1.87 3.14,1.48 2.99,2.15 0.86,-1.4 2.33,0.75 2.47,-1.61 3.54,1.64 4.14,5.64 3.78,9.14 1.49,1.41 2.95,5.27 1.51,4.14 -2.37,0.91 -5.07,-2.51 -7.43,-3.83 -0.75,-2.57 -2.09,-3.59 -2.65,-6.4 -0.03,-1.26 0.13,-2.5 -0.67,-3.59 z",PH:"m 820.11,207.51 c 0.82,1.58 -0.23,-2.89 0,0 z m -3.49,-7.05 c 0.99,1.44 3.32,3.35 0.62,3.2 -1.3,-0.61 0.15,1.59 0.72,1.89 0.16,3.43 1.86,0.36 0.58,-1.65 2.72,2.14 1.73,-1.54 1.01,-2.78 -0.18,-1.27 -2.04,-0.65 -2.93,-0.66 z m -2.51,7.05 c -1.05,4.34 3.36,-4.32 1.39,-2.87 -0.2,1.08 -0.99,1.88 -1.39,2.87 z m -0.55,-5.64 c 0.23,-1.55 2.22,1.26 2.48,0.23 -1.22,-1.33 -2.47,-3.02 -2.48,-0.23 z m -1.69,7.23 c 2.83,2.93 1.01,-2.32 2.62,-3.92 -2.35,-1.67 -1.28,2.68 -3.2,2.71 l 0.19,0.64 z m -1.84,6.41 c 0.78,1.98 2.03,-3.59 2.71,-1.05 0.9,-0.8 1.16,1.09 1.97,-0.84 2.89,0.63 -0.14,6.61 4.16,5.12 0.3,0.06 0.81,2.53 1.59,-0.01 -1.3,-1.4 0.21,-5.55 1.13,-2.03 0.43,2.55 0.28,-0.8 0.74,-0.69 1.78,-2.11 -1.11,-3.92 -0.11,-5.38 -0.33,-1.64 -3.69,-3.74 -2.16,-0.4 -1.91,-0.53 -1.87,1.23 -3.48,1.66 -0.94,1.41 -2.07,1.73 -1.41,-0.27 -1.34,-1.08 -3.18,1.53 -4.58,2.3 0.03,0.58 -0.28,1.11 -0.57,1.58 z m -0.15,-12.99 c 1.37,1.3 -1.23,5.28 2.16,2.82 2.7,-2.22 0.02,-1.86 -1.84,-3.29 z m -5.75,-12.27 c 0.17,2 1.5,6.03 2.43,3.8 2.23,0.61 -1.82,2.67 0.72,2.78 0.63,0.68 3.87,-1.27 4.8,1.72 -0.26,-1.32 -0.91,-3.18 0.93,-0.96 0.43,1.22 2.78,1.88 2.56,1.94 0.3,2.23 1.13,-1.46 -0.36,-1.02 -1.03,-1.16 -0.4,-1.39 0.4,-1.67 -1.58,-0.77 -1.61,-0.73 -2.22,0.11 -0.91,-2.69 -2.4,-0.92 -3.06,-0.55 -1.48,-1.61 -2.71,-5.38 0.33,-6.48 0.05,0.11 1.99,-2.95 0.09,-3.94 1,-2.9 -0.05,-1.62 -1.57,-2.04 -3.66,-2.61 -3.34,3.01 -3.47,5.26 0.66,3.49 -1.7,-1.12 -1.58,1.06 z m 1.47,7.51 c 1.09,1.87 3.92,5.29 3.14,0.86 -0.53,-1.08 -2.14,-1.26 -3.14,-0.86 z m -8.51,13.72 c 0.2,1.1 4.23,-2.57 4.46,-3.92 2.15,-0.13 2.43,-3.15 1.62,-3.68 -0.27,1.18 -0.08,1.27 -0.56,1.34 -0.2,1.79 -1.78,1.81 -2.8,3.74 -0.85,0.86 -2.18,1.29 -2.71,2.52 z m 12.81,5.73 c 1.89,1.01 0.24,-1.57 0,0 z",UY:"m 311.36,321.52 c 1.41,-2.04 4.89,-0.87 5.47,1.5 1.9,-0.63 4.87,2.28 6.66,3.89 1.83,0.85 -0.82,2.69 0.03,4.25 -1.55,3.07 -4.83,2.34 -7.67,2.58 -2.09,-0.87 -8.29,-1.8 -5.1,-5.16 -0.91,-2.46 0.84,-4.7 0.62,-7.05 z",CG:"m 502.78,246.68 c 0.46,-1.75 3.43,-0.13 1.65,-2.27 -0.84,-1.77 -0.21,-2.37 2.04,-2.28 -0.05,-3.58 2.35,2.6 3.6,-0.63 1.31,2.9 2.21,-2.62 2.08,-3.94 -1.87,-0.89 -2.27,-3.03 -0.2,-4.28 -0.2,-3.41 -4.84,0.65 -3.36,-3.12 1.95,-2.02 6.63,0.75 8.01,0.25 0.34,-2.92 1.85,-6.38 5.5,-4.76 3.6,0.03 -1.21,4.29 -0.3,6.41 -0.05,3.99 -1.97,6.86 -4.7,9.61 0.43,3.55 -2.12,6.63 -5.2,7.7 0.46,-3.72 -2.66,1.03 -3.68,-0.77 -1.35,-1.81 -3.39,3.15 -3.85,-0.45 -0.43,-0.58 -1.02,-1.01 -1.57,-1.47 z", -RS:"m 527.66,115.24 c 1.53,-1.25 3.09,-1.55 4.56,0.4 -0.18,1.45 -3,2.01 -3.18,1.86 -0.05,-1.09 -1.47,-1 -1.68,-2.1 m -0.84,-9.68 c -2.48,0.14 -2.86,2.04 -0.82,2.79 -2.61,0.83 1.29,0.24 -0.71,1.91 -0.45,0.81 2.48,1.6 0.37,1.44 1.92,1.69 -2.56,1.04 0.33,2.32 1.77,1.82 3.34,-0.1 4.34,0.67 2.54,0.13 0.42,2.83 3.17,1.73 1.9,-0.05 0.7,-1.8 2.51,-2.46 -3.46,-1.24 0.89,-5.32 -2.67,-3.79 -2.5,-0.59 -0.92,-2.05 -3.85,-2.59 0.63,-1.14 -1.77,-2.19 -2.66,-2.01 z",ME:"m 523.1,115.89 c 0.25,-1.66 1.44,-3.47 2.89,-1.55 2.94,0.62 1.38,1.64 -0.11,1.93 0.18,2.71 -1.86,0.38 -2.22,-0.09 0.92,-0.03 -0.85,0.25 -0.57,-0.29 z",EE:"m 537.06,70.85 c 0.6,-1.04 1.34,-0.13 -0.09,-0.76 -0.13,-1.61 2.75,-1.72 4.84,-1.83 1.93,-0.52 7.06,0.13 7.88,0.44 -2.59,0.76 -1.03,3.56 -1.05,4.25 -2.65,2.53 -6.13,-2.06 -9.3,-0.16 1.53,-2.48 -0.87,-0.23 -1.83,-1.72 z m -2.39,-1.43 c -3.01,-0.05 0.01,1.64 0.91,0.45 -0.19,-0.33 -0.67,-0.19 -0.91,-0.45 z m -1.65,3.27 c 0.87,-1.16 5.33,-1.53 1.65,-1.89 -3.01,0.38 -1.52,0.02 -1.65,1.89 z",RW:"m 552,242.64 c 0.4,-2.57 3.25,-3.61 4.42,-3.65 1.72,1.72 1.16,4.36 -1.45,3.13 0.19,2.38 -2.84,0.96 -2.97,0.52 z",AM:"m 592.45,119.98 c 2.56,-0.33 5.77,-0.93 5.47,1.17 0.15,0.96 2.85,1.67 0.42,1.97 2.04,0.44 4.06,3.16 1.45,2.96 -0.61,-2.51 -2.88,-1.32 -4.53,-2.8 -4.29,-0.22 -0.87,-1.32 -2.81,-3.3 z",SN:"m 423.83,194.19 c 0.12,-0.09 2.64,-3.19 2.94,-4.92 2.88,-0.61 7.06,-0.8 8.5,2.4 1.83,1.52 3.8,3.4 3.27,5.66 1.46,0.88 3.16,4.02 -0.27,3.51 -2.77,-0.42 -5.35,-1.28 -8.53,-0.81 -1.93,1.34 -6.57,0.51 -2.35,0.14 1.63,0.26 2.32,-0.91 0.58,0.04 -1.62,-0.22 -4.09,0.03 -1.61,-1.6 2.45,-0.5 4.14,-1.3 6.73,-0.4 0.8,-0.66 -2.59,-1.21 -3.7,-1.32 -2.29,1.53 -4.4,-0.28 -3.54,-0.69 1.42,-1.28 -1.46,1.75 -0.92,-0.96 l -0.47,-0.65 z",TG:"m 471.48,204.3 c 2.11,0.43 3.17,0.03 2.83,2.29 2.39,1.59 2.1,5.22 2.19,7.95 -0.53,1.66 1.21,4.69 -1.64,3.54 -2.84,-1.32 -0.4,-4.57 -1.44,-6.53 -0.4,-0.76 0.18,-2.86 -0.71,-2.83 0.99,-1.66 -0.9,-3.13 -1.23,-4.41 z",ES:"m 481.01,124.75 c -3.23,1.01 -1.72,-2.19 -0.44,-1.14 0.66,0.42 1.44,-0.02 0.44,1.14 z m -34.51,-9.69 c -1.12,-1.61 3.86,-1.24 2.45,-1.98 2.63,-0.74 5.81,0.24 9.04,0.28 3.37,0.18 6.58,0.01 9.89,0.57 0.69,1.2 4.87,2.08 5.98,1.12 1.69,1.81 6.14,0.75 6.81,1.78 -0.36,3.24 -6.37,2.32 -7.21,4.71 -1.76,1.25 -3.38,3.65 -1.23,5.28 -3.13,1.3 -1.31,3.64 -4.82,3.61 -1.54,3.44 -6.17,0.78 -8.96,2.58 -1.53,1.81 -3.61,1.22 -4.39,-0.67 1.04,-0.9 -2.14,-1.43 -2.93,-1.86 -0.2,-1.79 2.55,-1.96 0.46,-3.16 2.46,-1.43 -2.21,-3.58 0.79,-3.38 0.67,-1.89 0.25,-4.13 2.15,-5.44 -1.02,-2.01 -5.14,0.52 -5.33,-1.24 -0.81,-0.18 -2.94,0.94 -1.19,-0.8 -1.06,0.5 -0.05,-0.05 -0.72,-0.56 0.34,-0.26 -0.71,-0.18 -0.43,-0.6 l -0.2,-0.07 z",GA:"m 496.4,238.12 c -0.6,-0.74 1.77,0.08 1.29,-2.52 -0.32,-1.18 3.34,0.41 0.71,-0.82 -1.45,-1.4 0.92,-0.16 0.33,-2.07 2.47,0.48 6.01,0.73 4.55,-2.89 1.57,-1.14 6.76,-1.49 5.26,1.87 0.18,0.66 4.28,-0.8 3.14,2.12 -3.42,2.04 1.38,3.08 0.44,5.63 -0.1,0.9 -1.19,4.99 -2.04,2.09 -1.61,3.01 -3.29,-2.85 -4.08,0.77 -2.37,-0.58 -2.23,1.44 -1.11,2.62 0.67,2.35 -1.95,-0.57 -2.11,1.79 -1.37,-1.68 -4.07,-4.42 -3.38,-4.01 -1.66,-0.56 -1.55,-2.01 -1.3,-1.68 -0.96,-0.41 -1.3,-2.68 -0.49,-0.72 1.96,0.14 -1.03,-0.93 -1.2,-2.16 z",HU:"m 516.57,103.77 c 2.11,-0.35 0.34,-2.99 2.43,-2.38 1.54,-1.19 4.7,0.77 6.02,-0.83 1.53,-0.8 3.17,-0.28 4.4,-1.58 1.7,0.3 5.87,0.26 5.56,2.12 -3.03,0.15 -3,4.63 -6.02,4.69 -3.59,-0.54 -7.33,2.83 -10.43,-0.55 -0.9,-0.17 -1.03,-1.52 -1.96,-1.47 z",MW:"m 562.64,274.16 c 0.55,-1.54 1.02,-3.52 1.93,-3.87 -1.59,-2.89 1.41,-4.69 -0.21,-6.99 -2.72,-2.02 1.67,-0.22 2.39,-0.63 1.41,1.41 1.32,4.73 1.73,5.49 -2.65,2.36 -0.17,5.96 2.15,7.65 1.58,2.22 0.74,5.14 -1.29,6.37 1.59,3.5 -2.26,-0.57 -2.26,-2.16 1.69,-2.24 0.19,-4.57 -2.08,-3.73 -0.59,-1.02 -1.84,-1.13 -2.34,-2.12 z",TJ:"m 658.73,125.13 c 1.18,-1.28 4.56,-0.9 4.21,-2.37 -1.87,-0.4 2.45,0.45 1.19,-1.61 1.26,0.02 5.5,-1.48 2.96,0.74 1.05,1.01 2.39,0.38 0.21,1.41 -1.41,-2.67 -5.48,2.23 -1.02,1.02 1.77,0.59 4.14,-0.45 6.02,1.07 1.94,-1.37 4.89,-0.84 4.35,1.59 2.44,-1.12 3.96,2.41 3.17,3.83 -1.95,-0.91 -3.11,0.52 -4.41,-0.44 -2.4,1.75 -6.63,2.78 -5.15,-1.37 -0.71,-0.18 -1.43,-2.98 -3.1,-0.56 -0.59,1.42 -0.71,1.64 -2.7,1.79 0.25,1.79 -2.81,-0.1 -3.84,1.52 -1.76,-1.7 1.84,-3.13 0.32,-5.05 0.18,-1.17 -1.73,-0.61 -2.23,-1.56 z",KH:"m 755.76,198.21 c 0.59,-3.27 5.73,-3.72 7.96,-2.65 1.54,0.74 2.61,1.15 2.58,-0.36 0.93,-0.6 3.89,-0.27 3.75,-0.38 -0.99,1.74 1.79,5.8 -1.09,6.48 -1.92,0.98 -1.78,1.07 -3.53,1.67 0.39,1.22 1.9,2.95 -0.33,1.71 -1.91,0.06 -3.33,2.31 -5.24,1.16 -1.45,0.92 0.24,-2.88 -1.42,-0.89 -1.22,-0.76 -0.38,-2.35 -1.48,-3.16 0.32,-1.4 -1,-2.27 -1.2,-3.58 z",KR:"m 822.96,129.52 c 0.55,0.4 1.63,-2.7 3.79,-1.66 2.05,-1.89 3.71,2.6 4.27,4.45 0.43,2.34 0.11,4.94 -2.71,4.64 0.09,1.13 -2.54,-0.58 -2.41,1.11 -0.67,-0.96 -0.84,1.65 -1.11,-0.18 -1.09,1.41 -2.53,1.09 -2.41,0.33 1.32,-0.25 -1.3,-1.14 0.86,-2.65 -1.8,0.25 1.81,-1.21 -0.11,-0.92 1.21,-0.17 -0.79,-1.02 -0.24,-1.92 -1.84,-0.48 0.09,-1.84 0.89,-0.5 0.43,-0.92 -0.31,-1.19 -0.81,-2.7 z",HN:"m 224.11,195.03 c 0.55,-2.12 3.29,-4.64 5.8,-3.75 3.09,0.04 4.62,-1.16 7.72,-0.16 2.35,0.74 1.48,0.96 1.03,1.19 0.14,0.13 1.39,0.51 1.63,0.41 -0.9,-0.61 2.59,1.32 -0.25,1 -2.54,0.7 -3.88,0.03 -5.35,2.23 -1.06,0.91 -3.73,0.28 -3.8,2.4 -0.9,1.88 -2.04,-1.1 -2.35,-0.67 0.17,-2.12 -3.09,-0.68 -4.43,-2.65 z",IS:"m 405.62,51.63 c 2.16,-0.72 4.6,-0.3 4.87,-0.3 3.05,-0.07 -3.66,1.31 0.45,1.08 0.6,0.6 -3.4,0.12 -4.54,0.62 -3.06,0.86 4.9,-0.38 3.77,1.05 1.24,0.15 2.59,-0.84 0.71,0.43 -0.23,0.35 0.11,0.02 1.38,0.02 -1.11,0.56 -1.87,0.98 -3.46,1.16 1.65,0.86 5.37,-0.27 6,0.57 0.56,0.2 5.43,1.94 7.36,0.32 1.74,-0.34 5.05,-1.16 7.59,-1.9 2.1,-0.2 2.25,-1.4 3.58,-1.59 -0.35,-0.14 1.01,-0.17 -0.66,-0.4 1.02,0.32 2.79,-0.46 0.57,-0.46 2.34,-0.37 -1.51,0.03 0.73,-0.68 -0.59,-1.36 -3.35,0.61 -1.9,-1.01 -2.62,0.82 0.43,-1.03 -2.22,-1.01 2.25,-1.38 0.06,-0.05 -1.29,-0.27 -1.94,-2.31 -2.55,1.21 -4.65,0.17 -0.86,1.48 -4.09,-1.44 -2.19,1.52 -1.07,-2.17 -3.68,-1.57 -4.19,-0.29 -2.21,-2.41 -1.78,0.14 -2.68,0.63 -1.63,-0.67 -1.58,1.8 -2.3,0.13 -1.44,-1.35 -0.37,0.03 -0.02,-1.27 0.3,-1.04 -7.13,-1.94 -3.28,-0.97 0.94,-0.19 -2.39,0.24 0.11,0.57 0.64,1.46 -3.73,-1.44 -2.37,0.21 -2.91,-0.64 1.75,0.89 -1.02,0.28 0.62,0.58 0.96,0.31 1.21,0.62 -1.59,-0.14 -2.67,-0.42 -1.44,0.41 -1.53,-0.52 -2.19,0.25 -0.11,0.35 z",NI:"m 228.97,198.89 c 2.22,1.54 1.82,-2.21 3.14,-1.96 1.8,-0.48 3.25,-0.98 4.5,-2.96 1.86,1.45 5.3,-2.12 4.28,0.65 -0.25,1.86 -0.79,4.26 -0.92,6.21 -0.06,-2.95 -0.25,1.59 -0.43,1.07 -0.08,1.24 0.94,4.96 -1.84,2.87 -3.7,0.58 -5.7,-2.53 -8.45,-4.88 -0.24,-0.2 -0.57,-0.68 -0.29,-1 z",CL:"m 276.37,385.59 c -0.05,-1.26 1.39,-0.84 0.65,-1.59 1.59,0.13 5.04,-1.84 4.57,1.54 0.28,3.88 0.23,5.47 -3.52,4.19 -0.61,-0.05 -2.89,0.29 -1.99,-0.31 -1.32,-0.12 -2.45,0.16 -3.87,-0.54 0.81,0.32 2.1,-0.39 3.66,-0.26 -1.03,0.77 3.05,0.44 0.34,-0.18 -2.36,-1.03 2.7,0.75 2.19,0 1.41,0.25 1.64,1.19 1.82,0.15 -1.76,-0.03 -4.75,-1.9 -1.19,-2.27 1.7,-1.56 -2.52,0.22 -2.66,-0.71 z m 0.26,-98.36 c 2.02,0.25 1.75,-4.14 3.23,-1.04 0.67,2.13 2.81,4.91 1.41,6.76 2.08,1.77 0.96,7.45 4.58,7.14 1.13,3.77 -4.88,3.71 -4.01,6.44 -0.2,1.91 0.59,4.02 -0.02,5.39 -2.29,1.49 -4.86,5.58 -3.56,8.57 -1.57,0.99 -2.42,4.09 -1.59,5.24 0.87,2.47 1.44,3.61 1.51,6.1 -2.23,1.13 -1.01,4.3 -2.21,5.7 -2.53,1.3 -1.36,4.75 -0.67,6.83 -2.18,1.13 -2.17,3.47 -2.36,4.99 -1.25,1.89 0.52,4.42 -1.11,5.57 0.01,2.29 1.19,2.52 1.22,4.43 -1.71,1.55 3.78,1.37 0.43,2.25 -3.22,-0.51 2.82,1.52 -0.57,2.37 0.34,1.34 -0.01,1.58 0.07,3.02 -0.61,1.46 -2.67,2.58 -1.64,4.61 -0.92,1.62 -4.95,3.2 -2.6,5.74 -0.14,2.05 3.62,-0.36 2.65,2.43 -0.47,3.82 6.22,1.32 8.79,2.7 3.36,0.62 -1.14,-0.41 -2.06,0.91 -2.43,0.02 -3.41,1.26 -3.24,3.58 -1.39,1.23 -5.33,-1.82 -3.06,-1.16 -0.68,0.34 1.72,-0.97 0.55,0.44 1.42,-0.91 3.15,-3.11 0.31,-1.56 -2.07,0.42 -1.23,0.09 -2.01,0.85 1.44,1.92 -4.32,-0.94 -0.61,-0.22 -2.27,-2.3 6.73,-1.24 1.42,-1.92 -1.04,0.64 -0.6,-0.68 -1.92,0.43 1.36,-0.03 -1.56,1.89 -1.2,0.55 0.06,-0.49 1.71,-1.5 0.13,-0.76 -1.35,1.4 -0.79,-1.71 -0.7,-1.26 2.17,0.51 1.54,-0.41 2.66,-0.09 -0.44,3.05 1.46,-2.61 -1.65,-1.74 2.46,0.16 1.67,1.45 -0.24,0.34 1.61,1.45 -0.76,0.42 -0.01,0.85 -0.55,0.96 -1.01,-0.22 -0.6,-0.65 -2.03,-0.12 -0.19,-0.88 -0.41,-0.81 0.36,-0.88 -2.69,-0.9 -0.39,-1.76 0.93,-0.49 0.61,-1.34 -0.61,0.07 -1.22,-1.17 1.08,-0.85 -0.96,-1.29 -2.23,-1.65 3.6,0.7 0.23,-0.81 0.76,-0.65 1.68,0.2 0.18,-0.78 0.06,-0.26 0.08,-1.16 1.53,-0.22 -2.34,-0.58 0.83,-3.46 -1.59,-0.6 -1.78,-1.82 1.42,-2.25 -0.36,-2.59 3.47,0.33 -2.49,-2.26 0.43,-1.15 -0.1,-1.19 4.23,1.11 1.71,-0.74 2.06,1.56 -0.88,-2.02 -0.68,-0.25 -2.66,0.18 -2.16,-0.88 -1.02,-0.42 1.18,0.03 -2.05,-1.18 0.26,-1.08 0.88,-0.99 -0.62,0.01 0.16,-0.9 -1.58,-1.09 -1.28,0.64 -2.57,-0.96 0.74,-0.86 -2.96,0.44 -1.14,0.62 -1.94,0.01 1.62,-1.89 1.86,-2.17 -1.22,0 -0.43,-0.85 0.83,-0.49 1.36,-0.61 1.81,1.23 -0.1,0.86 2.31,-0.08 1.35,0.39 1.99,0.86 0.77,-0.64 1.44,-1.95 0.22,-0.6 0.29,-1.86 1.88,-1.77 0.37,-1.87 0.92,-1.46 3.32,-0.04 0.33,-1.04 0.62,-1.23 4.04,-2.35 0.68,-2.97 0.43,-1.15 0.86,-1.04 0.37,-2.49 1.07,-1.47 0.63,-2.47 1.12,-3.09 1.33,1.3 0.21,-1.02 -0.45,-1.02 2.67,-1.44 0.6,-0.53 -0.81,-0.73 -2.55,2.03 -3.01,-3.42 -0.91,-4.9 1.79,-2.07 -1.93,-6.4 0.04,-7.44 1.43,-1.34 1.51,-3.41 3.03,-5.53 1.21,-3.42 2.91,-6.61 2.07,-10.33 -1.29,-2.93 2.03,-4.84 0.3,-7.64 2.01,-2.99 1.42,-7.08 2.93,-10.02 0.06,-3.01 -0.89,-5.37 0.45,-7.38 0.71,-3.26 0.45,-6.62 -0.05,-9.87 -0.4,-0.74 0.29,-1.76 -0.36,-2.34 z m -6.78,74.23 c 0.56,-1.88 -2.75,-0.01 -1.07,0.52 l 0.56,-0.17 z m -1.96,-8.14 c -1.8,-0.98 -3.3,4.48 -0.93,4.4 1.56,-1.42 -0.04,-2.28 1.05,-3.75 z m -3.57,22.95 c 1.89,-0.19 0.91,-1.17 0.82,-3.19 -1.3,-1.25 -0.81,0.99 -1.43,1.06 -0.68,0.31 -1.56,0.59 0.28,1.59 0.73,-3 0.68,0.64 0.33,0.55 z m 0.61,-3.67 c 0.49,-1.39 -0.84,-1.39 -0.53,-0.75 -1.24,0.1 -0.13,0.98 0.53,0.75 z m -1.6,0.03 c 0.75,-2.37 -2.08,-1.32 -0.39,-0.87 0.23,0.25 -0.02,0.69 0.39,0.87 z m 0.53,7.83 c 1.72,0.13 0.88,-1.72 0,0 z m 2.21,-1.79 c 0.43,-1.09 -2.4,-1.19 0,0 z m -1.46,0.76 c 3.02,-1.15 -1.99,-0.87 0,0 z m -1.63,-0.91 c 1.5,-1.81 -1.25,-0.65 0,0 z m 0.8,-1.39 c 0.78,-1.24 -0.56,-0.17 -0.87,-0.44 -0.26,0.69 0.43,0.93 0.87,0.44 z m 4.34,8.49 c 1.83,0.02 -3.39,-1.61 -3.22,-1.3 0.98,0.8 2.22,0.74 3.22,1.3 z m 9.71,5.08 c 1.02,0.7 2.43,1.2 1.75,0.05 1.18,0.28 3.17,1.85 3.46,0.99 -1.07,-0.7 -2.24,-0.5 -0.26,-0.61 -1.89,-0.56 -2.83,-0.44 -0.48,-0.73 -1.32,-0.58 -3.38,0.33 -4.47,0.31 z m -1.47,0.22 c 1.86,-0.63 -1.32,-0.36 0.45,-0.87 -1.44,0.44 -2.68,-0.18 -0.45,0.87 z m -0.07,-2.73 c 0.23,-1.03 0.35,-2.08 -1.05,-1 0.04,0.55 0.53,0.94 1.05,1 z m -2.1,-0.61 c -3.24,-0.16 2.74,1.87 0,0 z m -1.09,-0.2 c -2.37,-0.68 -0.37,1.88 -0.39,0.54 0.69,0.25 0.1,-0.34 0.39,-0.54 z m -3.2,0.54 c 3.23,-0.71 0.16,-1.7 -1.01,-2 -1.43,0.42 1.49,0.88 -0.77,0.48 -1.27,1.1 3.85,0.62 1.21,1.4 z m 16.09,2.7 c -1.18,-1.36 -5.24,-0.27 -2.03,0.39 0.09,-0.66 1.54,0.87 2.03,-0.39 z",MA:"m 435.34,157.82 c 3.51,-1.58 8.67,-3.15 9.9,-7.6 -1.92,-2.47 1.17,-6.42 3.2,-8.19 3.79,-0.7 6.09,-3.66 7.2,-7.08 2.19,-0.65 3.38,3 6.18,1.58 2.19,-0.14 3.29,-0.27 5.09,1.74 -0.08,1.96 1.14,5.01 1.62,6.42 -0.43,1.66 -4.65,-0.6 -6,1.76 -2.79,-0.04 0.86,2.65 -2.45,2.75 -2.89,1.88 -5.76,2.93 -8.95,3.73 -2.19,0.78 -3.99,2.27 -3.3,4.82 -4.14,0.35 -8.33,0.06 -12.49,0.08 z",LR:"m 440.03,216.14 c 1.83,-1.24 2.39,-4.03 4.44,-4.43 2.22,0.14 0.61,5.84 3.27,2.46 2.46,0.33 -1.11,4.3 2.27,3.96 2.12,1.34 1.66,7.23 -1.53,4.32 -3.12,-1.85 -5.71,-4.25 -8.45,-6.31 z",NL:"m 482.62,90.46 c 1.95,0.97 -0.52,-0.48 2.14,-0.3 1.14,-0.06 -3.78,-0.2 -0.57,-1.79 0.55,-2.7 8.79,-4.99 7.11,-0.85 -1.71,0.01 0.69,1.12 -0.61,1.98 -2.17,0.18 -2.33,0.02 -1.76,1.94 0.3,1.35 -2.06,2.03 -0.81,0.3 -2.1,-1.48 -4.93,-0.13 -6.42,-1.21 l 0.29,-0.07 z",CF:"m 511.86,218.62 c 1.77,-2.21 2.85,-4.56 5.73,-5.01 1.22,1.22 4.09,-0.82 6.16,-0.93 1.69,-1.38 -0.16,-2.94 3.02,-2.46 3.37,-0.04 4.4,-3.88 6.79,-5.2 3.27,-1.11 4.41,4.22 3.67,5.65 0.28,0.52 2.21,0.5 2.35,1.77 2.68,0.6 2.73,3.31 5.43,4.47 -0.45,1.76 3.81,3.45 2.66,4.3 -2.17,0.78 -4.86,-1.52 -6.36,0.42 -2.09,-0.85 -4.18,1.49 -6.17,0.83 -1.28,2.77 -6.09,0.99 -7.68,-0.78 -2.93,-1.92 -4.44,3.1 -4.31,3.91 -2.96,-0.58 -6.01,-0.26 -6.14,3.39 -0.3,0.07 -0.9,-2.78 -2.47,-3.26 -1.22,-2.01 -2.17,-4.62 -2.58,-6.92 z",SK:"m 518.91,98.85 c 2.51,-0.63 5.04,-3.35 7.51,-2.21 2.17,0.85 5.54,-0.96 7.91,1.06 -1.09,3.67 -5.16,-0.25 -7.14,2.45 -2.96,-0.08 -5.13,2.79 -8.14,-0.1 -0.1,-0.39 0.02,-0.81 -0.14,-1.2 z",LT:"m 530.27,77.87 c 3.05,-1.8 6.58,-0.36 9.84,-0.7 1.85,-0.36 7.4,2.36 5.18,3.35 -2.43,0.07 -1.76,2.97 -2.5,2.64 -2.47,0.5 -5.42,1.45 -7.68,-0.54 0.63,-3.74 -5.3,-0.28 -4.84,-4.74 z",ZW:"m 541.96,285.73 c 2.74,0.77 5.77,1.04 7.14,-2.41 3.04,-0.69 3.3,-4.86 7.14,-3.72 1.14,1.68 5.13,2 7.14,3.02 -0.44,2.08 0.95,4.75 -0.74,6.34 1.42,1.95 -0.04,3.83 -0.8,6.08 -0.79,2.91 -4.6,4.41 -7.82,3.01 -1.93,-1.33 -5.66,-1.22 -5.41,-4.73 -2.57,-1.13 -5.49,-4.18 -6.64,-7.58 z",LK:"m 693.19,214.25 c -1.23,4.36 3.86,6.27 5.71,2.37 0.06,-3.36 -1.74,-4.91 -3.65,-7.84 -2.19,-1.63 0.81,0.69 -1.39,-0.75 -0.85,0.54 3.19,1.28 0.23,0.77 -0.38,1.5 -0.88,4.98 -1.19,3.97 -0.03,0.52 0.24,0.98 0.29,1.48 z",IL:"m 566.95,147.85 c 1.69,-1.7 1.42,-5.7 3.8,-5.71 1.34,3.02 -2.94,1.31 -1.6,3.99 0.15,0.56 -1.06,2.06 1.16,0.9 -0.44,1.53 -1.37,8.03 -2.13,3.85 -0.53,-0.96 -0.8,-2.03 -1.22,-3.03 z",LA:"m 749.45,178.39 c 1.02,-1.22 1.78,-2.83 3.12,-3.15 1.11,2.39 2.6,-0.56 1.04,-2.12 1.25,-2.09 3.1,1.91 3.89,1.63 -0.97,2.9 2.55,2.37 3.97,2.31 0.59,1.1 0.04,1.11 1.49,2.11 -0.53,1.53 -4.67,1.18 -1.64,2.82 2.73,0.82 3.04,3.56 5.51,5.17 0.43,2.43 3.48,2.66 2.68,4.57 2.36,1.37 -0.81,4.58 -2.32,2.97 -1.92,0.35 -0.3,2.73 -2.87,1.18 -0.88,-0.47 0.94,-2.86 0.23,-3.61 0.57,-1.96 -3.33,-2.69 -2.12,-5.69 -1.55,-2.5 -3.98,-3.46 -5.69,-1.23 -1.67,-3 -5.88,3.86 -4.29,-0.92 0.59,-2.17 0.5,-4.24 -2.02,-4.08 0.79,-1.19 -0.1,-2.42 -0.98,-1.97 z",KP:"m 816.84,122.85 c 2.59,-1.48 5.26,-2.72 7.31,-4.69 0.86,1.47 5.12,1.43 3.03,-0.63 2.63,0.4 4.45,-1.79 5.8,-2.67 2.59,2.04 0.14,1.73 -1.31,3.76 0.92,3.33 -4.08,3.75 -6.09,5.33 -1.11,1.84 1.86,1.45 2.29,3.44 -1.5,1.01 -3.8,-0.13 -4.84,1.89 -1.84,0.14 -2.7,-0.88 -3.21,0.14 0.39,-0.52 -1.55,-0.36 -0.73,-0.93 -2.55,0.34 0.91,-2.31 1.1,-1.75 -2.6,0.02 1.52,-3.15 -1.87,-2.73 0.01,0.5 -1.79,-0.5 -1.45,-1.17 z",GR:"m 545.17,126.04 c -1.44,-0.12 -1.9,-1.54 0.25,-0.61 0.92,0.89 -0.13,0.09 -0.25,0.61 z m -6.34,10.56 c -3.34,-0.05 -0.37,-2.12 0.68,-0.43 1.73,-0.29 5.08,0.32 4.88,0.94 -2.12,0.27 -3.69,0.25 -5.56,-0.51 z m -1.48,-9.18 c -0.69,-1.04 -2.82,-1.58 -0.46,-1.36 1.55,0.16 4.59,4.29 1.65,1.57 -0.35,-0.18 -0.9,0.16 -1.19,-0.22 z m -8.51,0.26 c 2.24,1.03 -1.41,1.08 0,0 z m -1.41,-3.66 c 2.05,-0.05 2.05,-4.11 4.6,-3.45 2.38,-1.45 5.12,-0.88 7.76,-1.89 1.35,1.16 4.93,1.21 4.87,-0.43 2.5,0.73 -0.92,4.05 -2.73,2.24 -1.49,-0.14 -5.95,0.56 -2.92,1.66 1.81,1.58 -3.07,-1.43 -0.56,0.99 -0.98,-0.49 -2.57,-1.08 -0.83,0.16 -1.52,-0.38 -3.14,-3.48 -2.86,-0.2 1.16,1.09 2.41,3.54 0.78,1.83 -0.6,0.79 1.08,1.42 -0.98,1.31 1.52,0.94 4.64,0.97 4.02,3.5 -1.81,-1.95 -3.74,-0.36 -1.59,0.63 -1.18,0.51 -2.83,-1.15 -1.28,1.18 1.3,3.13 -1.11,-0.93 -1.39,1.49 -0.75,-1.26 -1.3,-1.77 -2.09,-1.03 0.25,-1.99 -3.16,-3.34 0.09,-4.11 1.16,0.66 5.81,1.14 2.4,-0.11 -1.57,-0.44 -4.82,0.91 -5.22,-1.74 2.97,0.28 -1.98,-0.52 -2.05,-2.04 z",TM:"m 617.39,118.21 c 2.91,-3.16 6.68,-0.85 9.06,1.25 2,-0.16 4.6,1 3.87,-1.84 1.02,-1.07 4.14,-1.36 3.4,-1.45 -0.27,-1.6 4.14,0.52 4.74,1.36 -0.37,2.12 2.58,2.39 4.69,2.11 1.64,3.69 4.97,5.76 8.74,7.21 1.42,1.64 6.38,0.8 4.33,3.74 -2.75,-1.31 -4.57,1.15 -5.97,3.21 -3.12,0.45 -2.77,2.05 -5.58,2.97 -1.73,-1.19 -3.96,-1.24 -3.1,-4.16 -3.28,0.38 -4.88,-3.4 -8.24,-3.13 -2.82,-1.64 -5.28,-1.49 -8.31,-0.63 -1.37,1.94 -4.87,2.62 -3.74,-0.96 1.59,-2.44 -3.48,-3.29 -1.37,-3.57 1.62,-0.1 -0.89,-1.71 -1.74,-1.3 0.12,-1.81 1.08,-3.34 -0.79,-4.81 z",EC:"m 247.34,241.79 c 0.56,-1.35 0.41,-4.3 1.59,-4.54 -0.23,-1.3 1.79,-2.25 0.9,-3.85 2.19,-0.37 3.44,-2.62 5.64,-0.29 1.79,0.8 3.64,2.47 5.35,1.47 1.38,1.31 2.48,1.02 1.69,1.84 2.06,2.8 -2.75,6.82 -6.09,7.42 -2.67,0.7 -1.82,6.03 -4.71,5.36 -0.68,-1.98 -4.7,-0.73 -2.12,-2.81 -0.74,-1.59 1.65,-2.89 1.07,-5.11 -0.88,2.01 -0.14,0.99 -1.14,1.43 -0.11,1.34 -1.7,-0.51 -2.16,-0.92 z m 2.63,1.34 c -1.83,1.11 0.51,0.96 0,0 z m -32.07,-7.51 c 2.44,0.88 -1.18,3.78 2,2.57 0.3,-0.63 -1.01,-3.21 -2,-2.57 z",BJ:"m 474.11,205.49 c 0.64,-2.71 4.8,-1.26 4.62,-4.35 2.63,-0.84 4.19,3.7 3.22,5.34 -0.27,2.61 -3.28,3.79 -2.53,6.89 0.52,2.5 0.56,5.54 -3,4.76 -0.07,-2.01 0.47,-6.02 -0.42,-8.64 0.25,-2.12 -1.84,-2.22 -1.88,-4 z",SI:"m 509.32,106.07 c 0.74,-0.2 -0.9,-1.4 0.83,-1.36 2.87,1.35 6.07,-2.33 7.79,0.18 -2.08,-0.27 -3.04,2.13 -3.97,2.88 -1.55,-1.27 -4.75,1.19 -3.91,-0.87 -0.71,-0.11 -0.23,-0.5 -0.75,-0.83 z",NO:"m 485.82,62.84 c 1.26,-0.31 3.08,-0.04 0.79,-0.26 1.08,-0.49 -1.94,-0.11 0.31,-0.42 -2.73,-0.44 1.77,-0.61 2.54,-0.58 2.96,-0.13 -3.4,0.05 -2.8,-0.32 0.18,-0.21 -1.19,-1.24 0.51,-0.14 -0.08,-1.13 3.05,0.62 1.67,-0.79 1.3,0.53 1.37,-1.1 2.56,0.3 -0.34,0.37 1.88,-0.53 -0.51,-0.78 -2.77,-0.03 0.17,-0 -0.91,-0.23 -1.15,-0.92 4.72,0.65 2.98,-0.4 2.37,-0.32 1.02,-0.03 -0.53,-0.15 2.37,-0.31 -2.71,0.23 -0.41,-0.24 -1.95,-1.52 6.06,1.08 2.37,-0.39 -0.46,-0.81 2.72,0.79 0.78,-0.16 -0.54,-0.18 0.32,-0.58 1.65,-0.55 -2.26,-0.71 3.37,-0.25 0.63,-0.7 2.72,-0.69 1.59,0.96 3.94,0.08 1.32,-0.25 -0.46,-0.58 2.03,-0.94 -0.86,-0.59 0.82,-0.83 -0.41,-0.8 -2.29,0.72 0.68,0.45 -1.89,1.28 -2.18,0.93 -1.04,-0.98 -1.87,-0.36 -2,0.03 2.16,-0.67 0.46,-0.77 1.65,-2.29 5.41,-0.44 4.07,-1.96 1.06,-0.19 0.73,-0.91 2.73,-0.54 -1.33,-0.24 -4.9,0.82 -2.23,0 -1.27,-0.01 0.67,-0.28 0.88,-0.6 1.91,-0.35 -0.95,0.49 1.42,0.09 2.26,-0.94 -0.76,0.24 -0.5,-0.61 -1.44,-0.76 2.85,0 0.29,-1.01 0.56,0.15 1.66,-1.02 1.99,-0.79 -3.53,-0.71 5.72,-0.93 1.35,-0.94 -2.63,0.49 0.03,-0.21 -0.97,-0.15 -2.11,-0.8 3.27,-0.55 -0.19,-0.97 1.21,-0.03 -0.25,-0.25 1.69,-0.19 -1.98,-0.16 1.79,-0.11 -0.69,-0.54 1.29,-0.53 3.4,-0 2.48,-0.74 1.64,-0.23 4.96,0.02 1.35,-0.35 -2.63,0.16 0.76,-0.49 -0.08,-0.73 0.18,0.17 3.04,0.75 2.27,-0.03 -3.82,0.08 2.74,-0.95 -1.72,-0.34 -2.44,0.43 1.74,-0.48 -0.75,-0.43 0.35,-0.01 5.19,-0.57 1.31,-0.54 0.83,-0.93 3.01,0.03 2.66,0.31 -0.19,-0.22 2.1,-0.43 0.06,-0.61 0.73,-0.28 -1.14,-0.71 1.36,-0.05 -2.96,-1.35 2.82,0.09 2.15,-0.69 2.17,-0.11 -5.74,0.1 -1.42,-0.83 2.36,0.29 -0.05,-0.37 1.87,-0.17 -1.1,-0.4 1.91,-2.29 2.33,-1.5 2.88,0.47 -2.03,-0.96 1.02,-0.36 2.6,0.67 0.2,0.31 0.52,-0.27 -0.36,0.29 -0.21,-1.03 1.65,-0.76 -0.92,2.87 1.93,-2.06 1.63,0.51 -2.83,1.89 2.37,-0.36 0.96,0.08 0.67,-1.45 1.02,-0.35 2.54,-0.88 2.11,1.14 1.05,-0.53 0.67,-0.46 -4.2,-0.81 2.66,-0.25 1.5,-0.5 1.56,-0.3 1.82,0.72 0.1,0.55 1.62,-0.21 3.8,0.73 2.37,-0.46 0.51,-0.18 3.93,-1.1 3.42,-1.5 -0.84,-0.62 4.06,-0.76 3.55,-0.03 -2,-0.06 -2.62,3.07 -0.8,1.13 1.27,-1.29 4.18,-1.93 3.05,-0.85 0.08,1.6 1.9,-0.07 2.23,-0.36 1.63,-0.17 -1.82,-0.38 0.53,-0.66 1.45,-0.88 4.14,0.8 0.91,0.71 1.69,0.19 -1.86,0.61 0.84,0.26 0.39,0.46 -2.03,0.69 0.52,0.55 -1.21,1.59 2.05,-2.74 2.68,-0.49 2.12,-0.11 2.92,0.19 4.66,0.99 -1.47,1.05 -6.54,0.26 -5.78,0.68 2.79,0.32 1.98,1.46 4.58,0.78 2.52,0.96 -1.66,0.18 -2.23,1.2 -1.23,0.67 -3.88,1.43 -1.48,-0.43 -2.59,-1.43 -7.34,-2.38 -9.52,0.4 -0.81,3.51 -5.16,0.84 -7.65,2.03 -2.68,-0.31 -4.71,-2.68 -6.62,-1.11 -2.13,-0.47 -0.16,0.84 -1.93,1.38 1.27,1.67 -5.73,-1.77 -5.14,1.27 -2.3,-0.22 -6.17,1.15 -4.97,3.04 -1.87,1.2 -3.41,2.53 -4.9,2.95 1.17,2.75 -4.41,3.41 -1.14,4.9 -2.33,0.59 -6.57,0.68 -5.72,4.14 0.71,1.64 -0.32,3.59 2.18,3.87 -0.48,1.36 -2.55,1.05 -0.79,2.71 -0.75,1.79 -3.15,1.78 -2.61,4.23 -1.65,-0.06 -3.3,-1.91 -2.68,-2.73 -0.44,1.06 -1.26,1.03 -0.85,1.82 -2.91,0.76 -2.77,1.61 -6.29,3.04 -1.51,0.83 -4.6,0.12 -4,-0.19 -3.57,-0.14 -3.22,-2.92 -1.57,-1.96 3.17,-0.69 -1.7,0.39 -0.07,-0.73 2.73,-0.65 -2.07,0.06 1.27,-1.03 -1.4,0.45 -2.04,0.14 -1.83,0.63 -1,-0.98 -1.25,1.04 -1.45,-0.77 0.61,0.23 -0.14,0.15 1.61,-0.14 -0.48,-0.38 1.39,-0.2 -0.64,-0.45 1.16,-0.92 2.5,-1.84 2.68,-1.25 2.87,-2 -2.26,0.61 -2.59,0.33 0.21,-0.74 -2.15,0.38 -1.05,-1.04 1.41,0.37 0.99,-0.89 -0.44,-0.22 -1.36,-1.08 2.3,-0.14 -0.5,-0.98 -0.02,-0.36 4.94,-1.06 5.19,0.03 0.68,-0.38 2.26,-0.56 1.62,-1.31 0.43,-0.23 -1.2,1.23 -1.35,0.52 -0.78,-0.42 -6.28,1.02 -4.57,-0.44 1.71,-0.1 -0.99,0.12 -0.92,-0.13 z m 58.18,-26.95 c 1.4,-0.42 -3.26,-0.53 -0.61,0.12 z m -7.07,0.64 c -1.13,-0.1 -1.93,0.41 -4.02,0.38 -1.04,0.42 3.23,0.58 4.02,-0.38 z m -12.74,3.08 c 0.69,-0.98 -1.04,0.02 -1.39,0.06 0.27,-0.41 -1.24,1.38 1.39,-0.06 z m -5.05,1.12 c 0.92,-0.07 -1.34,0.93 1.02,0.37 3.71,-0.07 0.34,-1.81 -0.11,-0.84 1.43,0.21 -2.1,-0.12 -0.91,0.47 z m -4.35,1.58 c -0.36,0.38 -1.74,1.62 0.24,0.71 -0.45,1.34 5.44,-1.86 1.36,-0.69 -0.61,1.24 0,-1.89 -1.16,-0.11 l 0.23,0.1 z m -1.49,0.33 c 3.52,-0.83 -1.42,-1.19 -0.91,-0.12 1.28,-0.2 1.46,-0.52 0.91,0.12 z m -3.59,1.17 c 0.03,0.68 2.78,-0.85 0.05,-0.35 0.45,0.42 -0.75,0.04 -0.05,0.35 z m 20,-26.23 c 1.3,0.65 6.35,-1.22 4.36,0.4 1.8,0.27 5.88,-1.01 6.15,-1.4 -0.88,-0.35 -5.46,0.11 -3.2,-0.94 -1.86,-0.19 -5.96,-0.41 -6.72,0.29 2.63,0.3 0.29,1.07 -0.6,1.64 z m -6.29,-6.99 c -3.2,0.5 3.52,1.05 4.83,0.56 1.93,-0.27 7.79,0.02 2.96,0.31 -1.05,-0.01 -3.58,-0.05 -1.09,0.23 -1.45,-0.02 -5.49,-0.27 -2.02,0.45 3.57,0.43 6.3,-0.3 8.6,0.78 3.9,-0.08 6.43,-0.98 9.59,-1.82 2.52,-1.37 -3.26,-1 -4.41,-1.29 -3,-0.64 -3.17,0.19 -6.22,0.31 1.44,-1.86 -2.02,-0.77 -2.25,0.49 -1.74,-0.8 -1.66,-0.54 -4.15,-0.9 -1.83,-0.94 -3.16,-0.83 -2.83,0.02 -2.44,-0.38 -0.91,0.06 -1,0.53 -1.9,-0.54 -4.83,-0.28 -3.25,0.09 0.33,0.22 2.75,0.09 1.23,0.24 z m -20.56,2.17 c 1.43,0.89 1.1,-0.97 2.49,0 -2.27,0.33 1.45,0.91 -1.14,0.67 -3.69,0.56 6.63,1.44 1.44,1.39 1.84,1.17 7.55,0.74 6.04,-0.63 1.64,0.22 3.04,-0.75 2.54,0.55 2.3,0.1 4.53,-1.15 3.41,0.1 3.93,0.29 -3.43,-0.03 -4.61,0.87 -1.97,0.48 -2.26,-0.11 -3.99,0.62 3.09,1.01 6.56,-0.07 9.79,-0.05 0.24,1 -6.32,0.02 -5.92,0.87 1.73,-0.02 5.43,0.79 1.74,0.25 -1.88,-0.45 -6.66,0.09 -2.25,1.16 1.45,0.41 7.32,0.15 3.01,0.52 -1.21,0.56 4.19,1.65 3.74,0.18 1.03,-1.41 3.41,-2.01 4.35,-3.3 1.63,-0.1 0.89,-1.78 3.66,-1.56 1.49,0.13 6.64,-0.54 2.61,-0.84 -2.92,-0.48 -5.6,-0.41 -6.96,-1.93 -0.79,0.3 -3.04,0.67 -1.18,-0.4 -3.75,-1.72 -6.96,10e-4 -4.33,2.1 -1.55,-0.66 -5.56,-3.79 -6.28,-0.8 -1.96,-0.68 -2.15,-0.85 -4.29,-0.82 1.67,-0.05 6.21,-0.84 1.93,-0.68 -2.82,0.37 -4.57,-0.1 -6.49,0.69 0.91,-0.1 -1.62,0.23 0.7,1.03 z m 2.37,2.41 c -1.6,-0.8 -6.01,-2.2 -2.23,-0.37 0.19,0.02 3.62,1.26 2.23,0.37 z",MD:"m 545.77,99.88 c 2.16,-1.57 4.18,0.57 5.96,0.53 1.43,0.26 2.23,2.93 1.96,2.89 2.88,1.16 0.75,2.71 -0.8,1.4 -0.73,1.37 -3.41,5.07 -3.05,1.08 1.27,-2.27 -2.61,-4.76 -4.07,-5.9 z",LB:"m 569.26,142.56 c 0.93,-1.57 2.6,-6.43 4.07,-3.4 -0.89,1.41 -2.1,3.21 -4.07,3.4 z",NP:"m 694.09,154.14 c 0.44,-1.98 1.75,-3.37 3.45,-3.38 2.26,-2 5.02,3.31 7.74,2.77 1.15,2.11 3.46,1.87 4.73,2.94 1.1,0.54 2.98,0.38 5.37,0.84 1.99,-0.52 0.5,2.96 0.69,3.95 -2.76,0.44 -5.03,-0.77 -7.68,-0.9 -2.02,-2.49 -4.77,-1.25 -7.1,-2.59 -2.56,-0.64 -5.72,-2.18 -7.2,-3.63 z",ER:"m 572.96,193.02 c 1.46,-3.19 1.28,-6.2 5.2,-7.02 2.35,-1.7 2.05,5.09 3.76,6.81 0.36,0.9 0.66,-2.05 1.19,0.41 2.35,0.45 4.82,3.36 6.16,4.47 1.19,1.37 3.37,3.11 0.05,2.85 -2.3,-2.41 -4.43,-6.15 -8.29,-5.72 -0.95,-0.46 -2.9,0.78 -4,-1.06 -0.53,1.56 -0.73,2.6 -2.01,1.23 -1.79,1.42 -2.11,-0.3 -2.05,-1.98 z", -US:"m 39.4,68.72 c 2.12,0 5.18,-0.56 5.03,-1.27 -1.37,0.24 -4.62,-0.06 -5.03,1.27 z m -2.83,3.6 c 1.56,1.95 3.92,0.16 0.44,-0.05 z m 93.97,55.56 c -2.1,-1.68 -2.06,-4.52 -3.45,-6.43 1.29,-1.2 -0.18,-3.87 -0.51,-5.8 0.03,-2.69 1.18,-2.04 1.07,-4.81 0.64,-2.31 0.08,-5.98 2.07,-5.16 -1.83,-0.29 -2.6,-0.64 -1.21,-1.37 -2.05,-0.06 0.71,-1.42 -0.98,-0.82 -0.61,-1.79 -3.25,-5.33 0.69,-3.45 2.66,0.08 4.48,0.44 2.04,2.21 0.91,0.69 0.04,-1.37 1.69,-1.13 -0.1,1.81 -0.8,1.18 -1.33,2.02 1.29,0.4 2.83,-2.18 1.4,-3.55 -1.06,-0.23 0.75,-0.82 -0.68,-1.65 4.14,-0.26 8.43,-0.05 12.63,-0.12 21.22,0 42.45,0 63.67,0 0.91,-2.58 1.69,1.99 3.95,1.21 2.54,-0.61 3.95,0.79 6.01,1.34 1.49,-0.47 5.36,-0.02 5.2,0.42 -2.03,0.48 -5.87,2.25 -6.06,3.48 1.45,0.16 3.57,-1.22 3.22,0.14 2.55,0.31 6.38,-2.29 7.03,-0.57 2.84,1.09 5.88,0.96 9.07,0.22 -0.19,1.54 2.5,0.4 2.58,1.82 -0.46,1.52 -5.21,-0.99 -7.18,1.42 0.41,-1.34 -2.3,-0.14 -2.59,1.75 -1.95,1.22 -0.74,1.2 0.68,0.46 -0.91,2.73 -2.75,6.57 -0.09,8.99 5,-0.33 1.65,-5.17 3.02,-7.5 -0.02,-1.89 2.7,-2.63 2.22,-1.81 -0.32,1.22 1.23,-2.01 1.37,-1.35 0.55,-2.08 6.21,0.31 4.66,3 -1.91,0.84 -2,3.23 0.26,1.15 2.45,-1.08 2.74,4.46 0.99,4.09 -1.5,1.24 -2.29,2.82 0.36,2.78 -1.13,0.65 4.19,-0.03 5.39,-1.1 2.29,-0.52 5.75,-1.94 5.26,-3.92 2.22,-0.25 8.31,0.81 7.45,-2.17 0.96,-2.37 6.22,-3.12 9.36,-2.62 3.05,0.22 5.28,-0.17 7.03,-2.44 0.47,-2 2.25,-5.46 4.42,-3.82 3.84,-1.28 1.87,4.47 3.91,5.86 2.36,0.89 -1,1.61 -1.92,2.03 -1.09,-0.48 -1.77,0.7 -2.37,-0.16 -1.62,2.63 -2.84,0.88 -2.92,1.85 -0.57,-0.52 -2.76,2.76 -2.77,3.72 -0.5,1.65 3.15,2.57 2.26,1.27 1.44,2.18 -2.44,0.77 -2.26,1.3 -1.36,-0.01 -0.81,-0.79 -2.35,0.69 -1.85,-0.55 -5.89,1.74 -5.94,0.93 0.08,-1.86 -0.43,1.42 -0.64,1.54 1.07,0.31 0.31,2.04 -0.01,1.54 -0.9,2.28 -2.37,3.6 -3.89,0.92 2.26,-2.12 -1.68,0.74 0.9,2.02 1.32,1.16 -1.51,4.32 -2.25,4.43 1.62,-2.59 -0.02,-2.12 -0.66,-3.71 1.06,0.17 -0.7,-0.53 0.22,-0.82 -1.12,-0.18 2.34,-2.82 0.01,-1.31 -1.19,0.08 -0.93,0.86 -0.68,2.93 -1.98,-2.35 1.7,2.29 -1.13,-0.09 -2.04,0.95 0.34,-3.01 -1.33,-0.26 1.01,0.12 4.53,3.02 1.45,1.58 -0.68,-0.81 3.05,3 0.07,1.22 2.49,1.99 0.13,0.79 -1.37,0.35 2.31,1.44 3.97,0.8 4.64,4.16 -1.47,-3.21 -0.73,-1.15 -1.05,-1.15 -0.61,0.62 -1.78,0.54 -2.16,0.44 0.48,0.52 2.54,0.87 2.11,0.85 2.07,-0.15 -1.61,1.89 -1.63,1.17 -2.95,-1.31 2.28,1.44 -1.22,0.87 1.2,0.56 2.95,0.18 0.85,1.03 -3.03,-0.38 -2.37,2.59 -5.29,2.47 -1.86,1.13 -1.92,2.25 -3.66,3.11 -2.2,1.15 -1.84,0.89 -2.24,1.35 -0.94,1.12 -1.34,1.62 -1.66,2.36 -0.67,0.46 -0.34,3.97 0.86,5.96 1.3,1.56 1.85,5.71 0.94,2.06 -0.69,0.74 2.79,4.86 1.56,7.37 0.64,2.75 -3.75,2.38 -2.46,1.67 -1.2,-0.96 -3.12,-3.38 -2.47,-3.59 -0.87,0.38 -0.31,-1.65 -1.14,-0.72 -1.58,-0.99 -0.03,-3.68 -0.91,-2.8 -1.33,1.64 1.35,-4.09 -1.62,-4.2 -1.3,-3.9 -4.43,-0.17 -5.84,-1.39 -1,-1.43 -0.58,-0.62 -3.17,-1.53 2.66,-0.46 -3.13,0.42 -1.44,-0.27 -0.33,-0.07 -1.32,0.56 -1.31,0.44 -1.8,1.72 -0.82,-2.43 -2.08,-0.11 -2.05,0.26 -4.43,0.11 -5.98,0.62 1.83,0.12 1.44,0.49 2.23,0.54 1.48,0.19 -1.78,1.62 1.17,1.98 0.42,2.21 -1.79,-1.1 -2.75,-0.55 0.67,1.59 -3.11,0.78 -3.19,-0.15 -1.68,-1.66 -4.03,1.09 -5.44,-1.14 0.53,-0.41 -2.14,1.69 -1.44,-0.17 0.3,1.13 -4.08,2.03 -1.94,1.22 -0.53,-0.07 -2.13,-1.1 -1,0.52 -2.02,1.83 -3.54,2.46 -3.8,2.22 -1.35,-0.93 -0.48,0.94 -1.72,0.68 -1.48,0.86 -0.03,0.86 -1.96,1.41 2.07,1.13 -2.37,1.66 0.19,1.61 -1.17,1.85 2.48,5.04 -1.08,3.42 -4.63,0.08 -4.65,-5.18 -7.45,-7.69 -1.23,-3.51 -6.12,-3.84 -7.55,-0.56 -3.97,-0.74 -4.02,-5.1 -7.47,-6.6 -2.22,-2.17 -5.82,-1.46 -7.53,0.12 -3.92,0.02 -7.79,0.07 -11.46,-1.56 -4.73,-1.54 -6.98,-3.2 -12.12,-1.91 -1.1,-3.53 -5.01,-4.7 -8.26,-5.41 -1.69,-0.62 -1.71,-3.37 -3.9,-4.43 -1.73,-0.97 0.03,-2.81 -2.33,-3.35 -1.29,-2.34 0.66,-0.68 0.52,-1.17 0.25,-2.59 -2,0.3 -2.1,-1.48 0.73,0.67 -0.18,-0.45 -0.31,-0.41 z M 104.4,80.81 c 0.33,1.25 2.04,0.65 1.2,-0.13 -0.11,-0.61 -0.94,-0.94 -1.29,-1.14 -0.46,-0.02 2.06,0.19 -0.19,-1.1 -0.89,-0.84 -3.75,-1.73 -2.38,-0.68 -2.16,0.77 1.6,-0.15 0.42,1.52 1.05,-0.32 1.26,0.87 0.18,0.86 0.69,0.15 1.7,0.05 2.06,0.68 z m 0.1,-3.67 c -2.34,0.7 2.58,1.37 -0.2,0.35 l 0.21,-0.12 z m -3.29,-0.28 c 2.41,-0.24 -0.19,-1.07 1.79,-0.84 -2.17,-1.81 -3.48,-1.06 -1.79,0.84 z m -7.89,-4.1 c 1.12,1.18 2.64,1.85 1.61,0.35 1.83,1.35 4.07,0.41 1.03,-0.14 -1.4,-0.69 2.07,0.54 1.38,-0.34 -1.51,-0.94 -1.71,0.28 -2.26,-0.83 -2,-0.35 -1.08,1.03 -1.29,0.8 -0.66,-0.5 -1.34,-0.24 -0.47,0.15 z m 6.37,5.31 c -0.01,-0.77 1.79,-2.12 0.45,-1.96 -1.55,-1.36 -0.65,0.17 -0.73,1.05 0.26,-0.11 -0.42,0.78 0.28,0.91 z m -2.69,-1.66 c 0.4,-1.03 1.59,2.83 1.3,-0.2 -0.84,-2.96 -3.62,-2.69 -1.9,-0.7 -0.6,0.36 1.04,0.37 0.6,0.89 z M 0.07,57.92 c -0.4,-1.9 5.96,0.26 2.01,-0.03 -1.59,0.66 -0.57,0.63 -2.01,0.03 z M 20.67,80.91 c -1.34,-0.5 -1.14,0.58 -1.77,0.11 1.22,-0.83 4.87,-3.75 6.46,-2.6 0.35,0.4 2.71,0.41 1.19,-0.48 2.49,-2.14 5.1,-1.84 7.04,-4.16 2.94,1.25 -1.15,-2.12 2.2,-1.81 -3.58,-0.13 3.7,-4.04 -0.4,-1.86 -1.86,1.57 -4.72,-0.66 -2.12,-0.48 -2.6,-1.73 -1.27,3.51 -3.8,0.64 -1.82,-0.72 -4.13,-0.54 -6.71,0.48 -0.61,-0.02 1.89,-1.72 -0.33,-1.64 1.49,-1.38 -2.1,-3.72 -0.13,-4.18 -1.65,0.26 -0.43,2.97 -3.37,2.31 -2.26,0.51 -4.6,-1.57 -5.32,-2.26 0.81,-1.41 2.91,0.03 2.49,0.1 0.64,-0.75 3.62,0.47 1.28,-0.66 1.91,-0.57 -5.18,0.24 -3.21,-0.77 -1.12,-1.18 -0.77,0.65 -2.64,-0.74 1.02,-0.52 -2.33,-0.86 0.32,-0.9 -0.94,-0.56 2.18,-3.04 3.26,-2.16 -1.33,-0.27 1.28,-1.29 -0.53,-0.44 -0.88,-1.58 1.84,-0.74 0.88,-1.63 2.88,-0.58 1.38,1.17 3.97,0.24 1.37,-1.94 7.74,0.22 5.33,-3.41 -2.71,-0.4 2.89,-0.61 0.23,-1.59 -0.7,0.36 -2.98,0.31 -4.67,1.54 -0.62,-0.83 -2.2,-1.05 -0.89,-0.26 -2.9,-1.25 -7.61,1.13 -9.42,-1.3 -3.9,-1.57 3.76,-0.3 -0.4,-1.33 -2.08,0.34 -5.88,-1.45 -2.97,-0.96 1.88,-0.94 3.67,-1.4 5.92,-1.25 -2.66,-0.56 6.5,-2.5 4.29,-0.4 0.32,0.68 5.32,1.26 6.89,0.05 3.27,0.23 -1.44,-0.02 -1.57,-0.95 -3.08,-1.31 0.04,-0.48 1.12,0.3 1.36,0.43 6.18,0.27 2.37,-0.36 -0.73,0.47 -4.09,0.17 -2.23,-0.92 -2.45,-1.03 -4.35,0.94 -7.06,-1.7 -1.65,-1.27 -6.85,-1.73 -6.54,-2.33 2,-2.26 7.61,-1.14 9.13,-2.59 2.26,-3.26 5.43,-2.28 8.87,-3.57 -0.37,1.11 0.32,0.47 1.97,0.2 -3.35,0.42 -1.08,-1.3 -0.36,-0.75 4.21,1.35 7.14,-3.3 10.49,-0.78 -3.14,1.51 0.55,-0.02 1.71,-0.13 1.84,0.3 0.02,1.06 2.4,0.87 2.04,-1.23 7.42,0.57 4.26,0.68 2.93,0.38 5.81,0.31 9.47,0.19 3.54,0.82 7.19,0.78 10.75,1.26 3.13,0.64 5.69,-1.02 8.99,0.57 5.49,-0.45 2.11,5.94 3.07,9.47 0.65,5.66 -0.39,11.42 0.14,17.05 1.93,1.51 5.09,-0.95 5.87,1.33 2.45,1.47 5.47,4.28 7.14,0.99 3.25,-1.67 4.58,2.07 7.43,2.95 2.73,2.04 3.75,5.53 7.2,5.96 2.91,-0.05 4.17,3.88 1.06,4.73 -0.43,-0.14 -1.2,-0.77 0.58,-1.57 -1,1.16 -2.73,-0.19 -0.38,0.05 -1.54,-0.37 -0.74,-3.32 -2.81,-1.78 0.23,-0.76 -2.33,2.61 -1.14,-0.16 0.25,-1.29 2,-0.1 -0.16,-1 0.54,1.59 -2.17,-1.07 -0.19,-0.1 -1.39,-1.21 -1.71,-1.91 -3.82,-2.35 1.92,-0.47 -0.2,-0.37 -0.38,-1.4 2.86,1.19 -1.63,-1.11 1.31,-0.45 -2.03,-0.04 -1.48,-0.27 -2.63,-1.03 2.12,-1.23 -2.64,0.72 -2.56,-1.52 -1.39,-3.25 -1.37,-0.67 -0.21,1.37 -0.78,-0.06 -3.5,-0.43 -1.91,-1.68 -1.16,0.41 -3.82,-0.64 -3.15,0.07 1.24,0.19 3.5,1.5 1.06,1.36 -0.35,0.97 -4.8,-1.66 -5.23,-2.26 -1.97,0.64 -4.62,-2.08 -2.4,-1.81 -0.08,0.76 2.12,-0.31 -0.26,-0.45 -2.5,1.73 -4.67,-0.19 -6.26,0.02 -2.92,-0.98 -7.63,1.05 -8.66,-1.54 1.63,-1.19 -3.96,1.85 -2.33,-0.39 -1.99,0.22 -0.65,-0.38 -2.67,-0.13 3.29,-0.61 -2.25,-0.23 0.86,-1.07 -1.41,0.17 -3.88,0.35 -3.56,0.28 -0.9,1.2 -1.15,-0.87 -0.97,-0.57 -0.84,0.92 -2.12,-0.02 -0.89,0.61 -3.1,0.9 1.81,0.48 -1.22,1.4 3.19,-1.11 0.67,0.89 1.28,0.62 -0.36,1.79 -3.91,0.06 -3.91,1.21 -0.34,-0.05 -2.06,1.11 -2.04,0.69 -1.52,0.4 -2.66,1.72 -4.47,0.64 1.73,-0.82 3.58,-1.19 0.78,-0.91 -1.15,-0.94 2.13,-1.74 0.78,-2.95 1.59,-1.26 6.46,-0.37 6.08,-0.55 -2.11,0 -3.05,-1.57 -0.34,-1.59 -2.86,0.34 -5.31,0.77 -7.89,2.48 -0.42,2.05 -3.85,-0.08 -1.12,1.68 -1.77,0.87 -1.55,0.52 -3.27,1.61 -2.15,0.5 -0.73,0.95 1.12,1.69 -3.04,0.92 -1.89,2.07 -4.37,2.23 -2.09,1.25 -4.42,1.37 -4.9,2.88 -2.63,0.77 -2.93,1.18 -5.09,1.68 -0.74,0.59 1.6,0.19 0.03,1.2 0.26,-0.8 -2.29,0.3 -2.85,0.95 -0.77,-0.7 -2.72,0.37 -4.25,0.69 -2.45,0.36 1.11,-0.77 -1.44,-0.56 -0.68,2 -2.34,1.34 -2.73,1.35 0.35,0.11 0.1,0.54 -0.14,0.36 z m 26.99,-8.45 c 1.93,-0.85 3.42,-0.67 0.41,-1.24 -0.19,0.63 -2.14,0.53 -0.41,1.24 z m -2.98,3.04 c -0.67,1.22 1.57,-0.57 1.01,-0.48 1.9,-0.39 0.78,-0.73 2.64,-0.74 -2.75,-0.74 2.92,0.27 0.56,-1.22 -0.86,-0.19 -2.3,-0.51 -2.04,-0.25 -1.04,0.87 -2.82,-0.49 -1.47,0.92 -0.85,0.3 0.26,0.88 -1.18,-0.24 -3.45,-0.69 0.16,2.92 -0.51,1.47 -1.1,0.14 2.13,-0.32 0.99,0.54 z M 8.31,66.85 c 1.35,0.96 6.08,0.52 3.05,-1.04 -0.44,0.04 -5.38,0.22 -3.05,1.04 z m 17.8,12.93 c -1.12,1.49 1.56,0.1 0,0 z m 36.12,-12.93 c -0.52,1.89 3.71,-2.69 0.58,-0.16 z M 14.45,82.02 c 0.46,1.06 5.29,-0.53 4.55,-0.44 -0.89,-1.32 -3.62,-0.52 -4.55,0.44 z m -7.91,3.79 c 2.65,-0.21 5.15,-1.86 2.83,-2.13 -2.47,0.5 1.02,0.87 -1.38,1.1 1.05,0.67 -3.21,0.78 -1.44,1.03 z M 106.8,80.01 c 0.83,-0.58 0.7,-0.69 0.73,0.13 0.87,0.7 2,-1.92 -0.5,-1.82 0.13,0.39 -0.84,0.05 -0.23,1.69 z m -8.44,-6.19 c 1.08,-0.61 -0.74,2.49 1.17,0.71 1.96,0.03 -1.92,-3.63 0.88,-0.96 -0.99,-2.16 -4.33,-3.14 -2.05,0.25 z m 881.51,16.69 c -0.15,-1.56 3.37,-0.74 0,0 z m 16.68,-33.32 c -2,1.09 -3.57,-1.54 -0.74,-0.51 1.3,-0.8 4.62,0.32 2.98,0.96 -0.08,-0.58 -3.3,-0.68 -2.25,-0.45 z m -10,31.78 c -3.35,0.61 -0.63,0.14 1.28,0.03 0.08,-1.38 -0.06,-0.71 -1.28,-0.03 z m -8.59,1.35 c 2.07,-0.17 2.04,-1.3 0,0 z m -0.77,0.17 c 2.08,-1.56 -1.65,-0.91 0,0 z m -25.36,-3.25 c 3.52,-0.32 -2.58,-1.27 -0.45,-0.18 l 0.19,0.1 z M 40.21,182.25 c 3.59,-0.27 1.71,-4.09 -0.35,-3.14 -0.51,0.81 -0.55,2.33 0.35,3.14 z m -1.97,-4.52 c 3.2,-0.59 -2.98,-2.16 0,0 z M 227.78,102.47 c 1.48,-2.16 -4.13,2.08 0,0 z m 40.46,18.76 c -2.1,0.97 -1.64,-1 1.1,-0.77 1.53,-0.1 2.19,-1.01 1.41,0.06 4.61,-1.37 -1.64,1.1 -2.51,0.71 z",KZ:"m 635.48,106.92 c 0.85,0.58 0.85,1.1 1.4,0.98 -0.06,1.45 -2.75,-0.73 -1.37,-0.98 m -34.27,-8.19 c 1.87,-1.3 -0.29,-2.91 1.88,-4.33 0.77,-2.08 4.91,3.38 3.99,-0.56 -0.22,-1.67 5.03,-2.02 5.66,-3.84 2.5,1.26 3.81,-0.22 6.2,0.77 2.81,-0.79 4.79,4.77 4.62,1.32 2.54,2.56 4.49,-0.52 7.02,-0.04 1.56,0.8 3.36,-1.01 4.84,0.91 2.25,1.26 2.97,-1.12 5.37,0.13 4.15,-1.28 0.43,-2.62 -1.75,-3.35 -2.3,-0.64 4.55,-0.85 1.32,-2.37 0.62,-1.47 6.13,-0.31 2.29,-1.49 -2.87,-0.18 1.71,-1.17 -1.18,-0.99 -1.25,-1.99 3.47,-0.56 5.06,-1.45 2.11,-0.76 5.14,-0.05 6.85,-1.43 3.21,-0.32 6.7,-0.54 9,-1.89 1.36,-0.49 4.81,-0.11 6.37,0.69 0.83,1.68 -0.1,3.23 2.83,2.23 0.89,-0.92 1.32,1.48 1.88,0.55 -0.43,-0.19 5.25,-0.11 1.72,1.04 2.26,1.53 5.58,-1.12 8.38,-1.86 2.56,-0.65 0.87,0.29 0.7,0.89 3.19,1.36 5.73,3.73 7.7,6.55 0.84,2.51 2.64,3.17 3.86,1.09 1.75,1.5 4.49,2.17 7.47,0.82 2.83,1.04 4.28,4.83 7.79,4.13 1.77,-1.65 1.23,0.86 3.1,1.28 -2.05,-0.27 -2.18,2.4 -4.57,2.28 0.3,1.93 -0.29,4.78 -2.86,3.6 -2.35,0.22 -5.16,-1.75 -5.54,1.95 -1.78,1.45 -0.09,2.31 -0.4,3.3 -2.16,-0.69 -5.75,-0.33 -7.13,0.85 2.3,-0.22 0.81,3.12 2.35,4.62 -1.09,0.68 -1.69,0.94 -1.55,2.8 -3.23,-2.28 -7.38,-2.07 -11.24,-2.07 -2.43,1.3 -7.39,-3.12 -7.37,1.39 -2.92,-1.13 -6.59,-1.72 -8.04,1.07 -1.93,0.67 -5.37,1.79 -5.58,4.09 -1.83,-0.48 -1.91,-2.53 -4.49,-1.42 -1.63,-0.37 -1,-2.74 -2.74,-3.09 1.03,-2.29 -1.64,-3.09 -3.39,-4.11 -2.22,0.8 -4.63,-0.29 -6.91,0.43 -2.26,-0.9 -5.8,-3.2 -5.06,-5.65 -2.74,-0.28 -1.35,-0.29 -0.6,-0.7 -0.37,-0.54 0.4,-0.87 -1.21,-0.94 -0.69,-2.11 -0.39,2.46 -1.53,0.68 -1.61,-0.35 -2.77,1.73 -5.65,1.57 -5.86,-0.35 -2.77,6.16 -3.42,9.74 -0.79,4.85 -4.39,-3.89 -7.64,-1 -1.94,1.39 -3.02,1.34 -1.61,-1.03 0.38,-0.93 -3.8,-0.84 -3.84,-2.55 -0.49,-1.71 -5.18,-3.45 -1.17,-3.16 2.17,0.77 1.7,0.06 0.4,-0.86 0.58,-2.69 6.52,-0.37 5.37,-1.44 -0.75,-0.8 1.98,-4.85 -1.49,-4.23 -2.7,-0.43 -5.14,-0.39 -7.64,1.08 -0.69,-0.24 -2.03,1.33 -3.14,-0.52 3.21,0.38 -1.77,-4.38 -3.24,-2.86 -0.39,0.14 -1.02,-0.86 -0.39,-0.93 -0.16,-0.54 -0.54,-0.79 -1.12,-0.79 -0.49,-0.05 -0.8,-0.43 -0.51,-0.89 z",SZ:"m 557.32,310.75 c 1.26,2.66 4.82,1.23 3.68,-1.1 -1.1,-2.6 -3.34,-0.91 -3.68,1.1 z",UZ:"m 634.94,107.63 c 2.49,0.38 1.12,2.32 0.89,2.72 -1.58,0.97 -0.69,-0.89 -0.98,-0.64 1.01,-1.7 -0.67,0.41 0.09,-2.08 z m -7.78,1.44 c 1.67,-0.03 7.15,-2.58 6.73,-0.72 -1.66,2.59 1.05,2.25 2.03,3.18 0.97,0.87 3.67,-0.43 4.43,-1.27 2.09,2.38 4.37,3.47 7.5,2.72 2.67,0.25 5.12,-0.95 6.82,1.84 1.29,-0.11 -0.59,3.17 1.78,2.97 -0.51,3.95 4.61,0.47 4.78,3.45 1.45,-0.04 2.7,-3.27 5.3,-3.4 1.18,-1.19 4.61,-1.27 1.45,-0.08 -3.27,0.81 2.64,3.36 2.68,0.97 0.4,2 6,1.64 2.49,2.82 -1.22,0.94 -3.79,1.37 -6.13,0.45 2.54,-1.53 -0.46,-1.91 -1.88,-0.75 -1.91,-1.12 -0.27,2.46 -2.47,1.25 0.35,-0.03 0.17,2.48 -2.73,1.7 -3.17,1.35 2.25,1.41 0.93,3.28 1.64,1.79 -1.59,4.69 -3.64,3.06 -1.43,-0.27 0.25,-2.77 -2.4,-2.43 -3.38,-1.17 -7.08,-2.94 -9.81,-5.29 -0.68,-3.64 -3.37,-3.1 -6.13,-3.51 0.41,-2.53 -2.07,-2.53 -3.94,-3.75 -2.78,-0.67 0.42,1.77 -1.96,0.57 -0.85,1.13 -3.88,1.11 -2.72,3.36 -5.77,1.58 -1.93,-7.55 -3.09,-10.4 z",MN:"m 715.47,97.3 c 2.21,-1.36 4.58,-0.74 6.08,-2.4 2.56,-0.79 5.4,-2.44 7.78,-2.08 1.76,0.76 4.35,0.26 5.77,2.15 3.17,-0.53 7.33,2.18 9.44,-1.13 -2.94,-2.15 1.68,-5.81 3.83,-4.23 2.9,1.17 7.1,0.22 7.76,3.94 3.36,2.26 6.88,-0.66 10.43,0.34 3.49,0.12 5.14,3.12 8.55,3.04 3.6,0.7 7.68,-0.1 10.9,-1.49 3.04,-2.41 6.37,0.05 9.52,0 -1.05,1.66 -1.83,3.52 -3.06,5.03 1.09,1.42 4.03,0.25 5.64,0.57 2.34,-2.62 9.85,4.62 3.86,3.15 -3.45,-0.03 -6.71,0.89 -8.92,3.33 -3.61,-0.16 -6.31,3.89 -9.99,1.24 -2.64,0.18 -2.1,2.81 -0.75,3.9 -3.19,1.47 -5.91,4.43 -9.81,3.6 -3.87,-0.76 -7.6,2.86 -11.05,1.72 -3.6,0.51 -6.48,-2.04 -9.86,-2.18 -3.79,0.03 -7.61,-0.37 -11.42,-0.41 -2.84,-0.96 -3.18,-5.25 -6.83,-5.27 -2.75,-2.39 -8.44,0.46 -9.88,-3.04 2.35,-1.88 -0.41,-6.01 -2.61,-6.12 -1.91,-0.46 -5.47,-1.59 -5.22,-3.38 z",BT:"m 718.13,159.29 c 1.2,-1.82 3.41,-4.27 5.2,-2.5 2.47,-0.34 3.75,1.18 3.95,3.26 -3.04,-0.14 -6.66,1.35 -9.15,-0.76 z",NC:"m 927.62,293.83 c 1.71,1.96 4.72,3.95 6.28,4.45 3.03,0.03 -2.85,-2.47 -3.41,-3.67 -1.14,-0.87 -5.55,-4.18 -2.87,-0.78 z",FJ:"m 971.09,281.12 c -2.23,-0.19 -6.1,3.14 -2.02,1.59 1.31,0.61 2.75,-1.28 0.65,-0.15 0.53,-0.42 0.79,-1.08 1.36,-1.45 z m -5.31,8.4 c 2.08,-0.7 -0.46,-0.63 0,0 z m -1.54,-2.83 c 2.75,1.62 4.33,-1.95 1.39,-2.17 -1.03,-0.23 -3.15,1.74 -1.39,2.17 z",KW:"m 601,153.77 c 0.56,-1.79 3.68,-4.46 4.28,-1.29 -2.6,-0.55 3.37,3.63 -0.75,2.94 -1.1,-0.89 -1.42,-2.21 -3.53,-1.65 z",TL:"m 815.54,262.09 c 2.29,-1.66 1.58,1.43 0.01,-0.01 m 3.21,-0.55 c 0.81,0.53 5.95,-1.08 5.79,-2.43 -1.86,0.72 -6.82,-0.29 -5.79,2.43 z",BS:"m 267.62,176.8 c 0.17,-1.42 3.32,-0.79 0.79,-0.07 z m -8.13,-12.64 c -0.72,-1.44 2.35,2.69 1.06,1.5 0.67,-0.84 -0.6,-1.2 -1.06,-1.5 z m -1.78,-1.31 c -0.33,-0.79 0.35,-3.18 -2.04,-2.86 1.85,-0.39 2.76,1.35 2.04,2.86 z m -1.2,6.06 c 0.21,0.35 -1.09,-1.92 -0.14,-1.27 -0.3,0.42 1.04,-0.31 0.43,1.01 z m -1.5,-4.16 c 3.19,1.57 -1.35,3.32 -0.11,1.1 0.29,-0.29 0.18,-0.76 0.11,-1.1 z",VU:"m 938.23,281.65 c 1.61,-0.58 -1.85,-0.74 0,0 z m -1.79,0.66 c 2.46,-0.54 -2.57,-3.16 -0.26,-0.67 l 0.07,0.35 z m -1.18,-4.14 c -0.37,-0.81 -1.02,0.61 -1.56,-1.17 -0.6,1.6 1.95,4.29 1.56,1.17 z",FK:"m 371.78,390.14 c 1.36,-0.97 -1.93,-2.38 -3.9,-2.41 -3.05,-0.14 0.58,0.28 0.74,0.68 1.16,0.24 2.29,0.94 3.16,1.73 z m -65.58,-7.9 c 1.78,1.15 1.13,-0.67 2.93,-0.17 -1.32,-0.96 3.77,-0.56 2.02,-1.48 0.92,-0.53 -1.79,-0.21 -0.97,0.15 -0.75,-1.74 -2.42,0.03 -2.42,0.37 -0.86,-0.02 -0.93,1.02 -1.56,1.13 z m -1.55,-2.08 c 0.91,0.01 0.35,-0.34 0,0 z m 0.78,0.07 c -1.32,0.17 -2.19,-0.12 -0.23,0.83 -3,-0.14 0.37,0.45 -0.87,0.2 -0.08,1.01 -2.44,0.7 -0.81,1.17 1.24,-0.02 6.78,-3.02 1.91,-2.2 z",GM:"m 425.26,198.03 c 0.71,0.78 4.95,-0.82 1.67,-0.13 -2.57,-0.56 2.45,-0.38 3.36,-1.13 0.97,0.82 5.3,1.12 1.67,1.51 -2.03,-2.19 -5.77,2.16 -6.69,-0.26 z",QA:"m 612.64,164.51 c -0.22,-1.8 2.78,-3.37 2.25,0.05 0.69,2.01 -2.87,3.02 -2.25,-0.05 z",JM:"m 254.5,184.26 c 1.77,-2.44 8.32,1.83 4.21,0.87 -1.02,1.21 -2.73,-0.09 -4.21,-0.87 z",CY:"m 561.46,137.2 c 1.04,-0.9 5.64,-1.47 5.97,-1.65 -1.79,1.36 -1.58,1.89 -3.94,2.84 -0.7,-0.33 -1.76,-0.28 -2.03,-1.19 z",PR:"m 288.97,185.11 c -1.94,1.26 -5.5,-1.35 -2.16,-1.59 0.95,0.19 4.71,0.05 2.16,1.59 z",PS:"m 568.89,145.08 c 2.09,-3.37 1.99,4.04 -0.09,1.92 1.69,-1.65 -0.49,0.09 0.09,-1.92 z",BN:"m 788.31,222.72 c 1.27,-0.22 3.44,-2.27 1.95,0.11 0.51,2.62 -1.33,0.75 -1.95,-0.11 z",TT:"m 300.22,207.39 c 2.05,-0.48 0.12,-3.15 2.58,-1.96 0.31,2.2 -0.78,1.84 -2.58,1.96 z",PF:"m 57.69,285.59 c 1.46,0.8 -1.48,-1.8 -0.45,-0.06 z",WS:"m 991.64,273.63 c -1.72,1.32 3.38,0.32 0,0 z",LU:"m 487.81,95.39 c 0.65,-2.6 3.8,2.42 0.17,0.89 0.5,-0.17 -0.04,-0.74 -0.17,-0.89 z",KM:"m 592.41,269.2 c 0.31,-2.77 -1.68,-1.13 0,0 z",FO:"m 452.8,60.76 c -2.56,-1.32 1.36,1.68 0,0 0.91,0.61 0.44,-0.7 -0.34,-0.19 z",SS:"m 566.64,207.99 c -0.19,2.08 0.23,4.73 -2.7,4.14 -1.45,2.41 2.99,1.96 3.64,4.3 1.51,1.46 1.41,4.35 3.61,4.48 1.29,3.62 -5.24,-0.17 -6.05,3.95 -2.72,0.1 -4.39,0.87 -6.86,0.14 -1.77,2.62 -3.4,-4.33 -5.5,-1.69 -2.28,0.44 -5.15,-0.75 -5.45,-3.69 -2.8,-1.08 -2.37,-4.15 -5.49,-5.07 0.86,-2.33 -4.24,-1.45 -2.5,-3.64 1.26,-1.32 1.02,-3.42 2.14,-5.03 3.11,-1.81 2.65,4.17 5.98,2.03 1.8,0.07 3.66,2.2 4.99,-0.26 1.68,-0.25 2.29,-3.22 4.19,-0.41 2.39,0.9 4.63,-3.17 4.68,-5.07 -0.07,-1.62 -1.35,-1.85 0.96,-1.89 0.29,-1.86 2.27,-0.18 1.05,1.26 -0.23,2.66 2.99,4.66 2.5,6.51 l 0.51,0.04 z"}}}}),b}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.js deleted file mode 100644 index 2cbfd7c..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.js +++ /dev/null @@ -1,288 +0,0 @@ -/*! - * - * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) - * Requires Mapael - * - * Map of World by country - * Mercator projection - * - * @source http://www.amcharts.com/svg-maps/?map=world - * - * @deprecated : this map will be definitely moved to 'mapael-maps' repository starting from the next major release (3.0.0). - * You can use instead https://github.com/neveldo/mapael-maps/blob/master/world/world_countries_mercator.js - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery'), require('jquery-mapael')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery', 'mapael'], factory); - } else { - // Browser globals - factory(jQuery, jQuery.mapael); - } -}(function ($, Mapael) { - - "use strict"; - - $.extend(true, Mapael, { - maps: { - world_countries_mercator: { - /* - * map-specific constants - * (set by user) - */ - // Width of the map, in pixel - width: 1008.77, - // Height of the map, in pixel - height: 651.44, - // Longitude of the left side of the map, in degree - leftLongitude: -169.6, - // Longitude of the right side of the map, in degree - rightLongitude: 190.25, - // Latitude of the top of the map, in degree - topLatitude: 83.68, - // Latitude of the bottom of the map, in degree - bottomLatitude: -55.55, - /* - * Transform a longitude coordinate into projection-specific x' coordinate - * Note: this is not in pixel - * - * @param lon longitude value in degree - * @return x' projection-specific value - */ - _projectLongitude: function (lon) { - // Compute longitude in radian - return lon * Math.PI / 180; - }, - /* - * Transform a latitude coordinate into projection-specific y' coordinate - * Note: this is not in pixel - * - * @param lat latitude value in degree - * @return y' projection-specific value - */ - _projectLatitude: function (lat) { - // Compute latitude in radian and get its SINUS - var latRadSinus = Math.sin(lat * Math.PI / 180); - return 0.5 * Math.log((1 + latRadSinus) / (1 - latRadSinus)); - }, - /* - * Get x,y point from lat,lon coordinate - * - * Principle: - * (lat, lon) are inputs - * Projection(lat, lon) = (x', y') - * Transformation(x', y') = (x, y) - * - * Source: http://jkwiens.com/2009/01/23/miller-projection/ - * - * @param lat latitude value in degree - * @param lon longitude value in degree - * @return {x, y} coordinate in pixel - */ - getCoords: function (lat, lon) { - var self = this; - - // Project map boundaries with projection (only once for performance) - if (self._xLeftPrime === undefined) self._xLeftPrime = self._projectLongitude(self.leftLongitude); - if (self._xRightPrime === undefined) self._xRightPrime = self._projectLongitude(self.rightLongitude); - if (self._yTopPrime === undefined) self._yTopPrime = self._projectLatitude(self.topLatitude); - if (self._yBottomPrime === undefined) self._yBottomPrime = self._projectLatitude(self.bottomLatitude); - - // Compute x' and y' (projection-specific value) - var xPrime = self._projectLongitude(lon); - var yPrime = self._projectLatitude(lat); - - // Compute x and y - var x = (xPrime - self._xLeftPrime) * (self.width / (self._xRightPrime - self._xLeftPrime)); - var y = (self._yTopPrime - yPrime) * (self.height / (self._yTopPrime - self._yBottomPrime)); - - return {x: x, y: y}; - }, - elems: { - "AE": "m 620.12,393.97 0.5,-0.15 0.11,0.84 2.19,-0.48 2.32,0.08 1.69,0.09 1.92,-2.07 2.1,-1.98 1.77,-1.9 0.53,1.05 0.38,2.44 -1.43,0.01 -0.23,2 0.5,0.42 -1.27,0.6 -0.01,1.25 -0.82,1.26 -0.07,1.21 -0.57,0.64 -8.42,-1.52 -1.08,-3.08 z", - "AF": "m 647.13,357.15 2.86,1.3 2.11,-0.46 0.59,-1.55 2.21,-0.52 1.58,-1.05 0.56,-2.79 2.36,-0.68 0.44,-1.25 1.33,0.94 0.84,0.11 1.56,0.03 2.12,0.74 0.85,0.42 2.03,-1.12 0.95,0.67 0.9,-1.6 1.68,0.07 0.43,-0.52 0.3,-1.43 1.21,-1.23 1.51,0.8 -0.3,1.09 0.85,0.17 -0.27,2.95 1.11,1.15 0.98,-0.74 1.25,-0.34 1.74,-1.57 1.93,0.26 2.9,0 0.5,1.01 -1.64,0.39 -1.42,0.65 -3.22,0.4 -3.01,0.73 -1.64,1.51 0.66,1.46 0.33,1.7 -1.4,1.43 0.12,1.3 -0.77,1.22 -2.67,-0.11 1.1,2.22 -1.78,0.85 -1.19,2 0.15,1.98 -1.1,0.92 -1.03,-0.3 -2.15,0.43 -0.3,0.91 -2.09,0 -1.56,1.84 -0.1,2.75 -3.65,1.33 -1.95,-0.28 -0.57,0.7 -1.67,-0.4 -2.81,0.48 -4.69,-1.64 2.54,-2.93 -0.23,-2.1 -2.12,-0.55 -0.22,-2.09 -0.92,-2.64 1.2,-1.83 -1.22,-0.49 0.77,-2.45 z", - "AL": "m 533.23,334.91 -0.35,1.27 0.4,1.59 1.16,0.9 -0.06,0.97 -0.91,0.54 -0.17,1.19 -1.3,1.76 -0.48,-0.25 -0.05,-0.8 -1.56,-1.23 -0.24,-1.75 0.24,-2.53 0.38,-1.16 -0.47,-0.59 -0.19,-1.19 1.22,-1.87 0.17,0.72 0.76,-0.34 0.6,1.02 0.67,0.38 z", - "AM": "m 597.7,337.75 3.9,-0.58 0.58,0.98 1.07,0.64 -0.57,0.92 1.5,1.26 -0.79,1.16 1.19,0.99 1.26,0.59 0.06,2.5 -1.02,0.1 -1.14,-2.08 0.01,-0.55 -1.24,0.01 -0.83,-0.98 -0.58,0.1 -1.11,-1.06 -2.08,-0.91 0.27,-1.79 z", - "AO": "m 521.28,480.03 0.69,2.09 0.8,1.68 0.64,0.91 1.07,1.47 1.85,-0.23 0.93,-0.4 1.55,0.4 0.42,-0.7 0.7,-1.64 1.74,-0.11 0.15,-0.49 1.43,-0.01 -0.24,1.01 3.4,-0.02 0.05,1.77 0.57,1.09 -0.41,1.7 0.21,1.74 0.94,1.05 -0.15,3.37 0.69,-0.26 1.22,0.07 1.74,-0.42 1.28,0.17 0.3,0.88 -0.32,1.38 0.49,1.34 -0.42,1.07 0.24,0.99 -5.84,-0.04 -0.13,9.16 1.89,2.38 1.83,1.82 -5.15,1.19 -6.79,-0.41 -1.94,-1.4 -11.37,0.13 -0.42,0.21 -1.67,-1.32 -1.82,-0.09 -1.68,0.5 -1.35,0.56 -0.26,-1.83 0.39,-2.55 0.97,-2.65 0.15,-1.24 0.91,-2.59 0.67,-1.17 1.61,-1.87 0.9,-1.27 0.29,-2.11 -0.15,-1.61 -0.84,-1.01 -0.75,-1.72 -0.69,-1.69 0.15,-0.59 0.86,-1.12 -0.85,-2.72 -0.57,-1.88 -1.4,-1.77 0.27,-0.54 1.16,-0.38 0.81,0.05 0.98,-0.34 8.27,0.01 z m -10.91,-0.54 -0.71,0.3 -0.75,-2.1 1.13,-1.21 0.85,-0.47 1.05,0.96 -1.02,0.59 -0.46,0.72 -0.09,1.21 z", - "AR": "m 291.85,649.16 -2.66,0.25 -1.43,-1.73 -1.69,-0.13 -3,0 0,-10.57 1.08,2.15 1.4,3.53 3.65,2.87 3.93,1.21 -1.28,2.42 z m 1.5,-122.44 1.65,2.18 1.09,-2.43 3.2,0.12 0.45,0.64 5.15,4.94 2.29,0.46 3.43,2.26 2.89,1.2 0.4,1.36 -2.76,4.73 2.83,0.85 3.15,0.48 2.22,-0.5 2.54,-2.4 0.46,-2.74 1.39,-0.59 1.41,1.79 -0.06,2.49 -2.36,1.73 -1.88,1.28 -3.16,3.08 -3.74,4.37 -0.7,2.59 -0.75,3.37 0.03,3.3 -0.61,0.74 -0.22,2.17 -0.19,1.76 3.56,2.91 -0.38,2.37 1.75,1.51 -0.14,1.7 -2.69,4.52 -4.16,1.91 -5.62,0.75 -3.08,-0.36 0.59,2.15 -0.57,2.72 0.52,1.85 -1.68,1.3 -2.87,0.51 -2.7,-1.35 -1.08,0.97 0.39,3.71 1.89,1.14 1.54,-1.19 0.84,1.96 -2.58,1.18 -2.25,2.38 -0.41,3.91 -0.66,2.11 -2.65,0.01 -2.2,2.04 -0.8,3.01 2.76,2.98 2.68,0.83 -0.96,3.73 -3.31,2.38 -1.82,5.03 -2.56,1.72 -1.15,2.06 0.91,4.64 1.87,2.63 -1.18,-0.23 -2.6,-0.71 -6.78,-0.61 -1.16,-2.63 0.05,-3.33 -1.87,0.28 -0.99,-1.6 -0.25,-4.6 2.15,-1.88 0.89,-2.68 -0.33,-2.11 1.49,-3.52 1.02,-5.35 -0.3,-2.33 1.22,-0.75 -0.3,-1.48 -1.3,-0.78 0.92,-1.63 -1.27,-1.46 -0.65,-4.4 1.13,-0.77 -0.47,-4.54 0.66,-3.75 0.75,-3.22 1.68,-1.3 -0.85,-3.46 -0.01,-3.22 2.12,-2.26 -0.06,-2.87 1.6,-3.31 0.01,-3.09 -0.73,-0.61 -1.29,-5.69 1.73,-3.34 -0.27,-3.11 1,-2.9 1.84,-2.96 1.98,-1.95 -0.84,-1.23 0.59,-1 -0.09,-5.14 3.05,-1.51 0.96,-3.16 -0.34,-0.76 2.34,-2.72 3.62,0.72 z", - "AT": "m 523.11,310.1 -0.21,1.71 -1.58,0.01 0.54,0.89 -0.93,2.65 -0.53,0.69 -2.45,0.1 -1.42,0.92 -2.32,-0.31 -4.01,-1.05 -0.62,-1.43 -2.77,0.72 -0.33,0.77 -1.7,-0.58 -1.43,-0.11 -1.27,-0.74 0.43,-1.01 -0.11,-0.74 0.85,-0.22 1.42,1.14 0.4,-1.09 2.47,0.18 2.01,-0.74 1.34,0.12 0.87,0.85 0.27,-0.7 -0.4,-2.72 1.01,-0.54 0.98,-1.95 2.09,1.37 1.57,-1.74 0.99,-0.32 2.18,1.3 1.31,-0.22 1.3,0.8 -0.23,0.54 z", - "AU": "m 883.18,588.41 2.71,1.28 1.53,-0.51 2.19,-0.71 1.68,0.25 0.2,4.43 -0.96,1.3 -0.29,3.06 -0.98,-1.05 -1.95,2.67 -0.58,-0.21 -1.72,-0.12 -1.73,-3.28 -0.38,-2.5 -1.62,-3.25 0.07,-1.7 1.83,0.34 z m -5.15,-86.06 1.01,2.25 1.8,-1.08 0.93,1.22 1.35,1.13 -0.29,1.28 0.6,2.48 0.43,1.45 0.71,0.35 0.76,2.5 -0.27,1.52 0.91,1.99 3.04,1.54 1.98,1.41 1.88,1.29 -0.37,0.72 1.6,1.87 1.09,3.25 1.12,-0.66 1.14,1.31 0.69,-0.46 0.48,3.21 1.99,1.87 1.3,1.17 2.19,2.49 0.79,2.49 0.07,1.77 -0.19,1.94 1.34,2.68 -0.16,2.81 -0.49,1.48 -0.76,2.87 0.06,1.86 -0.55,2.34 -1.24,3 -2.08,1.63 -1.02,2.59 -0.94,1.67 -0.83,2.93 -1.08,1.71 -0.71,2.58 -0.36,2.4 0.14,1.11 -1.61,1.22 -3.14,0.13 -2.59,1.45 -1.29,1.38 -1.69,1.54 -2.32,-1.58 -1.72,-0.63 0.44,-1.85 -1.53,0.67 -2.46,2.58 -2.42,-0.97 -1.59,-0.56 -1.6,-0.25 -2.71,-1.03 -1.81,-2.18 -0.52,-2.66 -0.65,-1.75 -1.38,-1.4 -2.7,-0.41 0.92,-1.66 -0.68,-2.52 -1.37,2.35 -2.5,0.63 1.47,-1.88 0.42,-1.95 1.08,-1.65 -0.22,-2.47 -2.28,2.85 -1.75,1.15 -1.07,2.69 -2.19,-1.4 0.09,-1.79 -1.75,-2.43 -1.48,-1.25 0.53,-0.77 -3.6,-2 -1.97,-0.09 -2.7,-1.6 -5.02,0.31 -3.63,1.18 -3.19,1.1 -2.68,-0.22 -2.97,1.7 -2.43,0.77 -0.54,1.75 -1.04,1.36 -2.38,0.08 -1.76,0.3 -2.48,-0.61 -2.02,0.37 -1.92,0.15 -1.67,1.8 -0.82,-0.15 -1.41,0.96 -1.35,1.08 -2.05,-0.13 -1.88,0 -2.97,-2.17 -1.51,-0.64 0.06,-1.93 1.39,-0.46 0.48,-0.76 -0.1,-1.2 0.34,-2.3 -0.31,-1.95 -1.48,-3.29 -0.46,-1.85 0.12,-1.83 -1.12,-2.08 -0.07,-0.93 -1.24,-1.26 -0.35,-2.47 -1.6,-2.48 -0.39,-1.33 1.23,1.35 -0.95,-2.88 1.39,0.9 0.83,1.2 -0.05,-1.59 -1.39,-2.43 -0.27,-0.97 -0.65,-0.92 0.3,-1.77 0.57,-0.75 0.38,-1.52 -0.3,-1.77 1.16,-2.17 0.21,2.29 1.18,-2.07 2.28,-1 1.37,-1.28 2.14,-1.1 1.27,-0.23 0.77,0.37 2.21,-1.11 1.7,-0.33 0.42,-0.65 0.74,-0.27 1.55,0.07 2.95,-0.87 1.52,-1.31 0.72,-1.58 1.64,-1.49 0.13,-1.17 0.07,-1.59 1.96,-2.47 1.18,2.51 1.19,-0.58 -1,-1.38 0.88,-1.41 1.24,0.63 0.34,-2.21 1.53,-1.42 0.68,-1.14 1.41,-0.49 0.04,-0.8 1.23,0.34 0.05,-0.72 1.23,-0.41 1.36,-0.39 2.07,1.32 1.56,1.71 1.75,0.02 1.78,0.27 -0.59,-1.58 1.34,-2.3 1.26,-0.75 -0.44,-0.71 1.22,-1.63 1.7,-1.01 1.43,0.34 2.36,-0.54 -0.05,-1.45 -2.05,-0.94 1.49,-0.41 1.86,0.7 1.49,1.17 2.36,0.73 0.8,-0.29 1.74,0.88 1.64,-0.82 1.05,0.25 0.66,-0.55 1.29,1.41 -0.75,1.53 -1.06,1.16 -0.96,0.1 0.33,1.15 -0.82,1.43 -1,1.41 0.2,0.81 2.23,1.6 2.16,0.93 1.44,1 2.03,1.72 0.79,0 1.47,0.75 0.43,0.9 2.68,0.99 1.85,-1 0.55,-1.57 0.57,-1.29 0.35,-1.59 0.85,-2.3 -0.39,-1.39 0.2,-0.84 -0.32,-1.64 0.37,-2.16 0.54,-0.58 -0.44,-0.95 0.68,-1.51 0.53,-1.56 0.07,-0.81 1.04,-1.06 0.79,1.39 0.19,1.78 0.7,0.34 0.12,1.2 1.02,1.45 0.21,1.62 -0.08,1.01 z", - "AZ": "m 601.68,342.71 0.83,0.97 1.24,-0.01 -0.01,0.56 1.14,2.08 -1.92,-0.48 -1.42,-1.66 -0.44,-1.37 0.58,-0.09 z m 6.65,-5.43 1.24,0.25 0.48,-0.95 1.67,-1.51 1.47,1.97 1.43,2.62 1.31,0.17 0.86,0.99 -2.31,0.29 -0.49,2.82 -0.48,1.26 -1.03,0.84 0.08,1.77 -0.7,0.18 -1.75,-1.87 0.97,-1.78 -0.83,-1.06 -1.05,0.27 -3.31,2.66 -0.06,-2.5 -1.26,-0.59 -1.19,-0.99 0.79,-1.16 -1.49,-1.26 0.56,-0.92 -1.07,-0.64 -0.58,-0.97 0.69,-0.61 2.09,1.07 1.51,0.22 0.38,-0.43 -1.38,-2.02 0.73,-0.52 0.79,0.13 1.93,2.27 z", - "BA": "m 528.79,323.36 1.02,-0.01 -0.7,1.72 1.35,1.5 -0.41,1.82 -0.66,0.17 -0.53,0.36 -0.91,0.89 -0.41,2.1 -2.48,-1.44 -1.06,-1.61 -1.07,-0.85 -1.29,-1.45 -0.6,-1.21 -1.38,-1.83 0.59,-1.64 1.01,0.91 0.6,-0.82 1.31,-0.09 2.41,0.66 1.94,-0.06 z", - "BD": "m 735.34,400.66 -0.05,2.15 -0.98,-0.46 0.18,2.41 -0.8,-1.56 -0.16,-1.52 -0.54,-1.45 -1.17,-1.76 -2.58,-0.12 0.26,1.25 -0.88,1.67 -1.2,-0.61 -0.41,0.55 -0.79,-0.33 -1.08,-0.27 -0.44,-2.48 -0.97,-2.28 0.47,-1.84 -1.72,-0.82 0.62,-1.12 1.75,-1.15 -2.02,-1.63 0.99,-2.11 2.22,1.34 1.34,0.16 0.25,2.15 2.66,0.42 2.61,-0.05 1.61,0.53 -1.29,2.59 -1.26,0.18 -0.86,1.73 1.53,1.58 0.46,-1.94 0.78,-0.01 z", - "BE": "m 484.8,296.16 2.05,0.35 2.6,-0.93 1.77,1.95 1.55,1.04 -0.32,2.97 -0.73,0.16 -0.31,2.43 -2.45,-1.97 -1.44,0.34 -1.96,-2.06 -1.3,-1.77 -1.3,-0.07 -0.41,-1.56 z", - "BF": "m 467.58,436.65 -1.92,-0.73 -1.32,0.11 -0.98,0.71 -1.26,-0.6 -0.49,-0.93 -1.26,-0.62 -0.19,-1.64 0.77,-1.21 -0.07,-0.96 2.23,-2.36 0.41,-1.96 0.77,-0.7 1.36,0.38 1.17,-0.58 0.38,-0.74 2.18,-1.28 0.53,-0.9 2.62,-1.2 1.55,-0.41 0.7,0.55 1.79,-0.01 -0.22,1.4 0.38,1.31 1.58,1.87 0.08,1.38 3.24,0.65 -0.07,1.95 -0.61,0.86 -1.37,0.26 -0.57,1.24 -0.96,0.32 -2.46,-0.06 -1.3,-0.22 -0.9,0.46 -1.24,-0.21 -4.87,0.13 -0.07,1.61 z", - "BG": "m 539.03,325.81 0.81,1.6 1.08,-0.29 2.16,0.61 4.12,0.2 1.39,-0.99 3.3,-0.9 2.04,1.41 1.65,0.41 -1.46,1.59 -1.02,2.73 0.9,2.16 -2.41,-0.51 -2.86,1.18 -0.03,1.86 -2.55,0.35 -1.97,-1.3 -2.25,1.03 -2.07,-0.11 -0.2,-2.47 -1.41,-1.21 0.47,-0.54 -0.31,-0.45 0.47,-1.21 1.07,-1.19 -1.36,-1.66 -0.25,-1.42 z", - "BI": "m 557.77,476.18 -0.18,-3.37 -0.71,-1.26 1.71,0.22 0.86,-1.59 1.49,0.18 0.16,1.1 0.6,0.63 0.03,0.91 -0.69,0.58 -1.1,1.46 -1.01,1.01 z", - "BJ": "m 483.05,446.17 -2.32,0.33 -0.69,-1.94 0.13,-6.46 -0.57,-0.58 -0.1,-1.39 -0.98,-0.99 -0.85,-0.83 0.36,-1.5 0.96,-0.32 0.57,-1.24 1.37,-0.26 0.61,-0.86 0.94,-0.83 1.01,-0.01 2.14,1.64 -0.11,0.95 0.63,1.68 -0.55,1.14 0.29,0.76 -1.36,1.75 -0.86,0.87 -0.53,1.77 0.07,1.79 z", - "BN": "m 795.71,451.02 1.11,-1.05 2.39,-1.53 -0.13,1.38 -0.16,1.78 -1.34,-0.09 -0.59,0.95 z", - "BO": "m 299.29,526.6 -3.2,-0.13 -1.09,2.43 -1.65,-2.18 -3.67,-0.73 -2.33,2.72 -2.03,0.41 -1.1,-4.15 -1.5,-3.34 0.88,-2.87 -1.47,-1.25 -0.37,-2.12 -1.38,-2 1.77,-3.14 -1.21,-2.44 0.65,-0.97 -0.51,-1.07 1.1,-1.44 0.06,-2.44 0.13,-2.02 0.61,-0.96 -2.43,-4.58 2.09,0.24 1.44,-0.07 0.63,-0.85 2.45,-1.15 1.47,-1.06 3.67,-0.48 -0.29,2.12 0.34,1.09 -0.23,1.9 3.05,2.55 3.14,0.47 1.1,1.07 1.9,0.57 1.16,0.83 1.76,-0.03 1.63,0.85 0.12,1.66 0.55,0.84 0.04,1.25 -0.82,0.04 1.08,3.37 5.37,0.12 -0.41,1.68 0.3,1.15 1.53,0.82 0.67,1.82 -0.5,2.32 -0.77,1.29 0.27,1.69 -0.88,0.61 -0.04,-0.91 -2.62,-1.51 -2.6,-0.05 -4.89,0.86 -1.34,2.62 -0.07,1.6 -1.11,3.59 z", - "BR": "m 313.93,552.04 3.74,-4.37 3.17,-3.08 1.88,-1.28 2.36,-1.73 0.06,-2.49 -1.41,-1.79 -1.39,0.59 0.55,-1.78 0.38,-1.82 0,-1.68 -1.01,-0.55 -1.05,0.49 -1.04,-0.13 -0.33,-1.18 -0.26,-2.77 -0.53,-0.9 -1.89,-0.82 -1.14,0.59 -2.96,-0.58 0.18,-4.06 -0.83,-1.66 0.88,-0.61 -0.27,-1.69 0.77,-1.29 0.5,-2.32 -0.67,-1.82 -1.53,-0.82 -0.3,-1.15 0.41,-1.68 -5.37,-0.12 -1.08,-3.37 0.82,-0.04 -0.04,-1.25 -0.55,-0.84 -0.12,-1.66 -1.63,-0.85 -1.76,0.03 -1.16,-0.83 -1.9,-0.57 -1.1,-1.07 -3.14,-0.47 -3.05,-2.55 0.23,-1.9 -0.34,-1.09 0.29,-2.12 -3.67,0.48 -1.47,1.06 -2.45,1.15 -0.63,0.85 -1.44,0.07 -2.09,-0.24 -1.58,0.49 -1.28,-0.33 0.19,-4.3 -2.3,1.66 -2.47,-0.07 -1.06,-1.51 -1.86,-0.16 0.59,-1.21 -1.56,-1.72 -1.17,-2.53 0.74,-0.51 0,-1.19 1.7,-0.81 -0.28,-1.51 0.71,-0.98 0.21,-1.3 3.2,-1.91 2.3,-0.53 0.37,-0.42 2.53,0.13 1.26,-7.65 0.07,-1.21 -0.44,-1.59 -1.24,-1.02 0.01,-2.02 1.58,-0.46 0.56,0.29 0.09,-1.07 -1.64,-0.29 -0.03,-1.74 5.46,0.06 0.93,-0.96 0.78,0.88 0.54,1.65 0.53,-0.35 1.55,1.48 2.18,-0.18 0.54,-0.86 2.08,-0.65 1.16,-0.45 0.32,-1.18 2.01,-0.8 -0.16,-0.58 -2.37,-0.24 -0.39,-1.76 0.11,-1.87 -1.25,-0.72 0.52,-0.26 2.08,0.36 2.23,0.7 0.81,-0.66 2.01,-0.44 3.14,-1.04 1.03,-1.07 -0.38,-0.79 1.46,-0.12 0.66,0.64 -0.37,1.23 0.96,0.42 0.65,1.3 -0.78,0.98 -0.45,2.38 0.72,1.41 0.2,1.29 1.73,1.3 1.38,0.14 0.31,-0.54 0.88,-0.12 1.27,-0.49 0.91,-0.74 1.55,0.23 0.68,-0.1 1.53,0.23 0.25,-0.57 -0.47,-0.55 0.28,-0.81 1.13,0.25 1.33,-0.29 1.6,0.59 1.23,0.58 0.87,-0.76 0.62,0.12 0.39,0.79 1.34,-0.2 1.07,-1.06 0.86,-2.06 1.66,-2.55 0.96,-0.13 0.69,1.54 1.57,4.88 1.5,0.46 0.08,1.92 -2.11,2.29 0.87,0.84 4.96,0.44 0.1,2.79 2.13,-1.83 3.53,1.01 4.65,1.7 1.37,1.63 -0.46,1.54 3.26,-0.86 5.46,1.48 4.19,-0.11 4.14,2.31 3.58,3.13 2.16,0.8 2.4,0.12 1.02,0.88 0.95,3.57 0.47,1.69 -1.12,4.66 -1.43,1.84 -3.95,3.94 -1.79,3.21 -2.07,2.48 -0.7,0.06 -0.79,2.1 0.2,5.4 -0.78,4.48 -0.3,1.93 -0.88,1.15 -0.5,3.94 -2.84,3.88 -0.48,3.09 -2.27,1.31 -0.66,1.81 -3.04,-0.01 -4.41,1.17 -1.98,1.35 -3.14,0.89 -3.3,2.44 -2.37,3.06 -0.41,2.32 0.47,1.73 -0.53,3.18 -0.63,1.55 -1.96,1.75 -3.11,5.68 -2.47,2.59 -1.91,1.54 -1.27,3.16 -1.86,1.91 -0.78,-1.9 1.24,-1.57 -1.62,-2.25 -2.2,-1.82 -2.89,-2.08 -1.04,0.09 -2.81,-2.5 z", - "BS": "m 258.11,395.45 -0.69,0.15 -0.71,-1.76 -1.05,-0.89 0.61,-1.95 0.84,0.12 0.98,2.55 0.02,1.78 z m -0.8,-8.69 -3.06,0.5 -0.2,-1.15 1.32,-0.25 1.85,0.09 0.09,0.81 z m 2.3,-0.03 -0.48,2.21 -0.52,-0.4 0.05,-1.63 -1.26,-1.23 -0.01,-0.36 2.22,1.41 z", - "BT": "m 732.61,383.03 1.14,1 -0.2,1.93 -2.29,0.09 -2.36,-0.21 -1.77,0.49 -2.55,-1.19 -0.05,-0.63 1.85,-2.34 1.51,-0.8 2.01,0.73 1.48,0.08 z", - "BW": "m 547.42,516.2 0.56,0.52 0.89,1.71 3.17,3.25 1.2,0.32 0.01,1.05 0.82,1.9 2.17,0.46 1.79,1.36 -3.97,2.22 -2.52,2.26 -0.93,2.03 -0.84,1.15 -1.53,0.25 -0.49,1.47 -0.29,0.96 -1.79,0.72 -2.28,-0.15 -1.34,-0.86 -1.18,-0.38 -1.37,0.72 -0.69,1.48 -1.33,0.93 -1.4,1.39 -2.01,0.32 -0.62,-1.09 0.26,-1.9 -1.67,-2.93 -0.75,-0.46 0,-8.86 2.76,-0.11 0.08,-10.57 2.09,-0.09 4.32,-1.03 1.08,1.21 1.78,-1.15 0.86,-0.01 1.58,-0.66 0.5,0.22 z", - "BY": "m 541.35,284.32 2.71,0.04 3.04,-1.8 0.65,-2.72 2.3,-1.57 -0.26,-2.2 1.7,-0.84 3.02,-1.93 2.95,1.26 0.4,1.23 1.47,-0.59 2.74,1.18 0.27,2.31 -0.6,1.32 1.76,3.15 1.14,0.87 -0.17,0.86 1.89,0.83 0.81,1.25 -1.09,1.02 -2.26,-0.16 -0.54,0.44 0.66,1.54 0.69,2.93 -2.41,0.27 -0.86,1 -0.19,2.26 -1.11,-0.43 -2.53,0.22 -0.74,-1.05 -1.05,0.78 -1.05,-0.65 -2.21,-0.09 -3.13,-1.08 -2.83,-0.36 -2.17,0.1 -1.54,1.23 -1.34,0.17 -0.05,-2.01 -0.87,-2.12 1.68,-0.94 0.02,-1.85 -0.78,-1.78 z", - "BZ": "m 225.56,413.21 -0.02,-0.43 0.34,-0.14 0.51,0.35 1,-1.77 0.53,-0.04 0.01,0.43 0.53,0.01 -0.04,0.8 -0.46,1.27 0.25,0.45 -0.29,1.05 0.17,0.27 -0.32,1.47 -0.55,0.78 -0.51,0.09 -0.56,1 -0.83,0 0.22,-3.28 z", - "CA": "m 199.18,96.48 -0.22,-5.9 3.63,0.58 1.63,0.96 3.35,4.92 -0.76,4.97 -4.15,2.77 -2.28,-3.12 -1.2,-5.18 z m 13.21,12.65 0.33,-1.49 -1.97,-2.45 -5.65,-0.19 0.75,3.68 5.25,0.83 1.29,-0.38 z m 36.35,46.95 3.08,5.1 0.81,0.57 3.07,-1.27 3.02,0.2 2.98,0.28 -0.25,-2.64 -4.84,-5.38 -6.42,-1.08 -1.35,0.67 -0.1,3.55 z m -65.43,-62.7 -2.71,4.19 6.24,0.52 4.61,4.44 4.58,1.5 -1.09,-5.68 -2.14,-6.73 -7.58,-5.35 -5.5,-2.04 0.2,5.69 3.39,3.46 z m 25.9,-10.24 5.13,-0.12 -2.22,4 -0.04,5.3 3.01,5.76 5.81,1.77 4.96,-0.99 5.18,-10.73 3.85,-4.45 -3.38,-4.97 -2.21,-10.65 -4.6,-3.19 -4.72,-3.68 -3.58,-9.56 -6.52,0.94 1.23,4.15 -2.87,1.25 -1.94,5.32 -1.94,7.46 1.78,7.26 3.07,5.13 z m -63.75,53.38 3.92,1.95 12.67,-1.3 -5.82,4.77 0.36,3.43 4.26,-0.24 7.07,-4.58 9.5,-1.67 1.71,-5.22 -0.49,-5.57 -2.94,-0.5 -2.5,1.93 -1.1,-4.13 -0.95,-5.7 -2.9,-1.42 -2.57,4.41 4.01,11.05 -4.9,-0.85 -4.98,-6.79 -7.89,-4 -2.64,3.32 -3.82,11.11 z m 22.56,-42.06 -3.65,-2.9 -1.5,-0.66 -2.88,4.28 -0.05,2 4.66,0.01 3.42,-2.73 z m -1.46,12.35 0.93,-3.99 -3.95,-2.12 -4.09,1.39 -2.27,4.26 4.16,4.21 5.22,-3.75 z m 29.09,33.24 4.62,-1.11 1.28,-8.25 -0.09,-5.95 -2.14,-5.56 -0.22,1.6 -3.94,-0.7 -4.22,4.09 -3.02,-0.37 0.18,8.92 4.6,-0.87 -0.06,6.47 3.01,1.73 z m -3.28,45.61 -5.06,-3.93 -4.71,-4.21 -0.87,-6.18 -1.76,-8.92 -3.14,-3.84 -2.79,-1.55 -2.47,1.42 1.99,9.59 -1.41,3.73 -2.29,-8.98 -2.56,-3.11 -3.17,4.81 -3.9,-4.76 -6.24,2.87 1.4,-4.46 -2.87,-1.87 -7.51,5.84 -1.95,3.71 -2.35,6.77 4.9,2.32 4.33,-0.12 -6.5,3.46 1.48,3.13 3.98,0.17 5.99,-0.67 5.42,1.96 -3.66,1.44 -3.95,-0.37 -4.33,1.41 -1.87,0.87 3.45,6.35 2.49,-0.88 3.83,2.15 1.52,3.65 4.99,-0.73 7.1,-1.16 5.26,-2.65 3.26,-0.48 4.82,2.12 5.07,1.22 0.94,-2.86 -1.79,-3.05 4.6,-0.64 0.33,-3.57 z m 7.74,-0.98 -1.96,3.54 -2.47,2.49 3.83,3.54 2.28,-0.85 3.78,2.36 1.74,-2.73 -1.71,-3.03 -0.84,-1.53 -1.68,-1.46 -2.97,-2.33 z m -17.61,-29.45 -2.13,-2.17 -3.76,0.4 -0.95,1.38 4.37,6.75 2.47,-6.36 z m 28.69,13.17 3.01,-6.93 3.34,-1.85 4.19,-8.74 -5.36,-2.47 -5.84,-0.36 -2.78,2.77 -1.47,4.23 -0.04,4.82 1.75,8.19 3.2,0.34 z m 17.15,-23 5.76,-0.18 8.04,-1.61 3.59,1.28 4.18,-2.26 1.75,-2.84 -0.63,-4.52 -3,-4.23 -4.56,-0.8 -5.71,0.97 -4.46,2.44 -4.09,-0.94 -3.78,-0.5 -1.78,-2.7 -3.22,-2.61 0.64,-4.43 -2.42,-3.98 -5.52,0.03 -3.11,-3.99 -5.78,-0.8 -1.06,5.1 3.25,3.74 5.8,1.45 2.81,5.09 0.34,5.6 0.97,5.99 7.45,3.42 4.54,1.28 z m -89.02,-18.27 5.21,-5.05 2.62,-0.59 2.16,-4.23 0.38,-9.77 -3.85,1.91 -4.3,-0.18 -5.76,8.19 -4.76,8.98 3.8,2.51 4.5,-1.77 z m 72.18,16.17 1.53,-4.14 -1.02,-3.46 -2.45,-3.92 -4.03,3.02 -1.49,4.92 3.4,2.79 4.06,0.79 z m -8.31,11.44 -0.73,-2.88 -5,1.26 -3.34,-2.11 -3.32,4.8 3.09,6.28 -5.72,-1.17 -0.06,3.01 6.97,7.05 1.94,3.38 2.7,0.73 4.6,-3.41 0.5,-8.21 -4.24,-4.07 2.61,-4.66 z m -73.99,153.74 -1.16,-2.34 -2.8,-1.77 -1.39,-2.05 -0.95,-1.5 -2.64,-0.46 -1.72,-0.67 -2.94,-0.96 -0.24,1.02 1.08,2.38 2.89,0.78 0.5,1.23 2.51,1.5 0.84,1.51 4.6,1.92 1.42,-0.59 z m 121.7,-77.63 -2,-2.11 -2.06,0.5 -0.25,-3.06 -3.21,-2.04 -3.07,-2.27 -1.63,-1.75 -1.43,1.03 -0.52,-2.96 -2.03,-0.55 -0.96,6.13 -0.36,5.11 -2.44,3.14 3.8,-0.6 0.96,3.65 3.99,-3.23 2.78,-3.38 1.57,2.86 4.36,1.51 2.5,-1.98 z m -120.53,-52.55 7.38,-4.18 v -3.87 l 3.48,-6.41 6.88,-6.69 3.52,-2.47 -3.01,-4.2 -2.72,-2.95 -7.16,-0.57 -4,-2.16 -9.48,1.63 2.74,6.23 -2.43,6.43 -1.94,6.87 -1.2,3.86 6.47,4.69 1.47,3.79 z m 134.24,27.31 0.32,-1.01 -0.03,-3.17 -2.19,-2.08 -2.57,1.05 -1.19,4.17 0.7,3.56 3.14,-0.36 1.82,-2.16 z m 23.82,7.54 4.41,6.6 3.45,2.85 4.92,-7.87 0.87,-4.93 -4.41,-0.47 -4.03,-6.7 -4.45,-1.64 -6.6,-4.97 5.15,-3.63 -2.65,-7.54 -2.44,-3.35 -6.77,-3.35 -2.92,-5.55 -5.21,1.99 -0.36,-3.86 -3.86,-4.32 -6.22,-4.71 -2.65,3.71 -5.55,2.66 0.42,-6.06 -4.81,-10.05 -7.11,4.06 -2.59,7.7 -2.21,-5.92 2.06,-6.37 -7.24,2.65 -2.88,3.99 -2.15,8.42 0.89,9.05 3.98,0.04 -2.93,3.92 2.33,2.96 4.55,1.25 5.93,2.42 10.2,1.82 5.08,-1.04 1.5,-2.42 2.21,2.79 2.47,0.46 2.97,4.96 -1.8,1.98 5.68,2.63 4.29,3.68 1.08,2.55 0.77,3.24 -3.63,6.93 -0.98,3.44 0.94,2.42 -5.77,0.86 -5.27,0.12 -1.85,4.87 2.37,2.23 8.11,-1.03 -0.04,-1.89 4.08,3.15 4.18,3.28 -0.98,1.77 3.4,3.02 6.02,3.53 7.6,2.39 -0.46,-2.09 -2.92,-3.67 -3.96,-5.37 7.03,5 3.54,1.66 0.97,-4.44 -1.82,-6.3 -1.16,-1.73 -3.81,-3.03 -2.95,-3.91 0.35,-3.94 3.64,-0.9 z M 222.6,51.59 l 2.34,7.29 4.96,5.88 9.81,-1.09 6.31,1.97 -4.38,6.05 -2.21,-1.78 -7.66,-0.71 1.19,8.31 3.96,6.04 -0.8,5.2 -4.97,3.46 -2.27,5.47 4.55,2.65 3.82,8.55 -7.5,-5.7 -1.71,0.94 1.38,9.38 -5.18,2.83 0.35,5.85 5.3,0.63 4.17,1.44 8.24,-1.84 7.33,3.27 7.49,-7.19 -0.06,-3.02 -4.79,0.48 -0.39,-2.84 3.92,-3.83 1.33,-5.15 4.33,-3.83 2.66,-4.76 -2.32,-7.1 1.94,-2.65 -3.86,-1.89 8.49,-1.63 1.79,-3.15 5.78,-2.6 4.8,-13.47 4.57,-4.94 6.62,-11.12 -6.1,0.1 2.54,-4.3 6.78,-3.99 6.84,-8.9 0.12,-5.73 -5.13,-6.04 -6.02,-2.93 -7.49,-1.82 -6.07,-1.49 -6.07,-1.5 -8.1,3.98 -1.49,-2.53 -8.57,0.98 -5.03,2.57 -3.7,3.65 -2.13,11.74 -3.06,-6.01 -3.48,-1.14 -4.12,7.97 -5.5,3.35 -3.27,0.66 -4.17,3.84 0.61,6.65 3.28,5.49 z m 74.4,265 -0.98,-1.98 -1.06,1.26 0.7,1.36 3.56,1.71 1.04,-0.26 1.38,-1.66 -2.6,0.11 -2.04,-0.54 z m -57,-77.86 0.61,1.63 1.98,0.14 3.28,-3.34 0.06,-1.19 -3.85,-0.06 -2.08,2.82 z m 62.13,66.44 -2.87,-1.8 -3.69,-1.09 -0.97,0.37 2.61,2.04 3.63,1.34 1.36,-0.08 -0.07,-0.78 z m 24.88,4.79 -0.36,-2.24 -1.96,0.72 0.87,-3.11 -2.8,-1.32 -1.29,1.05 -2.49,-1.18 0.98,-1.51 -1.88,-0.93 -1.83,1.47 1.86,-3.82 1.5,-2.8 0.54,-1.22 -1.3,-0.2 -2.43,1.55 -1.74,2.53 -2.9,6.92 -2.35,2.56 1.22,1.14 -1.75,1.47 0.43,1.23 5.44,0.13 3.01,-0.25 2.69,1.01 -1.98,1.93 1.67,0.14 3.25,-3.58 0.78,0.53 -0.61,3.37 1.84,0.77 1.27,-0.15 1.18,-3.61 -0.86,-2.6 z m -21.19,4.76 -2.81,4.56 -4.63,0.58 -3.64,-2.01 -0.92,-3.07 -0.89,-4.46 2.65,-2.83 -2.48,-2.09 -4.19,0.43 -5.88,3.53 -4.5,5.45 -2.38,0.67 3.23,-3.8 4.04,-5.57 3.57,-1.9 2.35,-3.11 2.9,-0.3 4.21,0.03 6,0.92 4.74,-0.71 3.53,-3.62 4.62,-1.59 2.01,-1.58 2.04,-1.71 -0.2,-5.19 -1.13,-1.77 -2.18,-0.63 -1.11,-4.05 -1.8,-1.55 -4.47,-1.26 -2.52,-2.82 -3.73,-2.83 1.13,-3.2 -3.1,-6.26 -3.65,-6.89 -2.18,-4.98 -1.86,2.61 -2.68,6.05 -4.06,2.97 -2.03,-3.16 -2.56,-0.85 -0.93,-6.99 0.08,-4.8 -5,-0.44 -0.85,-2.27 -3.45,-3.44 -2.61,-2.04 -2.32,1.58 -2.88,-0.58 -4.81,-1.65 -1.95,1.4 0.94,9.18 1.22,5.12 -3.31,5.75 3.41,4.02 1.9,4.44 0.23,3.42 -1.55,3.5 -3.18,3.46 -4.49,2.28 1.98,2.53 1.46,7.4 -1.52,4.68 -2.16,1.46 -4.17,-4.28 -2.03,-5.17 -0.87,-4.76 0.46,-4.19 -3.05,-0.47 -4.63,-0.28 -2.97,-2.08 -3.51,-1.37 -2.01,-2.38 -2.8,-1.94 -5.21,-2.23 -3.92,1.02 -1.31,-3.95 -1.26,-4.99 -4.12,-0.9 0.15,-6.41 1.09,-4.48 3.04,-6.6 3.43,-4.9 3.26,-0.77 0.19,-4.05 2.21,-2.68 4.01,-0.42 3.25,-4.39 0.82,-2.9 2.7,-5.73 0.84,-3.5 2.9,2.11 3.9,-1.08 5.49,-4.96 0.36,-3.54 -1.98,-3.98 2.09,-4.06 -0.17,-3.87 -3.76,-3.95 -4.14,-1.19 -3.98,-0.62 -0.15,8.71 -2.04,6.56 -2.93,5.3 -2.71,-4.95 0.84,-5.61 -3.35,-5.02 -3.75,6.09 0.01,-7.99 -5.21,-1.63 2.49,-4.01 -3.81,-9.59 -2.84,-3.91 -3.7,-1.44 -3.32,6.43 -0.22,9.34 3.27,3.29 3,4.91 -1.27,7.71 -2.26,-0.2 -1.78,5.88 0.02,-7 -4.34,-2.58 -2.49,1.33 0.32,4.67 -4.09,-0.18 -4.35,1.17 -4.95,-3.35 -3.13,0.6 -2.82,-4.11 -2.26,-1.84 -2.24,0.77 -3.41,0.35 -1.81,2.61 2.86,3.19 -3.05,3.72 -2.99,-4.42 -2.39,1.3 -7.57,0.87 -5.07,-1.59 3.94,-3.74 -3.78,-3.9 -2.75,0.5 -3.86,-1.32 -6.56,-2.89 -4.29,-3.37 -3.4,-0.47 -1.06,2.36 -3.44,1.31 -0.38,-6.15 -3.73,5.5 -4.74,-7.32 -1.94,-0.89 -0.63,3.91 -2.09,1.9 -1.93,-3.39 -4.59,2.05 -4.2,3.55 -4.17,-0.98 -3.4,2.5 -2.46,3.28 -2.92,-0.72 -4.41,-3.8 -5.23,-1.94 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.56,2.35 0.06,2.48 3.39,3.45 0.49,3.76 3.59,1.96 -0.4,2.79 1.56,3.96 5.08,1.82 2,1.89 5.43,4.23 0.38,0.01 h 7.96 8.32 2.76 8.55 8.27 8.41 l 8.42,0 9.53,0 9.59,0 5.8,0 0.01,-1.64 0.95,-0.02 0.5,2.35 0.87,0.72 1.96,0.26 2.86,0.67 2.72,1.3 2.27,-0.55 3.45,1.09 1.14,-1.66 1.59,-0.66 0.62,-1.03 0.63,-0.55 2.61,0.86 1.93,0.1 0.67,0.57 0.94,2.38 3.15,0.63 -0.49,1.18 1.11,1.21 -0.48,1.56 1.18,0.51 -0.59,1.37 0.75,0.13 0.53,-0.6 0.55,0.9 2.1,0.5 2.13,0.04 2.27,0.41 2.51,0.78 0.91,1.26 1.82,3.04 -0.9,1.3 -2.28,-0.54 -1.42,-2.44 0.36,2.49 -1.34,2.17 0.15,1.84 -0.23,1.07 -1.81,1.27 -1.32,2.09 -0.62,1.32 1.54,0.24 2.08,-1.2 1.23,-1.06 0.83,-0.17 1.54,0.38 0.75,-0.59 1.37,-0.48 2.44,-0.47 v 0 l 0,0 -0.25,-1.15 -0.13,0.04 -0.86,0.2 -1.12,-0.36 0.84,-1.32 0.85,-0.46 1.98,-0.56 2.37,-0.53 1.24,0.73 0.78,-0.85 0.89,-0.54 0.6,0.29 0.03,0.06 2.87,-2.73 1.27,-0.73 4.26,-0.03 5.17,0 0.28,-0.98 0.9,-0.2 1.19,-0.62 1,-1.82 0.86,-3.15 2.14,-3.1 0.93,1.08 1.88,-0.7 1.25,1.19 0,5.52 1.83,2.25 3.12,-0.48 4.49,-0.13 -4.87,3.26 0.11,3.29 2.13,0.28 3.13,-2.79 2.78,-1.58 6.21,-2.35 3.47,-2.62 -1.81,-1.46 -0.29,-2.92 z m -53.66,-71.1 1.1,-3.12 -0.71,-1.23 -1.15,-0.13 -1.08,1.8 -0.13,0.41 0.74,1.77 1.23,0.5 z m -142.66,36.43 0,0 1.56,-2.35 -1.56,2.35 z m -3.4,3.29 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z", - "CD": "m 561.96,453.86 -0.17,3.26 1.12,0.37 -0.9,0.99 -1.08,0.74 -1.07,1.46 -0.59,1.29 -0.16,2.24 -0.65,1.06 -0.02,2.1 -0.81,0.78 -0.1,1.66 -0.39,0.21 -0.26,1.53 0.71,1.26 0.18,3.37 0.5,2.57 -0.28,1.46 0.56,1.62 1.63,1.57 1.51,3.55 -1.1,-0.29 -3.77,0.48 -0.75,0.33 -0.8,1.8 0.63,1.25 -0.5,3.35 -0.35,2.85 0.76,0.51 1.96,1.1 0.77,-0.51 0.24,3.08 -2.15,-0.03 -1.15,-1.57 -1.03,-1.22 -2.15,-0.4 -0.63,-1.49 -1.72,0.9 -2.24,-0.4 -0.94,-1.29 -1.78,-0.26 -1.31,0.07 -0.16,-0.88 -0.97,-0.07 -1.28,-0.17 -1.73,0.42 -1.22,-0.07 -0.7,0.26 0.15,-3.37 -0.93,-1.05 -0.21,-1.73 0.41,-1.7 -0.56,-1.09 -0.05,-1.76 -3.41,0.02 0.25,-1.01 -1.43,0.01 -0.15,0.49 -1.74,0.11 -0.71,1.63 -0.42,0.71 -1.55,-0.4 -0.92,0.4 -1.86,0.22 -1.07,-1.47 -0.64,-0.91 -0.81,-1.68 -0.69,-2.09 -8.27,-0.03 -0.99,0.33 -0.81,-0.05 -1.16,0.38 -0.39,-0.87 0.71,-0.3 0.09,-1.22 0.46,-0.72 1.02,-0.58 0.74,0.28 0.96,-1.07 1.52,0.03 0.18,0.79 1.05,0.5 1.65,-1.76 1.63,-1.36 0.71,-0.89 -0.09,-2.3 1.22,-2.71 1.28,-1.43 1.85,-1.34 0.32,-0.89 0.07,-1.02 0.46,-0.97 -0.15,-1.58 0.35,-2.47 0.55,-1.74 0.84,-1.49 0.16,-1.68 0.25,-1.95 1.1,-1.42 1.5,-0.9 2.31,0.95 1.78,1.03 2.05,0.28 2.09,0.54 0.84,-1.68 0.39,-0.22 1.27,0.28 3.13,-1.39 1.1,0.59 0.91,-0.08 0.42,-0.68 1.04,-0.24 2.11,0.29 1.8,0.06 0.93,-0.29 1.69,2.31 1.26,0.33 0.75,-0.47 1.3,0.19 1.56,-0.59 0.67,1.19 z", - "CF": "m 518.34,442.91 2.32,-0.22 0.52,-0.72 0.46,0.06 0.7,0.63 3.53,-1.07 1.19,-1.1 1.47,-0.99 -0.28,-0.99 0.79,-0.26 2.71,0.18 2.64,-1.31 2.02,-3.09 1.43,-1.14 1.77,-0.49 0.32,1.22 1.62,1.77 0,1.15 -0.45,1.18 0.18,0.87 0.97,0.81 2.14,1.24 1.53,1.13 0.03,0.92 1.88,1.46 1.17,1.21 0.71,1.68 2.1,1.11 0.45,0.89 -0.93,0.29 -1.8,-0.06 -2.11,-0.29 -1.04,0.24 -0.42,0.68 -0.91,0.08 -1.1,-0.59 -3.13,1.39 -1.27,-0.28 -0.39,0.22 -0.84,1.68 -2.09,-0.54 -2.05,-0.28 -1.78,-1.03 -2.31,-0.95 -1.5,0.9 -1.1,1.42 -0.25,1.95 -1.8,-0.16 -1.9,-0.47 -1.67,1.48 -1.47,2.6 -0.3,-0.81 -0.12,-1.27 -1.28,-0.9 -1.04,-1.44 -0.24,-1 -1.32,-1.46 0.22,-0.83 -0.28,-1.18 0.22,-2.17 0.67,-0.51 z", - "CG": "m 511.94,476.97 -1.05,-0.96 -0.85,0.47 -1.13,1.2 -2.3,-2.95 2.13,-1.54 -1.05,-1.85 0.96,-0.7 1.89,-0.34 0.22,-1.24 1.5,1.34 2.48,0.12 0.86,-1.32 0.35,-1.85 -0.31,-2.18 -1.32,-1.64 1.21,-3.23 -0.7,-0.55 -2.08,0.22 -0.79,-1.43 0.21,-1.22 3.53,0.11 2.27,0.73 2.23,0.66 0.2,-1.5 1.47,-2.6 1.67,-1.48 1.9,0.47 1.8,0.16 -0.16,1.68 -0.84,1.49 -0.55,1.74 -0.35,2.47 0.15,1.58 -0.46,0.97 -0.07,1.02 -0.32,0.89 -1.85,1.34 -1.28,1.43 -1.22,2.71 0.09,2.3 -0.71,0.89 -1.63,1.36 -1.65,1.76 -1.05,-0.5 -0.18,-0.79 -1.52,-0.03 -0.96,1.07 z", - "CH": "m 502.4,312.59 0.11,0.74 -0.43,1.01 1.27,0.74 1.43,0.11 -0.22,1.67 -1.23,0.69 -2.08,-0.51 -0.61,1.63 -1.33,0.13 -0.49,-0.64 -1.57,1.36 -1.35,0.19 -1.21,-0.86 -0.96,-1.77 -1.34,0.64 0.04,-1.84 2.05,-2.31 -0.09,-1.05 1.28,0.39 0.77,-0.71 2.38,0.03 0.58,-0.9 z", - "CI": "m 467.49,449.71 -1.27,0.03 -1.96,-0.55 -1.79,0.03 -3.33,0.49 -1.94,0.81 -2.78,1.02 -0.54,-0.07 0.21,-2.3 0.27,-0.35 -0.08,-1.11 -1.19,-1.17 -0.89,-0.19 -0.82,-0.77 0.61,-1.24 -0.28,-1.36 0.13,-0.82 0.45,0 0.16,-1.23 -0.22,-0.54 0.27,-0.39 1.04,-0.34 -0.69,-2.26 -0.65,-1.16 0.23,-0.97 0.56,-0.21 0.36,-0.26 0.78,0.42 2.16,0.03 0.52,-0.83 0.48,0.06 0.81,-0.32 0.44,1.21 0.65,-0.36 1.16,-0.42 1.26,0.62 0.49,0.93 1.26,0.6 0.98,-0.71 1.32,-0.11 1.92,0.73 0.74,4.01 -1.18,2.36 -0.73,3.17 1.21,2.41 z", - "CL": "m 283.06,636.98 0,10.57 3,0 1.69,0.13 -0.93,1.98 -2.4,1.53 -1.38,-0.16 -1.66,-0.4 -2.04,-1.48 -2.94,-0.71 -3.53,-2.71 -2.86,-2.57 -3.86,-5.25 2.31,0.97 3.94,3.13 3.72,1.7 1.45,-2.17 0.91,-3.2 2.58,-1.91 2,0.55 z m 1.16,-112.01 1.1,4.15 2.02,-0.41 0.34,0.76 -0.96,3.16 -3.05,1.51 0.09,5.14 -0.59,1 0.84,1.23 -1.98,1.95 -1.84,2.96 -1,2.9 0.27,3.11 -1.73,3.34 1.29,5.69 0.73,0.61 -0.01,3.09 -1.6,3.31 0.06,2.87 -2.12,2.26 0.01,3.22 0.85,3.46 -1.68,1.3 -0.75,3.22 -0.66,3.75 0.47,4.54 -1.13,0.77 0.65,4.4 1.27,1.46 -0.92,1.63 1.3,0.78 0.3,1.48 -1.22,0.75 0.3,2.33 -1.02,5.35 -1.49,3.52 0.33,2.11 -0.89,2.68 -2.15,1.88 0.25,4.6 0.99,1.6 1.87,-0.28 -0.05,3.33 1.16,2.63 6.78,0.61 2.6,0.71 -2.49,-0.03 -1.35,1.13 -2.53,1.67 -0.45,4.38 -1.19,0.11 -3.16,-1.54 -3.21,-3.25 0,0 -3.49,-2.63 -0.88,-2.87 0.79,-2.62 -1.41,-2.94 -0.36,-7.34 1.19,-4.03 2.96,-3.19 -4.26,-1.19 2.67,-3.57 0.95,-6.56 3.12,1.37 1.46,-7.97 -1.88,-1 -0.88,4.75 -1.77,-0.54 0.88,-5.42 0.96,-6.84 1.29,-2.48 -0.81,-3.5 -0.23,-3.98 1.18,-0.11 1.72,-5.6 1.94,-5.43 1.19,-4.97 -0.65,-4.91 0.84,-2.67 -0.34,-3.96 1.64,-3.87 0.51,-6.04 0.9,-6.37 0.88,-6.75 -0.21,-4.87 -0.58,-4.15 1.44,-0.75 0.75,-1.5 1.37,1.99 0.37,2.12 1.47,1.25 -0.88,2.87 1.51,3.34 z", - "CM": "m 512.17,457.32 -0.35,-0.15 -1.66,0.36 -1.71,-0.38 -1.33,0.19 -4.56,-0.07 0.41,-2.2 -1.1,-1.84 -1.28,-0.48 -0.57,-1.25 -0.72,-0.4 0.04,-0.77 0.72,-1.98 1.33,-2.7 0.81,-0.03 1.67,-1.64 1.07,-0.04 1.57,1.15 1.93,-0.95 0.26,-1.16 0.63,-1.14 0.43,-1.42 1.5,-1.16 0.57,-1.97 0.59,-0.63 0.4,-1.47 0.74,-1.81 2.36,-2.2 0.15,-0.95 0.31,-0.51 -1.11,-1.14 0.09,-0.9 0.79,-0.17 1.11,1.83 0.19,1.89 -0.1,1.89 1.52,2.57 -1.56,-0.03 -0.79,0.2 -1.28,-0.28 -0.61,1.33 1.65,1.65 1.22,0.48 0.4,1.17 0.88,1.93 -0.44,0.77 -1.41,2.84 -0.67,0.51 -0.22,2.17 0.28,1.18 -0.22,0.83 1.32,1.46 0.24,1 1.04,1.44 1.28,0.9 0.12,1.27 0.3,0.81 -0.2,1.5 -2.23,-0.66 -2.27,-0.73 z", - "CN": "m 784.88,410.66 -2.42,1.41 -2.3,-0.91 -0.08,-2.53 1.38,-1.34 3.06,-0.83 1.61,0.07 0.63,1.13 -1.23,1.3 -0.65,1.7 z m 48.56,-107.52 4.88,1.38 3.32,3.03 1.13,3.95 4.26,0 2.43,-1.65 4.63,-1.24 -1.47,3.76 -1.09,1.51 -0.96,4.46 -1.89,3.89 -3.4,-0.7 -2.41,1.4 0.74,3.36 -0.4,4.55 -1.43,0.1 0.02,1.93 -1.81,-2.24 -1.11,2.13 -4.33,1.62 0.44,1.97 -2.42,-0.14 -1.33,-1.17 -1.93,2.64 -3.09,1.98 -2.28,2.35 -3.92,1.06 -2.06,1.69 -3.02,0.98 1.49,-1.67 -0.59,-1.41 2.22,-2.45 -1.48,-1.93 -2.44,1.3 -3.17,2.54 -1.73,2.34 -2.75,0.17 -1.43,1.68 1.48,2.41 2.29,0.58 0.09,1.58 2.22,1.02 3.14,-2.51 2.49,1.37 1.81,0.09 0.46,1.84 -3.97,0.97 -1.31,1.87 -2.73,1.73 -1.44,2.39 3.02,1.86 1.1,3.31 1.71,3.05 1.9,2.53 -0.05,2.43 -1.76,0.89 0.67,1.73 1.65,1 -0.43,2.61 -0.71,2.52 -1.57,0.28 -2.05,3.41 -2.27,4.09 -2.6,3.68 -3.86,2.82 -3.9,2.55 -3.16,0.35 -1.71,1.34 -0.97,-0.98 -1.59,1.5 -3.92,1.5 -2.97,0.46 -0.96,3.15 -1.55,0.17 -0.74,-2.16 0.66,-1.16 -3.76,-0.96 -1.33,0.49 -2.82,-0.78 -1.33,-1.22 0.44,-1.74 -2.56,-0.55 -1.35,-1.14 -2.39,1.62 -2.73,0.35 -2.24,-0.02 -1.5,0.74 -1.45,0.44 0.42,3.43 -1.5,-0.08 -0.25,-0.7 -0.08,-1.24 -2.06,0.87 -1.21,-0.55 -2.08,-1.13 0.82,-2.51 -1.78,-0.59 -0.67,-2.8 -2.96,0.51 0.34,-3.63 2.66,-2.58 0.11,-2.57 -0.08,-2.4 -1.22,-0.75 -0.94,-1.86 -1.64,0.24 -3.02,-0.47 0.95,-1.33 -1.31,-1.99 -2,1.35 -2.36,-0.78 -3.23,2.03 -2.55,2.36 -2.26,0.39 -1.23,-0.85 -1.48,-0.08 -2,-0.73 -1.51,0.8 -1.85,2.34 -0.24,-2.48 -1.71,0.66 -3.27,-0.31 -3.17,-0.73 -2.28,-1.39 -2.18,-0.63 -0.94,-1.53 -1.58,-0.46 -2.83,-2.09 -2.25,-0.99 -1.16,0.77 -3.9,-2.26 -2.75,-2.07 -0.79,-3.63 2.01,0.44 0.09,-1.69 -1.12,-1.71 0.28,-2.74 -3.01,-3.99 -4.61,-1.39 -0.83,-2.66 -2.07,-1.63 -0.5,-1.01 -0.42,-2.01 0.1,-1.38 -1.7,-0.81 -0.92,0.36 -0.71,-3.32 0.8,-0.83 -0.39,-0.85 2.68,-1.73 1.94,-0.72 2.97,0.49 1.06,-2.35 3.6,-0.44 1,-1.48 4.42,-2.03 0.39,-0.85 -0.22,-2.17 1.92,-1 -2.52,-6.75 5.55,-1.58 1.44,-0.89 2.02,-7.26 5.56,1.35 1.56,-1.86 0.13,-4.19 2.33,-0.39 2.13,-2.83 1.1,-0.35 0.74,2.97 2.36,2.23 4,1.57 1.93,3.32 -1.08,4.73 1.01,1.73 3.33,0.68 3.78,0.55 3.39,2.45 1.73,0.43 1.28,3.57 1.65,2.27 3.09,-0.09 5.79,0.85 3.73,-0.53 2.77,0.57 4.15,2.29 3.39,0 1.24,1.16 3.26,-2.01 4.53,-1.31 4.2,-0.14 3.28,-1.34 2.01,-2.05 1.96,-1.3 -0.45,-1.28 -0.9,-1.5 1.47,-2.54 1.58,0.36 2.88,0.8 2.79,-2.1 4.28,-1.55 2.05,-2.66 1.97,-1.16 4.07,-0.54 2.21,0.46 0.31,-1.45 -2.54,-2.89 -2.25,-1.33 -2.16,1.54 -2.77,-0.65 -1.59,0.53 -0.72,-1.71 1.98,-4.23 1.37,-3.25 3.37,1.63 3.95,-2.74 -0.03,-1.93 2.53,-4.73 1.56,-1.45 -0.04,-2.52 -1.54,-1.1 2.32,-2.31 3.48,-0.84 3.72,-0.13 4.2,1.39 2.46,1.71 1.73,4.61 1.05,1.94 0.98,2.73 1.05,4.31 z", - "CO": "m 264.17,464.06 -1.2,-0.66 -1.38,-0.92 -0.8,0.44 -2.38,-0.39 -0.68,-1.2 -0.52,0.05 -2.81,-1.59 -0.38,-0.87 1.05,-0.21 -0.12,-1.39 0.65,-1.01 1.39,-0.19 1.19,-1.75 1.07,-1.46 -1.04,-0.67 0.53,-1.62 -0.63,-2.56 0.6,-0.73 -0.44,-2.37 -1.14,-1.5 0.36,-1.36 0.91,0.2 0.53,-0.84 -0.65,-1.65 0.34,-0.42 1.44,0.09 2.11,-1.97 1.15,-0.3 0.03,-0.93 0.52,-2.39 1.61,-1.32 1.76,-0.05 0.22,-0.59 2.2,0.23 2.21,-1.43 1.09,-0.64 1.35,-1.37 1,0.17 0.73,0.75 -0.54,0.96 -1.8,0.48 -0.71,1.42 -1.09,0.81 -0.81,1.06 -0.35,2.01 -0.77,1.66 1.44,0.18 0.36,1.3 0.62,0.62 0.22,1.13 -0.33,1.04 0.1,0.59 0.69,0.23 0.67,0.98 3.6,-0.27 1.63,0.36 1.98,2.41 1.13,-0.3 2.02,0.15 1.6,-0.32 0.99,0.49 -0.51,1.5 -0.62,0.94 -0.22,2.01 0.56,1.85 0.8,0.83 0.09,0.63 -1.42,1.39 1.02,0.61 0.75,0.98 0.85,2.77 -0.53,0.35 -0.54,-1.65 -0.78,-0.88 -0.93,0.96 -5.46,-0.06 0.03,1.74 1.64,0.29 -0.09,1.07 -0.56,-0.29 -1.58,0.46 -0.01,2.02 1.24,1.02 0.44,1.59 -0.07,1.21 -1.26,7.65 -1.4,-1.49 -0.84,-0.06 1.81,-2.84 -2.15,-1.31 -1.68,0.24 -1.01,-0.48 -1.55,0.74 -2.09,-0.35 -1.65,-2.92 -1.3,-0.72 -0.89,-1.32 -1.86,-1.32 z", - "CR": "m 242.88,440.65 -1.52,-0.63 -0.57,-0.59 0.32,-0.49 -0.1,-0.62 -0.78,-0.68 -1.1,-0.55 -0.97,-0.36 -0.18,-0.83 -0.74,-0.51 0.18,0.83 -0.56,0.67 -0.64,-0.78 -0.9,-0.28 -0.38,-0.57 0.02,-0.86 0.37,-0.9 -0.79,-0.4 0.64,-0.54 0.42,-0.37 1.85,0.75 0.64,-0.37 0.89,0.24 0.47,0.58 0.82,0.19 0.67,-0.6 0.72,1.54 1.08,1.14 1.32,1.21 -1.09,0.25 0.02,1.13 0.58,0.42 -0.42,0.34 0.11,0.51 -0.23,0.57 z", - "CU": "m 244.83,397.19 2.43,0.22 2.2,0.03 2.63,1.03 1.12,1.11 2.62,-0.34 0.99,0.7 2.38,1.87 1.74,1.35 0.92,-0.04 1.68,0.61 -0.21,0.84 2.07,0.12 2.12,1.22 -0.33,0.69 -1.87,0.38 -1.89,0.15 -1.93,-0.24 -4.01,0.29 1.88,-1.66 -1.14,-0.77 -1.81,-0.2 -0.97,-0.86 -0.67,-1.7 -1.58,0.11 -2.62,-0.8 -0.84,-0.63 -3.65,-0.47 -0.98,-0.59 1.05,-0.75 -2.75,-0.15 -2.01,1.56 -1.17,0.04 -0.4,0.74 -1.38,0.33 -1.2,-0.29 1.48,-0.93 0.6,-1.09 1.27,-0.67 1.43,-0.59 2.13,-0.29 z", - "CY": "m 570.56,358.54 1.89,-1.46 -2.55,1.02 -2.02,-0.05 -0.4,0.83 -0.2,0.02 -1.33,0.12 0.65,1.37 1.37,0.44 2.88,-1.38 -0.09,-0.27 z", - "CZ": "m 523.06,308.11 -1.3,-0.8 -1.31,0.22 -2.18,-1.3 -0.99,0.32 -1.57,1.74 -2.09,-1.37 -1.58,-1.83 -1.43,-1.04 -0.3,-1.82 -0.49,-1.3 2.04,-0.95 1.04,-1.1 2.01,-0.86 0.71,-0.84 0.74,0.51 1.25,-0.47 1.33,1.43 2.09,0.39 -0.17,1.21 1.52,0.9 0.42,-1.13 1.92,0.49 0.27,1.37 2.08,0.26 1.29,2.13 -0.83,0.01 -0.44,0.77 -0.64,0.19 -0.18,0.97 -0.54,0.21 -0.08,0.39 -0.95,0.44 -1.25,-0.07 z", - "DE": "m 503.32,279.17 0.05,1.88 2.84,1.12 -0.03,1.7 2.85,-0.9 1.57,-1.31 3.17,1.89 1.32,1.51 0.66,2.39 -0.78,1.25 1.01,1.65 0.7,2.45 -0.22,1.56 1.15,2.86 -1.25,0.47 -0.74,-0.51 -0.71,0.84 -2.01,0.86 -1.04,1.1 -2.04,0.95 0.49,1.3 0.3,1.82 1.43,1.04 1.58,1.83 -0.98,1.95 -1.01,0.54 0.4,2.72 -0.27,0.7 -0.87,-0.85 -1.34,-0.12 -2.01,0.74 -2.47,-0.18 -0.4,1.09 -1.42,-1.14 -0.85,0.22 -3,-1.26 -0.58,0.9 -2.38,-0.03 0.35,-2.98 1.42,-2.9 -4.04,-0.78 -1.32,-1.13 0.16,-1.89 -0.56,-0.98 0.32,-2.97 -0.48,-4.69 1.69,0 0.71,-1.71 0.7,-4.23 -0.53,-1.58 0.55,-1 2.34,-0.26 0.52,1.04 1.91,-2.33 -0.64,-1.79 -0.13,-2.75 2.12,0.64 z", - "DJ": "m 596.3,427.97 0.66,0.88 -0.09,1.19 -1.6,0.68 1.21,0.77 -1.04,1.52 -0.62,-0.5 -0.67,0.2 -1.57,-0.05 -0.05,-0.86 -0.21,-0.79 0.94,-1.33 0.99,-1.26 1.2,0.25 z", - "DK": "m 511.08,276.09 -1.68,3.97 -2.93,-2.76 -0.39,-2.05 4.11,-1.66 0.89,2.5 z m -4.98,-4.25 -0.69,1.9 -0.83,-0.55 -2.02,3.59 0.76,2.39 -1.79,0.74 -2.12,-0.64 -1.14,-2.72 -0.08,-5.12 0.47,-1.38 0.8,-1.54 2.47,-0.32 0.98,-1.43 2.26,-1.47 -0.1,2.68 -0.83,1.68 0.34,1.43 1.52,0.76 z", - "DO": "m 274.43,407.6 0.35,-0.51 2.19,0.02 1.66,0.76 0.74,-0.08 0.51,1.05 1.53,-0.06 -0.09,0.88 1.25,0.11 1.38,1.08 -1.04,1.2 -1.34,-0.64 -1.28,0.12 -0.92,-0.14 -0.51,0.54 -1.08,0.18 -0.42,-0.72 -0.93,0.43 -1.12,2 -0.72,-0.46 -0.15,-0.84 0.06,-0.8 -0.72,-0.88 0.68,-0.5 0.22,-1.13 z", - "DZ": "m 509.15,396.33 -9.61,5.75 -8.12,5.85 -3.95,1.32 -3.11,0.29 -0.03,-1.88 -1.3,-0.48 -1.75,-0.85 -0.66,-1.39 -9.46,-6.55 -9.46,-6.65 -10.55,-7.53 0.06,-0.61 0,-0.21 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 2.69,-1.87 3.04,-0.6 1.77,-1.43 2.7,-1.05 4.75,-0.62 4.64,-0.29 1.41,0.52 2.64,-1.37 3,-0.03 1.14,0.81 1.91,-0.21 -0.57,1.79 0.45,3.28 -0.66,2.82 -1.73,1.88 0.25,2.53 2.29,1.98 0.03,0.81 1.72,1.33 1.2,5.86 0.91,2.84 0.15,1.48 -0.49,2.59 0.2,1.44 -0.36,1.72 0.25,1.97 -1.12,1.29 1.66,2.26 0.11,1.32 0.99,1.71 1.31,-0.56 2.22,1.42 z", - "EC": "m 250.35,473.12 1.49,-2.08 -0.61,-1.22 -1.07,1.3 -1.68,-1.23 0.57,-0.78 -0.47,-2.53 0.98,-0.42 0.52,-1.73 1.06,-1.8 -0.2,-1.13 1.54,-0.6 1.92,-1.11 2.81,1.59 0.52,-0.05 0.68,1.2 2.38,0.39 0.8,-0.44 1.38,0.92 1.2,0.66 0.39,2.11 -0.87,1.81 -3.06,2.92 -3.37,1.1 -1.72,2.43 -0.53,1.88 -1.59,1.15 -1.17,-1.41 -1.14,-0.3 -1.16,0.22 -0.07,-1.02 0.8,-0.66 z", - "EE": "m 543.67,264.96 0.33,-3.12 -1.03,0.67 -1.78,-1.9 -0.25,-3.11 3.55,-1.53 3.53,-0.81 3.04,0.92 2.9,-0.17 0.42,0.96 -1.99,3.14 0.83,4.96 -1.2,1.66 -2.32,-0.01 -2.41,-1.94 -1.23,-0.65 z", - "EG": "m 573.42,377.53 -0.79,1.29 -0.6,2.4 -0.76,1.64 -0.66,0.56 -0.93,-1.02 -1.27,-1.42 -2,-4.57 -0.28,0.29 1.16,3.37 1.72,3.18 2.12,4.88 1.03,1.68 0.9,1.74 2.52,3.4 -0.56,0.53 0.09,1.97 3.27,2.71 0.49,0.62 -11.12,0 -10.88,0 -11.27,0 0,-11.23 0,-11.18 -0.84,-2.58 0.72,-2 -0.43,-1.39 1.01,-1.57 3.73,-0.05 2.7,0.86 2.78,0.97 1.3,0.5 2.16,-1.03 1.15,-0.93 2.48,-0.27 1.99,0.41 0.77,1.62 0.65,-1.07 2.24,0.77 2.19,0.19 1.38,-0.82 z", - "EH": "m 438.82,383.31 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 -0.11,0.09 -0.05,0.04 -1.78,3.2 -1.86,1.14 -1.02,1.91 -0.06,1.65 -0.75,1.79 -0.94,0.49 -1.56,1.94 -0.96,2.15 0.18,1.02 -0.92,1.57 -1.08,0.82 -0.13,1.39 -0.12,1.27 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 0.06,-0.61 0,-0.21 z", - "ER": "m 594.25,428.42 -0.96,-0.93 -1.15,-1.67 -1.24,-0.92 -0.73,-1 -2.44,-1.15 -1.92,-0.03 -0.68,-0.61 -1.64,0.68 -1.7,-1.31 -0.88,2.15 -3.26,-0.6 -0.3,-1.15 1.21,-4.25 0.27,-1.93 0.88,-0.9 2.07,-0.48 1.42,-1.67 1.63,3.38 0.77,2.67 1.54,1.41 3.82,2.72 1.56,1.64 1.52,1.66 0.88,0.98 1.38,0.86 -0.85,0.7 z", - "ES": "m 450.17,334.81 0.14,-2.68 -1.14,-1.66 3.96,-2.77 3.43,0.7 3.77,-0.03 2.98,0.66 2.33,-0.2 4.53,0.12 1.12,1.49 5.16,1.73 1.02,-0.82 3.16,1.72 3.25,-0.49 0.15,2.19 -2.66,2.49 -3.59,0.78 -0.25,1.24 -1.73,2.03 -1.08,2.96 1.09,2.05 -1.62,1.6 -0.6,2.3 -2.12,0.7 -1.99,2.69 -3.55,0.05 -2.68,-0.06 -1.75,1.22 -1.07,1.31 -1.38,-0.29 -1.03,-1.17 -0.8,-2 -2.62,-0.54 -0.23,-1.16 1.04,-1.32 0.38,-0.96 -0.96,-1.06 0.77,-2.35 -1.12,-2.17 1.21,-0.3 0.11,-1.72 0.46,-0.53 0.03,-2.88 1.3,-1 -0.78,-1.88 -1.64,-0.13 -0.48,0.47 -1.65,0.01 -0.71,-1.84 -1.14,0.55 z", - "ET": "m 581.79,421.48 1.7,1.31 1.64,-0.68 0.68,0.61 1.92,0.03 2.44,1.15 0.73,1 1.24,0.92 1.15,1.67 0.96,0.93 -0.99,1.26 -0.94,1.33 0.21,0.79 0.05,0.86 1.57,0.05 0.67,-0.2 0.62,0.5 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -1.92,0 -1.13,-0.94 -2.56,1.17 -0.83,1.16 -1.87,-0.22 -0.62,-0.32 -0.66,0.07 -0.88,-0.02 -3.55,-2.38 -1.95,0 -0.96,-0.91 0,-1.57 -1.46,-0.47 -1.65,-3.05 -1.28,-0.65 -0.5,-1.12 -1.42,-1.37 -1.72,-0.2 0.96,-1.61 1.48,-0.07 0.42,-0.86 -0.03,-2.53 0.83,-2.96 1.32,-0.8 0.29,-1.16 1.2,-2.17 1.69,-1.42 1.14,-2.81 0.45,-2.47 3.26,0.6 z", - "FK": "m 303.91,633.38 3.36,-2.69 2.39,1.12 1.68,-1.79 2.24,2.01 -0.84,1.58 -3.79,1.36 -1.26,-1.59 -2.38,2.05 z", - "FI": "m 555.67,193.35 -0.41,5.4 4.3,4.99 -2.59,5.48 3.26,7.96 -1.89,5.76 2.53,4.86 -1.15,4.14 4.15,4.26 -1.06,3.1 -2.6,3.45 -6,7.41 -5.09,0.45 -4.93,2.07 -4.56,1.18 -1.63,-3.07 -2.71,-1.87 0.62,-5.72 -1.36,-5.41 1.34,-3.58 2.54,-3.94 6.41,-7.02 1.88,-1.39 -0.3,-2.84 -3.9,-3.22 -0.94,-2.7 -0.08,-11.12 -4.37,-5.15 -3.74,-3.81 1.68,-2.08 3.12,4.15 3.66,-0.39 3.01,1.87 2.67,-3.44 1.38,-5.85 4.35,-2.78 3.6,3.26 z", - "FJ": "m 980.78,508.86 -0.35,1.4 -0.23,0.16 -1.78,0.72 -1.79,0.61 -0.36,-1.09 1.4,-0.6 0.89,-0.16 1.64,-0.91 0.58,-0.13 z m -5.84,4.31 -1.27,-0.36 -1.08,1 0.27,1.29 1.55,0.36 1.74,-0.4 0.46,-1.53 -0.96,-0.84 -0.71,0.48 z", - "FR": "m 502.31,333.79 -0.93,2.89 -1.27,-0.76 -0.65,-2.53 0.57,-1.41 1.81,-1.45 0.47,3.26 z m -16.75,-33.35 1.96,2.06 1.44,-0.34 2.45,1.97 0.63,0.37 0.81,-0.09 1.32,1.12 4.04,0.79 -1.42,2.9 -0.36,2.98 -0.77,0.71 -1.28,-0.38 0.09,1.05 -2.05,2.3 -0.04,1.84 1.34,-0.63 0.96,1.77 -0.12,1.13 0.83,1.5 -0.97,1.21 0.72,3.04 1.52,0.49 -0.32,1.68 -2.54,2.17 -5.53,-1.04 -4.08,1.24 -0.32,2.29 -3.25,0.49 -3.15,-1.72 -1.02,0.82 -5.16,-1.73 -1.12,-1.49 1.45,-2.32 0.53,-7.88 -2.89,-4.26 -2.07,-2.09 -4.29,-1.6 -0.28,-3.07 3.64,-0.92 4.71,1.09 -0.89,-4.84 2.65,1.85 6.53,-3.37 0.84,-3.61 2.45,-0.9 0.41,1.56 1.3,0.07 1.3,1.79 z", - "GA": "m 506.61,474.73 -2.88,-2.82 -1.86,-2.3 -1.7,-2.88 0.09,-0.92 0.61,-0.9 0.68,-2.02 0.57,-2.07 0.95,-0.16 4.07,0.03 -0.02,-3.35 1.33,-0.19 1.71,0.38 1.66,-0.36 0.35,0.15 -0.21,1.22 0.79,1.43 2.08,-0.22 0.7,0.55 -1.21,3.23 1.32,1.64 0.31,2.18 -0.35,1.85 -0.86,1.32 -2.48,-0.12 -1.5,-1.34 -0.22,1.24 -1.89,0.34 -0.96,0.7 1.05,1.85 z", - "GB": "m 459.63,281.25 -1.5,3.29 -2.12,-0.98 -1.73,0.07 0.58,-2.57 -0.58,-2.6 2.35,-0.2 3,2.99 z m 7.45,-20.76 -3,5.73 2.86,-0.72 3.07,0.03 -0.73,4.22 -2.52,4.53 2.9,0.32 0.22,0.52 2.5,5.79 1.92,0.77 1.73,5.41 0.8,1.84 3.4,0.88 -0.34,2.93 -1.43,1.33 1.12,2.33 -2.52,2.33 -3.75,-0.04 -4.77,1.21 -1.31,-0.87 -1.85,2.06 -2.59,-0.5 -1.97,1.67 -1.49,-0.87 4.11,-4.64 2.51,-0.97 -0.02,0 -4.38,-0.75 -0.79,-1.8 2.93,-1.41 -1.54,-2.48 0.53,-3.06 4.17,0.42 0,0 0.41,-2.74 -1.88,-2.95 -0.04,-0.07 -3.4,-0.85 -0.67,-1.32 1.02,-2.2 -0.92,-1.37 -1.51,2.34 -0.16,-4.8 -1.42,-2.59 1.02,-5.36 2.18,-4.31 2.24,0.42 3.36,-0.41 z", - "GE": "m 592.01,336.1 0.42,-1.6 -0.7,-2.57 -1.62,-1.41 -1.55,-0.44 -1.03,-1.17 0.34,-0.46 2.37,0.66 4.13,0.62 3.82,1.83 0.49,0.71 1.7,-0.6 2.62,0.8 0.85,1.55 1.77,0.87 -0.73,0.51 1.38,2.02 -0.38,0.43 -1.51,-0.22 -2.09,-1.06 -0.69,0.6 -3.9,0.58 -2.7,-1.82 z", - "GF": "m 328.14,456.66 -1.07,1.06 -1.34,0.2 -0.38,-0.78 -0.63,-0.12 -0.87,0.76 -1.22,-0.57 0.71,-1.19 0.24,-1.27 0.48,-1.2 -1.09,-1.65 -0.22,-1.91 1.46,-2.41 0.95,0.31 2.06,0.66 2.97,2.36 0.46,1.14 -1.66,2.55 -0.85,2.06 z", - "GH": "m 478.48,447.09 -4.4,1.64 -1.56,0.96 -2.53,0.81 -2.5,-0.79 0.13,-1.11 -1.21,-2.41 0.73,-3.17 1.18,-2.36 -0.74,-4.01 -0.39,-2.13 0.07,-1.61 4.87,-0.13 1.24,0.21 0.9,-0.46 1.3,0.22 -0.21,0.89 1.17,1.46 0,2.05 0.27,2.22 0.7,1.03 -0.62,2.53 0.22,1.4 0.75,1.78 z", - "GL": "m 344.38,24.16 9.42,-13.61 9.84,1.07 3.57,-8.95 9.91,-2.42 22.4,3.15 17.54,18.59 -5.18,8.3 -10.73,0.93 -15.09,2.03 1.41,3.64 9.93,-2.24 8.44,6.91 5.45,-6.12 2.33,7.15 -3.08,10.97 7.14,-6.93 13.61,-7.55 8.41,3.81 1.57,8.12 -11.43,12.66 -1.58,3.9 -8.96,2.86 6.49,0.79 -3.28,11.51 -2.26,9.59 0.09,15.26 3.37,8.34 -4.38,0.51 -4.61,3.88 5.17,6.3 0.66,9.62 -3,1.02 3.63,9.15 -6.22,0.75 3.25,4.14 -0.92,3.51 -3.95,1.51 -3.91,0.03 3.51,6.48 0.04,4.13 -5.55,-3.83 -1.44,2.49 3.78,2.29 3.68,5.48 1.06,6.95 -5,1.62 -2.16,-3.26 -3.47,-4.98 0.96,5.87 -3.25,4.41 7.38,0.35 3.87,0.45 -7.52,7.03 -7.62,6.13 -8.2,2.61 -3.09,0.04 -2.9,2.87 -3.9,7.63 -6.03,4.89 -1.94,0.29 -3.74,1.67 -4.02,1.59 -2.41,4.12 -0.04,4.56 -1.41,4.16 -4.58,4.95 1.13,4.71 -1.26,4.85 -1.43,5.56 -3.95,0.34 -4.14,-4.63 -5.61,-0.03 -2.72,-3.18 -1.87,-5.8 -4.86,-7.68 -1.42,-4.15 -0.38,-5.89 -3.89,-6.27 1.01,-5.17 -1.87,-2.53 2.77,-8.65 4.22,-2.85 1.11,-3.26 0.59,-6.26 -3.21,2.86 -1.52,1.19 -2.52,1.14 -3.44,-2.61 -0.19,-5.55 1.1,-4.48 2.6,-0.12 5.72,2.25 -4.82,-5.43 -2.51,-3.01 -2.79,1.24 -2.34,-2.19 3.13,-8.5 -1.7,-3.53 -2.23,-6.74 -3.37,-10.91 -3.57,-4.17 0.03,-4.63 -7.53,-6.69 -5.95,-0.85 -7.49,0.47 -6.84,0.86 -3.26,-3.75 -4.87,-7.66 7.36,-3.97 5.65,-0.68 -12,-3.36 -6.32,-5.44 0.39,-5.34 10.61,-6.87 10.27,-7.16 1.08,-5.64 -7.56,-5.76 2.44,-6.64 9.71,-12.33 4.08,-1.98 -1.17,-8.57 6.64,-5.24 8.62,-3.21 8.62,-0.18 3.06,6.3 7.44,-11.32 6.69,7.78 3.93,1.59 5.83,6.41 L 344,33.25 z", - "GM": "m 428.28,426.68 0.36,-1.27 3.05,-0.09 0.64,-0.67 0.89,-0.05 1.1,0.71 0.87,0.01 0.93,-0.48 0.56,0.82 -1.21,0.65 -1.22,-0.05 -1.2,-0.61 -1.04,0.66 -0.5,0.03 -0.68,0.4 z", - "GN": "m 451.84,442.16 -0.79,-0.07 -0.57,1.13 -0.8,-0.01 -0.54,-0.6 0.18,-1.13 -1.17,-1.72 -0.73,0.31 -0.6,0.07 -0.77,0.16 0.03,-1.03 -0.45,-0.74 0.09,-0.82 -0.61,-1.19 -0.78,-1.01 -2.24,0 -0.65,0.53 -0.78,0.06 -0.48,0.61 -0.32,0.79 -1.5,1.24 -1.23,-1.67 -1.09,-1.11 -0.72,-0.36 -0.7,-0.57 -0.31,-1.25 -0.41,-0.62 -0.82,-0.47 1.25,-1.38 0.85,0.05 0.73,-0.48 0.62,0 0.44,-0.38 -0.24,-0.94 0.31,-0.3 0.05,-0.97 1.35,0.03 2.02,0.7 0.62,-0.07 0.21,-0.31 1.52,0.22 0.41,-0.16 0.16,1.05 0.45,-0.01 0.73,-0.38 0.46,0.1 0.78,0.72 1.2,0.23 0.77,-0.62 0.91,-0.38 0.67,-0.4 0.56,0.08 0.62,0.62 0.34,0.79 1.15,1.19 -0.58,0.73 -0.11,0.92 0.6,-0.28 0.35,0.34 -0.15,0.84 0.86,0.82 -0.56,0.21 -0.23,0.97 0.65,1.16 0.69,2.26 -1.04,0.34 -0.27,0.39 0.22,0.54 -0.16,1.23 z", - "GQ": "m 502.12,460.82 -0.53,-0.42 0.97,-3.13 4.56,0.07 0.02,3.35 -4.07,-0.03 z", - "GR": "m 541.95,356.96 1.53,1.16 2.18,-0.19 2.09,0.24 -0.07,0.6 1.53,-0.41 -0.35,1.01 -4.04,0.29 0.03,-0.56 -3.42,-0.67 0.52,-1.47 z m 8.15,-20.96 -0.87,2.33 -0.67,0.41 -1.71,-0.1 -1.46,-0.35 -3.4,0.96 1.94,2.06 -1.42,0.59 -1.56,0 -1.48,-1.88 -0.53,0.8 0.63,2.18 1.4,1.7 -1.06,0.79 1.56,1.65 1.39,1.03 0.04,2 -1.36,-1.15 -1.24,0.21 0.83,1.8 -0.92,0.19 -1,-0.69 1.2,3.95 -0.58,0 -0.45,-1.25 -0.57,-0.02 -0.26,1.32 -0.45,-0.3 0.1,-0.74 -0.56,-1.04 H 537 l 0.12,0.84 -0.25,0.27 -0.62,-0.54 -0.38,-1.01 0.52,-0.57 -0.36,-0.74 -0.41,-0.38 -0.42,-0.09 -0.49,-0.94 0.58,-0.52 0.36,-0.48 0.56,0.1 0.25,-0.41 0.59,-0.16 0.68,0.46 0.55,0.17 0.39,-0.62 -0.94,-0.08 -0.56,-0.19 -1.25,0.28 -1.22,0.05 -1.09,-1.64 -0.18,-0.25 0.17,-0.64 -1.42,-1.15 -0.19,-1.03 1.3,-1.76 0.17,-1.19 0.91,-0.53 0.06,-0.97 1.83,-0.33 1.07,-0.81 1.52,0.07 0.46,-0.65 0.53,-0.12 2.07,0.11 2.25,-1.02 1.98,1.3 2.55,-0.35 0.03,-1.86 1.38,0.93 z", - "GT": "m 222.89,425 -1.44,-0.5 -1.75,-0.05 -1.28,-0.57 -1.51,-1.18 0.07,-0.84 0.32,-0.68 -0.39,-0.54 1.35,-2.36 3.59,-0.01 0.08,-0.98 -0.46,-0.18 -0.31,-0.63 -1.04,-0.67 -1.04,-0.98 1.27,0 0,-1.65 2.62,0 2.59,0.03 -0.02,2.31 -0.22,3.28 0.83,0 0.92,0.53 0.24,-0.44 0.82,0.37 -1.27,1.11 -1.33,0.81 -0.2,0.55 0.22,0.56 -0.58,0.74 -0.66,0.17 0.15,0.34 -0.52,0.32 -0.96,0.72 z", - "GW": "m 433.08,432.69 -1.5,-1.19 -1.18,-0.18 -0.64,-0.81 0.01,-0.43 -0.85,-0.6 -0.18,-0.61 1.49,-0.47 0.93,0.09 0.75,-0.32 5.18,0.12 -0.05,0.97 -0.31,0.3 0.24,0.94 -0.44,0.38 -0.62,0 -0.73,0.48 -0.85,-0.05 z", - "GY": "m 307.95,440.25 1.84,1.03 1.74,1.83 0.07,1.45 1.06,0.07 1.5,1.36 1.11,0.98 -0.45,2.52 -1.7,0.73 0.15,0.65 -0.52,1.45 1.25,2.02 0.89,0.01 0.37,1.57 1.71,2.42 -0.68,0.1 -1.55,-0.23 -0.91,0.74 -1.27,0.49 -0.88,0.12 -0.31,0.54 -1.38,-0.14 -1.73,-1.3 -0.2,-1.29 -0.72,-1.41 0.45,-2.38 0.78,-0.98 -0.65,-1.3 -0.96,-0.42 0.37,-1.23 -0.66,-0.64 -1.46,0.12 -1.89,-2.12 0.76,-0.77 -0.06,-1.3 1.73,-0.45 0.69,-0.52 -0.96,-1.04 0.25,-1.03 z", - "HN": "m 230.68,427.15 -0.48,-0.89 -0.86,-0.25 0.2,-1.15 -0.38,-0.31 -0.58,-0.2 -1.23,0.34 -0.1,-0.39 -0.85,-0.46 -0.6,-0.57 -0.83,-0.24 0.58,-0.74 -0.22,-0.56 0.2,-0.55 1.33,-0.81 1.27,-1.11 0.29,0.12 0.62,-0.51 0.8,-0.04 0.26,0.23 0.44,-0.14 1.3,0.26 1.3,-0.08 0.9,-0.32 0.33,-0.32 0.89,0.15 0.67,0.2 0.73,-0.07 0.56,-0.25 1.28,0.4 0.45,0.06 0.85,0.54 0.81,0.65 1.02,0.44 0.74,0.8 -0.96,-0.06 -0.39,0.39 -0.97,0.38 -0.71,0 -0.62,0.37 -0.56,-0.13 -0.48,-0.44 -0.29,0.08 -0.36,0.69 -0.27,-0.03 -0.05,0.6 -0.98,0.79 -0.51,0.34 -0.29,0.36 -0.83,-0.58 -0.6,0.76 -0.59,-0.02 -0.66,0.07 0.06,1.41 -0.41,0.02 -0.35,0.66 z", - "HR": "m 528.3,319.18 0.68,1.55 0.89,1.14 -1.08,1.49 -1.27,-0.88 -1.94,0.06 -2.41,-0.66 -1.31,0.09 -0.6,0.82 -1.01,-0.91 -0.59,1.64 1.38,1.83 0.6,1.21 1.29,1.45 1.07,0.85 1.06,1.61 2.48,1.44 -0.31,0.64 -2.63,-1.4 -1.63,-1.38 -2.56,-1.14 -2.36,-2.85 0.57,-0.3 -1.28,-1.64 -0.06,-1.34 -1.8,-0.62 -0.86,1.71 -0.83,-1.33 0.07,-1.38 0.1,-0.06 1.95,0.14 0.52,-0.68 0.95,0.65 1.1,0.08 -0.01,-1.12 0.97,-0.41 0.28,-1.62 2.23,-1.08 0.89,0.5 2.1,1.73 2.31,0.77 z", - "HT": "m 270.29,407 1.71,0.13 2.43,0.47 0.25,1.61 -0.22,1.13 -0.68,0.5 0.72,0.88 -0.06,0.8 -1.86,-0.5 -1.32,0.2 -1.71,-0.21 -1.31,0.55 -1.51,-0.92 0.25,-0.95 2.58,0.41 2.12,0.24 1.01,-0.66 -1.28,-1.27 0.02,-1.13 -1.77,-0.46 z", - "HU": "m 520.93,315.36 0.93,-2.65 -0.54,-0.89 1.58,-0.01 0.21,-1.71 1.43,1.07 1.03,0.46 2.36,-0.51 0.22,-0.84 1.12,-0.13 1.36,-0.65 0.3,0.27 1.32,-0.52 0.66,-1 0.92,-0.25 3,1.28 0.6,-0.43 1.55,1.14 0.2,1.12 -1.71,0.87 -1.33,2.8 -1.69,2.76 -2.25,0.76 -1.75,-0.17 -2.15,1.05 -1.05,0.6 -2.31,-0.77 -2.1,-1.73 -0.89,-0.5 -0.55,-1.37 z", - "ID": "m 813.97,492.31 -1.18,0.05 -3.72,-1.98 2.61,-0.56 1.47,0.86 0.98,0.86 -0.16,0.77 z m 10.43,-0.28 -2.4,0.62 -0.34,-0.34 0.25,-0.96 1.21,-1.72 2.77,-1.12 0.28,0.56 0.05,0.86 -1.82,2.1 z m -18.32,-5.77 1.01,0.75 1.73,-0.23 0.7,1.2 -3.24,0.57 -1.94,0.38 -1.51,-0.02 0.96,-1.62 1.54,-0.02 0.75,-1.01 z m 14.03,-0.01 -0.41,1.56 -4.21,0.8 -3.73,-0.35 -0.01,-1.03 2.23,-0.59 1.76,0.84 1.87,-0.21 2.5,-1.02 z m -40.04,-3.69 5.37,0.28 0.62,-1.16 5.2,1.35 1.02,1.82 4.21,0.51 3.44,1.67 -3.2,1.07 -3.08,-1.13 -2.54,0.08 -2.91,-0.21 -2.62,-0.51 -3.25,-1.07 -2.06,-0.28 -1.17,0.35 -5.11,-1.16 -0.49,-1.21 -2.57,-0.21 1.92,-2.68 3.4,0.17 2.26,1.09 1.16,0.21 0.4,1.02 z m 73.18,-1.58 -1.44,1.91 -0.27,-2.11 0.5,-1.01 0.59,-0.95 0.64,0.82 -0.02,1.34 z m -20.96,-7.71 -1.05,0.93 -1.94,-0.51 -0.55,-1.2 2.84,-0.13 0.7,0.91 z m 9.04,-1.01 1.02,2.13 -2.37,-1.15 -2.34,-0.23 -1.58,0.18 -1.94,-0.1 0.67,-1.53 3.46,-0.12 3.08,0.82 z m 10.29,-5.42 0.78,4.51 2.9,1.67 2.34,-2.96 3.22,-1.68 2.49,0 2.4,0.97 2.08,1 3.01,0.53 0.05,9.1 0.05,9.16 -2.5,-2.31 -2.85,-0.57 -0.69,0.8 -3.55,0.09 1.19,-2.29 1.77,-0.78 -0.73,-3.05 -1.35,-2.35 -5.44,-2.37 -2.31,-0.23 -4.21,-2.58 -0.83,1.36 -1.08,0.25 -0.64,-1.02 -0.01,-1.21 -2.14,-1.37 3.02,-1 2,0.05 -0.24,-0.74 -4.1,-0.01 -1.11,-1.66 -2.5,-0.51 -1.19,-1.38 3.78,-0.67 1.44,-0.91 4.5,1.14 0.45,1.02 z m -24.96,-7.16 -2.25,2.76 -2.11,0.54 -2.7,-0.54 -4.67,0.14 -2.45,0.4 -0.4,2.11 2.51,2.48 1.51,-1.26 5.23,-0.95 -0.23,1.28 -1.22,-0.4 -1.22,1.63 -2.47,1.08 2.65,3.57 -0.51,0.96 2.52,3.22 -0.02,1.84 -1.5,0.82 -1.1,-0.98 1.36,-2.29 -2.75,1.08 -0.7,-0.77 0.36,-1.08 -2.02,-1.64 0.21,-2.72 -1.87,0.85 0.24,3.25 0.11,4 -1.78,0.41 -1.2,-0.82 0.8,-2.57 -0.43,-2.69 -1.18,-0.02 -0.87,-1.91 1.16,-1.83 0.4,-2.21 1.41,-4.2 0.59,-1.15 2.38,-2.07 2.19,0.82 3.54,0.39 3.22,-0.12 2.77,-2.02 0.49,0.61 z m 9.67,0.8 -0.15,2.43 -1.45,-0.27 -0.43,1.69 1.16,1.47 -0.79,0.33 -1.13,-1.76 -0.83,-3.56 0.56,-2.23 0.93,-1.01 0.2,1.52 1.66,0.24 0.27,1.15 z m -30.32,-1.94 3.14,2.58 -3.32,0.33 -0.94,1.9 0.12,2.52 -2.7,1.91 -0.06,2.77 -1.08,4.27 -0.41,-0.99 -3.19,1.26 -1.11,-1.71 -2,-0.16 -1.4,-0.89 -3.33,1 -1.02,-1.35 -1.84,0.15 -2.31,-0.32 -0.43,-3.74 -1.4,-0.77 -1.35,-2.38 -0.39,-2.44 0.33,-2.58 1.67,-1.85 0.47,1.86 1.92,1.57 1.81,-0.57 1.79,0.2 1.63,-1.41 1.34,-0.24 2.65,0.78 2.29,-0.59 1.44,-3.88 1.08,-0.97 0.97,-3.17 3.22,0 2.43,0.47 -1.59,2.52 2.06,2.64 -0.49,1.28 z m -33.81,21.42 -3.1,0.06 -2.36,-2.34 -3.6,-2.28 -1.2,-1.69 -2.12,-2.27 -1.39,-2.09 -2.13,-3.9 -2.46,-2.32 -0.82,-2.39 -1.03,-2.17 -2.53,-1.75 -1.47,-2.39 -2.11,-1.56 -2.92,-3.08 -0.25,-1.42 1.81,0.11 4.34,0.54 2.48,2.73 2.17,1.89 1.55,1.16 2.66,3 2.85,0.04 2.36,1.91 1.62,2.33 2.13,1.27 -1.12,2.27 1.61,0.97 1.01,0.07 0.48,1.94 0.98,1.56 2.06,0.25 1.36,1.76 -0.7,3.47 -0.16,4.32 z", - "IE": "m 458.13,284.54 0.46,3.36 -2.12,4.12 -4.97,2.68 -3.97,-0.68 2.27,-4.78 -1.46,-4.77 3.81,-3.75 2.12,-2.27 0.58,2.6 -0.58,2.57 1.74,-0.06 z", - "IL": "m 575.66,367.07 -0.49,1.05 -1.02,-0.46 -0.58,2.2 0.7,0.36 -0.71,0.46 -0.13,0.86 1.32,-0.45 0.07,1.27 -1.4,5.17 -1.84,-5.55 0.81,-1.08 -0.19,-0.19 0.74,-1.53 0.57,-2.5 0.4,-0.84 0.08,-0.03 0.94,0 0.26,-0.58 0.75,-0.05 0.04,1.37 -0.38,0.5 z", - "IN": "m 693.75,357.69 3.01,3.99 -0.28,2.74 1.11,1.71 -0.09,1.69 -2.01,-0.44 0.79,3.63 2.75,2.06 3.9,2.27 -1.78,1.46 -1.09,2.99 2.72,1.2 2.64,1.55 3.66,1.77 3.84,0.41 1.62,1.59 2.16,0.29 3.38,0.73 2.33,-0.05 0.32,-1.24 -0.37,-1.99 0.22,-1.35 1.71,-0.67 0.24,2.48 0.05,0.63 2.55,1.19 1.77,-0.49 2.36,0.21 2.29,-0.09 0.2,-1.93 -1.14,-1 2.26,-0.4 2.55,-2.35 3.23,-2.03 2.35,0.78 2,-1.34 1.32,1.98 -0.95,1.34 3.02,0.47 0.22,1.2 -0.99,0.58 0.23,1.93 -2,-0.57 -3.63,2.16 0.08,1.78 -1.54,2.6 -0.15,1.5 -1.25,2.52 -2.19,-0.7 -0.11,3.15 -0.63,1.03 0.3,1.28 -1.39,0.72 -1.47,-4.8 -0.78,0.01 -0.46,1.94 -1.53,-1.58 0.86,-1.73 1.26,-0.18 1.29,-2.59 -1.61,-0.53 -2.61,0.05 -2.66,-0.42 -0.25,-2.15 -1.34,-0.16 -2.22,-1.34 -0.99,2.11 2.02,1.63 -1.75,1.15 -0.62,1.12 1.72,0.82 -0.47,1.84 0.97,2.28 0.44,2.48 -0.41,1.1 -1.9,-0.04 -3.46,0.62 0.16,2.25 -1.5,1.76 -4.03,2 -3.14,3.46 -2.11,1.85 -2.79,1.91 0,1.34 -1.4,0.72 -2.53,1.03 -1.31,0.16 -0.84,2.2 0.58,3.75 0.15,2.37 -1.18,2.71 -0.02,4.83 -1.45,0.14 -1.27,2.15 0.85,0.93 -2.56,0.8 -0.94,1.92 -1.13,0.81 -2.65,-2.63 -1.3,-3.96 -1.08,-2.86 -0.98,-1.34 -1.49,-2.74 -0.69,-3.58 -0.49,-1.8 -2.55,-3.97 -1.16,-5.64 -0.84,-3.77 0.01,-3.58 -0.54,-2.8 -4.08,1.79 -1.98,-0.36 -3.66,-3.63 1.35,-1.09 -0.83,-1.18 -3.29,-2.58 1.87,-2.04 6.17,0.01 -0.56,-2.64 -1.57,-1.56 -0.32,-2.39 -1.84,-1.4 3.09,-3.3 3.26,0.24 2.93,-3.32 1.76,-3.26 2.72,-3.24 -0.04,-2.33 2.39,-1.91 -2.27,-1.63 -0.97,-2.25 -0.99,-2.95 1.37,-1.46 4.26,0.83 3.12,-0.51 z", - "IQ": "m 602.86,356.02 1.83,1.04 0.22,2 -1.42,1.17 -0.65,2.64 1.95,3.18 3.43,1.82 1.45,2.5 -0.46,2.37 0.89,0 0.03,1.73 1.55,1.69 -1.66,-0.15 -1.89,-0.27 -2.06,3.08 -5.21,-0.26 -7.9,-6.49 -4.18,-2.29 -3.38,-0.89 -1.13,-4.04 6.21,-3.5 1.06,-4.12 -0.27,-2.52 1.54,-0.86 1.44,-2.18 1.2,-0.55 3.26,0.46 0.99,0.89 1.34,-0.59 z", - "IR": "m 626.69,351.78 2.47,-0.68 1.99,-2.02 1.87,0.1 1.23,-0.66 2,0.33 3.1,1.79 2.24,0.39 3.2,3.09 2.09,0.12 0.25,2.91 -1.14,4.25 -0.77,2.45 1.22,0.49 -1.2,1.83 0.92,2.64 0.22,2.09 2.12,0.55 0.23,2.1 -2.54,2.93 1.38,1.68 1.13,1.93 2.68,1.4 0.08,2.77 1.34,0.51 0.23,1.44 -4.04,1.61 -1.06,3.6 -5.27,-0.93 -3.06,-0.71 -3.16,-0.41 -1.2,-3.81 -1.34,-0.56 -2.16,0.56 -2.82,1.51 -3.43,-1.03 -2.83,-2.41 -2.7,-0.9 -1.87,-3.01 -2.07,-4.27 -1.51,0.52 -1.78,-1.07 -1.05,1.26 -1.55,-1.69 -0.03,-1.73 -0.89,0 0.46,-2.37 -1.45,-2.5 -3.43,-1.82 -1.95,-3.18 0.65,-2.64 1.42,-1.17 -0.22,-2 -1.83,-1.04 -1.82,-4.14 -1.53,-2.83 0.54,-1.09 -0.87,-4.12 1.92,-1.03 0.44,1.37 1.42,1.66 1.92,0.47 1.02,-0.1 3.31,-2.66 1.05,-0.27 0.82,1.07 -0.96,1.78 1.75,1.86 0.69,-0.17 0.89,2.61 2.66,0.73 1.95,1.76 3.98,0.6 4.38,-0.92 z", - "IS": "m 434.82,212.68 -0.64,4.48 3.16,4.6 -3.64,5.01 -8.09,4.38 -2.42,1.15 -3.69,-0.93 -7.82,-2.01 2.76,-2.84 -6.1,-3.2 4.96,-1.28 -0.12,-1.97 -5.88,-1.57 1.89,-4.47 4.25,-1.03 4.37,4.68 4.26,-3.75 3.53,1.96 4.57,-3.71 z", - "IT": "m 519.02,348.13 -1.01,2.78 0.42,1.09 -0.59,1.79 -2.14,-1.31 -1.43,-0.38 -3.91,-1.79 0.39,-1.82 3.28,0.32 2.86,-0.39 2.13,-0.29 z m -17.69,-10.82 1.68,2.62 -0.39,4.81 -1.27,-0.23 -1.14,1.2 -1.06,-0.95 -0.11,-4.38 -0.64,-2.1 1.54,0.19 1.39,-1.16 z m 8.87,-21.6 4.01,1.05 -0.3,1.99 0.67,1.71 -2.23,-0.58 -2.28,1.42 0.16,1.97 -0.34,1.12 0.92,1.99 2.63,1.95 1.41,3.17 3.12,3.05 2.2,-0.02 0.68,0.83 -0.79,0.74 2.51,1.35 2.06,1.12 2.4,1.92 0.29,0.68 -0.52,1.31 -1.56,-1.7 -2.44,-0.6 -1.18,2.36 2.03,1.34 -0.33,1.88 -1.17,0.21 -1.5,3.06 -1.17,0.27 0.01,-1.08 0.57,-1.91 0.61,-0.77 -1.09,-2.09 -0.86,-1.83 -1.16,-0.46 -0.83,-1.58 -1.8,-0.67 -1.21,-1.49 -2.07,-0.24 -2.19,-1.68 -2.56,-2.45 -1.91,-2.19 -0.87,-3.8 -1.4,-0.45 -2.28,-1.29 -1.29,0.53 -1.62,1.8 -1.17,0.28 0.32,-1.68 -1.52,-0.49 -0.72,-3.04 0.97,-1.21 -0.83,-1.5 0.12,-1.13 1.21,0.86 1.35,-0.19 1.57,-1.36 0.49,0.64 1.34,-0.13 0.61,-1.63 2.07,0.51 1.24,-0.68 0.22,-1.67 1.7,0.58 0.33,-0.78 2.77,-0.71 0.6,1.39 z", - "JM": "m 258.01,411.21 1.89,0.26 1.49,0.71 0.46,0.8 -1.97,0.05 -0.85,0.49 -1.57,-0.47 -1.6,-1.07 0.33,-0.67 1.18,-0.2 z", - "JO": "m 575.17,368.12 0.49,-1.05 3.12,1.32 5.49,-3.54 1.13,4.04 -0.53,0.49 -5.62,1.65 2.8,3.26 -0.93,0.54 -0.46,1.09 -2.14,0.44 -0.67,1.16 -1.22,0.98 -3.12,-0.51 -0.09,-0.46 1.4,-5.17 -0.07,-1.27 0.42,-0.96 z", - "JP": "m 853.01,362.26 0.36,1.15 -1.58,2.03 -1.15,-1.07 -1.44,0.78 -0.74,1.95 -1.83,-0.95 0.02,-1.58 1.55,-2 1.59,0.39 1.15,-1.42 2.07,0.72 z m 17.77,-10.28 -1.06,2.78 0.49,1.73 -1.46,2.42 -3.58,1.6 -4.93,0.21 -4,3.84 -1.88,-1.29 -0.11,-2.52 -4.88,0.75 -3.32,1.59 -3.28,0.06 2.84,2.46 -1.87,5.61 -1.81,1.37 -1.36,-1.27 0.69,-2.96 -1.77,-0.96 -1.14,-2.28 2.65,-1.03 1.47,-2.11 2.82,-1.75 2.06,-2.33 5.58,-1.02 3,0.7 2.93,-6.17 1.87,1.67 4.11,-3.51 1.59,-1.38 1.76,-4.38 -0.48,-4.1 1.18,-2.33 2.98,-0.68 1.53,5.11 -0.08,2.94 -2.59,3.6 0.05,3.63 z m 8.23,-25.93 1.97,0.83 1.98,-1.65 0.62,4.35 -4.16,1.05 -2.46,3.76 -4.41,-2.58 -1.53,4.12 -3.12,0.06 -0.39,-3.74 1.39,-2.94 3,-0.21 0.82,-5.38 0.83,-3.09 3.29,4.12 2.17,1.3 z", - "KE": "m 590.44,466.03 1.66,2.29 -1.96,1.12 -0.69,1.16 -1.06,0.2 -0.39,1.97 -0.9,1.12 -0.55,1.86 -1.13,0.92 -4.02,-2.79 -0.2,-1.62 -10.16,-5.67 -0.48,-0.31 -0.02,-2.95 0.8,-1.13 1.38,-1.84 1.02,-2.03 -1.23,-3.2 -0.33,-1.4 -1.33,-1.94 1.72,-1.67 1.9,-1.84 1.46,0.47 0,1.57 0.96,0.91 1.95,0 3.55,2.38 0.88,0.02 0.66,-0.07 0.62,0.32 1.87,0.22 0.83,-1.16 2.56,-1.17 1.13,0.94 1.92,0 -2.45,3.17 z", - "KG": "m 674.47,333.36 0.63,-1.66 1.84,-0.54 4.62,1.31 0.43,-2.24 1.59,-0.8 4,1.61 1.02,-0.42 4.65,0.1 4.16,0.4 1.4,1.37 1.73,0.55 -0.39,0.86 -4.42,2.03 -1,1.48 -3.6,0.44 -1.06,2.35 -2.97,-0.49 -1.93,0.72 -2.68,1.72 0.39,0.85 -0.8,0.83 -5.3,0.55 -3.47,-1.17 -3.04,0.28 0.27,-2.1 3.05,0.61 1.03,-1.13 2.13,0.36 3.59,-2.64 -3.32,-1.96 -2,0.93 -2.07,-1.4 2.35,-2.43 z", - "KH": "m 765.69,433.85 -1.14,-1.48 -1.41,-2.94 -0.67,-3.45 1.8,-2.38 3.62,-0.55 2.63,0.41 2.31,1.13 1.27,-1.99 2.49,1.06 0.65,1.92 -0.35,3.42 -4.71,2.19 1.23,1.73 -2.94,0.2 -2.43,1.14 z", - "KP": "m 841.8,332.87 0.39,0.67 -1.06,-0.23 -1.22,1.27 -0.84,1.28 0.11,2.67 -1.45,0.81 -0.5,0.65 -1.06,1.08 -1.87,0.6 -1.21,0.98 -0.09,1.57 -0.33,0.4 1.12,0.58 1.59,1.58 -0.41,0.86 -1.19,0.23 -1.98,0.17 -1.09,1.6 -1.26,-0.12 -0.17,0.32 -1.36,-0.67 -0.34,0.66 -0.82,0.29 -0.1,-0.66 -0.73,-0.32 -0.75,-0.57 0.77,-1.57 0.66,-0.42 -0.25,-0.65 0.71,-1.94 -0.19,-0.59 -1.63,-0.4 -1.32,-0.97 2.28,-2.35 3.09,-1.98 1.93,-2.65 1.33,1.17 2.42,0.14 -0.44,-1.97 4.33,-1.63 1.12,-2.13 z", - "KR": "m 835.38,346.78 2.42,4.18 0.69,2.27 0.02,3.98 -1.05,1.88 -2.54,0.66 -2.24,1.41 -2.53,0.29 -0.31,-1.85 0.52,-2.57 -1.24,-3.6 2.08,-0.59 -1.92,-3 0.17,-0.32 1.26,0.12 1.09,-1.6 1.98,-0.17 1.19,-0.23 z", - "XK": "m 533.72,334.17 -0.13,0.77 -0.36,-0.03 -0.18,-1.37 -0.67,-0.38 -0.6,-1.02 0.52,-0.85 0.67,-0.28 0.39,-1.26 0.5,-0.22 0.4,0.54 0.53,0.24 0.36,0.61 0.46,0.18 0.55,0.7 0.4,-0.02 -0.32,0.93 -0.33,0.45 0.09,0.28 -0.63,0.14 z", - "KW": "m 610.02,376.01 0.58,1.41 -0.25,0.73 0.9,2.41 -1.98,0.08 -0.7,-1.51 -2.5,-0.31 2.06,-3.08 z", - "KZ": "m 674.47,333.36 -1.61,0.7 -3.69,2.61 -1.23,2.65 -1.05,0.02 -0.76,-1.75 -3.57,-0.12 -0.57,-3.06 -1.37,-0.03 0.21,-3.8 -3.35,-2.8 -4.81,0.3 -3.29,0.56 -2.68,-3.5 -2.29,-1.48 -4.35,-2.84 -0.52,-0.35 -7.22,2.35 0.11,14.13 -1.44,0.18 -1.96,-2.93 -1.9,-1.06 -3.18,0.79 -1.24,1.25 -0.16,-0.92 0.69,-1.57 -0.53,-1.32 -3.25,-1.3 -1.27,-3.47 -1.54,-0.98 -0.1,-1.28 2.73,0.37 0.11,-2.88 2.38,-0.64 2.45,0.59 0.51,-3.91 -0.5,-2.51 -2.81,0.2 -2.38,-1 -3.25,1.79 -2.61,0.86 -1.43,-0.66 0.29,-2.1 -1.79,-2.76 -2.08,0.11 -2.38,-2.83 1.62,-3.22 -0.82,-0.87 2.23,-4.77 2.89,2.53 0.35,-3.19 5.78,-4.85 4.38,-0.12 6.19,3.1 3.31,1.79 2.98,-1.87 4.44,-0.08 3.59,2.29 0.82,-1.31 3.93,0.19 0.71,-2.11 -4.55,-3.09 2.69,-2.23 -0.52,-1.25 2.69,-1.21 -2.02,-3.2 1.28,-1.62 10.49,-1.66 1.37,-1.19 7.02,-1.79 2.52,-2.04 5.04,1.06 0.88,5.01 2.93,-1.16 3.6,1.63 -0.23,2.58 2.69,-0.27 7.02,-4.49 -1.02,1.5 3.58,3.66 6.26,11.58 1.5,-2.33 3.86,2.56 4.03,-1.14 1.54,0.8 1.35,2.55 1.96,0.84 1.2,1.85 3.61,-0.58 1.49,2.63 -2.14,2.83 -2.33,0.4 -0.13,4.18 -1.56,1.86 -5.56,-1.35 -2.02,7.26 -1.44,0.89 -5.55,1.58 2.52,6.75 -1.92,1 0.22,2.16 -1.73,-0.55 -1.4,-1.37 -4.16,-0.4 -4.65,-0.1 -1.02,0.42 -4,-1.61 -1.59,0.8 -0.43,2.24 -4.62,-1.31 -1.84,0.54 z", - "LA": "m 770.52,423.46 0.91,-1.3 0.13,-2.44 -2.27,-2.53 -0.18,-2.87 -2.13,-2.38 -2.12,-0.2 -0.56,1.02 -1.65,0.08 -0.84,-0.51 -2.95,1.74 -0.07,-2.62 0.69,-3.11 -1.89,-0.13 -0.16,-1.78 -1.22,-0.92 0.6,-1.1 2.39,-1.94 0.25,0.7 1.49,0.08 -0.42,-3.43 1.45,-0.44 1.64,2.37 1.26,2.72 3.45,0.03 1.09,2.59 -1.79,0.77 -0.81,1.07 3.36,1.76 2.33,3.46 1.77,2.57 2.12,2.02 0.71,2.04 -0.51,2.88 -2.49,-1.06 -1.27,1.99 z", - "LB": "m 575.94,365.18 -0.75,0.05 -0.26,0.58 -0.94,0 1,-2.73 1.39,-2.38 0.06,-0.12 1.26,0.18 0.46,1.32 -1.53,1.27 z", - "LK": "m 704.82,442.62 -0.42,2.92 -1.17,0.8 -2.44,0.64 -1.34,-2.23 -0.49,-4.03 1.27,-4.58 1.93,1.57 1.31,1.98 z", - "LR": "m 453.88,451.47 -0.74,0.02 -2.89,-1.33 -2.54,-2.13 -2.39,-1.53 -1.89,-1.81 0.67,-0.9 0.15,-0.81 1.26,-1.53 1.31,-1.31 0.6,-0.07 0.73,-0.31 1.17,1.72 -0.18,1.13 0.54,0.6 0.8,0.01 0.57,-1.13 0.79,0.07 -0.13,0.82 0.28,1.36 -0.61,1.24 0.82,0.77 0.89,0.19 1.19,1.17 0.08,1.11 -0.27,0.35 z", - "LS": "m 556.75,548 0.98,0.96 -0.86,1.56 -0.48,1.05 -1.56,0.5 -0.52,1.04 -1,0.32 -2.1,-2.49 1.49,-2.03 1.52,-1.25 1.31,-0.64 z", - "LT": "m 539.24,282.34 -0.23,-1.22 0.3,-1.33 -1.24,-0.77 -2.93,-0.86 -0.6,-4.16 3.21,-1.55 4.7,0.33 2.76,-0.5 0.39,1.05 1.49,0.32 2.7,2.42 0.26,2.2 -2.3,1.57 -0.65,2.72 -3.04,1.8 -2.71,-0.04 -0.67,-1.46 z", - "LU": "m 492.45,301.54 0.56,0.98 -0.16,1.89 -0.81,0.1 -0.63,-0.38 0.31,-2.43 z", - "LV": "m 534.54,274 0.1,-3.81 1.38,-3.24 2.64,-1.78 2.22,3.88 2.25,-0.1 0.54,-3.99 2.39,-0.93 1.23,0.65 2.41,1.94 2.32,0.01 1.35,1.19 0.23,2.49 0.91,2.99 -3.02,1.93 -1.7,0.84 -2.7,-2.42 -1.49,-0.32 -0.39,-1.05 -2.76,0.5 -4.7,-0.33 z", - "LY": "m 517.14,398.18 -1.98,1.12 -1.58,-1.66 -4.43,-1.31 -1.23,-1.91 -2.22,-1.42 -1.31,0.56 -0.99,-1.71 -0.11,-1.32 -1.66,-2.26 1.12,-1.29 -0.25,-1.97 0.36,-1.72 -0.2,-1.44 0.49,-2.59 -0.15,-1.48 -0.91,-2.84 1.37,-0.75 0.24,-1.38 -0.3,-1.35 1.93,-1.26 0.86,-1.05 1.37,-0.95 0.16,-2.55 3.29,1.15 1.18,-0.29 2.34,0.56 3.72,1.47 1.31,2.92 2.52,0.64 3.95,1.36 2.99,1.61 1.37,-0.84 1.34,-1.49 -0.65,-2.51 0.88,-1.6 2.02,-1.55 1.93,-0.45 3.79,0.68 0.96,1.48 1.04,0.01 0.89,0.56 2.79,0.39 0.68,1.08 -1.01,1.57 0.43,1.39 -0.72,2 0.84,2.58 0,11.18 0,11.23 0,5.96 -3.22,0.01 -0.04,1.24 -11.18,-5.7 -11.19,-5.77 z", - "MA": "m 451.21,383.39 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 -1.22,-0.04 -2.9,-0.75 -2.67,0.24 -1.69,-1.46 -2.06,-0.02 -0.89,2.11 -1.87,3.51 -2.08,1.39 -2.81,1.53 -1.8,2.24 -0.38,1.74 -1.07,2.82 0.7,4.03 -2.34,2.68 -1.4,0.85 -2.21,2.17 -2.61,0.35 -1.3,1.12 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 z", - "MD": "m 550.14,309.7 0.67,-0.62 1.86,-0.42 2.07,1.31 1.15,0.16 1.27,1.12 -0.2,1.41 1.02,0.67 0.4,1.72 0.98,1.04 -0.19,0.6 0.52,0.42 -0.74,0.29 -1.66,-0.11 -0.27,-0.57 -0.59,0.33 0.2,0.72 -0.77,1.29 -0.49,1.37 -0.7,0.44 -0.51,-1.83 0.3,-1.72 -0.09,-1.79 -1.62,-2.44 -0.89,-1.75 -0.87,-1.24 z", - "ME": "m 531.02,332.48 -0.17,-0.72 -1.22,1.87 0.19,1.19 -0.59,-0.29 -0.78,-1.23 -1.22,-0.75 0.31,-0.64 0.41,-2.1 0.91,-0.89 0.53,-0.36 0.74,0.66 0.41,0.54 0.92,0.41 1.07,0.79 -0.23,0.33 -0.52,0.85 z", - "MG": "m 614.42,498.65 0.74,1.21 0.69,1.89 0.46,3.46 0.72,1.35 -0.28,1.38 -0.49,0.86 -0.96,-1.7 -0.52,0.86 0.53,2.14 -0.25,1.24 -0.77,0.67 -0.18,2.48 -1.1,3.42 -1.38,4.09 -1.74,5.67 -1.07,4.21 -1.27,3.55 -2.28,0.73 -2.45,1.31 -1.61,-0.79 -2.23,-1.1 -0.77,-1.62 -0.19,-2.71 -0.98,-2.42 -0.26,-2.17 0.5,-2.16 1.29,-0.52 0.01,-0.99 1.34,-2.26 0.25,-1.88 -0.65,-1.4 -0.53,-1.85 -0.22,-2.7 0.98,-1.63 0.37,-1.85 1.4,-0.1 1.57,-0.6 1.03,-0.52 1.24,-0.04 1.59,-1.65 2.31,-1.78 0.84,-1.44 -0.38,-1.23 1.19,0.35 1.55,-1.99 0.05,-1.72 0.93,-1.28 z", - "MK": "m 533.23,334.91 0.36,0.03 0.13,-0.77 1.65,-0.59 0.63,-0.14 0.96,-0.22 1.29,-0.06 1.41,1.21 0.2,2.47 -0.54,0.12 -0.46,0.65 -1.52,-0.07 -1.07,0.81 -1.83,0.32 -1.16,-0.9 -0.4,-1.59 z", - "ML": "m 441.38,422.47 0.94,-0.52 0.47,-1.7 0.89,-0.07 1.96,0.8 1.58,-0.57 1.08,0.19 0.43,-0.64 11.25,-0.04 0.62,-2.03 -0.49,-0.36 -1.35,-12.68 -1.35,-13.06 4.29,-0.05 9.46,6.65 9.46,6.55 0.66,1.39 1.75,0.85 1.3,0.48 0.03,1.88 3.11,-0.29 0.01,6.75 -1.54,1.94 -0.24,1.79 -2.49,0.45 -3.82,0.25 -1.04,1.03 -1.8,0.11 -1.79,0.01 -0.7,-0.55 -1.55,0.41 -2.62,1.2 -0.53,0.9 -2.18,1.28 -0.38,0.74 -1.17,0.58 -1.36,-0.38 -0.77,0.7 -0.41,1.96 -2.23,2.36 0.07,0.96 -0.77,1.21 0.19,1.64 -1.16,0.42 -0.65,0.36 -0.44,-1.21 -0.81,0.32 -0.48,-0.06 -0.52,0.83 -2.16,-0.03 -0.78,-0.42 -0.36,0.26 -0.86,-0.82 0.15,-0.84 -0.35,-0.34 -0.6,0.28 0.11,-0.92 0.58,-0.73 -1.15,-1.19 -0.34,-0.79 -0.62,-0.62 -0.56,-0.08 -0.67,0.4 -0.91,0.38 -0.77,0.62 -1.2,-0.23 -0.78,-0.72 -0.46,-0.1 -0.73,0.38 -0.45,0.01 -0.16,-1.05 0.13,-0.89 -0.24,-1.1 -1.05,-0.81 -0.55,-1.64 z", - "MM": "m 754.61,406.2 -1.64,1.28 -1.98,0.14 -1.28,3.19 -1.18,0.53 1.36,2.57 1.78,2.13 1.14,1.92 -1.02,2.52 -0.97,0.53 0.67,1.45 1.87,2.28 0.32,1.6 -0.05,1.33 1.1,2.6 -1.54,2.65 -1.36,2.91 -0.27,-2.1 0.86,-2.18 -0.94,-1.68 0.23,-3.11 -1.14,-1.48 -0.91,-3.44 -0.51,-3.66 -1.21,-2.4 -1.85,1.46 -3.19,2.06 -1.57,-0.26 -1.74,-0.67 0.97,-3.61 -0.58,-2.74 -2.2,-3.39 0.34,-1.07 -1.64,-0.38 -1.99,-2.42 -0.18,-2.41 0.98,0.46 0.05,-2.15 1.39,-0.72 -0.3,-1.28 0.63,-1.03 0.11,-3.15 2.19,0.7 1.25,-2.52 0.15,-1.5 1.54,-2.6 -0.08,-1.78 3.63,-2.16 2,0.57 -0.23,-1.93 0.99,-0.58 -0.22,-1.2 1.64,-0.24 0.94,1.86 1.22,0.75 0.09,2.4 -0.12,2.57 -2.65,2.58 -0.34,3.63 2.96,-0.5 0.67,2.8 1.78,0.59 -0.82,2.5 2.08,1.13 1.22,0.55 2.05,-0.87 0.09,1.24 -2.39,1.94 -0.6,1.1 z", - "MN": "m 721.54,305.13 2.96,-0.74 5.35,-3.74 4.27,-2.07 2.43,1.35 2.93,0.06 1.87,2.05 2.8,0.15 4.06,1.09 2.72,-3.03 -1.14,-2.6 2.91,-4.66 3.14,1.87 2.54,0.53 3.3,1.15 0.53,3.32 3.99,1.84 2.65,-0.81 3.54,-0.57 2.81,0.58 2.75,2.09 1.7,2.2 2.6,-0.04 3.53,0.69 2.58,-1.06 3.69,-0.71 4.11,-3.06 1.68,0.47 1.47,1.46 3.34,-0.36 -1.36,3.25 -1.98,4.22 0.72,1.71 1.59,-0.53 2.76,0.65 2.16,-1.54 2.25,1.33 2.54,2.89 -0.31,1.45 -2.21,-0.46 -4.07,0.54 -1.98,1.16 -2.05,2.66 -4.28,1.55 -2.79,2.1 -2.88,-0.8 -1.58,-0.36 -1.47,2.54 0.89,1.5 0.46,1.28 -1.97,1.3 -2.01,2.05 -3.27,1.33 -4.21,0.15 -4.53,1.31 -3.26,2.01 -1.24,-1.16 -3.39,0 -4.15,-2.29 -2.77,-0.57 -3.73,0.53 -5.79,-0.85 -3.09,0.09 -1.64,-2.27 -1.28,-3.57 -1.73,-0.43 -3.39,-2.45 -3.78,-0.55 -3.33,-0.68 -1.01,-1.73 1.08,-4.73 -1.93,-3.31 -4,-1.57 -2.36,-2.23 z", - "MR": "m 441.38,422.47 -1.85,-1.98 -1.7,-2.13 -1.86,-0.77 -1.34,-0.85 -1.57,0.03 -1.36,0.63 -1.4,-0.25 -0.96,0.93 -0.24,-1.56 0.78,-1.44 0.35,-2.75 -0.31,-2.91 -0.34,-1.47 0.28,-1.47 -0.72,-1.42 -1.48,-1.28 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 10.55,7.53 -4.29,0.05 1.35,13.06 1.35,12.68 0.49,0.36 -0.62,2.03 -11.25,0.04 -0.43,0.64 -1.08,-0.19 -1.58,0.57 -1.96,-0.8 -0.89,0.07 -0.47,1.7 z", - "MW": "m 572.4,495.94 -0.78,2.16 0.78,3.72 0.98,-0.04 1.01,0.92 1.17,2.08 0.24,3.72 -1.21,0.61 -0.86,2.01 -1.83,-1.79 -0.2,-2.04 0.59,-1.35 -0.17,-1.15 -1.1,-0.73 -0.78,0.26 -1.61,-1.38 -1.47,-0.74 0.85,-2.66 0.88,-0.99 -0.54,-2.36 0.56,-2.3 0.48,-0.77 -0.71,-2.4 -1.32,-1.26 2.74,0.52 0.57,0.78 0.95,1.32 z", - "MX": "m 203.14,388.97 -1.09,2.71 -0.49,2.21 -0.21,4.08 -0.27,1.47 0.49,1.64 0.87,1.47 0.56,2.31 1.86,2.21 0.65,1.69 1.1,1.45 2.98,0.79 1.16,1.22 2.46,-0.82 2.13,-0.29 2.1,-0.53 1.77,-0.51 1.78,-1.2 0.67,-1.73 0.23,-2.49 0.49,-0.87 1.89,-0.79 2.97,-0.69 2.48,0.1 1.7,-0.25 0.67,0.63 -0.09,1.44 -1.51,1.77 -0.66,1.81 0.51,0.51 -0.42,1.28 -0.7,2.29 -0.71,-0.75 -0.59,0.05 -0.53,0.04 -1,1.77 -0.51,-0.35 -0.34,0.14 0.02,0.43 -2.59,-0.03 -2.62,0 0,1.65 -1.27,0 1.04,0.98 1.04,0.67 0.31,0.63 0.46,0.18 -0.08,0.98 -3.59,0.01 -1.35,2.36 0.39,0.54 -0.32,0.68 -0.07,0.84 -3.17,-3.11 -1.45,-0.94 -2.29,-0.76 -1.56,0.21 -2.26,1.09 -1.41,0.29 -1.98,-0.76 -2.1,-0.56 -2.62,-1.33 -2.1,-0.41 -3.18,-1.35 -2.34,-1.4 -0.71,-0.78 -1.57,-0.17 -2.87,-0.93 -1.17,-1.34 -3.01,-1.67 -1.4,-1.87 -0.67,-1.45 0.93,-0.29 -0.29,-0.85 0.65,-0.77 0.01,-1.04 -0.94,-1.34 -0.26,-1.2 -0.94,-1.52 -2.47,-3.02 -2.82,-2.39 -1.36,-1.91 -2.41,-1.26 -0.51,-0.76 0.43,-1.92 -1.43,-0.73 -1.66,-1.52 -0.7,-2.19 -1.51,-0.26 -1.62,-1.66 -1.32,-1.55 -0.12,-1 -1.51,-2.42 -0.99,-2.48 0.04,-1.25 -2.03,-1.29 -0.93,0.14 -1.6,-0.9 -0.45,1.33 0.46,1.56 0.27,2.43 0.97,1.33 2.08,2.21 0.46,0.75 0.43,0.22 0.36,1.1 0.5,-0.05 0.57,2.04 0.85,0.8 0.59,1.11 1.77,1.6 0.93,2.89 0.83,1.35 0.78,1.44 0.15,1.62 1.35,0.1 1.13,1.39 1.02,1.36 -0.07,0.54 -1.18,1.11 -0.5,-0.01 -0.74,-1.85 -1.83,-1.73 -2.02,-1.48 -1.44,-0.78 0.09,-2.25 -0.42,-1.68 -1.34,-0.96 -1.93,-1.39 -0.37,0.4 -0.7,-0.82 -1.73,-0.75 -1.65,-1.83 0.2,-0.24 1.15,0.18 1.04,-1.18 0.11,-1.43 -2.16,-2.27 -1.64,-0.89 -1.04,-2.01 -1.04,-2.12 -1.3,-2.61 -1.14,-2.96 3.19,-0.25 3.56,-0.36 -0.26,0.64 4.23,1.61 6.4,2.31 5.58,-0.03 2.22,0 0,-1.35 4.86,0 1.02,1.17 1.44,1.03 1.66,1.43 0.93,1.69 0.7,1.76 1.45,0.97 2.33,0.96 1.76,-2.53 2.3,-0.06 1.97,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.18,0.96 1.99,0.68 z", - "MY": "m 758.9,446.32 0.22,1.44 1.85,-0.33 0.92,-1.15 0.64,0.26 1.66,1.69 1.18,1.87 0.16,1.88 -0.3,1.27 0.27,0.96 0.21,1.65 0.99,0.77 1.1,2.46 -0.05,0.94 -1.99,0.19 -2.65,-2.06 -3.32,-2.21 -0.33,-1.42 -1.62,-1.87 -0.39,-2.31 -1.01,-1.52 0.31,-2.04 -0.62,-1.19 0.49,-0.5 2.28,1.22 z m 49.19,4.83 -2.06,0.95 -2.43,-0.47 -3.22,0 -0.97,3.17 -1.08,0.97 -1.44,3.88 -2.29,0.59 -2.65,-0.78 -1.34,0.24 -1.63,1.41 -1.79,-0.2 -1.81,0.57 -1.92,-1.57 -0.47,-1.86 2.05,0.96 2.17,-0.52 0.56,-2.36 1.2,-0.53 3.36,-0.6 2.01,-2.21 1.38,-1.77 1.28,1.45 0.59,-0.95 1.34,0.09 0.16,-1.78 0.13,-1.38 2.16,-1.95 1.41,-2.19 1.13,-0.01 1.44,1.42 0.13,1.22 1.85,0.78 2.34,0.84 -0.2,1.1 -1.88,0.14 0.49,1.35 z", - "MZ": "m 572.4,495.94 2.11,-0.23 3.37,0.8 0.74,-0.36 1.95,-0.07 1,-0.85 1.68,0.04 3.06,-1.1 2.23,-1.64 0.46,1.27 -0.12,2.83 0.35,2.5 0.11,4.48 0.49,1.4 -0.83,2.07 -1.09,2.01 -1.79,1.8 -2.56,1.11 -3.16,1.41 -3.17,3.15 -1.08,0.54 -1.96,2.09 -1.15,0.69 -0.24,2.12 1.33,2.25 0.55,1.76 0.04,0.9 0.49,-0.15 -0.08,2.96 -0.45,1.41 0.66,0.52 -0.42,1.27 -1.17,1.09 -2.31,1.04 -3.37,1.66 -1.23,1.15 0.24,1.3 0.71,0.21 -0.24,1.64 -2.12,-0.02 -0.24,-1.38 -0.42,-1.39 -0.24,-1.11 0.5,-3.43 -0.73,-2.17 -1.34,-4.26 2.95,-3.41 0.74,-2.15 0.43,-0.27 0.31,-1.74 -0.45,-0.88 0.12,-2.2 0.55,-2.04 -0.01,-3.69 -1.45,-0.94 -1.34,-0.21 -0.6,-0.72 -1.3,-0.61 -2.34,0.06 -0.18,-1.08 -0.27,-2.05 8.51,-2.38 1.61,1.38 0.78,-0.26 1.1,0.73 0.17,1.15 -0.59,1.35 0.2,2.04 1.83,1.79 0.86,-2.01 1.21,-0.61 -0.24,-3.72 -1.17,-2.08 -1.01,-0.92 -0.98,0.04 -0.78,-3.72 z", - "NA": "m 521.33,546.79 -2.08,-2.39 -1.1,-2.3 -0.62,-3.03 -0.69,-2.25 -0.94,-4.72 -0.06,-3.63 -0.36,-1.64 -1.09,-1.24 -1.45,-2.47 -1.47,-3.57 -0.61,-1.85 -2.29,-2.87 -0.17,-2.25 1.35,-0.55 1.68,-0.5 1.82,0.09 1.67,1.32 0.42,-0.21 11.37,-0.12 1.94,1.4 6.79,0.41 5.15,-1.19 2.3,-0.67 1.82,0.17 1.1,0.66 0.03,0.24 -1.58,0.66 -0.86,0.01 -1.78,1.15 -1.08,-1.21 -4.32,1.03 -2.09,0.09 -0.08,10.57 -2.76,0.11 0,8.86 -0.01,11.52 -2.5,1.63 -1.5,0.23 -1.77,-0.6 -1.26,-0.23 -0.47,-1.36 -1.11,-0.87 z", - "NC": "m 940.33,523.73 2.3,1.86 1.45,1.38 -1.06,0.73 -1.55,-0.82 -2,-1.35 -1.81,-1.59 -1.85,-2.1 -0.39,-1.01 1.2,0.05 1.58,1.01 1.23,1.01 z", - "NE": "m 481.54,430.13 0.07,-1.95 -3.24,-0.65 -0.08,-1.38 -1.58,-1.87 -0.38,-1.31 0.22,-1.4 1.8,-0.11 1.04,-1.03 3.82,-0.25 2.49,-0.45 0.24,-1.79 1.54,-1.94 -0.01,-6.75 3.95,-1.32 8.12,-5.85 9.61,-5.75 4.43,1.31 1.58,1.66 1.98,-1.12 0.69,4.67 1.05,0.78 0.05,0.95 1.16,1.02 -0.61,1.28 -1.08,5.98 -0.14,3.79 -3.58,2.74 -1.21,3.8 1.17,1.06 -0.01,1.85 1.8,0.07 -0.28,1.34 -0.79,0.17 -0.09,0.9 -0.53,0.07 -1.89,-3.13 -0.66,-0.12 -2.19,1.6 -2.17,-0.83 -1.51,-0.17 -0.81,0.4 -1.65,-0.08 -1.65,1.22 -1.43,0.07 -3.39,-1.48 -1.33,0.7 -1.43,-0.05 -1.05,-1.08 -2.82,-1.07 -3.01,0.34 -0.73,0.62 -0.39,1.65 -0.81,1.15 -0.19,2.54 -2.14,-1.64 -1.01,0.01 z", - "NG": "m 499.34,450.33 -2.91,1 -1.07,-0.14 -1.08,0.62 -2.24,-0.06 -1.5,-1.75 -0.92,-2.02 -1.99,-1.84 -2.11,0.03 -2.47,0 0.16,-4.53 -0.07,-1.79 0.53,-1.77 0.86,-0.87 1.36,-1.75 -0.29,-0.76 0.55,-1.14 -0.63,-1.68 0.11,-0.95 0.19,-2.54 0.81,-1.15 0.39,-1.65 0.73,-0.62 3.01,-0.34 2.82,1.07 1.05,1.08 1.43,0.05 1.33,-0.7 3.39,1.48 1.43,-0.07 1.65,-1.22 1.65,0.08 0.81,-0.4 1.51,0.17 2.17,0.83 2.19,-1.6 0.66,0.12 1.89,3.13 0.53,-0.07 1.11,1.14 -0.31,0.51 -0.15,0.95 -2.36,2.2 -0.74,1.81 -0.4,1.47 -0.59,0.63 -0.57,1.97 -1.5,1.16 -0.43,1.42 -0.63,1.14 -0.26,1.16 -1.93,0.95 -1.57,-1.15 -1.07,0.04 -1.67,1.64 -0.81,0.03 -1.33,2.7 z", - "NI": "m 235.18,432.56 -0.97,-0.9 -1.31,-1.15 -0.62,-0.96 -1.18,-0.89 -1.41,-1.29 0.31,-0.44 0.47,0.43 0.21,-0.21 0.87,-0.11 0.35,-0.66 0.41,-0.02 -0.06,-1.41 0.66,-0.07 0.59,0.02 0.6,-0.76 0.83,0.58 0.29,-0.36 0.51,-0.34 0.98,-0.79 0.05,-0.6 0.27,0.03 0.36,-0.69 0.29,-0.08 0.48,0.44 0.56,0.13 0.62,-0.37 0.71,0 0.97,-0.38 0.39,-0.39 0.96,0.06 -0.24,0.28 -0.14,0.64 0.28,1.05 -0.64,0.98 -0.3,1.15 -0.1,1.27 0.16,0.73 0.07,1.29 -0.43,0.28 -0.26,1.22 0.19,0.75 -0.58,0.73 0.14,0.76 0.42,0.47 -0.67,0.6 -0.82,-0.19 -0.47,-0.58 -0.89,-0.24 -0.64,0.37 -1.85,-0.75 z", - "NL": "m 492.53,286.23 2.33,0.13 0.53,1.58 -0.7,4.23 -0.71,1.71 -1.69,0 0.48,4.69 -1.55,-1.04 -1.77,-1.95 -2.6,0.93 -2.05,-0.35 1.44,-1.24 2.46,-6.74 z", - "NO": "m 554.48,175.86 8.77,6.24 -3.61,2.23 3.07,5.11 -4.77,3.19 -2.26,0.72 1.19,-5.59 -3.6,-3.25 -4.35,2.78 -1.38,5.85 -2.67,3.44 -3.01,-1.87 -3.66,0.38 -3.12,-4.15 -1.68,2.09 -1.74,0.32 -0.41,5.08 -5.28,-1.22 -0.74,4.22 -2.69,-0.03 -1.85,5.24 -2.8,7.87 -4.35,9.5 1.02,2.23 -0.98,2.55 -2.78,-0.11 -1.82,5.91 0.17,8.04 1.79,2.98 -0.93,6.73 -2.33,3.81 -1.24,3.15 -1.88,-3.35 -5.54,6.27 -3.74,1.24 -3.88,-2.71 -1,-5.86 -0.89,-13.26 2.58,-3.88 7.4,-5.18 5.54,-6.59 5.13,-9.3 6.74,-13.76 4.7,-5.67 7.71,-9.89 6.15,-3.59 4.61,0.44 4.27,-6.99 5.11,0.38 5.03,-1.74 z", - "NP": "m 722.58,382.7 -0.22,1.35 0.37,1.99 -0.32,1.24 -2.33,0.05 -3.38,-0.73 -2.16,-0.29 -1.62,-1.59 -3.84,-0.41 -3.66,-1.77 -2.64,-1.55 -2.72,-1.2 1.09,-2.99 1.78,-1.46 1.16,-0.78 2.25,1 2.83,2.09 1.57,0.46 0.94,1.53 2.18,0.63 2.28,1.39 3.17,0.73 z", - "NZ": "m 960.63,588.88 0.64,1.53 1.99,-1.5 0.81,1.57 0,1.57 -1.04,1.74 -1.83,2.8 -1.43,1.54 1.03,1.86 -2.16,0.05 -2.4,1.46 -0.75,2.57 -1.59,4.03 -2.2,1.8 -1.4,1.16 -2.58,-0.09 -1.82,-1.34 -3.05,-0.28 -0.47,-1.48 1.51,-2.96 3.53,-3.87 1.81,-0.73 2.01,-1.47 2.4,-2.01 1.68,-1.98 1.25,-2.81 1.06,-0.95 0.42,-2.07 1.97,-1.7 0.61,1.56 z m 4.46,-17.02 2.03,3.67 0.06,-2.38 1.27,0.95 0.42,2.65 2.26,1.15 1.89,0.28 1.6,-1.35 1.42,0.41 -0.68,3.15 -0.85,2.09 -2.14,-0.07 -0.75,1.1 0.26,1.56 -0.41,0.68 -1.06,1.97 -1.39,2.53 -2.17,1.49 -0.48,-0.98 -1.17,-0.54 1.62,-3.04 -0.92,-2.01 -3.02,-1.45 0.08,-1.31 2.03,-1.25 0.47,-2.74 -0.13,-2.28 -1.14,-2.34 0.08,-0.61 -1.34,-1.43 -2.21,-3.04 -1.17,-2.41 1.04,-0.27 1.53,1.89 2.18,0.89 0.79,3.04 z", - "OM": "m 640.54,403.43 -1.05,2.04 -1.27,-0.16 -0.58,0.71 -0.45,1.5 0.34,1.98 -0.26,0.36 -1.29,-0.01 -1.75,1.1 -0.27,1.43 -0.64,0.62 -1.74,-0.02 -1.1,0.74 0.01,1.18 -1.36,0.81 -1.55,-0.27 -1.88,0.98 -1.3,0.16 -0.92,-2.04 -2.19,-4.84 8.41,-2.96 1.87,-5.97 -1.29,-2.14 0.07,-1.22 0.82,-1.26 0.01,-1.25 1.27,-0.6 -0.5,-0.42 0.23,-2 1.43,-0.01 1.26,2.09 1.57,1.11 2.06,0.4 1.66,0.55 1.27,1.74 0.76,1 1,0.38 -0.01,0.67 -1.02,1.79 -0.45,0.84 -1.17,0.99 z m -6.92,-14.54 -0.37,0.56 -0.53,-1.06 0.82,-1.06 0.35,0.27 -0.27,1.29 z", - "PA": "m 257.13,443.46 -0.93,-0.81 -0.6,-1.52 0.69,-0.75 -0.71,-0.19 -0.52,-0.93 -1.4,-0.78 -1.23,0.18 -0.56,0.98 -1.14,0.7 -0.61,0.1 -0.27,0.59 1.33,1.52 -0.76,0.36 -0.41,0.42 -1.3,0.14 -0.49,-1.68 -0.36,0.48 -0.93,-0.16 -0.56,-1.14 -1.15,-0.18 -0.73,-0.33 -1.2,0 -0.09,0.61 -0.32,-0.42 0.15,-0.56 0.23,-0.57 -0.11,-0.51 0.42,-0.34 -0.58,-0.42 -0.02,-1.13 1.09,-0.25 1,1.01 -0.06,0.6 1.12,0.12 0.27,-0.23 0.77,0.7 1.38,-0.21 1.19,-0.71 1.7,-0.57 0.96,-0.84 1.55,0.16 -0.11,0.28 1.57,0.1 1.25,0.49 0.91,0.84 1.06,0.78 -0.34,0.42 0.65,1.65 -0.53,0.84 -0.91,-0.2 z", - "PE": "m 280.38,513.39 -0.75,1.51 -1.44,0.74 -2.81,-1.68 -0.25,-1.2 -5.55,-2.92 -5.03,-3.17 -2.17,-1.78 -1.16,-2.37 0.46,-0.83 -2.37,-3.75 -2.77,-5.24 -2.64,-5.62 -1.15,-1.29 -0.88,-2.06 -2.18,-1.84 -2,-1.13 0.91,-1.25 -1.36,-2.67 0.87,-1.95 2.24,-1.77 0.33,1.17 -0.8,0.66 0.07,1.02 1.16,-0.22 1.14,0.3 1.17,1.41 1.59,-1.15 0.53,-1.88 1.72,-2.43 3.37,-1.1 3.06,-2.92 0.87,-1.81 -0.39,-2.11 0.75,-0.27 1.86,1.32 0.89,1.32 1.3,0.72 1.65,2.92 2.09,0.35 1.55,-0.74 1.01,0.48 1.68,-0.24 2.15,1.31 -1.81,2.84 0.84,0.06 1.4,1.49 -2.53,-0.13 -0.37,0.42 -2.3,0.53 -3.2,1.91 -0.21,1.3 -0.71,0.98 0.28,1.51 -1.7,0.81 0,1.19 -0.74,0.51 1.17,2.53 1.56,1.72 -0.59,1.21 1.86,0.16 1.06,1.51 2.47,0.07 2.3,-1.66 -0.19,4.3 1.28,0.33 1.58,-0.49 2.43,4.58 -0.61,0.96 -0.13,2.02 -0.06,2.44 -1.1,1.44 0.51,1.07 -0.65,0.97 1.21,2.44 z", - "PG": "m 912.57,482.67 -0.79,0.28 -1.21,-1.08 -1.23,-1.78 -0.6,-2.13 0.39,-0.27 0.3,0.83 0.85,0.63 1.36,1.77 1.32,0.95 -0.39,0.8 z m -10.93,-3.75 -1.47,0.23 -0.44,0.79 -1.53,0.68 -1.44,0.66 -1.49,0 -2.3,-0.81 -1.6,-0.78 0.23,-0.87 2.51,0.41 1.53,-0.22 0.42,-1.34 0.4,-0.07 0.27,1.49 1.6,-0.21 0.79,-0.96 1.57,-1 -0.31,-1.65 1.68,-0.05 0.57,0.46 -0.06,1.55 -0.93,1.69 z m -13.43,5.35 2.5,1.84 1.82,2.99 1.61,-0.09 -0.11,1.25 2.17,0.48 -0.84,0.53 2.98,1.19 -0.31,0.82 -1.86,0.2 -0.69,-0.73 -2.41,-0.32 -2.83,-0.43 -2.18,-1.8 -1.59,-1.55 -1.46,-2.46 -3.66,-1.23 -2.38,0.8 -1.71,0.93 0.36,2.08 -2.2,0.97 -1.57,-0.47 -2.9,-0.12 -0.05,-9.16 -0.05,-9.1 4.87,1.92 5.18,1.6 1.93,1.43 1.56,1.41 0.43,1.65 4.67,1.73 0.68,1.49 -2.58,0.3 0.62,1.85 z m 16.67,-8.09 -0.88,0.74 -0.53,-1.65 -0.65,-1.08 -1.27,-0.91 -1.6,-1.19 -2.02,-0.82 0.78,-0.67 1.51,0.78 0.95,0.61 1.18,0.67 1.12,1.17 1.07,0.89 0.34,1.46 z", - "PH": "m 829.84,440.11 0.29,1.87 0.17,1.58 -0.96,2.57 -1.02,-2.86 -1.31,1.42 0.9,2.06 -0.8,1.31 -3.3,-1.63 -0.79,-2.03 0.86,-1.33 -1.78,-1.33 -0.88,1.17 -1.32,-0.11 -2.08,1.57 -0.46,-0.82 1.1,-2.37 1.77,-0.79 1.53,-1.06 0.99,1.27 2.13,-0.77 0.46,-1.26 1.98,-0.08 -0.17,-2.18 2.27,1.34 0.24,1.42 0.18,1.04 z m -6.71,-5.26 -1.01,0.93 -0.88,1.79 -0.88,0.84 -1.73,-1.95 0.58,-0.76 0.7,-0.79 0.31,-1.76 1.55,-0.17 -0.45,1.91 2.08,-2.74 -0.27,2.7 z m -15.36,2.72 -3.73,2.67 1.38,-1.97 2.03,-1.74 1.68,-1.96 1.47,-2.82 0.5,2.31 -1.85,1.56 -1.48,1.95 z m 9.48,-7.3 1.68,0.88 1.78,0 -0.05,1.19 -1.3,1.2 -1.78,0.85 -0.1,-1.32 0.2,-1.45 -0.43,-1.35 z m 10.14,-0.77 0.79,3.18 -2.16,-0.75 0.06,0.95 0.69,1.75 -1.33,0.63 -0.12,-1.99 -0.84,-0.15 -0.44,-1.72 1.65,0.23 -0.04,-1.08 -1.71,-2.18 2.69,0.06 0.76,1.07 z m -11.14,-2.59 -0.74,2.47 -1.2,-1.42 -1.43,-2.18 2.4,0.1 0.97,1.03 z m -0.58,-15.74 1.73,0.84 0.86,-0.76 0.25,0.75 -0.46,1.22 0.96,2.09 -0.74,2.42 -1.65,0.96 -0.44,2.33 0.63,2.29 1.49,0.32 1.24,-0.34 3.5,1.59 -0.27,1.56 0.92,0.69 -0.29,1.32 -2.18,-1.4 -1.04,-1.5 -0.72,1.05 -1.79,-1.72 -2.55,0.42 -1.4,-0.63 0.14,-1.19 0.88,-0.73 -0.84,-0.67 -0.36,1.04 -1.38,-1.65 -0.42,-1.26 -0.1,-2.77 1.13,0.96 0.29,-4.55 0.91,-2.66 1.7,-0.02 z", - "PL": "m 517.61,297.22 -1.15,-2.86 0.22,-1.56 -0.7,-2.45 -1.01,-1.65 0.78,-1.25 -0.66,-2.39 1.92,-1.39 4.37,-2.22 3.54,-1.64 2.79,0.82 0.21,1.18 2.71,0.06 3.45,0.55 5.16,-0.08 1.44,0.52 0.67,1.46 0.12,2.09 0.78,1.78 -0.02,1.85 -1.68,0.94 0.87,2.12 0.05,2.01 1.41,3.89 -0.3,1.24 -1.39,0.51 -2.55,3.61 0.72,1.92 -0.61,-0.25 -2.66,-1.64 -2.02,0.6 -1.32,-0.44 -1.66,0.92 -1.41,-1.52 -1.16,0.58 -0.16,-0.26 -1.29,-2.13 -2.08,-0.26 -0.27,-1.37 -1.92,-0.49 -0.42,1.13 -1.52,-0.9 0.17,-1.21 -2.09,-0.39 z", - "PK": "m 686.24,352.01 2.07,1.63 0.83,2.66 4.61,1.39 -2.71,2.86 -3.12,0.51 -4.26,-0.83 -1.37,1.46 0.99,2.95 0.97,2.25 2.27,1.63 -2.39,1.91 0.04,2.33 -2.72,3.24 -1.76,3.26 -2.93,3.32 -3.26,-0.24 -3.09,3.3 1.84,1.4 0.32,2.39 1.57,1.56 0.56,2.64 -6.17,-0.01 -1.87,2.04 -2.05,-0.77 -0.84,-2.2 -2.17,-2.34 -5.16,0.58 -4.56,0.05 -3.95,0.44 1.06,-3.6 4.04,-1.61 -0.23,-1.44 -1.34,-0.51 -0.08,-2.77 -2.68,-1.4 -1.13,-1.93 -1.38,-1.68 4.69,1.64 2.81,-0.48 1.67,0.4 0.57,-0.7 1.95,0.28 3.65,-1.33 0.1,-2.75 1.56,-1.84 2.09,0 0.3,-0.91 2.15,-0.43 1.03,0.3 1.1,-0.92 -0.15,-1.98 1.19,-2 1.78,-0.85 -1.1,-2.22 2.67,0.11 0.77,-1.22 -0.12,-1.3 1.4,-1.43 -0.33,-1.7 -0.66,-1.46 1.64,-1.51 3.01,-0.73 3.22,-0.4 1.42,-0.65 z", - "PR": "m 289.66,411.14 1.43,0.26 0.51,0.58 -0.72,0.74 -2.11,-0.02 -1.64,0.1 -0.16,-1.25 0.39,-0.43 z", - "PS": "m 575.17,368.12 0,2.01 -0.42,0.96 -1.32,0.45 0.13,-0.86 0.71,-0.46 -0.7,-0.36 0.58,-2.2 z", - "PT": "m 450.17,334.81 1.02,-0.95 1.14,-0.55 0.71,1.84 1.65,-0.01 0.48,-0.47 1.64,0.13 0.78,1.88 -1.3,1 -0.03,2.88 -0.46,0.53 -0.11,1.72 -1.21,0.3 1.12,2.17 -0.77,2.35 0.96,1.06 -0.38,0.96 -1.04,1.32 0.23,1.16 -1.12,0.91 -1.48,-0.49 -1.45,0.38 0.43,-2.74 -0.26,-2.18 -1.26,-0.33 -0.67,-1.35 0.23,-2.36 1.11,-1.31 0.2,-1.47 0.59,-2.21 -0.07,-1.57 -0.56,-1.34 z", - "PY": "m 299.74,527.24 1.11,-3.59 0.07,-1.6 1.34,-2.62 4.89,-0.86 2.6,0.05 2.62,1.51 0.04,0.91 0.83,1.66 -0.18,4.06 2.96,0.58 1.14,-0.59 1.89,0.82 0.53,0.9 0.26,2.77 0.33,1.18 1.04,0.13 1.05,-0.49 1.01,0.55 0,1.68 -0.38,1.82 -0.55,1.78 -0.46,2.75 -2.54,2.4 -2.22,0.5 -3.15,-0.48 -2.82,-0.85 2.76,-4.73 -0.41,-1.37 -2.88,-1.2 -3.43,-2.26 -2.29,-0.46 z", - "QA": "m 617.97,392.41 -0.19,-2.24 0.76,-1.62 0.76,-0.34 0.85,0.97 0.05,1.81 -0.61,1.81 -0.78,0.22 z", - "RO": "m 539.18,311.11 1.21,-0.89 1.74,0.46 1.79,0.02 1.3,1.01 0.96,-0.64 2.07,-0.4 0.71,-0.98 1.18,0.01 0.85,0.4 0.87,1.24 0.89,1.75 1.62,2.44 0.09,1.79 -0.3,1.72 0.51,1.83 1.25,0.73 1.31,-0.64 1.28,0.68 0.06,1.03 -1.36,0.84 -0.85,-0.36 -0.78,4.71 -1.65,-0.41 -2.04,-1.41 -3.3,0.9 -1.39,0.99 -4.12,-0.2 -2.16,-0.61 -1.08,0.29 -0.81,-1.6 -0.51,-0.68 0.65,-0.66 -0.7,-0.49 -0.88,0.88 -1.63,-1.14 -0.22,-1.63 -1.71,-0.94 -0.31,-1.27 -1.52,-1.58 2.25,-0.76 1.69,-2.76 1.33,-2.8 z", - "RS": "m 534.03,321.15 1.71,0.94 0.22,1.63 1.63,1.14 0.88,-0.88 0.7,0.49 -0.65,0.66 0.51,0.68 -0.69,0.88 0.25,1.42 1.36,1.66 -1.07,1.19 -0.47,1.21 0.31,0.45 -0.47,0.54 -1.29,0.06 -0.96,0.22 -0.09,-0.28 0.33,-0.45 0.32,-0.93 -0.4,0.02 -0.55,-0.7 -0.46,-0.18 -0.36,-0.61 -0.53,-0.24 -0.4,-0.54 -0.5,0.22 -0.39,1.26 -0.67,0.28 0.23,-0.33 -1.07,-0.79 -0.92,-0.41 -0.41,-0.54 -0.74,-0.66 0.66,-0.17 0.41,-1.82 -1.35,-1.5 0.7,-1.72 -1.02,0.01 1.08,-1.49 -0.89,-1.14 -0.68,-1.55 2.15,-1.05 1.75,0.17 1.52,1.58 z", - "RU": "m 1008.52,216 -2.78,2.97 -4.6,0.7 -0.07,6.46 -1.12,1.35 -2.63,-0.19 -2.14,-2.26 -3.73,-1.92 -0.63,-2.89 -2.85,-1.1 -3.19,0.87 -1.52,-2.37 0.61,-2.55 -3.36,1.64 1.26,3.19 -1.59,2.83 -0.02,0.04 -3.6,2.89 -3.63,-0.48 2.53,3.44 1.67,5.2 1.29,1.67 0.33,2.53 -0.72,1.6 -5.23,-1.32 -7.84,4.51 -2.49,0.69 -4.29,4.1 -4.07,3.5 -1.03,2.55 -4.01,-3.9 -7.31,4.42 -1.28,-2.08 -2.7,2.39 -3.75,-0.76 -0.9,3.63 -3.36,5.22 0.1,2.14 3.19,1.17 -0.38,7.46 -2.6,0.19 -1.2,4.15 1.17,2.1 -4.9,2.47 -0.97,5.4 -4.18,1.14 -0.84,4.66 -4.04,4.18 -1.04,-3.08 -1.2,-6.69 -1.56,-10.65 1.35,-6.95 2.37,-3.07 0.15,-2.44 4.36,-1.18 5.01,-6.78 4.83,-5.73 5.04,-4.57 2.25,-8.37 -3.41,0.51 -1.68,4.92 -7.11,6.36 -2.3,-7.14 -7.24,2 -7.02,9.56 2.32,3.38 -6.26,1.42 -4.33,0.56 0.2,-3.95 -4.36,-0.84 -3.47,2.7 -8.57,-0.94 -9.22,1.62 -9.08,10.33 -10.75,11.78 4.42,0.61 1.38,3 2.72,1.05 1.79,-2.38 3.08,0.31 4.05,5.19 0.09,3.92 -2.19,4.51 -0.24,5.27 -1.26,6.85 -4.23,6.01 -0.94,2.82 -3.81,4.66 -3.78,4.53 -1.81,2.28 -3.74,2.25 -1.77,0.05 -1.76,-1.86 -3.76,2.79 -0.44,1.26 -0.39,-0.66 -0.02,-1.93 1.43,-0.1 0.4,-4.55 -0.74,-3.36 2.41,-1.4 3.4,0.7 1.89,-3.89 0.96,-4.46 1.09,-1.51 1.47,-3.76 -4.63,1.24 -2.43,1.65 -4.26,0 -1.13,-3.95 -3.32,-3.03 -4.88,-1.38 -1.04,-4.28 -0.98,-2.73 -1.05,-1.94 -1.73,-4.61 -2.46,-1.71 -4.2,-1.39 -3.72,0.13 -3.48,0.84 -2.32,2.31 1.54,1.1 0.04,2.52 -1.56,1.45 -2.53,4.72 0.03,1.93 -3.95,2.74 -3.37,-1.63 -3.35,0.36 -1.47,-1.46 -1.68,-0.47 -4.11,3.06 -3.69,0.71 -2.58,1.06 -3.53,-0.7 -2.6,0.04 -1.7,-2.2 -2.75,-2.09 -2.81,-0.58 -3.55,0.57 -2.65,0.81 -3.98,-1.84 -0.53,-3.32 -3.3,-1.15 -2.54,-0.53 -3.14,-1.87 -2.9,4.66 1.14,2.6 -2.73,3.03 -4.05,-1.09 -2.8,-0.16 -1.87,-2.04 -2.92,-0.06 -2.44,-1.35 -4.26,2.07 -5.35,3.74 -2.96,0.74 -1.1,0.35 -1.49,-2.63 -3.61,0.58 -1.19,-1.84 -1.96,-0.85 -1.35,-2.55 -1.55,-0.8 -4.03,1.14 -3.86,-2.57 -1.49,2.33 -6.27,-11.58 -3.58,-3.66 1.03,-1.5 -7.03,4.49 -2.69,0.27 0.23,-2.58 -3.6,-1.63 -2.93,1.17 -0.88,-5.01 -5.04,-1.06 -2.52,2.03 -7.02,1.79 -1.37,1.19 -10.49,1.66 -1.29,1.62 2.02,3.21 -2.69,1.2 0.53,1.25 -2.69,2.22 4.54,3.1 -0.7,2.11 -3.94,-0.19 -0.81,1.31 -3.59,-2.29 -4.45,0.09 -2.98,1.87 -3.32,-1.79 -6.18,-3.1 -4.38,0.12 -5.79,4.85 -0.35,3.19 -2.88,-2.53 -2.24,4.77 0.82,0.87 -1.62,3.21 2.38,2.84 2.08,-0.12 1.79,2.76 -0.28,2.1 1.42,0.66 -1.28,2.39 -2.72,0.66 -2.79,4.09 2.55,3.7 -0.28,2.59 3.06,4.46 -1.67,1.51 -0.48,0.95 -1.24,-0.25 -1.93,-2.27 -0.79,-0.13 -1.76,-0.87 -0.86,-1.55 -2.62,-0.79 -1.7,0.6 -0.49,-0.71 -3.82,-1.83 -4.13,-0.62 -2.37,-0.66 -0.34,0.45 -3.57,-3.27 -3.2,-1.48 -2.42,-2.32 2.04,-0.64 2.33,-3.35 -1.57,-1.6 4.13,-1.67 -0.07,-0.9 -2.52,0.66 0.09,-1.83 1.45,-1.16 2.71,-0.31 0.44,-1.4 -0.62,-2.33 1.14,-2.23 -0.03,-1.26 -4.13,-1.41 -1.64,0.05 -1.73,-2.04 -2.15,0.69 -3.56,-1.54 0.06,-0.87 -1,-1.93 -2.24,-0.22 -0.23,-1.39 0.7,-0.91 -1.79,-2.58 -2.91,0.44 -0.85,-0.23 -0.71,1.04 -1.05,-0.18 -0.69,-2.94 -0.66,-1.54 0.54,-0.44 2.26,0.16 1.09,-1.02 -0.81,-1.25 -1.89,-0.83 0.17,-0.86 -1.14,-0.87 -1.76,-3.15 0.6,-1.31 -0.27,-2.31 -2.74,-1.18 -1.47,0.59 -0.4,-1.24 -2.95,-1.26 -0.9,-2.99 -0.24,-2.49 -1.35,-1.19 1.2,-1.66 -0.83,-4.96 2,-3.13 -0.42,-0.96 3.19,-3.07 -2.94,-2.68 6,-7.41 2.6,-3.45 1.05,-3.1 -4.15,-4.26 1.15,-4.15 -2.52,-4.85 1.89,-5.76 -3.26,-7.96 2.59,-5.48 -4.29,-4.99 0.41,-5.4 2.26,-0.72 4.77,-3.19 2.89,-2.81 4.61,4.86 7.68,1.88 10.59,8.65 2.15,3.51 0.19,4.8 -3.11,3.69 -4.58,1.85 -12.52,-5.31 -2.06,0.9 4.57,5.1 0.18,3.15 0.18,6.75 3.61,1.97 2.19,1.66 0.36,-3.11 -1.69,-2.8 1.78,-2.51 6.78,4.1 2.36,-1.59 -1.89,-4.88 6.53,-6.74 2.59,0.4 2.62,2.43 1.63,-4.81 -2.34,-4.28 1.37,-4.41 -2.06,-4.69 7.84,2.44 1.6,4.18 -3.55,0.91 0.02,4.04 2.21,2.44 4.33,-1.54 0.69,-4.61 5.86,-3.52 9.79,-6.54 2.11,0.38 -2.76,4.64 3.48,0.78 2.01,-2.58 5.25,-0.21 4.16,-3.19 3.2,4.62 3.19,-5.09 -2.94,-4.58 1.46,-2.66 8.28,2.44 3.88,2.49 10.16,8.8 1.88,-3.97 -2.85,-4.11 -0.08,-1.68 -3.38,-0.78 0.92,-3.83 -1.5,-6.49 -0.08,-2.74 5.17,-7.99 1.84,-8.42 2.08,-1.88 7.42,2.51 0.58,5.18 -2.66,7.28 1.74,2.78 0.9,5.94 -0.64,11.07 3.09,4.73 -1.2,5.01 -5.49,10.2 3.21,1.02 1.12,-2.51 3.08,-1.82 0.74,-3.55 2.43,-3.49 -1.63,-4.26 1.31,-5.08 -3.07,-0.64 -0.67,-4.42 2.24,-8.28 -3.64,-7.03 5.02,-6.04 -0.65,-6.62 1.4,-0.22 1.47,5.19 -1.11,8.67 3,1.59 -1.28,-6.37 4.69,-3.58 5.82,-0.49 5.18,5.18 -2.49,-7.62 -0.28,-10.28 4.88,-2.02 6.74,0.44 6.08,-1.32 -2.28,-5.38 3.25,-7.02 3.22,-0.3 5.45,-5.51 7.4,-1.51 0.94,-3.15 7.36,-1.08 2.29,2.61 6.29,-6.24 5.15,0.2 0.77,-5.24 2.68,-5.33 6.62,-5.31 4.81,4.21 -3.82,3.13 6.35,1.92 0.76,6.03 2.56,-2.94 8.2,0.16 6.32,5.84 2.25,4.35 -0.7,5.85 -3.1,3.24 -7.37,5.92 -2.11,3.08 3.48,1.43 4.15,2.55 2.52,-1.91 1.43,6.39 1.23,-2.56 4.48,-1.57 9,1.65 0.68,4.58 11.72,1.43 0.16,-7.47 5.95,1.74 4.48,-0.05 4.53,5.14 1.29,6.04 -1.66,3.84 3.52,6.98 4.41,3.49 2.71,-9.18 4.5,4 4.78,-2.38 5.43,2.72 2.07,-2.47 4.59,1.24 -2.02,-8.4 3.7,-4.07 25.32,6.06 2.39,5.35 7.34,6.65 11.32,-1.62 5.58,1.41 2.33,3.5 -0.34,6.02 3.45,2.29 3.75,-1.64 4.97,-0.21 5.29,1.57 5.31,-0.89 4.88,6.99 3.47,-2.48 -2.27,-5.07 1.25,-3.62 8.95,2.29 5.83,-0.49 8.06,3.84 3.92,3.44 6.87,5.86 7.35,7.34 -0.24,4.44 1.89,1.74 -0.65,-5.15 7.61,1.07 5.55,6.53 z m -127.43,90.5 -2.82,-7.68 -1.16,-4.51 0.07,-4.5 -0.97,-4.5 -0.73,-3.15 -1.25,0.67 1.11,2.21 -2.59,2.17 -0.25,6.3 1.64,4.41 -0.12,5.85 -0.65,3.24 0.32,4.54 -0.31,4.01 0.52,3.4 1.84,-3.13 2.13,2.44 0.08,-2.84 -2.73,-4.23 1.72,-6.11 4.15,1.41 z m -343.02,-27.48 -2.94,-0.86 -3.87,1.58 -0.64,2.13 3.45,0.55 5.16,-0.07 -0.22,-1.23 0.3,-1.33 -1.24,-0.77 z M 980.2,178.9 l 3.66,-0.52 2.89,-2.06 0.24,-1.19 -4.06,-2.51 -2.38,-0.02 -0.36,0.37 -3.57,3.64 0.5,2.73 3.08,-0.44 z m -109.88,-27.09 -2.66,3.92 0.49,0.52 5.75,1.08 4.25,-0.07 -0.34,-2.57 -3.98,-3.81 -3.51,0.93 z m 24.57,-9.53 3.24,-4.25 -7.04,-2.88 -5.23,-1.68 -0.67,3.59 5.21,4.27 4.49,0.95 z m -25.13,-1.69 10.33,0.3 2.21,-8.14 -10.13,-6.07 -7.4,-0.51 -3.7,2.18 -1.51,7.75 5.55,7.01 4.65,-2.52 z m -247.12,25.94 -2.87,1.96 0.41,4.83 5.08,2.35 0.74,3.82 9.16,1.1 1.66,-0.74 -5.36,-7.11 -0.57,-7.52 4.39,-9.14 4.18,-9.82 8.71,-10.17 8.56,-5.34 9.93,-5.74 1.88,-3.71 -1.95,-4.83 -5.46,1.6 -4.8,4.49 -9.33,2.22 -9.26,7.41 -6.27,5.85 0.76,4.87 -6.71,9.03 2.58,1.22 -5.56,8.27 0.1,5.1 z m 147.48,-67.94 0.83,-5.72 -7.11,-8.34 -2.11,-0.98 -2.3,1.7 -5.12,18.6 15.81,-5.26 z m -164.23,-29.31 3.04,3.88 3.28,-2.69 0.39,-2.72 2.52,-1.27 3.76,-2.23 1.08,-2.62 -4.16,-3.85 -2.64,2.9 -1.61,4.12 -0.57,-4.65 -4.26,0.21 -5.47,3.14 6.24,0.52 -1.6,5.26 z m 131.25,13.04 4.65,5.73 7.81,4.2 6.12,-1.8 0.69,-13.62 -6.46,-16.04 -5.45,-9.02 -6.07,4.11 -7.28,11.83 3.83,3.27 2.16,11.34 z", - "RW": "m 560.79,466.8 1.12,1.57 -0.17,1.64 -0.8,0.35 -1.49,-0.18 -0.86,1.59 -1.71,-0.22 0.26,-1.53 0.39,-0.21 0.1,-1.66 0.81,-0.78 0.68,0.29 z", - "SA": "m 595.45,417.47 -0.36,-1.24 -0.85,-0.88 -0.22,-1.17 -1.44,-1.04 -1.5,-2.46 -0.79,-2.41 -1.94,-2.04 -1.25,-0.48 -1.86,-2.85 -0.32,-2.08 0.12,-1.79 -1.61,-3.36 -1.31,-1.19 -1.52,-0.63 -0.92,-1.76 0.15,-0.69 -0.78,-1.6 -0.82,-0.69 -1.09,-2.32 -1.71,-2.52 -1.43,-2.16 -1.39,0.01 0.43,-1.74 0.13,-1.11 0.34,-1.28 3.12,0.51 1.22,-0.98 0.67,-1.16 2.14,-0.44 0.46,-1.09 0.93,-0.54 -2.8,-3.26 5.62,-1.65 0.53,-0.49 3.38,0.89 4.18,2.29 7.9,6.49 5.21,0.26 2.5,0.31 0.7,1.51 1.98,-0.08 1.1,2.73 1.38,0.71 0.48,1.11 1.91,1.31 0.17,1.29 -0.28,1.03 0.36,1.04 0.8,0.87 0.38,1.01 0.42,0.75 0.84,0.61 0.78,-0.22 0.53,1.17 0.11,0.71 1.08,3.08 8.42,1.52 0.57,-0.64 1.28,2.14 -1.87,5.97 -8.41,2.96 -8.08,1.13 -2.62,1.32 -2.01,3.07 -1.31,0.48 -0.7,-0.97 -1.07,0.15 -2.71,-0.29 -0.52,-0.3 -3.23,0.07 -0.76,0.27 -1.15,-0.76 -0.75,1.43 0.29,1.23 z", - "SB": "m 930.06,493 0.78,0.97 -1.96,-0.02 -1.07,-1.74 1.67,0.69 0.58,0.1 z m -3.55,-1.73 -1.09,0.06 -1.72,-0.29 -0.59,-0.44 0.18,-1.12 1.85,0.44 0.91,0.59 0.46,0.76 z m 2.32,-0.77 -0.42,0.52 -2.08,-2.45 -0.58,-1.68 h 0.95 l 1.01,2.25 1.12,1.36 z m -5.06,-3.56 0.12,0.57 -2.2,-1.19 -1.54,-1.01 -1.05,-0.94 0.42,-0.29 1.29,0.67 2.3,1.29 0.66,0.9 z m -6.55,-2.78 -0.56,0.16 -1.23,-0.64 -1.15,-1.15 0.14,-0.47 1.67,1.18 1.13,0.92 z", - "SD": "m 570.73,437.15 -0.39,-0.05 0.05,-1.41 -0.34,-0.97 -1.44,-1.12 -0.34,-2.05 0.34,-2.1 -1.3,-0.19 -0.19,0.63 -1.69,0.15 0.68,0.83 0.24,1.71 -1.54,1.56 -1.4,2.04 -1.44,0.29 -2.36,-1.65 -1.06,0.58 -0.29,0.83 -1.44,0.53 -0.1,0.58 -2.79,0 -0.39,-0.58 -2.02,-0.1 -1.01,0.49 -0.77,-0.25 -1.44,-1.65 -0.48,-0.77 -2.03,0.39 -0.77,1.31 -0.72,2.52 -0.96,0.53 -0.86,0.31 -0.23,-0.14 -0.97,-0.81 -0.18,-0.87 0.45,-1.18 0,-1.15 -1.62,-1.77 -0.32,-1.22 0.03,-0.69 -1.03,-0.83 -0.03,-1.66 -0.58,-1.1 -0.99,0.17 0.28,-1.05 0.73,-1.2 -0.32,-1.18 0.92,-0.88 -0.58,-0.67 0.74,-1.78 1.28,-2.13 2.42,0.2 -0.14,-11.61 0.04,-1.24 3.22,-0.01 0,-5.96 11.27,0 10.88,0 11.12,0 0.9,2.94 -0.61,0.54 0.41,3.06 1.03,3.52 1.06,0.73 1.54,1.08 -1.42,1.67 -2.07,0.48 -0.88,0.9 -0.27,1.93 -1.21,4.25 0.3,1.15 -0.45,2.47 -1.14,2.81 -1.69,1.42 -1.2,2.17 -0.29,1.16 -1.32,0.8 -0.83,2.96 z", - "SE": "m 537.7,217.74 -2.72,4.69 0.44,4.02 -4.46,5.13 -5.41,5.34 -2.05,8.41 2,4.07 2.68,3.14 -2.57,6.23 -2.92,1.26 -1.07,8.84 -1.59,4.76 -3.4,-0.49 -1.59,3.95 -3.25,0.23 -0.89,-4.71 -2.35,-5.81 -2.13,-7.5 1.24,-3.15 2.33,-3.81 0.93,-6.73 -1.79,-2.98 -0.18,-8.04 1.83,-5.91 2.78,0.11 0.97,-2.55 -1.02,-2.23 4.35,-9.5 2.81,-7.87 1.85,-5.24 2.69,0.02 0.75,-4.21 5.28,1.22 0.41,-5.08 1.74,-0.33 3.74,3.81 4.37,5.15 0.08,11.12 0.94,2.7 z", - "SI": "m 514.21,316.76 2.32,0.31 1.42,-0.92 2.45,-0.1 0.53,-0.69 0.47,0.05 0.55,1.37 -2.23,1.08 -0.28,1.62 -0.97,0.41 0.01,1.12 -1.1,-0.08 -0.95,-0.65 -0.52,0.68 -1.95,-0.14 0.62,-0.36 -0.67,-1.71 z", - "SJ": "m 544.83,104.74 -6.26,5.36 -4.95,-3.02 1.94,-3.42 -1.69,-4.34 5.81,-2.78 1.11,5.18 4.04,3.02 z m -18.15,-26.68 9.23,11.29 -7.06,5.66 -1.56,10.09 -2.46,2.49 -1.33,10.51 -3.38,0.48 -6.03,-7.64 2.54,-4.62 -4.2,-3.86 -5.46,-11.82 -2.18,-11.79 7.64,-5.69 1.54,5.56 3.99,-0.22 1.06,-5.43 4.12,-0.56 3.54,5.55 z m 20.17,-11.46 5.5,5.8 -4.16,8.52 -8.13,1.81 -8.27,-2.56 -0.5,-4.32 -4.02,-0.28 -3.07,-7.48 8.66,-4.72 4.07,4.08 2.84,-5.09 7.08,4.24 z", - "SK": "m 528.36,304.27 0.16,0.26 1.16,-0.58 1.41,1.52 1.66,-0.92 1.32,0.44 2.02,-0.6 2.66,1.64 -0.77,1.11 -0.55,1.71 -0.6,0.43 -3,-1.28 -0.92,0.25 -0.66,1 -1.32,0.52 -0.3,-0.27 -1.36,0.65 -1.12,0.13 -0.22,0.84 -2.36,0.51 -1.03,-0.46 -1.43,-1.07 -0.28,-1.45 0.23,-0.54 0.39,-0.93 1.25,0.07 0.95,-0.44 0.08,-0.39 0.54,-0.21 0.18,-0.97 0.64,-0.19 0.44,-0.77 z", - "SL": "m 443.43,444.69 -0.76,-0.21 -2.01,-1.13 -1.46,-1.5 -0.49,-1.03 -0.35,-2.08 1.5,-1.24 0.32,-0.79 0.48,-0.61 0.78,-0.06 0.65,-0.53 2.24,0 0.78,1.01 0.61,1.19 -0.09,0.82 0.45,0.74 -0.03,1.03 0.77,-0.16 -1.31,1.31 -1.26,1.53 -0.15,0.81 z", - "SN": "m 428.64,425.41 -1.16,-2.24 -1.4,-1.02 1.24,-0.55 1.36,-2.03 0.66,-1.49 0.96,-0.93 1.4,0.25 1.36,-0.63 1.57,-0.03 1.34,0.85 1.86,0.77 1.7,2.13 1.85,1.98 0.13,1.79 0.55,1.64 1.05,0.81 0.24,1.1 -0.13,0.89 -0.41,0.16 -1.52,-0.22 -0.21,0.31 -0.62,0.07 -2.02,-0.7 -1.35,-0.03 -5.18,-0.12 -0.75,0.32 -0.93,-0.09 -1.49,0.47 -0.46,-2.19 2.55,0.06 0.68,-0.4 0.5,-0.03 1.04,-0.66 1.2,0.61 1.22,0.05 1.21,-0.65 -0.56,-0.82 -0.93,0.48 -0.87,-0.01 -1.1,-0.71 -0.89,0.05 -0.64,0.67 z", - "SO": "m 618.88,430.68 -0.07,-0.79 -1.06,0.01 -1.33,0.98 -1.49,0.28 -1.29,0.42 -0.89,0.06 -1.6,0.1 -1,0.52 -1.39,0.19 -2.47,0.88 -3.05,0.33 -2.65,0.73 -1.39,-0.01 -1.26,-1.19 -0.55,-1.17 -0.91,-0.53 -1.04,1.52 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -2.45,3.17 0.03,10.15 1.66,2.29 0.63,-0.66 0.65,-1.46 3.07,-3.38 2.61,-2.12 4.2,-2.76 2.8,-2.26 3.3,-3.81 2.39,-3.13 2.41,-4.1 1.73,-3.59 1.35,-3.15 0.79,-3.05 0.6,-1.02 -0.01,-1.5 z", - "SR": "m 315.27,446.97 3.36,0.56 0.3,-0.51 2.27,-0.2 3.01,0.76 -1.46,2.4 0.22,1.91 1.11,1.66 -0.49,1.2 -0.25,1.27 -0.72,1.17 -1.6,-0.59 -1.33,0.29 -1.13,-0.25 -0.28,0.81 0.47,0.55 -0.25,0.57 -1.53,-0.23 -1.71,-2.42 -0.37,-1.57 -0.89,-0.01 -1.25,-2.02 0.52,-1.45 -0.15,-0.65 1.7,-0.73 z", - "SS": "m 570.73,437.15 0.03,2.2 -0.42,0.86 -1.48,0.07 -0.96,1.61 1.72,0.2 1.42,1.37 0.5,1.12 1.28,0.65 1.65,3.05 -1.9,1.84 -1.72,1.67 -1.73,1.28 -1.97,0 -2.26,0.65 -1.78,-0.63 -1.15,0.77 -2.47,-1.86 -0.67,-1.19 -1.56,0.59 -1.3,-0.19 -0.75,0.47 -1.26,-0.33 -1.69,-2.31 -0.45,-0.89 -2.1,-1.11 -0.71,-1.68 -1.17,-1.21 -1.88,-1.46 -0.03,-0.92 -1.53,-1.13 -1.91,-1.1 0.86,-0.31 0.96,-0.53 0.72,-2.52 0.77,-1.31 2.03,-0.39 0.48,0.77 1.44,1.65 0.77,0.25 1.01,-0.49 2.02,0.1 0.39,0.58 2.79,0 0.1,-0.58 1.44,-0.53 0.29,-0.83 1.06,-0.58 2.36,1.65 1.44,-0.29 1.4,-2.04 1.54,-1.56 -0.24,-1.71 -0.68,-0.83 1.69,-0.15 0.19,-0.63 1.3,0.19 -0.34,2.1 0.34,2.05 1.44,1.12 0.34,0.97 -0.05,1.41 z", - "SV": "m 229.34,426.01 -0.31,0.67 -1.62,-0.04 -1.01,-0.27 -1.16,-0.57 -1.56,-0.18 -0.79,-0.62 0.09,-0.42 0.96,-0.72 0.52,-0.32 -0.15,-0.34 0.66,-0.17 0.83,0.24 0.6,0.57 0.85,0.46 0.1,0.39 1.23,-0.34 0.58,0.2 0.38,0.31 z", - "SY": "m 584.27,364.85 -5.49,3.54 -3.12,-1.32 -0.06,-0.02 0.38,-0.5 -0.04,-1.37 0.69,-1.83 1.53,-1.27 -0.46,-1.32 -1.26,-0.18 -0.26,-2.61 0.68,-1.41 0.75,-0.75 0.75,-0.76 0.16,-1.94 0.91,0.68 3.09,-0.97 1.49,0.65 2.31,-0.01 3.22,-1.31 1.52,0.06 3.19,-0.54 -1.44,2.18 -1.54,0.86 0.27,2.52 -1.06,4.12 z", - "SZ": "m 565.43,540.99 -0.57,1.39 -1.64,0.33 -1.68,-1.69 -0.02,-1.08 0.76,-1.17 0.27,-0.9 0.81,-0.22 1.41,0.57 0.42,1.39 z", - "TD": "m 516.15,427.51 0.28,-1.34 -1.8,-0.07 0.01,-1.85 -1.17,-1.06 1.21,-3.8 3.58,-2.74 0.14,-3.79 1.08,-5.98 0.61,-1.28 -1.16,-1.02 -0.05,-0.95 -1.05,-0.78 -0.69,-4.67 2.83,-1.66 11.19,5.77 11.18,5.7 0.14,11.61 -2.42,-0.2 -1.28,2.13 -0.74,1.78 0.58,0.67 -0.92,0.88 0.32,1.18 -0.73,1.2 -0.28,1.05 0.99,-0.17 0.58,1.1 0.03,1.66 1.03,0.83 -0.03,0.69 -1.77,0.49 -1.43,1.14 -2.02,3.09 -2.64,1.31 -2.71,-0.18 -0.79,0.26 0.28,0.99 -1.47,0.99 -1.19,1.1 -3.53,1.07 -0.7,-0.63 -0.46,-0.06 -0.52,0.72 -2.32,0.22 0.44,-0.77 -0.88,-1.93 -0.4,-1.17 -1.22,-0.48 -1.65,-1.65 0.61,-1.33 1.28,0.28 0.79,-0.2 1.56,0.03 -1.52,-2.57 0.1,-1.89 -0.19,-1.89 z", - "TF": "m 668.79,619.28 1.8,1.33 2.65,0.54 0.1,0.81 -0.78,1.96 -4.31,0.28 -0.07,-2.29 0.42,-1.76 z", - "TG": "m 480.73,446.5 -2.25,0.59 -0.63,-0.98 -0.75,-1.78 -0.22,-1.4 0.62,-2.53 -0.7,-1.03 -0.27,-2.22 0,-2.05 -1.17,-1.46 0.21,-0.89 2.46,0.06 -0.36,1.5 0.85,0.83 0.98,0.99 0.1,1.39 0.57,0.58 -0.13,6.46 z", - "TH": "m 763.14,429.43 -2.52,-1.31 -2.4,0.06 0.41,-2.25 -2.47,0.02 -0.22,3.14 -1.51,4.15 -0.91,2.5 0.19,2.05 1.82,0.09 1.14,2.57 0.51,2.43 1.56,1.61 1.7,0.33 1.45,1.45 -0.91,1.15 -1.86,0.34 -0.22,-1.44 -2.28,-1.23 -0.49,0.5 -1.11,-1.07 -0.48,-1.39 -1.49,-1.59 -1.36,-1.33 -0.46,1.65 -0.53,-1.56 0.31,-1.76 0.82,-2.71 1.36,-2.91 1.54,-2.65 -1.1,-2.6 0.05,-1.33 -0.32,-1.6 -1.87,-2.28 -0.67,-1.45 0.97,-0.53 1.02,-2.52 -1.14,-1.92 -1.78,-2.13 -1.36,-2.57 1.18,-0.53 1.28,-3.19 1.98,-0.14 1.64,-1.28 1.6,-0.69 1.22,0.92 0.16,1.78 1.89,0.13 -0.69,3.11 0.07,2.62 2.95,-1.74 0.84,0.51 1.65,-0.08 0.56,-1.02 2.12,0.2 2.13,2.38 0.18,2.87 2.27,2.53 -0.13,2.44 -0.91,1.3 -2.63,-0.41 -3.62,0.55 -1.8,2.38 z", - "TJ": "m 674.62,340.87 -1.03,1.13 -3.05,-0.61 -0.27,2.1 3.04,-0.28 3.47,1.17 5.3,-0.55 0.71,3.33 0.92,-0.36 1.7,0.81 -0.09,1.38 0.42,2.01 -2.9,0 -1.93,-0.26 -1.74,1.57 -1.25,0.34 -0.98,0.74 -1.11,-1.15 0.27,-2.95 -0.85,-0.17 0.3,-1.09 -1.51,-0.8 -1.21,1.23 -0.3,1.43 -0.43,0.52 -1.68,-0.07 -0.9,1.6 -0.95,-0.67 -2.03,1.12 -0.85,-0.42 1.57,-3.57 -0.6,-2.66 -2.06,-0.86 0.73,-1.59 2.34,0.17 1.33,-2.01 0.89,-2.35 3.75,-0.86 -0.58,1.71 0.4,1.02 z", - "TL": "m 825.9,488.5 0.33,-0.66 2.41,-0.63 1.96,-0.1 0.87,-0.35 1.06,0.35 -1.03,0.76 -2.92,1.23 -2.35,0.82 -0.05,-0.86 z", - "TM": "m 647.13,357.15 -0.25,-2.91 -2.09,-0.12 -3.2,-3.09 -2.24,-0.39 -3.1,-1.79 -2,-0.33 -1.23,0.66 -1.87,-0.1 -1.99,2.02 -2.47,0.68 -0.52,-2.49 0.41,-3.73 -2.19,-1.22 0.72,-2.48 -1.86,-0.22 0.62,-3.09 2.64,0.91 2.47,-1.19 -2.05,-2.23 -0.8,-2.14 -2.26,0.96 -0.28,2.73 -0.88,-2.41 1.24,-1.25 3.18,-0.79 1.9,1.06 1.96,2.93 1.44,-0.18 3.16,-0.05 -0.46,-1.88 2.4,-1.3 2.36,-2.2 3.78,2 0.3,2.99 1.07,0.77 3.03,-0.17 0.94,0.67 1.38,3.79 3.21,2.51 1.83,1.69 2.93,1.75 3.73,1.52 -0.08,2.16 -0.84,-0.11 -1.33,-0.94 -0.44,1.25 -2.36,0.68 -0.56,2.79 -1.58,1.05 -2.21,0.52 -0.59,1.55 -2.11,0.46 z", - "TN": "m 502.09,374.94 -1.2,-5.86 -1.72,-1.33 -0.03,-0.81 -2.29,-1.98 -0.25,-2.53 1.73,-1.88 0.66,-2.82 -0.45,-3.28 0.57,-1.79 3.06,-1.41 1.96,0.42 -0.08,1.77 2.38,-1.29 0.2,0.67 -1.41,1.71 -0.01,1.6 0.97,0.85 -0.37,2.96 -1.85,1.71 0.53,1.83 1.45,0.06 0.71,1.59 1.07,0.52 -0.16,2.55 -1.37,0.95 -0.86,1.05 -1.93,1.26 0.3,1.35 -0.24,1.38 z", - "TR": "m 579,336.85 4.02,1.43 3.27,-0.57 2.41,0.33 3.31,-1.94 2.99,-0.18 2.7,1.83 0.48,1.3 -0.27,1.79 2.08,0.91 1.1,1.06 -1.92,1.03 0.88,4.11 -0.55,1.1 1.53,2.82 -1.34,0.59 -0.98,-0.89 -3.26,-0.45 -1.2,0.55 -3.19,0.54 -1.51,-0.06 -3.23,1.31 -2.31,0.01 -1.49,-0.66 -3.09,0.97 -0.92,-0.68 -0.15,1.94 -0.75,0.76 -0.75,0.76 -1.03,-1.57 1.06,-1.3 -1.71,0.3 -2.35,-0.8 -1.93,2 -4.26,0.39 -2.27,-1.86 -3.02,-0.12 -0.65,1.44 -1.94,0.41 -2.71,-1.85 -3.06,0.06 -1.66,-3.48 -2.05,-1.96 1.36,-2.78 -1.78,-1.72 3.11,-3.48 4.32,-0.15 1.18,-2.81 5.34,0.49 3.37,-2.42 3.27,-1.06 4.64,-0.08 4.91,2.64 z m -27.25,2.39 -2.34,1.98 -0.88,-1.71 0.04,-0.76 0.67,-0.41 0.87,-2.33 -1.37,-0.99 2.86,-1.18 2.41,0.5 0.33,1.44 2.45,1.2 -0.51,0.91 -3.33,0.2 -1.2,1.15 z", - "TT": "m 302.56,433.49 1.61,-0.37 0.59,0.1 -0.11,2.11 -2.34,0.31 -0.51,-0.25 0.82,-0.78 z", - "TW": "m 816.95,393.52 -1.69,4.87 -1.2,2.48 -1.48,-2.55 -0.32,-2.25 1.65,-3 2.25,-2.32 1.28,0.91 z", - "TZ": "m 570.56,466.28 0.48,0.31 10.16,5.67 0.2,1.62 4.02,2.79 -1.29,3.45 0.16,1.59 1.8,1.02 0.08,0.73 -0.77,1.7 0.16,0.85 -0.18,1.35 0.98,1.76 1.16,2.79 1.02,0.62 -2.23,1.64 -3.06,1.1 -1.68,-0.04 -1,0.85 -1.95,0.07 -0.74,0.36 -3.37,-0.8 -2.11,0.23 -0.78,-3.86 -0.95,-1.32 -0.57,-0.78 -2.74,-0.52 -1.6,-0.85 -1.78,-0.47 -1.12,-0.48 -1.17,-0.71 -1.51,-3.55 -1.63,-1.57 -0.56,-1.62 0.28,-1.46 -0.5,-2.57 1.16,-0.13 1.01,-1.01 1.1,-1.46 0.69,-0.58 -0.03,-0.91 -0.6,-0.63 -0.16,-1.1 0.8,-0.35 0.17,-1.64 -1.12,-1.57 0.99,-0.34 3.07,0.04 z", - "UA": "m 564.63,292.74 1.04,0.19 0.71,-1.04 0.85,0.23 2.91,-0.44 1.79,2.57 -0.7,0.92 0.23,1.39 2.24,0.21 1,1.93 -0.06,0.87 3.56,1.54 2.15,-0.69 1.73,2.04 1.64,-0.04 4.13,1.4 0.03,1.27 -1.13,2.23 0.61,2.33 -0.44,1.39 -2.71,0.31 -1.44,1.16 -0.09,1.83 -2.24,0.33 -1.87,1.32 -2.62,0.21 -2.42,1.52 -1.32,1.03 1.49,1.47 1.37,0.96 2.86,-0.24 -0.55,1.42 -3.07,0.68 -3.81,2.27 -1.55,-0.79 0.61,-1.85 -3.06,-1.16 0.5,-0.77 3.16,-1.63 -0.4,-0.81 -0.45,0.41 -0.44,-0.22 -4.36,-1.02 -0.19,-1.51 -2.6,0.5 -1.04,2.23 -2.17,2.95 -1.28,-0.68 -1.31,0.64 -1.25,-0.73 0.7,-0.44 0.49,-1.37 0.77,-1.29 -0.2,-0.72 0.59,-0.32 0.27,0.56 1.66,0.11 0.74,-0.29 -0.52,-0.42 0.19,-0.6 -0.98,-1.04 -0.4,-1.72 -1.02,-0.67 0.2,-1.41 -1.27,-1.12 -1.15,-0.16 -2.07,-1.31 -1.86,0.42 -0.67,0.62 -1.18,-0.01 -0.71,0.98 -2.07,0.4 -0.95,0.64 -1.31,-1.01 -1.79,-0.02 -1.74,-0.46 -1.21,0.89 -0.2,-1.12 -1.55,-1.14 0.55,-1.71 0.77,-1.1 0.62,0.24 -0.73,-1.92 2.55,-3.61 1.39,-0.51 0.3,-1.24 -1.41,-3.89 1.34,-0.17 1.54,-1.23 2.17,-0.1 2.83,0.36 3.13,1.08 2.21,0.09 1.05,0.65 1.05,-0.78 0.74,1.05 2.53,-0.22 1.11,0.43 0.19,-2.26 0.86,-1 z", - "UG": "m 564.85,466.5 -3.07,-0.04 -0.99,0.34 -1.67,0.86 -0.68,-0.29 0.02,-2.1 0.65,-1.06 0.16,-2.24 0.59,-1.29 1.07,-1.46 1.08,-0.74 0.9,-0.99 -1.12,-0.37 0.17,-3.26 1.15,-0.77 1.78,0.63 2.26,-0.65 1.97,0 1.73,-1.28 1.33,1.94 0.33,1.4 1.23,3.2 -1.02,2.03 -1.38,1.84 -0.8,1.13 0.02,2.95 z", - "US": "m 109.5,280.05 0,0 -1.54,-1.83 -2.47,-1.57 -0.79,-4.36 -3.61,-4.13 -1.51,-4.94 -2.69,-0.34 -4.46,-0.13 -3.29,-1.54 -5.8,-5.64 -2.68,-1.05 -4.9,-1.99 -3.88,0.48 -5.51,-2.59 -3.33,-2.43 -3.11,1.21 0.58,3.93 -1.55,0.36 -3.24,1.16 -2.47,1.86 -3.11,1.16 -0.4,-3.24 1.26,-5.53 2.98,-1.77 -0.77,-1.46 -3.57,3.22 -1.91,3.77 -4.04,3.95 2.05,2.65 -2.65,3.85 -3.01,2.21 -2.81,1.59 -0.69,2.29 -4.38,2.63 -0.89,2.36 -3.28,2.13 -1.92,-0.38 -2.62,1.38 -2.85,1.67 -2.33,1.63 -4.81,1.38 -0.44,-0.81 3.07,-2.27 2.74,-1.51 2.99,-2.71 3.48,-0.56 1.38,-2.06 3.89,-3.05 0.63,-1.03 2.07,-1.83 0.48,-4 1.43,-3.17 -3.23,1.64 -0.9,-0.93 -1.52,1.95 -1.83,-2.73 -0.76,1.94 -1.05,-2.7 -2.8,2.17 -1.72,0 -0.24,-3.23 0.51,-2.02 -1.81,-1.98 -3.65,1.07 -2.37,-2.63 -1.92,-1.36 -0.01,-3.25 -2.16,-2.48 1.08,-3.41 2.29,-3.37 1,-3.15 2.27,-0.45 1.92,0.99 2.26,-3.01 2.04,0.54 2.14,-1.96 -0.52,-2.92 -1.57,-1.16 2.08,-2.52 -1.72,0.07 -2.98,1.43 -0.85,1.43 -2.21,-1.43 -3.97,0.73 -4.11,-1.56 -1.18,-2.65 -3.55,-3.91 3.94,-2.87 6.25,-3.41 h 2.31 l -0.38,3.48 5.92,-0.27 -2.28,-4.34 -3.45,-2.72 -1.99,-3.64 -2.69,-3.17 -3.85,-2.38 1.57,-4.03 4.97,-0.25 3.54,-3.58 0.67,-3.92 2.86,-3.91 2.73,-0.95 5.31,-3.76 2.58,0.57 4.31,-4.61 4.24,1.83 2.03,3.87 1.25,-1.65 4.74,0.51 -0.17,1.95 4.29,1.43 2.86,-0.84 5.91,2.64 5.39,0.78 2.16,1.07 3.73,-1.34 4.25,2.46 3.05,1.13 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.6,2.32 z m 175.93,34.43 -1.25,-1.19 -1.88,0.7 -0.93,-1.08 -2.14,3.1 -0.86,3.15 -1,1.82 -1.19,0.62 -0.9,0.2 -0.28,0.98 -5.17,0 -4.26,0.03 -1.27,0.73 -2.87,2.73 0.29,0.54 0.17,1.51 -2.1,1.27 -2.3,-0.32 -2.2,-0.14 -1.33,0.44 0.25,1.15 0,0 0.05,0.37 -2.42,2.27 -2.11,1.09 -1.44,0.51 -1.66,1.03 -2.03,0.5 -1.4,-0.19 -1.73,-0.77 0.96,-1.45 0.62,-1.32 1.32,-2.09 -0.14,-1.57 -0.5,-2.24 -1.04,-0.39 -1.74,1.7 -0.56,-0.03 -0.14,-0.97 1.54,-1.56 0.26,-1.79 -0.23,-1.79 -2.08,-1.55 -2.38,-0.8 -0.39,1.52 -0.62,0.4 -0.5,1.95 -0.26,-1.33 -1.12,0.95 -0.7,1.32 -0.73,1.92 -0.14,1.64 0.93,2.38 -0.08,2.51 -1.14,1.84 -0.57,0.52 -0.76,0.41 -0.95,0.02 -0.26,-0.25 -0.76,-1.98 -0.02,-0.98 0.08,-0.94 -0.35,-1.87 0.53,-2.18 0.63,-2.71 1.46,-3.03 -0.42,0.01 -2.06,2.54 -0.38,-0.46 1.1,-1.42 1.67,-2.57 1.91,-0.36 2.19,-0.8 2.21,0.42 0.09,0.02 2.47,-0.36 -1.4,-1.61 -0.75,-0.13 -0.86,-0.16 -0.59,-1.14 -2.75,0.36 -2.49,0.9 -1.97,-1.55 -1.59,-0.52 0.9,-2.17 -2.48,1.37 -2.25,1.33 -2.16,1.04 -1.72,-1.4 -2.81,0.85 0.01,-0.6 1.9,-1.73 1.99,-1.65 2.86,-1.37 -3.45,-1.09 -2.27,0.55 -2.72,-1.3 -2.86,-0.67 -1.96,-0.26 -0.87,-0.72 -0.5,-2.35 -0.95,0.02 -0.01,1.64 -5.8,0 -9.59,0 -9.53,0 -8.42,0 h -8.41 -8.27 -8.55 -2.76 -8.32 -7.96 l 0.95,3.47 0.45,3.41 -0.69,1.09 -1.49,-3.91 -4.05,-1.42 -0.34,0.82 0.82,1.94 0.89,3.53 0.51,5.42 -0.34,3.59 -0.34,3.54 -1.1,3.61 0.9,2.9 0.1,3.2 -0.61,3.05 1.49,1.99 0.39,2.95 2.17,2.99 1.24,1.17 -0.1,0.82 2.34,4.85 2.72,3.45 0.34,1.87 0.71,0.55 2.6,0.33 1,0.91 1.57,0.17 0.31,0.96 1.31,0.4 1.82,1.92 0.47,1.7 3.19,-0.25 3.56,-0.36 -0.26,0.65 4.23,1.6 6.4,2.31 5.58,-0.02 2.22,0 0.01,-1.35 4.86,0 1.02,1.16 1.43,1.03 1.67,1.43 0.93,1.69 0.7,1.77 1.45,0.97 2.33,0.96 1.77,-2.53 2.29,-0.06 1.98,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.19,0.96 1.99,0.68 1.09,-0.09 -0.53,-1.06 -0.14,-1.5 0.03,-2.16 0.65,-1.42 1.53,-1.51 2.79,-1.37 2.55,-2.37 2.36,-0.75 1.74,-0.23 2.04,0.74 2.45,-0.4 2.09,1.69 2.03,0.1 1.05,-0.61 1.04,0.47 0.53,-0.42 -0.6,-0.63 0.05,-1.3 -0.5,-0.86 1.16,-0.5 2.14,-0.22 2.49,0.36 3.17,-0.41 1.76,0.8 1.36,1.5 0.5,0.16 2.83,-1.46 1.09,0.49 2.19,2.68 0.79,1.75 -0.58,2.1 0.42,1.23 1.3,2.4 1.49,2.68 1.07,0.71 0.44,1.35 1.38,0.37 0.84,-0.39 0.7,-1.89 0.12,-1.21 0.09,-2.1 -1.33,-3.65 -0.02,-1.37 -1.25,-2.25 -0.94,-2.75 -0.5,-2.25 0.43,-2.31 1.32,-1.94 1.58,-1.57 3.08,-2.16 0.4,-1.12 1.42,-1.23 1.4,-0.22 1.84,-1.98 2.9,-1.01 1.78,-2.53 -0.39,-3.46 -0.29,-1.21 -0.8,-0.24 -0.12,-3.35 -1.93,-1.14 1.85,0.56 -0.6,-2.26 0.54,-1.55 0.33,2.97 1.43,1.36 -0.87,2.4 0.26,0.14 1.58,-2.81 0.9,-1.38 -0.04,-1.35 -0.7,-0.64 -0.58,-1.94 0.92,0.9 0.62,0.19 0.21,0.92 2.04,-2.78 0.61,-2.62 -0.83,-0.17 0.85,-1.02 -0.08,0.45 1.79,-0.01 3.93,-1.11 -0.83,-0.7 -4.12,0.7 2.34,-1.07 1.63,-0.18 1.22,-0.19 2.07,-0.65 1.35,0.07 1.89,-0.61 0.22,-1.07 -0.84,-0.84 0.29,1.37 -1.16,-0.09 -0.93,-1.99 0.03,-2.01 0.48,-0.86 1.48,-2.28 2.96,-1.15 2.88,-1.34 2.99,-1.9 -0.48,-1.29 -1.83,-2.25 -0.03,-5.56 z m -239.56,-50.44 -1.5,0.8 -2.55,1.86 0.43,2.42 1.43,1.32 2.8,-1.95 2.43,-2.47 -1.19,-1.63 -1.85,-0.35 z m -45.62,-28.57 2.04,-1.26 0.23,-0.68 -2.27,-0.67 v 2.61 z m 8.5,15.37 -2.77,0.97 1.7,1.52 1.84,1.04 1.72,-0.87 -0.27,-2.15 -2.22,-0.51 z m 97.35,32.5 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z m -68.72,120.68 -1,-0.28 -0.27,0.26 0.02,0.19 0.32,0.24 0.48,0.63 0.94,-0.21 0.23,-0.36 -0.72,-0.47 z m -2.99,-0.54 1.5,0.09 0.09,-0.32 -1.38,-0.13 -0.21,0.36 z m 5.89,3.29 -0.5,-0.26 -1.07,-0.5 -0.21,-0.06 -0.16,0.28 0.19,0.58 -0.49,0.48 -0.14,0.33 0.46,1.08 -0.08,0.83 0.7,0.42 0.41,-0.49 0.9,-0.46 1.1,-0.63 0.07,-0.16 -0.71,-1.04 -0.47,-0.4 z m -7.86,-5.14 -0.75,0.41 0.11,0.12 0.36,0.68 0.98,0.11 0.2,0.04 0.15,-0.17 -0.81,-0.99 -0.24,-0.2 z m -4.4,-1.56 -0.43,0.3 -0.15,0.22 0.94,0.55 0.33,-0.3 -0.06,-0.7 -0.63,-0.07 z", - "UY": "m 313.93,552.04 1.82,-0.34 2.81,2.5 1.04,-0.09 2.89,2.08 2.2,1.82 1.62,2.25 -1.24,1.57 0.78,1.9 -1.21,2.12 -3.17,1.88 -2.07,-0.68 -1.52,0.37 -2.59,-1.46 -1.9,0.11 -1.71,-1.87 0.22,-2.16 0.61,-0.74 -0.03,-3.3 0.75,-3.37 z", - "UZ": "m 662.01,351.2 0.08,-2.16 -3.73,-1.52 -2.93,-1.75 -1.83,-1.69 -3.21,-2.51 -1.38,-3.79 -0.94,-0.67 -3.03,0.17 -1.07,-0.77 -0.3,-2.99 -3.78,-2 -2.36,2.2 -2.4,1.3 0.46,1.88 -3.16,0.05 -0.11,-14.13 7.22,-2.35 0.52,0.35 4.35,2.84 2.29,1.48 2.68,3.5 3.29,-0.56 4.81,-0.3 3.35,2.8 -0.21,3.8 1.37,0.03 0.57,3.06 3.57,0.12 0.76,1.75 1.05,-0.02 1.23,-2.65 3.69,-2.61 1.61,-0.7 0.83,0.37 -2.35,2.43 2.07,1.4 2,-0.93 3.32,1.96 -3.59,2.64 -2.13,-0.36 -1.16,0.1 -0.4,-1.02 0.58,-1.71 -3.75,0.86 -0.89,2.35 -1.33,2.01 -2.34,-0.17 -0.73,1.59 2.06,0.86 0.6,2.66 -1.57,3.57 -2.12,-0.74 z", - "VE": "m 275.5,430.6 -0.08,0.67 -1.65,0.33 0.92,1.29 -0.04,1.49 -1.23,1.64 1.06,2.24 1.21,-0.18 0.63,-2.04 -0.87,-1 -0.14,-2.14 3.49,-1.16 -0.39,-1.34 0.98,-0.9 1.01,2 1.97,0.05 1.82,1.58 0.11,0.94 2.51,0.02 3,-0.29 1.61,1.27 2.14,0.35 1.57,-0.88 0.03,-0.72 3.48,-0.17 3.36,-0.04 -2.38,0.84 0.95,1.34 2.25,0.21 2.12,1.39 0.45,2.26 1.46,-0.07 1.1,0.67 -2.22,1.65 -0.25,1.03 0.96,1.04 -0.69,0.52 -1.73,0.45 0.06,1.3 -0.76,0.77 1.89,2.12 0.38,0.79 -1.03,1.07 -3.14,1.04 -2.01,0.44 -0.81,0.66 -2.23,-0.7 -2.08,-0.36 -0.52,0.26 1.25,0.72 -0.11,1.87 0.39,1.76 2.37,0.24 0.16,0.58 -2.01,0.8 -0.32,1.18 -1.16,0.45 -2.08,0.65 -0.54,0.86 -2.18,0.18 -1.55,-1.48 -0.85,-2.77 -0.75,-0.98 -1.02,-0.61 1.42,-1.39 -0.09,-0.63 -0.8,-0.83 -0.56,-1.85 0.22,-2.01 0.62,-0.94 0.51,-1.5 -0.99,-0.49 -1.6,0.32 -2.02,-0.15 -1.13,0.3 -1.98,-2.41 -1.63,-0.36 -3.6,0.27 -0.67,-0.98 -0.69,-0.23 -0.1,-0.59 0.33,-1.04 -0.22,-1.13 -0.62,-0.62 -0.36,-1.3 -1.44,-0.18 0.77,-1.66 0.35,-2.01 0.81,-1.06 1.09,-0.81 0.71,-1.42 z", - "VN": "m 778.46,402.12 -3.74,2.56 -2.34,2.81 -0.62,2.05 2.15,3.09 2.62,3.82 2.54,1.79 1.71,2.33 1.28,5.32 -0.38,5.02 -2.33,1.87 -3.22,1.83 -2.28,2.36 -3.5,2.62 -1.02,-1.81 0.79,-1.91 -2.08,-1.61 2.43,-1.14 2.94,-0.2 -1.23,-1.73 4.71,-2.19 0.35,-3.42 -0.65,-1.92 0.51,-2.88 -0.71,-2.04 -2.12,-2.02 -1.77,-2.57 -2.33,-3.46 -3.36,-1.76 0.81,-1.07 1.79,-0.77 -1.09,-2.59 -3.45,-0.03 -1.26,-2.72 -1.64,-2.37 1.51,-0.74 2.23,0.02 2.73,-0.35 2.39,-1.62 1.35,1.14 2.57,0.55 -0.45,1.74 1.34,1.22 z", - "VU": "m 946.12,510.15 -0.92,0.38 -0.94,-1.27 0.1,-0.78 1.76,1.67 z m -2.07,-4.44 0.46,2.33 -0.75,-0.36 -0.58,0.16 -0.4,-0.8 -0.06,-2.21 1.33,0.88 z", - "YE": "m 624.41,416.58 -2.03,0.79 -0.54,1.28 -0.07,0.99 -2.79,1.22 -4.48,1.35 -2.51,2.03 -1.23,0.15 -0.84,-0.17 -1.64,1.2 -1.79,0.55 -2.35,0.15 -0.71,0.16 -0.61,0.75 -0.74,0.21 -0.43,0.73 -1.39,-0.06 -0.9,0.38 -1.94,-0.14 -0.73,-1.67 0.08,-1.57 -0.45,-0.85 -0.55,-2.12 -0.81,-1.19 0.56,-0.14 -0.29,-1.32 0.34,-0.56 -0.12,-1.26 1.23,-0.93 -0.29,-1.23 0.75,-1.43 1.15,0.76 0.76,-0.27 3.23,-0.07 0.52,0.3 2.71,0.29 1.07,-0.15 0.7,0.97 1.31,-0.48 2.01,-3.07 2.62,-1.32 8.08,-1.13 2.2,4.84 z", - "ZA": "m 563.88,548.96 -0.55,0.46 -1.19,1.63 -0.78,1.66 -1.59,2.33 -3.17,3.38 -1.98,1.98 -2.12,1.51 -2.93,1.3 -1.43,0.17 -0.36,0.93 -1.7,-0.5 -1.39,0.64 -3.04,-0.65 -1.7,0.41 -1.16,-0.18 -2.89,1.33 -2.39,0.54 -1.73,1.28 -1.28,0.08 -1.19,-1.21 -0.95,-0.06 -1.21,-1.51 -0.13,0.47 -0.37,-0.91 0.02,-1.96 -0.91,-2.23 0.9,-0.6 -0.07,-2.53 -1.84,-3.05 -1.41,-2.74 0,-0.01 -2.01,-4.15 1.34,-1.57 1.11,0.87 0.47,1.36 1.26,0.23 1.76,0.6 1.51,-0.23 2.5,-1.63 0,-11.52 0.76,0.46 1.66,2.93 -0.26,1.89 0.63,1.1 2.01,-0.32 1.4,-1.39 1.33,-0.93 0.69,-1.48 1.37,-0.72 1.18,0.38 1.34,0.87 2.28,0.15 1.79,-0.72 0.28,-0.96 0.49,-1.47 1.53,-0.25 0.84,-1.15 0.93,-2.03 2.52,-2.26 3.97,-2.22 1.14,0.03 1.36,0.51 0.94,-0.36 1.49,0.3 1.34,4.26 0.73,2.17 -0.5,3.43 0.24,1.11 -1.42,-0.57 -0.81,0.22 -0.26,0.9 -0.77,1.17 0.03,1.08 1.67,1.7 1.64,-0.34 0.57,-1.39 2.13,0.03 -0.7,2.28 -0.33,2.62 -0.73,1.43 -1.9,1.62 z m -7.13,-0.96 -1.22,-0.98 -1.31,0.65 -1.52,1.25 -1.5,2.03 2.1,2.48 1,-0.32 0.52,-1.03 1.56,-0.5 0.48,-1.05 0.86,-1.56 -0.97,-0.97 z", - "ZM": "m 567.36,489.46 1.32,1.26 0.71,2.4 -0.48,0.77 -0.56,2.3 0.54,2.36 -0.88,0.99 -0.85,2.66 1.47,0.74 -8.51,2.38 0.27,2.05 -2.13,0.4 -1.59,1.15 -0.34,1.01 -1.01,0.22 -2.44,2.4 -1.55,1.89 -0.95,0.07 -0.91,-0.34 -3.13,-0.32 -0.5,-0.22 -0.03,-0.24 -1.1,-0.66 -1.82,-0.17 -2.3,0.67 -1.83,-1.82 -1.89,-2.38 0.13,-9.16 5.84,0.04 -0.24,-0.99 0.42,-1.07 -0.49,-1.33 0.32,-1.38 -0.3,-0.88 0.97,0.07 0.16,0.88 1.31,-0.07 1.78,0.26 0.94,1.29 2.24,0.4 1.72,-0.9 0.63,1.49 2.15,0.4 1.03,1.22 1.15,1.57 2.15,0.03 -0.24,-3.08 -0.77,0.51 -1.96,-1.1 -0.76,-0.51 0.35,-2.85 0.5,-3.35 -0.63,-1.25 0.8,-1.8 0.75,-0.33 3.77,-0.48 1.1,0.29 1.17,0.71 1.12,0.48 1.78,0.47 z", - "ZW": "m 562.96,527.25 -1.49,-0.3 -0.95,0.36 -1.35,-0.51 -1.14,-0.03 -1.79,-1.36 -2.17,-0.46 -0.82,-1.9 -0.01,-1.05 -1.2,-0.32 -3.17,-3.25 -0.89,-1.71 -0.56,-0.52 -1.08,-2.35 3.13,0.32 0.91,0.34 0.95,-0.07 1.55,-1.89 2.44,-2.4 1.01,-0.22 0.34,-1.01 1.59,-1.15 2.13,-0.4 0.18,1.08 2.34,-0.06 1.3,0.61 0.6,0.72 1.34,0.21 1.45,0.94 0.01,3.69 -0.55,2.04 -0.12,2.2 0.45,0.88 -0.31,1.74 -0.43,0.27 -0.74,2.15 z" - } - } - } - }); - - return Mapael; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.min.js deleted file mode 100644 index bab3240..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.min.js +++ /dev/null @@ -1,4 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("jquery-mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries_mercator:{width:1008.77,height:651.44,leftLongitude:-169.6,rightLongitude:190.25,topLatitude:83.68,bottomLatitude:-55.55,_projectLongitude:function(a){return a*Math.PI/180},_projectLatitude:function(a){var b=Math.sin(a*Math.PI/180);return.5*Math.log((1+b)/(1-b))},getCoords:function(a,b){var c=this;void 0===c._xLeftPrime&&(c._xLeftPrime=c._projectLongitude(c.leftLongitude)),void 0===c._xRightPrime&&(c._xRightPrime=c._projectLongitude(c.rightLongitude)),void 0===c._yTopPrime&&(c._yTopPrime=c._projectLatitude(c.topLatitude)),void 0===c._yBottomPrime&&(c._yBottomPrime=c._projectLatitude(c.bottomLatitude));var d=c._projectLongitude(b),e=c._projectLatitude(a);return{x:(d-c._xLeftPrime)*(c.width/(c._xRightPrime-c._xLeftPrime)),y:(c._yTopPrime-e)*(c.height/(c._yTopPrime-c._yBottomPrime))}},elems:{AE:"m 620.12,393.97 0.5,-0.15 0.11,0.84 2.19,-0.48 2.32,0.08 1.69,0.09 1.92,-2.07 2.1,-1.98 1.77,-1.9 0.53,1.05 0.38,2.44 -1.43,0.01 -0.23,2 0.5,0.42 -1.27,0.6 -0.01,1.25 -0.82,1.26 -0.07,1.21 -0.57,0.64 -8.42,-1.52 -1.08,-3.08 z",AF:"m 647.13,357.15 2.86,1.3 2.11,-0.46 0.59,-1.55 2.21,-0.52 1.58,-1.05 0.56,-2.79 2.36,-0.68 0.44,-1.25 1.33,0.94 0.84,0.11 1.56,0.03 2.12,0.74 0.85,0.42 2.03,-1.12 0.95,0.67 0.9,-1.6 1.68,0.07 0.43,-0.52 0.3,-1.43 1.21,-1.23 1.51,0.8 -0.3,1.09 0.85,0.17 -0.27,2.95 1.11,1.15 0.98,-0.74 1.25,-0.34 1.74,-1.57 1.93,0.26 2.9,0 0.5,1.01 -1.64,0.39 -1.42,0.65 -3.22,0.4 -3.01,0.73 -1.64,1.51 0.66,1.46 0.33,1.7 -1.4,1.43 0.12,1.3 -0.77,1.22 -2.67,-0.11 1.1,2.22 -1.78,0.85 -1.19,2 0.15,1.98 -1.1,0.92 -1.03,-0.3 -2.15,0.43 -0.3,0.91 -2.09,0 -1.56,1.84 -0.1,2.75 -3.65,1.33 -1.95,-0.28 -0.57,0.7 -1.67,-0.4 -2.81,0.48 -4.69,-1.64 2.54,-2.93 -0.23,-2.1 -2.12,-0.55 -0.22,-2.09 -0.92,-2.64 1.2,-1.83 -1.22,-0.49 0.77,-2.45 z",AL:"m 533.23,334.91 -0.35,1.27 0.4,1.59 1.16,0.9 -0.06,0.97 -0.91,0.54 -0.17,1.19 -1.3,1.76 -0.48,-0.25 -0.05,-0.8 -1.56,-1.23 -0.24,-1.75 0.24,-2.53 0.38,-1.16 -0.47,-0.59 -0.19,-1.19 1.22,-1.87 0.17,0.72 0.76,-0.34 0.6,1.02 0.67,0.38 z",AM:"m 597.7,337.75 3.9,-0.58 0.58,0.98 1.07,0.64 -0.57,0.92 1.5,1.26 -0.79,1.16 1.19,0.99 1.26,0.59 0.06,2.5 -1.02,0.1 -1.14,-2.08 0.01,-0.55 -1.24,0.01 -0.83,-0.98 -0.58,0.1 -1.11,-1.06 -2.08,-0.91 0.27,-1.79 z",AO:"m 521.28,480.03 0.69,2.09 0.8,1.68 0.64,0.91 1.07,1.47 1.85,-0.23 0.93,-0.4 1.55,0.4 0.42,-0.7 0.7,-1.64 1.74,-0.11 0.15,-0.49 1.43,-0.01 -0.24,1.01 3.4,-0.02 0.05,1.77 0.57,1.09 -0.41,1.7 0.21,1.74 0.94,1.05 -0.15,3.37 0.69,-0.26 1.22,0.07 1.74,-0.42 1.28,0.17 0.3,0.88 -0.32,1.38 0.49,1.34 -0.42,1.07 0.24,0.99 -5.84,-0.04 -0.13,9.16 1.89,2.38 1.83,1.82 -5.15,1.19 -6.79,-0.41 -1.94,-1.4 -11.37,0.13 -0.42,0.21 -1.67,-1.32 -1.82,-0.09 -1.68,0.5 -1.35,0.56 -0.26,-1.83 0.39,-2.55 0.97,-2.65 0.15,-1.24 0.91,-2.59 0.67,-1.17 1.61,-1.87 0.9,-1.27 0.29,-2.11 -0.15,-1.61 -0.84,-1.01 -0.75,-1.72 -0.69,-1.69 0.15,-0.59 0.86,-1.12 -0.85,-2.72 -0.57,-1.88 -1.4,-1.77 0.27,-0.54 1.16,-0.38 0.81,0.05 0.98,-0.34 8.27,0.01 z m -10.91,-0.54 -0.71,0.3 -0.75,-2.1 1.13,-1.21 0.85,-0.47 1.05,0.96 -1.02,0.59 -0.46,0.72 -0.09,1.21 z",AR:"m 291.85,649.16 -2.66,0.25 -1.43,-1.73 -1.69,-0.13 -3,0 0,-10.57 1.08,2.15 1.4,3.53 3.65,2.87 3.93,1.21 -1.28,2.42 z m 1.5,-122.44 1.65,2.18 1.09,-2.43 3.2,0.12 0.45,0.64 5.15,4.94 2.29,0.46 3.43,2.26 2.89,1.2 0.4,1.36 -2.76,4.73 2.83,0.85 3.15,0.48 2.22,-0.5 2.54,-2.4 0.46,-2.74 1.39,-0.59 1.41,1.79 -0.06,2.49 -2.36,1.73 -1.88,1.28 -3.16,3.08 -3.74,4.37 -0.7,2.59 -0.75,3.37 0.03,3.3 -0.61,0.74 -0.22,2.17 -0.19,1.76 3.56,2.91 -0.38,2.37 1.75,1.51 -0.14,1.7 -2.69,4.52 -4.16,1.91 -5.62,0.75 -3.08,-0.36 0.59,2.15 -0.57,2.72 0.52,1.85 -1.68,1.3 -2.87,0.51 -2.7,-1.35 -1.08,0.97 0.39,3.71 1.89,1.14 1.54,-1.19 0.84,1.96 -2.58,1.18 -2.25,2.38 -0.41,3.91 -0.66,2.11 -2.65,0.01 -2.2,2.04 -0.8,3.01 2.76,2.98 2.68,0.83 -0.96,3.73 -3.31,2.38 -1.82,5.03 -2.56,1.72 -1.15,2.06 0.91,4.64 1.87,2.63 -1.18,-0.23 -2.6,-0.71 -6.78,-0.61 -1.16,-2.63 0.05,-3.33 -1.87,0.28 -0.99,-1.6 -0.25,-4.6 2.15,-1.88 0.89,-2.68 -0.33,-2.11 1.49,-3.52 1.02,-5.35 -0.3,-2.33 1.22,-0.75 -0.3,-1.48 -1.3,-0.78 0.92,-1.63 -1.27,-1.46 -0.65,-4.4 1.13,-0.77 -0.47,-4.54 0.66,-3.75 0.75,-3.22 1.68,-1.3 -0.85,-3.46 -0.01,-3.22 2.12,-2.26 -0.06,-2.87 1.6,-3.31 0.01,-3.09 -0.73,-0.61 -1.29,-5.69 1.73,-3.34 -0.27,-3.11 1,-2.9 1.84,-2.96 1.98,-1.95 -0.84,-1.23 0.59,-1 -0.09,-5.14 3.05,-1.51 0.96,-3.16 -0.34,-0.76 2.34,-2.72 3.62,0.72 z",AT:"m 523.11,310.1 -0.21,1.71 -1.58,0.01 0.54,0.89 -0.93,2.65 -0.53,0.69 -2.45,0.1 -1.42,0.92 -2.32,-0.31 -4.01,-1.05 -0.62,-1.43 -2.77,0.72 -0.33,0.77 -1.7,-0.58 -1.43,-0.11 -1.27,-0.74 0.43,-1.01 -0.11,-0.74 0.85,-0.22 1.42,1.14 0.4,-1.09 2.47,0.18 2.01,-0.74 1.34,0.12 0.87,0.85 0.27,-0.7 -0.4,-2.72 1.01,-0.54 0.98,-1.95 2.09,1.37 1.57,-1.74 0.99,-0.32 2.18,1.3 1.31,-0.22 1.3,0.8 -0.23,0.54 z",AU:"m 883.18,588.41 2.71,1.28 1.53,-0.51 2.19,-0.71 1.68,0.25 0.2,4.43 -0.96,1.3 -0.29,3.06 -0.98,-1.05 -1.95,2.67 -0.58,-0.21 -1.72,-0.12 -1.73,-3.28 -0.38,-2.5 -1.62,-3.25 0.07,-1.7 1.83,0.34 z m -5.15,-86.06 1.01,2.25 1.8,-1.08 0.93,1.22 1.35,1.13 -0.29,1.28 0.6,2.48 0.43,1.45 0.71,0.35 0.76,2.5 -0.27,1.52 0.91,1.99 3.04,1.54 1.98,1.41 1.88,1.29 -0.37,0.72 1.6,1.87 1.09,3.25 1.12,-0.66 1.14,1.31 0.69,-0.46 0.48,3.21 1.99,1.87 1.3,1.17 2.19,2.49 0.79,2.49 0.07,1.77 -0.19,1.94 1.34,2.68 -0.16,2.81 -0.49,1.48 -0.76,2.87 0.06,1.86 -0.55,2.34 -1.24,3 -2.08,1.63 -1.02,2.59 -0.94,1.67 -0.83,2.93 -1.08,1.71 -0.71,2.58 -0.36,2.4 0.14,1.11 -1.61,1.22 -3.14,0.13 -2.59,1.45 -1.29,1.38 -1.69,1.54 -2.32,-1.58 -1.72,-0.63 0.44,-1.85 -1.53,0.67 -2.46,2.58 -2.42,-0.97 -1.59,-0.56 -1.6,-0.25 -2.71,-1.03 -1.81,-2.18 -0.52,-2.66 -0.65,-1.75 -1.38,-1.4 -2.7,-0.41 0.92,-1.66 -0.68,-2.52 -1.37,2.35 -2.5,0.63 1.47,-1.88 0.42,-1.95 1.08,-1.65 -0.22,-2.47 -2.28,2.85 -1.75,1.15 -1.07,2.69 -2.19,-1.4 0.09,-1.79 -1.75,-2.43 -1.48,-1.25 0.53,-0.77 -3.6,-2 -1.97,-0.09 -2.7,-1.6 -5.02,0.31 -3.63,1.18 -3.19,1.1 -2.68,-0.22 -2.97,1.7 -2.43,0.77 -0.54,1.75 -1.04,1.36 -2.38,0.08 -1.76,0.3 -2.48,-0.61 -2.02,0.37 -1.92,0.15 -1.67,1.8 -0.82,-0.15 -1.41,0.96 -1.35,1.08 -2.05,-0.13 -1.88,0 -2.97,-2.17 -1.51,-0.64 0.06,-1.93 1.39,-0.46 0.48,-0.76 -0.1,-1.2 0.34,-2.3 -0.31,-1.95 -1.48,-3.29 -0.46,-1.85 0.12,-1.83 -1.12,-2.08 -0.07,-0.93 -1.24,-1.26 -0.35,-2.47 -1.6,-2.48 -0.39,-1.33 1.23,1.35 -0.95,-2.88 1.39,0.9 0.83,1.2 -0.05,-1.59 -1.39,-2.43 -0.27,-0.97 -0.65,-0.92 0.3,-1.77 0.57,-0.75 0.38,-1.52 -0.3,-1.77 1.16,-2.17 0.21,2.29 1.18,-2.07 2.28,-1 1.37,-1.28 2.14,-1.1 1.27,-0.23 0.77,0.37 2.21,-1.11 1.7,-0.33 0.42,-0.65 0.74,-0.27 1.55,0.07 2.95,-0.87 1.52,-1.31 0.72,-1.58 1.64,-1.49 0.13,-1.17 0.07,-1.59 1.96,-2.47 1.18,2.51 1.19,-0.58 -1,-1.38 0.88,-1.41 1.24,0.63 0.34,-2.21 1.53,-1.42 0.68,-1.14 1.41,-0.49 0.04,-0.8 1.23,0.34 0.05,-0.72 1.23,-0.41 1.36,-0.39 2.07,1.32 1.56,1.71 1.75,0.02 1.78,0.27 -0.59,-1.58 1.34,-2.3 1.26,-0.75 -0.44,-0.71 1.22,-1.63 1.7,-1.01 1.43,0.34 2.36,-0.54 -0.05,-1.45 -2.05,-0.94 1.49,-0.41 1.86,0.7 1.49,1.17 2.36,0.73 0.8,-0.29 1.74,0.88 1.64,-0.82 1.05,0.25 0.66,-0.55 1.29,1.41 -0.75,1.53 -1.06,1.16 -0.96,0.1 0.33,1.15 -0.82,1.43 -1,1.41 0.2,0.81 2.23,1.6 2.16,0.93 1.44,1 2.03,1.72 0.79,0 1.47,0.75 0.43,0.9 2.68,0.99 1.85,-1 0.55,-1.57 0.57,-1.29 0.35,-1.59 0.85,-2.3 -0.39,-1.39 0.2,-0.84 -0.32,-1.64 0.37,-2.16 0.54,-0.58 -0.44,-0.95 0.68,-1.51 0.53,-1.56 0.07,-0.81 1.04,-1.06 0.79,1.39 0.19,1.78 0.7,0.34 0.12,1.2 1.02,1.45 0.21,1.62 -0.08,1.01 z",AZ:"m 601.68,342.71 0.83,0.97 1.24,-0.01 -0.01,0.56 1.14,2.08 -1.92,-0.48 -1.42,-1.66 -0.44,-1.37 0.58,-0.09 z m 6.65,-5.43 1.24,0.25 0.48,-0.95 1.67,-1.51 1.47,1.97 1.43,2.62 1.31,0.17 0.86,0.99 -2.31,0.29 -0.49,2.82 -0.48,1.26 -1.03,0.84 0.08,1.77 -0.7,0.18 -1.75,-1.87 0.97,-1.78 -0.83,-1.06 -1.05,0.27 -3.31,2.66 -0.06,-2.5 -1.26,-0.59 -1.19,-0.99 0.79,-1.16 -1.49,-1.26 0.56,-0.92 -1.07,-0.64 -0.58,-0.97 0.69,-0.61 2.09,1.07 1.51,0.22 0.38,-0.43 -1.38,-2.02 0.73,-0.52 0.79,0.13 1.93,2.27 z",BA:"m 528.79,323.36 1.02,-0.01 -0.7,1.72 1.35,1.5 -0.41,1.82 -0.66,0.17 -0.53,0.36 -0.91,0.89 -0.41,2.1 -2.48,-1.44 -1.06,-1.61 -1.07,-0.85 -1.29,-1.45 -0.6,-1.21 -1.38,-1.83 0.59,-1.64 1.01,0.91 0.6,-0.82 1.31,-0.09 2.41,0.66 1.94,-0.06 z",BD:"m 735.34,400.66 -0.05,2.15 -0.98,-0.46 0.18,2.41 -0.8,-1.56 -0.16,-1.52 -0.54,-1.45 -1.17,-1.76 -2.58,-0.12 0.26,1.25 -0.88,1.67 -1.2,-0.61 -0.41,0.55 -0.79,-0.33 -1.08,-0.27 -0.44,-2.48 -0.97,-2.28 0.47,-1.84 -1.72,-0.82 0.62,-1.12 1.75,-1.15 -2.02,-1.63 0.99,-2.11 2.22,1.34 1.34,0.16 0.25,2.15 2.66,0.42 2.61,-0.05 1.61,0.53 -1.29,2.59 -1.26,0.18 -0.86,1.73 1.53,1.58 0.46,-1.94 0.78,-0.01 z",BE:"m 484.8,296.16 2.05,0.35 2.6,-0.93 1.77,1.95 1.55,1.04 -0.32,2.97 -0.73,0.16 -0.31,2.43 -2.45,-1.97 -1.44,0.34 -1.96,-2.06 -1.3,-1.77 -1.3,-0.07 -0.41,-1.56 z",BF:"m 467.58,436.65 -1.92,-0.73 -1.32,0.11 -0.98,0.71 -1.26,-0.6 -0.49,-0.93 -1.26,-0.62 -0.19,-1.64 0.77,-1.21 -0.07,-0.96 2.23,-2.36 0.41,-1.96 0.77,-0.7 1.36,0.38 1.17,-0.58 0.38,-0.74 2.18,-1.28 0.53,-0.9 2.62,-1.2 1.55,-0.41 0.7,0.55 1.79,-0.01 -0.22,1.4 0.38,1.31 1.58,1.87 0.08,1.38 3.24,0.65 -0.07,1.95 -0.61,0.86 -1.37,0.26 -0.57,1.24 -0.96,0.32 -2.46,-0.06 -1.3,-0.22 -0.9,0.46 -1.24,-0.21 -4.87,0.13 -0.07,1.61 z",BG:"m 539.03,325.81 0.81,1.6 1.08,-0.29 2.16,0.61 4.12,0.2 1.39,-0.99 3.3,-0.9 2.04,1.41 1.65,0.41 -1.46,1.59 -1.02,2.73 0.9,2.16 -2.41,-0.51 -2.86,1.18 -0.03,1.86 -2.55,0.35 -1.97,-1.3 -2.25,1.03 -2.07,-0.11 -0.2,-2.47 -1.41,-1.21 0.47,-0.54 -0.31,-0.45 0.47,-1.21 1.07,-1.19 -1.36,-1.66 -0.25,-1.42 z",BI:"m 557.77,476.18 -0.18,-3.37 -0.71,-1.26 1.71,0.22 0.86,-1.59 1.49,0.18 0.16,1.1 0.6,0.63 0.03,0.91 -0.69,0.58 -1.1,1.46 -1.01,1.01 z",BJ:"m 483.05,446.17 -2.32,0.33 -0.69,-1.94 0.13,-6.46 -0.57,-0.58 -0.1,-1.39 -0.98,-0.99 -0.85,-0.83 0.36,-1.5 0.96,-0.32 0.57,-1.24 1.37,-0.26 0.61,-0.86 0.94,-0.83 1.01,-0.01 2.14,1.64 -0.11,0.95 0.63,1.68 -0.55,1.14 0.29,0.76 -1.36,1.75 -0.86,0.87 -0.53,1.77 0.07,1.79 z",BN:"m 795.71,451.02 1.11,-1.05 2.39,-1.53 -0.13,1.38 -0.16,1.78 -1.34,-0.09 -0.59,0.95 z",BO:"m 299.29,526.6 -3.2,-0.13 -1.09,2.43 -1.65,-2.18 -3.67,-0.73 -2.33,2.72 -2.03,0.41 -1.1,-4.15 -1.5,-3.34 0.88,-2.87 -1.47,-1.25 -0.37,-2.12 -1.38,-2 1.77,-3.14 -1.21,-2.44 0.65,-0.97 -0.51,-1.07 1.1,-1.44 0.06,-2.44 0.13,-2.02 0.61,-0.96 -2.43,-4.58 2.09,0.24 1.44,-0.07 0.63,-0.85 2.45,-1.15 1.47,-1.06 3.67,-0.48 -0.29,2.12 0.34,1.09 -0.23,1.9 3.05,2.55 3.14,0.47 1.1,1.07 1.9,0.57 1.16,0.83 1.76,-0.03 1.63,0.85 0.12,1.66 0.55,0.84 0.04,1.25 -0.82,0.04 1.08,3.37 5.37,0.12 -0.41,1.68 0.3,1.15 1.53,0.82 0.67,1.82 -0.5,2.32 -0.77,1.29 0.27,1.69 -0.88,0.61 -0.04,-0.91 -2.62,-1.51 -2.6,-0.05 -4.89,0.86 -1.34,2.62 -0.07,1.6 -1.11,3.59 z",BR:"m 313.93,552.04 3.74,-4.37 3.17,-3.08 1.88,-1.28 2.36,-1.73 0.06,-2.49 -1.41,-1.79 -1.39,0.59 0.55,-1.78 0.38,-1.82 0,-1.68 -1.01,-0.55 -1.05,0.49 -1.04,-0.13 -0.33,-1.18 -0.26,-2.77 -0.53,-0.9 -1.89,-0.82 -1.14,0.59 -2.96,-0.58 0.18,-4.06 -0.83,-1.66 0.88,-0.61 -0.27,-1.69 0.77,-1.29 0.5,-2.32 -0.67,-1.82 -1.53,-0.82 -0.3,-1.15 0.41,-1.68 -5.37,-0.12 -1.08,-3.37 0.82,-0.04 -0.04,-1.25 -0.55,-0.84 -0.12,-1.66 -1.63,-0.85 -1.76,0.03 -1.16,-0.83 -1.9,-0.57 -1.1,-1.07 -3.14,-0.47 -3.05,-2.55 0.23,-1.9 -0.34,-1.09 0.29,-2.12 -3.67,0.48 -1.47,1.06 -2.45,1.15 -0.63,0.85 -1.44,0.07 -2.09,-0.24 -1.58,0.49 -1.28,-0.33 0.19,-4.3 -2.3,1.66 -2.47,-0.07 -1.06,-1.51 -1.86,-0.16 0.59,-1.21 -1.56,-1.72 -1.17,-2.53 0.74,-0.51 0,-1.19 1.7,-0.81 -0.28,-1.51 0.71,-0.98 0.21,-1.3 3.2,-1.91 2.3,-0.53 0.37,-0.42 2.53,0.13 1.26,-7.65 0.07,-1.21 -0.44,-1.59 -1.24,-1.02 0.01,-2.02 1.58,-0.46 0.56,0.29 0.09,-1.07 -1.64,-0.29 -0.03,-1.74 5.46,0.06 0.93,-0.96 0.78,0.88 0.54,1.65 0.53,-0.35 1.55,1.48 2.18,-0.18 0.54,-0.86 2.08,-0.65 1.16,-0.45 0.32,-1.18 2.01,-0.8 -0.16,-0.58 -2.37,-0.24 -0.39,-1.76 0.11,-1.87 -1.25,-0.72 0.52,-0.26 2.08,0.36 2.23,0.7 0.81,-0.66 2.01,-0.44 3.14,-1.04 1.03,-1.07 -0.38,-0.79 1.46,-0.12 0.66,0.64 -0.37,1.23 0.96,0.42 0.65,1.3 -0.78,0.98 -0.45,2.38 0.72,1.41 0.2,1.29 1.73,1.3 1.38,0.14 0.31,-0.54 0.88,-0.12 1.27,-0.49 0.91,-0.74 1.55,0.23 0.68,-0.1 1.53,0.23 0.25,-0.57 -0.47,-0.55 0.28,-0.81 1.13,0.25 1.33,-0.29 1.6,0.59 1.23,0.58 0.87,-0.76 0.62,0.12 0.39,0.79 1.34,-0.2 1.07,-1.06 0.86,-2.06 1.66,-2.55 0.96,-0.13 0.69,1.54 1.57,4.88 1.5,0.46 0.08,1.92 -2.11,2.29 0.87,0.84 4.96,0.44 0.1,2.79 2.13,-1.83 3.53,1.01 4.65,1.7 1.37,1.63 -0.46,1.54 3.26,-0.86 5.46,1.48 4.19,-0.11 4.14,2.31 3.58,3.13 2.16,0.8 2.4,0.12 1.02,0.88 0.95,3.57 0.47,1.69 -1.12,4.66 -1.43,1.84 -3.95,3.94 -1.79,3.21 -2.07,2.48 -0.7,0.06 -0.79,2.1 0.2,5.4 -0.78,4.48 -0.3,1.93 -0.88,1.15 -0.5,3.94 -2.84,3.88 -0.48,3.09 -2.27,1.31 -0.66,1.81 -3.04,-0.01 -4.41,1.17 -1.98,1.35 -3.14,0.89 -3.3,2.44 -2.37,3.06 -0.41,2.32 0.47,1.73 -0.53,3.18 -0.63,1.55 -1.96,1.75 -3.11,5.68 -2.47,2.59 -1.91,1.54 -1.27,3.16 -1.86,1.91 -0.78,-1.9 1.24,-1.57 -1.62,-2.25 -2.2,-1.82 -2.89,-2.08 -1.04,0.09 -2.81,-2.5 z",BS:"m 258.11,395.45 -0.69,0.15 -0.71,-1.76 -1.05,-0.89 0.61,-1.95 0.84,0.12 0.98,2.55 0.02,1.78 z m -0.8,-8.69 -3.06,0.5 -0.2,-1.15 1.32,-0.25 1.85,0.09 0.09,0.81 z m 2.3,-0.03 -0.48,2.21 -0.52,-0.4 0.05,-1.63 -1.26,-1.23 -0.01,-0.36 2.22,1.41 z",BT:"m 732.61,383.03 1.14,1 -0.2,1.93 -2.29,0.09 -2.36,-0.21 -1.77,0.49 -2.55,-1.19 -0.05,-0.63 1.85,-2.34 1.51,-0.8 2.01,0.73 1.48,0.08 z",BW:"m 547.42,516.2 0.56,0.52 0.89,1.71 3.17,3.25 1.2,0.32 0.01,1.05 0.82,1.9 2.17,0.46 1.79,1.36 -3.97,2.22 -2.52,2.26 -0.93,2.03 -0.84,1.15 -1.53,0.25 -0.49,1.47 -0.29,0.96 -1.79,0.72 -2.28,-0.15 -1.34,-0.86 -1.18,-0.38 -1.37,0.72 -0.69,1.48 -1.33,0.93 -1.4,1.39 -2.01,0.32 -0.62,-1.09 0.26,-1.9 -1.67,-2.93 -0.75,-0.46 0,-8.86 2.76,-0.11 0.08,-10.57 2.09,-0.09 4.32,-1.03 1.08,1.21 1.78,-1.15 0.86,-0.01 1.58,-0.66 0.5,0.22 z",BY:"m 541.35,284.32 2.71,0.04 3.04,-1.8 0.65,-2.72 2.3,-1.57 -0.26,-2.2 1.7,-0.84 3.02,-1.93 2.95,1.26 0.4,1.23 1.47,-0.59 2.74,1.18 0.27,2.31 -0.6,1.32 1.76,3.15 1.14,0.87 -0.17,0.86 1.89,0.83 0.81,1.25 -1.09,1.02 -2.26,-0.16 -0.54,0.44 0.66,1.54 0.69,2.93 -2.41,0.27 -0.86,1 -0.19,2.26 -1.11,-0.43 -2.53,0.22 -0.74,-1.05 -1.05,0.78 -1.05,-0.65 -2.21,-0.09 -3.13,-1.08 -2.83,-0.36 -2.17,0.1 -1.54,1.23 -1.34,0.17 -0.05,-2.01 -0.87,-2.12 1.68,-0.94 0.02,-1.85 -0.78,-1.78 z",BZ:"m 225.56,413.21 -0.02,-0.43 0.34,-0.14 0.51,0.35 1,-1.77 0.53,-0.04 0.01,0.43 0.53,0.01 -0.04,0.8 -0.46,1.27 0.25,0.45 -0.29,1.05 0.17,0.27 -0.32,1.47 -0.55,0.78 -0.51,0.09 -0.56,1 -0.83,0 0.22,-3.28 z",CA:"m 199.18,96.48 -0.22,-5.9 3.63,0.58 1.63,0.96 3.35,4.92 -0.76,4.97 -4.15,2.77 -2.28,-3.12 -1.2,-5.18 z m 13.21,12.65 0.33,-1.49 -1.97,-2.45 -5.65,-0.19 0.75,3.68 5.25,0.83 1.29,-0.38 z m 36.35,46.95 3.08,5.1 0.81,0.57 3.07,-1.27 3.02,0.2 2.98,0.28 -0.25,-2.64 -4.84,-5.38 -6.42,-1.08 -1.35,0.67 -0.1,3.55 z m -65.43,-62.7 -2.71,4.19 6.24,0.52 4.61,4.44 4.58,1.5 -1.09,-5.68 -2.14,-6.73 -7.58,-5.35 -5.5,-2.04 0.2,5.69 3.39,3.46 z m 25.9,-10.24 5.13,-0.12 -2.22,4 -0.04,5.3 3.01,5.76 5.81,1.77 4.96,-0.99 5.18,-10.73 3.85,-4.45 -3.38,-4.97 -2.21,-10.65 -4.6,-3.19 -4.72,-3.68 -3.58,-9.56 -6.52,0.94 1.23,4.15 -2.87,1.25 -1.94,5.32 -1.94,7.46 1.78,7.26 3.07,5.13 z m -63.75,53.38 3.92,1.95 12.67,-1.3 -5.82,4.77 0.36,3.43 4.26,-0.24 7.07,-4.58 9.5,-1.67 1.71,-5.22 -0.49,-5.57 -2.94,-0.5 -2.5,1.93 -1.1,-4.13 -0.95,-5.7 -2.9,-1.42 -2.57,4.41 4.01,11.05 -4.9,-0.85 -4.98,-6.79 -7.89,-4 -2.64,3.32 -3.82,11.11 z m 22.56,-42.06 -3.65,-2.9 -1.5,-0.66 -2.88,4.28 -0.05,2 4.66,0.01 3.42,-2.73 z m -1.46,12.35 0.93,-3.99 -3.95,-2.12 -4.09,1.39 -2.27,4.26 4.16,4.21 5.22,-3.75 z m 29.09,33.24 4.62,-1.11 1.28,-8.25 -0.09,-5.95 -2.14,-5.56 -0.22,1.6 -3.94,-0.7 -4.22,4.09 -3.02,-0.37 0.18,8.92 4.6,-0.87 -0.06,6.47 3.01,1.73 z m -3.28,45.61 -5.06,-3.93 -4.71,-4.21 -0.87,-6.18 -1.76,-8.92 -3.14,-3.84 -2.79,-1.55 -2.47,1.42 1.99,9.59 -1.41,3.73 -2.29,-8.98 -2.56,-3.11 -3.17,4.81 -3.9,-4.76 -6.24,2.87 1.4,-4.46 -2.87,-1.87 -7.51,5.84 -1.95,3.71 -2.35,6.77 4.9,2.32 4.33,-0.12 -6.5,3.46 1.48,3.13 3.98,0.17 5.99,-0.67 5.42,1.96 -3.66,1.44 -3.95,-0.37 -4.33,1.41 -1.87,0.87 3.45,6.35 2.49,-0.88 3.83,2.15 1.52,3.65 4.99,-0.73 7.1,-1.16 5.26,-2.65 3.26,-0.48 4.82,2.12 5.07,1.22 0.94,-2.86 -1.79,-3.05 4.6,-0.64 0.33,-3.57 z m 7.74,-0.98 -1.96,3.54 -2.47,2.49 3.83,3.54 2.28,-0.85 3.78,2.36 1.74,-2.73 -1.71,-3.03 -0.84,-1.53 -1.68,-1.46 -2.97,-2.33 z m -17.61,-29.45 -2.13,-2.17 -3.76,0.4 -0.95,1.38 4.37,6.75 2.47,-6.36 z m 28.69,13.17 3.01,-6.93 3.34,-1.85 4.19,-8.74 -5.36,-2.47 -5.84,-0.36 -2.78,2.77 -1.47,4.23 -0.04,4.82 1.75,8.19 3.2,0.34 z m 17.15,-23 5.76,-0.18 8.04,-1.61 3.59,1.28 4.18,-2.26 1.75,-2.84 -0.63,-4.52 -3,-4.23 -4.56,-0.8 -5.71,0.97 -4.46,2.44 -4.09,-0.94 -3.78,-0.5 -1.78,-2.7 -3.22,-2.61 0.64,-4.43 -2.42,-3.98 -5.52,0.03 -3.11,-3.99 -5.78,-0.8 -1.06,5.1 3.25,3.74 5.8,1.45 2.81,5.09 0.34,5.6 0.97,5.99 7.45,3.42 4.54,1.28 z m -89.02,-18.27 5.21,-5.05 2.62,-0.59 2.16,-4.23 0.38,-9.77 -3.85,1.91 -4.3,-0.18 -5.76,8.19 -4.76,8.98 3.8,2.51 4.5,-1.77 z m 72.18,16.17 1.53,-4.14 -1.02,-3.46 -2.45,-3.92 -4.03,3.02 -1.49,4.92 3.4,2.79 4.06,0.79 z m -8.31,11.44 -0.73,-2.88 -5,1.26 -3.34,-2.11 -3.32,4.8 3.09,6.28 -5.72,-1.17 -0.06,3.01 6.97,7.05 1.94,3.38 2.7,0.73 4.6,-3.41 0.5,-8.21 -4.24,-4.07 2.61,-4.66 z m -73.99,153.74 -1.16,-2.34 -2.8,-1.77 -1.39,-2.05 -0.95,-1.5 -2.64,-0.46 -1.72,-0.67 -2.94,-0.96 -0.24,1.02 1.08,2.38 2.89,0.78 0.5,1.23 2.51,1.5 0.84,1.51 4.6,1.92 1.42,-0.59 z m 121.7,-77.63 -2,-2.11 -2.06,0.5 -0.25,-3.06 -3.21,-2.04 -3.07,-2.27 -1.63,-1.75 -1.43,1.03 -0.52,-2.96 -2.03,-0.55 -0.96,6.13 -0.36,5.11 -2.44,3.14 3.8,-0.6 0.96,3.65 3.99,-3.23 2.78,-3.38 1.57,2.86 4.36,1.51 2.5,-1.98 z m -120.53,-52.55 7.38,-4.18 v -3.87 l 3.48,-6.41 6.88,-6.69 3.52,-2.47 -3.01,-4.2 -2.72,-2.95 -7.16,-0.57 -4,-2.16 -9.48,1.63 2.74,6.23 -2.43,6.43 -1.94,6.87 -1.2,3.86 6.47,4.69 1.47,3.79 z m 134.24,27.31 0.32,-1.01 -0.03,-3.17 -2.19,-2.08 -2.57,1.05 -1.19,4.17 0.7,3.56 3.14,-0.36 1.82,-2.16 z m 23.82,7.54 4.41,6.6 3.45,2.85 4.92,-7.87 0.87,-4.93 -4.41,-0.47 -4.03,-6.7 -4.45,-1.64 -6.6,-4.97 5.15,-3.63 -2.65,-7.54 -2.44,-3.35 -6.77,-3.35 -2.92,-5.55 -5.21,1.99 -0.36,-3.86 -3.86,-4.32 -6.22,-4.71 -2.65,3.71 -5.55,2.66 0.42,-6.06 -4.81,-10.05 -7.11,4.06 -2.59,7.7 -2.21,-5.92 2.06,-6.37 -7.24,2.65 -2.88,3.99 -2.15,8.42 0.89,9.05 3.98,0.04 -2.93,3.92 2.33,2.96 4.55,1.25 5.93,2.42 10.2,1.82 5.08,-1.04 1.5,-2.42 2.21,2.79 2.47,0.46 2.97,4.96 -1.8,1.98 5.68,2.63 4.29,3.68 1.08,2.55 0.77,3.24 -3.63,6.93 -0.98,3.44 0.94,2.42 -5.77,0.86 -5.27,0.12 -1.85,4.87 2.37,2.23 8.11,-1.03 -0.04,-1.89 4.08,3.15 4.18,3.28 -0.98,1.77 3.4,3.02 6.02,3.53 7.6,2.39 -0.46,-2.09 -2.92,-3.67 -3.96,-5.37 7.03,5 3.54,1.66 0.97,-4.44 -1.82,-6.3 -1.16,-1.73 -3.81,-3.03 -2.95,-3.91 0.35,-3.94 3.64,-0.9 z M 222.6,51.59 l 2.34,7.29 4.96,5.88 9.81,-1.09 6.31,1.97 -4.38,6.05 -2.21,-1.78 -7.66,-0.71 1.19,8.31 3.96,6.04 -0.8,5.2 -4.97,3.46 -2.27,5.47 4.55,2.65 3.82,8.55 -7.5,-5.7 -1.71,0.94 1.38,9.38 -5.18,2.83 0.35,5.85 5.3,0.63 4.17,1.44 8.24,-1.84 7.33,3.27 7.49,-7.19 -0.06,-3.02 -4.79,0.48 -0.39,-2.84 3.92,-3.83 1.33,-5.15 4.33,-3.83 2.66,-4.76 -2.32,-7.1 1.94,-2.65 -3.86,-1.89 8.49,-1.63 1.79,-3.15 5.78,-2.6 4.8,-13.47 4.57,-4.94 6.62,-11.12 -6.1,0.1 2.54,-4.3 6.78,-3.99 6.84,-8.9 0.12,-5.73 -5.13,-6.04 -6.02,-2.93 -7.49,-1.82 -6.07,-1.49 -6.07,-1.5 -8.1,3.98 -1.49,-2.53 -8.57,0.98 -5.03,2.57 -3.7,3.65 -2.13,11.74 -3.06,-6.01 -3.48,-1.14 -4.12,7.97 -5.5,3.35 -3.27,0.66 -4.17,3.84 0.61,6.65 3.28,5.49 z m 74.4,265 -0.98,-1.98 -1.06,1.26 0.7,1.36 3.56,1.71 1.04,-0.26 1.38,-1.66 -2.6,0.11 -2.04,-0.54 z m -57,-77.86 0.61,1.63 1.98,0.14 3.28,-3.34 0.06,-1.19 -3.85,-0.06 -2.08,2.82 z m 62.13,66.44 -2.87,-1.8 -3.69,-1.09 -0.97,0.37 2.61,2.04 3.63,1.34 1.36,-0.08 -0.07,-0.78 z m 24.88,4.79 -0.36,-2.24 -1.96,0.72 0.87,-3.11 -2.8,-1.32 -1.29,1.05 -2.49,-1.18 0.98,-1.51 -1.88,-0.93 -1.83,1.47 1.86,-3.82 1.5,-2.8 0.54,-1.22 -1.3,-0.2 -2.43,1.55 -1.74,2.53 -2.9,6.92 -2.35,2.56 1.22,1.14 -1.75,1.47 0.43,1.23 5.44,0.13 3.01,-0.25 2.69,1.01 -1.98,1.93 1.67,0.14 3.25,-3.58 0.78,0.53 -0.61,3.37 1.84,0.77 1.27,-0.15 1.18,-3.61 -0.86,-2.6 z m -21.19,4.76 -2.81,4.56 -4.63,0.58 -3.64,-2.01 -0.92,-3.07 -0.89,-4.46 2.65,-2.83 -2.48,-2.09 -4.19,0.43 -5.88,3.53 -4.5,5.45 -2.38,0.67 3.23,-3.8 4.04,-5.57 3.57,-1.9 2.35,-3.11 2.9,-0.3 4.21,0.03 6,0.92 4.74,-0.71 3.53,-3.62 4.62,-1.59 2.01,-1.58 2.04,-1.71 -0.2,-5.19 -1.13,-1.77 -2.18,-0.63 -1.11,-4.05 -1.8,-1.55 -4.47,-1.26 -2.52,-2.82 -3.73,-2.83 1.13,-3.2 -3.1,-6.26 -3.65,-6.89 -2.18,-4.98 -1.86,2.61 -2.68,6.05 -4.06,2.97 -2.03,-3.16 -2.56,-0.85 -0.93,-6.99 0.08,-4.8 -5,-0.44 -0.85,-2.27 -3.45,-3.44 -2.61,-2.04 -2.32,1.58 -2.88,-0.58 -4.81,-1.65 -1.95,1.4 0.94,9.18 1.22,5.12 -3.31,5.75 3.41,4.02 1.9,4.44 0.23,3.42 -1.55,3.5 -3.18,3.46 -4.49,2.28 1.98,2.53 1.46,7.4 -1.52,4.68 -2.16,1.46 -4.17,-4.28 -2.03,-5.17 -0.87,-4.76 0.46,-4.19 -3.05,-0.47 -4.63,-0.28 -2.97,-2.08 -3.51,-1.37 -2.01,-2.38 -2.8,-1.94 -5.21,-2.23 -3.92,1.02 -1.31,-3.95 -1.26,-4.99 -4.12,-0.9 0.15,-6.41 1.09,-4.48 3.04,-6.6 3.43,-4.9 3.26,-0.77 0.19,-4.05 2.21,-2.68 4.01,-0.42 3.25,-4.39 0.82,-2.9 2.7,-5.73 0.84,-3.5 2.9,2.11 3.9,-1.08 5.49,-4.96 0.36,-3.54 -1.98,-3.98 2.09,-4.06 -0.17,-3.87 -3.76,-3.95 -4.14,-1.19 -3.98,-0.62 -0.15,8.71 -2.04,6.56 -2.93,5.3 -2.71,-4.95 0.84,-5.61 -3.35,-5.02 -3.75,6.09 0.01,-7.99 -5.21,-1.63 2.49,-4.01 -3.81,-9.59 -2.84,-3.91 -3.7,-1.44 -3.32,6.43 -0.22,9.34 3.27,3.29 3,4.91 -1.27,7.71 -2.26,-0.2 -1.78,5.88 0.02,-7 -4.34,-2.58 -2.49,1.33 0.32,4.67 -4.09,-0.18 -4.35,1.17 -4.95,-3.35 -3.13,0.6 -2.82,-4.11 -2.26,-1.84 -2.24,0.77 -3.41,0.35 -1.81,2.61 2.86,3.19 -3.05,3.72 -2.99,-4.42 -2.39,1.3 -7.57,0.87 -5.07,-1.59 3.94,-3.74 -3.78,-3.9 -2.75,0.5 -3.86,-1.32 -6.56,-2.89 -4.29,-3.37 -3.4,-0.47 -1.06,2.36 -3.44,1.31 -0.38,-6.15 -3.73,5.5 -4.74,-7.32 -1.94,-0.89 -0.63,3.91 -2.09,1.9 -1.93,-3.39 -4.59,2.05 -4.2,3.55 -4.17,-0.98 -3.4,2.5 -2.46,3.28 -2.92,-0.72 -4.41,-3.8 -5.23,-1.94 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.56,2.35 0.06,2.48 3.39,3.45 0.49,3.76 3.59,1.96 -0.4,2.79 1.56,3.96 5.08,1.82 2,1.89 5.43,4.23 0.38,0.01 h 7.96 8.32 2.76 8.55 8.27 8.41 l 8.42,0 9.53,0 9.59,0 5.8,0 0.01,-1.64 0.95,-0.02 0.5,2.35 0.87,0.72 1.96,0.26 2.86,0.67 2.72,1.3 2.27,-0.55 3.45,1.09 1.14,-1.66 1.59,-0.66 0.62,-1.03 0.63,-0.55 2.61,0.86 1.93,0.1 0.67,0.57 0.94,2.38 3.15,0.63 -0.49,1.18 1.11,1.21 -0.48,1.56 1.18,0.51 -0.59,1.37 0.75,0.13 0.53,-0.6 0.55,0.9 2.1,0.5 2.13,0.04 2.27,0.41 2.51,0.78 0.91,1.26 1.82,3.04 -0.9,1.3 -2.28,-0.54 -1.42,-2.44 0.36,2.49 -1.34,2.17 0.15,1.84 -0.23,1.07 -1.81,1.27 -1.32,2.09 -0.62,1.32 1.54,0.24 2.08,-1.2 1.23,-1.06 0.83,-0.17 1.54,0.38 0.75,-0.59 1.37,-0.48 2.44,-0.47 v 0 l 0,0 -0.25,-1.15 -0.13,0.04 -0.86,0.2 -1.12,-0.36 0.84,-1.32 0.85,-0.46 1.98,-0.56 2.37,-0.53 1.24,0.73 0.78,-0.85 0.89,-0.54 0.6,0.29 0.03,0.06 2.87,-2.73 1.27,-0.73 4.26,-0.03 5.17,0 0.28,-0.98 0.9,-0.2 1.19,-0.62 1,-1.82 0.86,-3.15 2.14,-3.1 0.93,1.08 1.88,-0.7 1.25,1.19 0,5.52 1.83,2.25 3.12,-0.48 4.49,-0.13 -4.87,3.26 0.11,3.29 2.13,0.28 3.13,-2.79 2.78,-1.58 6.21,-2.35 3.47,-2.62 -1.81,-1.46 -0.29,-2.92 z m -53.66,-71.1 1.1,-3.12 -0.71,-1.23 -1.15,-0.13 -1.08,1.8 -0.13,0.41 0.74,1.77 1.23,0.5 z m -142.66,36.43 0,0 1.56,-2.35 -1.56,2.35 z m -3.4,3.29 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z",CD:"m 561.96,453.86 -0.17,3.26 1.12,0.37 -0.9,0.99 -1.08,0.74 -1.07,1.46 -0.59,1.29 -0.16,2.24 -0.65,1.06 -0.02,2.1 -0.81,0.78 -0.1,1.66 -0.39,0.21 -0.26,1.53 0.71,1.26 0.18,3.37 0.5,2.57 -0.28,1.46 0.56,1.62 1.63,1.57 1.51,3.55 -1.1,-0.29 -3.77,0.48 -0.75,0.33 -0.8,1.8 0.63,1.25 -0.5,3.35 -0.35,2.85 0.76,0.51 1.96,1.1 0.77,-0.51 0.24,3.08 -2.15,-0.03 -1.15,-1.57 -1.03,-1.22 -2.15,-0.4 -0.63,-1.49 -1.72,0.9 -2.24,-0.4 -0.94,-1.29 -1.78,-0.26 -1.31,0.07 -0.16,-0.88 -0.97,-0.07 -1.28,-0.17 -1.73,0.42 -1.22,-0.07 -0.7,0.26 0.15,-3.37 -0.93,-1.05 -0.21,-1.73 0.41,-1.7 -0.56,-1.09 -0.05,-1.76 -3.41,0.02 0.25,-1.01 -1.43,0.01 -0.15,0.49 -1.74,0.11 -0.71,1.63 -0.42,0.71 -1.55,-0.4 -0.92,0.4 -1.86,0.22 -1.07,-1.47 -0.64,-0.91 -0.81,-1.68 -0.69,-2.09 -8.27,-0.03 -0.99,0.33 -0.81,-0.05 -1.16,0.38 -0.39,-0.87 0.71,-0.3 0.09,-1.22 0.46,-0.72 1.02,-0.58 0.74,0.28 0.96,-1.07 1.52,0.03 0.18,0.79 1.05,0.5 1.65,-1.76 1.63,-1.36 0.71,-0.89 -0.09,-2.3 1.22,-2.71 1.28,-1.43 1.85,-1.34 0.32,-0.89 0.07,-1.02 0.46,-0.97 -0.15,-1.58 0.35,-2.47 0.55,-1.74 0.84,-1.49 0.16,-1.68 0.25,-1.95 1.1,-1.42 1.5,-0.9 2.31,0.95 1.78,1.03 2.05,0.28 2.09,0.54 0.84,-1.68 0.39,-0.22 1.27,0.28 3.13,-1.39 1.1,0.59 0.91,-0.08 0.42,-0.68 1.04,-0.24 2.11,0.29 1.8,0.06 0.93,-0.29 1.69,2.31 1.26,0.33 0.75,-0.47 1.3,0.19 1.56,-0.59 0.67,1.19 z",CF:"m 518.34,442.91 2.32,-0.22 0.52,-0.72 0.46,0.06 0.7,0.63 3.53,-1.07 1.19,-1.1 1.47,-0.99 -0.28,-0.99 0.79,-0.26 2.71,0.18 2.64,-1.31 2.02,-3.09 1.43,-1.14 1.77,-0.49 0.32,1.22 1.62,1.77 0,1.15 -0.45,1.18 0.18,0.87 0.97,0.81 2.14,1.24 1.53,1.13 0.03,0.92 1.88,1.46 1.17,1.21 0.71,1.68 2.1,1.11 0.45,0.89 -0.93,0.29 -1.8,-0.06 -2.11,-0.29 -1.04,0.24 -0.42,0.68 -0.91,0.08 -1.1,-0.59 -3.13,1.39 -1.27,-0.28 -0.39,0.22 -0.84,1.68 -2.09,-0.54 -2.05,-0.28 -1.78,-1.03 -2.31,-0.95 -1.5,0.9 -1.1,1.42 -0.25,1.95 -1.8,-0.16 -1.9,-0.47 -1.67,1.48 -1.47,2.6 -0.3,-0.81 -0.12,-1.27 -1.28,-0.9 -1.04,-1.44 -0.24,-1 -1.32,-1.46 0.22,-0.83 -0.28,-1.18 0.22,-2.17 0.67,-0.51 z",CG:"m 511.94,476.97 -1.05,-0.96 -0.85,0.47 -1.13,1.2 -2.3,-2.95 2.13,-1.54 -1.05,-1.85 0.96,-0.7 1.89,-0.34 0.22,-1.24 1.5,1.34 2.48,0.12 0.86,-1.32 0.35,-1.85 -0.31,-2.18 -1.32,-1.64 1.21,-3.23 -0.7,-0.55 -2.08,0.22 -0.79,-1.43 0.21,-1.22 3.53,0.11 2.27,0.73 2.23,0.66 0.2,-1.5 1.47,-2.6 1.67,-1.48 1.9,0.47 1.8,0.16 -0.16,1.68 -0.84,1.49 -0.55,1.74 -0.35,2.47 0.15,1.58 -0.46,0.97 -0.07,1.02 -0.32,0.89 -1.85,1.34 -1.28,1.43 -1.22,2.71 0.09,2.3 -0.71,0.89 -1.63,1.36 -1.65,1.76 -1.05,-0.5 -0.18,-0.79 -1.52,-0.03 -0.96,1.07 z",CH:"m 502.4,312.59 0.11,0.74 -0.43,1.01 1.27,0.74 1.43,0.11 -0.22,1.67 -1.23,0.69 -2.08,-0.51 -0.61,1.63 -1.33,0.13 -0.49,-0.64 -1.57,1.36 -1.35,0.19 -1.21,-0.86 -0.96,-1.77 -1.34,0.64 0.04,-1.84 2.05,-2.31 -0.09,-1.05 1.28,0.39 0.77,-0.71 2.38,0.03 0.58,-0.9 z",CI:"m 467.49,449.71 -1.27,0.03 -1.96,-0.55 -1.79,0.03 -3.33,0.49 -1.94,0.81 -2.78,1.02 -0.54,-0.07 0.21,-2.3 0.27,-0.35 -0.08,-1.11 -1.19,-1.17 -0.89,-0.19 -0.82,-0.77 0.61,-1.24 -0.28,-1.36 0.13,-0.82 0.45,0 0.16,-1.23 -0.22,-0.54 0.27,-0.39 1.04,-0.34 -0.69,-2.26 -0.65,-1.16 0.23,-0.97 0.56,-0.21 0.36,-0.26 0.78,0.42 2.16,0.03 0.52,-0.83 0.48,0.06 0.81,-0.32 0.44,1.21 0.65,-0.36 1.16,-0.42 1.26,0.62 0.49,0.93 1.26,0.6 0.98,-0.71 1.32,-0.11 1.92,0.73 0.74,4.01 -1.18,2.36 -0.73,3.17 1.21,2.41 z",CL:"m 283.06,636.98 0,10.57 3,0 1.69,0.13 -0.93,1.98 -2.4,1.53 -1.38,-0.16 -1.66,-0.4 -2.04,-1.48 -2.94,-0.71 -3.53,-2.71 -2.86,-2.57 -3.86,-5.25 2.31,0.97 3.94,3.13 3.72,1.7 1.45,-2.17 0.91,-3.2 2.58,-1.91 2,0.55 z m 1.16,-112.01 1.1,4.15 2.02,-0.41 0.34,0.76 -0.96,3.16 -3.05,1.51 0.09,5.14 -0.59,1 0.84,1.23 -1.98,1.95 -1.84,2.96 -1,2.9 0.27,3.11 -1.73,3.34 1.29,5.69 0.73,0.61 -0.01,3.09 -1.6,3.31 0.06,2.87 -2.12,2.26 0.01,3.22 0.85,3.46 -1.68,1.3 -0.75,3.22 -0.66,3.75 0.47,4.54 -1.13,0.77 0.65,4.4 1.27,1.46 -0.92,1.63 1.3,0.78 0.3,1.48 -1.22,0.75 0.3,2.33 -1.02,5.35 -1.49,3.52 0.33,2.11 -0.89,2.68 -2.15,1.88 0.25,4.6 0.99,1.6 1.87,-0.28 -0.05,3.33 1.16,2.63 6.78,0.61 2.6,0.71 -2.49,-0.03 -1.35,1.13 -2.53,1.67 -0.45,4.38 -1.19,0.11 -3.16,-1.54 -3.21,-3.25 0,0 -3.49,-2.63 -0.88,-2.87 0.79,-2.62 -1.41,-2.94 -0.36,-7.34 1.19,-4.03 2.96,-3.19 -4.26,-1.19 2.67,-3.57 0.95,-6.56 3.12,1.37 1.46,-7.97 -1.88,-1 -0.88,4.75 -1.77,-0.54 0.88,-5.42 0.96,-6.84 1.29,-2.48 -0.81,-3.5 -0.23,-3.98 1.18,-0.11 1.72,-5.6 1.94,-5.43 1.19,-4.97 -0.65,-4.91 0.84,-2.67 -0.34,-3.96 1.64,-3.87 0.51,-6.04 0.9,-6.37 0.88,-6.75 -0.21,-4.87 -0.58,-4.15 1.44,-0.75 0.75,-1.5 1.37,1.99 0.37,2.12 1.47,1.25 -0.88,2.87 1.51,3.34 z",CM:"m 512.17,457.32 -0.35,-0.15 -1.66,0.36 -1.71,-0.38 -1.33,0.19 -4.56,-0.07 0.41,-2.2 -1.1,-1.84 -1.28,-0.48 -0.57,-1.25 -0.72,-0.4 0.04,-0.77 0.72,-1.98 1.33,-2.7 0.81,-0.03 1.67,-1.64 1.07,-0.04 1.57,1.15 1.93,-0.95 0.26,-1.16 0.63,-1.14 0.43,-1.42 1.5,-1.16 0.57,-1.97 0.59,-0.63 0.4,-1.47 0.74,-1.81 2.36,-2.2 0.15,-0.95 0.31,-0.51 -1.11,-1.14 0.09,-0.9 0.79,-0.17 1.11,1.83 0.19,1.89 -0.1,1.89 1.52,2.57 -1.56,-0.03 -0.79,0.2 -1.28,-0.28 -0.61,1.33 1.65,1.65 1.22,0.48 0.4,1.17 0.88,1.93 -0.44,0.77 -1.41,2.84 -0.67,0.51 -0.22,2.17 0.28,1.18 -0.22,0.83 1.32,1.46 0.24,1 1.04,1.44 1.28,0.9 0.12,1.27 0.3,0.81 -0.2,1.5 -2.23,-0.66 -2.27,-0.73 z",CN:"m 784.88,410.66 -2.42,1.41 -2.3,-0.91 -0.08,-2.53 1.38,-1.34 3.06,-0.83 1.61,0.07 0.63,1.13 -1.23,1.3 -0.65,1.7 z m 48.56,-107.52 4.88,1.38 3.32,3.03 1.13,3.95 4.26,0 2.43,-1.65 4.63,-1.24 -1.47,3.76 -1.09,1.51 -0.96,4.46 -1.89,3.89 -3.4,-0.7 -2.41,1.4 0.74,3.36 -0.4,4.55 -1.43,0.1 0.02,1.93 -1.81,-2.24 -1.11,2.13 -4.33,1.62 0.44,1.97 -2.42,-0.14 -1.33,-1.17 -1.93,2.64 -3.09,1.98 -2.28,2.35 -3.92,1.06 -2.06,1.69 -3.02,0.98 1.49,-1.67 -0.59,-1.41 2.22,-2.45 -1.48,-1.93 -2.44,1.3 -3.17,2.54 -1.73,2.34 -2.75,0.17 -1.43,1.68 1.48,2.41 2.29,0.58 0.09,1.58 2.22,1.02 3.14,-2.51 2.49,1.37 1.81,0.09 0.46,1.84 -3.97,0.97 -1.31,1.87 -2.73,1.73 -1.44,2.39 3.02,1.86 1.1,3.31 1.71,3.05 1.9,2.53 -0.05,2.43 -1.76,0.89 0.67,1.73 1.65,1 -0.43,2.61 -0.71,2.52 -1.57,0.28 -2.05,3.41 -2.27,4.09 -2.6,3.68 -3.86,2.82 -3.9,2.55 -3.16,0.35 -1.71,1.34 -0.97,-0.98 -1.59,1.5 -3.92,1.5 -2.97,0.46 -0.96,3.15 -1.55,0.17 -0.74,-2.16 0.66,-1.16 -3.76,-0.96 -1.33,0.49 -2.82,-0.78 -1.33,-1.22 0.44,-1.74 -2.56,-0.55 -1.35,-1.14 -2.39,1.62 -2.73,0.35 -2.24,-0.02 -1.5,0.74 -1.45,0.44 0.42,3.43 -1.5,-0.08 -0.25,-0.7 -0.08,-1.24 -2.06,0.87 -1.21,-0.55 -2.08,-1.13 0.82,-2.51 -1.78,-0.59 -0.67,-2.8 -2.96,0.51 0.34,-3.63 2.66,-2.58 0.11,-2.57 -0.08,-2.4 -1.22,-0.75 -0.94,-1.86 -1.64,0.24 -3.02,-0.47 0.95,-1.33 -1.31,-1.99 -2,1.35 -2.36,-0.78 -3.23,2.03 -2.55,2.36 -2.26,0.39 -1.23,-0.85 -1.48,-0.08 -2,-0.73 -1.51,0.8 -1.85,2.34 -0.24,-2.48 -1.71,0.66 -3.27,-0.31 -3.17,-0.73 -2.28,-1.39 -2.18,-0.63 -0.94,-1.53 -1.58,-0.46 -2.83,-2.09 -2.25,-0.99 -1.16,0.77 -3.9,-2.26 -2.75,-2.07 -0.79,-3.63 2.01,0.44 0.09,-1.69 -1.12,-1.71 0.28,-2.74 -3.01,-3.99 -4.61,-1.39 -0.83,-2.66 -2.07,-1.63 -0.5,-1.01 -0.42,-2.01 0.1,-1.38 -1.7,-0.81 -0.92,0.36 -0.71,-3.32 0.8,-0.83 -0.39,-0.85 2.68,-1.73 1.94,-0.72 2.97,0.49 1.06,-2.35 3.6,-0.44 1,-1.48 4.42,-2.03 0.39,-0.85 -0.22,-2.17 1.92,-1 -2.52,-6.75 5.55,-1.58 1.44,-0.89 2.02,-7.26 5.56,1.35 1.56,-1.86 0.13,-4.19 2.33,-0.39 2.13,-2.83 1.1,-0.35 0.74,2.97 2.36,2.23 4,1.57 1.93,3.32 -1.08,4.73 1.01,1.73 3.33,0.68 3.78,0.55 3.39,2.45 1.73,0.43 1.28,3.57 1.65,2.27 3.09,-0.09 5.79,0.85 3.73,-0.53 2.77,0.57 4.15,2.29 3.39,0 1.24,1.16 3.26,-2.01 4.53,-1.31 4.2,-0.14 3.28,-1.34 2.01,-2.05 1.96,-1.3 -0.45,-1.28 -0.9,-1.5 1.47,-2.54 1.58,0.36 2.88,0.8 2.79,-2.1 4.28,-1.55 2.05,-2.66 1.97,-1.16 4.07,-0.54 2.21,0.46 0.31,-1.45 -2.54,-2.89 -2.25,-1.33 -2.16,1.54 -2.77,-0.65 -1.59,0.53 -0.72,-1.71 1.98,-4.23 1.37,-3.25 3.37,1.63 3.95,-2.74 -0.03,-1.93 2.53,-4.73 1.56,-1.45 -0.04,-2.52 -1.54,-1.1 2.32,-2.31 3.48,-0.84 3.72,-0.13 4.2,1.39 2.46,1.71 1.73,4.61 1.05,1.94 0.98,2.73 1.05,4.31 z", -CO:"m 264.17,464.06 -1.2,-0.66 -1.38,-0.92 -0.8,0.44 -2.38,-0.39 -0.68,-1.2 -0.52,0.05 -2.81,-1.59 -0.38,-0.87 1.05,-0.21 -0.12,-1.39 0.65,-1.01 1.39,-0.19 1.19,-1.75 1.07,-1.46 -1.04,-0.67 0.53,-1.62 -0.63,-2.56 0.6,-0.73 -0.44,-2.37 -1.14,-1.5 0.36,-1.36 0.91,0.2 0.53,-0.84 -0.65,-1.65 0.34,-0.42 1.44,0.09 2.11,-1.97 1.15,-0.3 0.03,-0.93 0.52,-2.39 1.61,-1.32 1.76,-0.05 0.22,-0.59 2.2,0.23 2.21,-1.43 1.09,-0.64 1.35,-1.37 1,0.17 0.73,0.75 -0.54,0.96 -1.8,0.48 -0.71,1.42 -1.09,0.81 -0.81,1.06 -0.35,2.01 -0.77,1.66 1.44,0.18 0.36,1.3 0.62,0.62 0.22,1.13 -0.33,1.04 0.1,0.59 0.69,0.23 0.67,0.98 3.6,-0.27 1.63,0.36 1.98,2.41 1.13,-0.3 2.02,0.15 1.6,-0.32 0.99,0.49 -0.51,1.5 -0.62,0.94 -0.22,2.01 0.56,1.85 0.8,0.83 0.09,0.63 -1.42,1.39 1.02,0.61 0.75,0.98 0.85,2.77 -0.53,0.35 -0.54,-1.65 -0.78,-0.88 -0.93,0.96 -5.46,-0.06 0.03,1.74 1.64,0.29 -0.09,1.07 -0.56,-0.29 -1.58,0.46 -0.01,2.02 1.24,1.02 0.44,1.59 -0.07,1.21 -1.26,7.65 -1.4,-1.49 -0.84,-0.06 1.81,-2.84 -2.15,-1.31 -1.68,0.24 -1.01,-0.48 -1.55,0.74 -2.09,-0.35 -1.65,-2.92 -1.3,-0.72 -0.89,-1.32 -1.86,-1.32 z",CR:"m 242.88,440.65 -1.52,-0.63 -0.57,-0.59 0.32,-0.49 -0.1,-0.62 -0.78,-0.68 -1.1,-0.55 -0.97,-0.36 -0.18,-0.83 -0.74,-0.51 0.18,0.83 -0.56,0.67 -0.64,-0.78 -0.9,-0.28 -0.38,-0.57 0.02,-0.86 0.37,-0.9 -0.79,-0.4 0.64,-0.54 0.42,-0.37 1.85,0.75 0.64,-0.37 0.89,0.24 0.47,0.58 0.82,0.19 0.67,-0.6 0.72,1.54 1.08,1.14 1.32,1.21 -1.09,0.25 0.02,1.13 0.58,0.42 -0.42,0.34 0.11,0.51 -0.23,0.57 z",CU:"m 244.83,397.19 2.43,0.22 2.2,0.03 2.63,1.03 1.12,1.11 2.62,-0.34 0.99,0.7 2.38,1.87 1.74,1.35 0.92,-0.04 1.68,0.61 -0.21,0.84 2.07,0.12 2.12,1.22 -0.33,0.69 -1.87,0.38 -1.89,0.15 -1.93,-0.24 -4.01,0.29 1.88,-1.66 -1.14,-0.77 -1.81,-0.2 -0.97,-0.86 -0.67,-1.7 -1.58,0.11 -2.62,-0.8 -0.84,-0.63 -3.65,-0.47 -0.98,-0.59 1.05,-0.75 -2.75,-0.15 -2.01,1.56 -1.17,0.04 -0.4,0.74 -1.38,0.33 -1.2,-0.29 1.48,-0.93 0.6,-1.09 1.27,-0.67 1.43,-0.59 2.13,-0.29 z",CY:"m 570.56,358.54 1.89,-1.46 -2.55,1.02 -2.02,-0.05 -0.4,0.83 -0.2,0.02 -1.33,0.12 0.65,1.37 1.37,0.44 2.88,-1.38 -0.09,-0.27 z",CZ:"m 523.06,308.11 -1.3,-0.8 -1.31,0.22 -2.18,-1.3 -0.99,0.32 -1.57,1.74 -2.09,-1.37 -1.58,-1.83 -1.43,-1.04 -0.3,-1.82 -0.49,-1.3 2.04,-0.95 1.04,-1.1 2.01,-0.86 0.71,-0.84 0.74,0.51 1.25,-0.47 1.33,1.43 2.09,0.39 -0.17,1.21 1.52,0.9 0.42,-1.13 1.92,0.49 0.27,1.37 2.08,0.26 1.29,2.13 -0.83,0.01 -0.44,0.77 -0.64,0.19 -0.18,0.97 -0.54,0.21 -0.08,0.39 -0.95,0.44 -1.25,-0.07 z",DE:"m 503.32,279.17 0.05,1.88 2.84,1.12 -0.03,1.7 2.85,-0.9 1.57,-1.31 3.17,1.89 1.32,1.51 0.66,2.39 -0.78,1.25 1.01,1.65 0.7,2.45 -0.22,1.56 1.15,2.86 -1.25,0.47 -0.74,-0.51 -0.71,0.84 -2.01,0.86 -1.04,1.1 -2.04,0.95 0.49,1.3 0.3,1.82 1.43,1.04 1.58,1.83 -0.98,1.95 -1.01,0.54 0.4,2.72 -0.27,0.7 -0.87,-0.85 -1.34,-0.12 -2.01,0.74 -2.47,-0.18 -0.4,1.09 -1.42,-1.14 -0.85,0.22 -3,-1.26 -0.58,0.9 -2.38,-0.03 0.35,-2.98 1.42,-2.9 -4.04,-0.78 -1.32,-1.13 0.16,-1.89 -0.56,-0.98 0.32,-2.97 -0.48,-4.69 1.69,0 0.71,-1.71 0.7,-4.23 -0.53,-1.58 0.55,-1 2.34,-0.26 0.52,1.04 1.91,-2.33 -0.64,-1.79 -0.13,-2.75 2.12,0.64 z",DJ:"m 596.3,427.97 0.66,0.88 -0.09,1.19 -1.6,0.68 1.21,0.77 -1.04,1.52 -0.62,-0.5 -0.67,0.2 -1.57,-0.05 -0.05,-0.86 -0.21,-0.79 0.94,-1.33 0.99,-1.26 1.2,0.25 z",DK:"m 511.08,276.09 -1.68,3.97 -2.93,-2.76 -0.39,-2.05 4.11,-1.66 0.89,2.5 z m -4.98,-4.25 -0.69,1.9 -0.83,-0.55 -2.02,3.59 0.76,2.39 -1.79,0.74 -2.12,-0.64 -1.14,-2.72 -0.08,-5.12 0.47,-1.38 0.8,-1.54 2.47,-0.32 0.98,-1.43 2.26,-1.47 -0.1,2.68 -0.83,1.68 0.34,1.43 1.52,0.76 z",DO:"m 274.43,407.6 0.35,-0.51 2.19,0.02 1.66,0.76 0.74,-0.08 0.51,1.05 1.53,-0.06 -0.09,0.88 1.25,0.11 1.38,1.08 -1.04,1.2 -1.34,-0.64 -1.28,0.12 -0.92,-0.14 -0.51,0.54 -1.08,0.18 -0.42,-0.72 -0.93,0.43 -1.12,2 -0.72,-0.46 -0.15,-0.84 0.06,-0.8 -0.72,-0.88 0.68,-0.5 0.22,-1.13 z",DZ:"m 509.15,396.33 -9.61,5.75 -8.12,5.85 -3.95,1.32 -3.11,0.29 -0.03,-1.88 -1.3,-0.48 -1.75,-0.85 -0.66,-1.39 -9.46,-6.55 -9.46,-6.65 -10.55,-7.53 0.06,-0.61 0,-0.21 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 2.69,-1.87 3.04,-0.6 1.77,-1.43 2.7,-1.05 4.75,-0.62 4.64,-0.29 1.41,0.52 2.64,-1.37 3,-0.03 1.14,0.81 1.91,-0.21 -0.57,1.79 0.45,3.28 -0.66,2.82 -1.73,1.88 0.25,2.53 2.29,1.98 0.03,0.81 1.72,1.33 1.2,5.86 0.91,2.84 0.15,1.48 -0.49,2.59 0.2,1.44 -0.36,1.72 0.25,1.97 -1.12,1.29 1.66,2.26 0.11,1.32 0.99,1.71 1.31,-0.56 2.22,1.42 z",EC:"m 250.35,473.12 1.49,-2.08 -0.61,-1.22 -1.07,1.3 -1.68,-1.23 0.57,-0.78 -0.47,-2.53 0.98,-0.42 0.52,-1.73 1.06,-1.8 -0.2,-1.13 1.54,-0.6 1.92,-1.11 2.81,1.59 0.52,-0.05 0.68,1.2 2.38,0.39 0.8,-0.44 1.38,0.92 1.2,0.66 0.39,2.11 -0.87,1.81 -3.06,2.92 -3.37,1.1 -1.72,2.43 -0.53,1.88 -1.59,1.15 -1.17,-1.41 -1.14,-0.3 -1.16,0.22 -0.07,-1.02 0.8,-0.66 z",EE:"m 543.67,264.96 0.33,-3.12 -1.03,0.67 -1.78,-1.9 -0.25,-3.11 3.55,-1.53 3.53,-0.81 3.04,0.92 2.9,-0.17 0.42,0.96 -1.99,3.14 0.83,4.96 -1.2,1.66 -2.32,-0.01 -2.41,-1.94 -1.23,-0.65 z",EG:"m 573.42,377.53 -0.79,1.29 -0.6,2.4 -0.76,1.64 -0.66,0.56 -0.93,-1.02 -1.27,-1.42 -2,-4.57 -0.28,0.29 1.16,3.37 1.72,3.18 2.12,4.88 1.03,1.68 0.9,1.74 2.52,3.4 -0.56,0.53 0.09,1.97 3.27,2.71 0.49,0.62 -11.12,0 -10.88,0 -11.27,0 0,-11.23 0,-11.18 -0.84,-2.58 0.72,-2 -0.43,-1.39 1.01,-1.57 3.73,-0.05 2.7,0.86 2.78,0.97 1.3,0.5 2.16,-1.03 1.15,-0.93 2.48,-0.27 1.99,0.41 0.77,1.62 0.65,-1.07 2.24,0.77 2.19,0.19 1.38,-0.82 z",EH:"m 438.82,383.31 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 -0.11,0.09 -0.05,0.04 -1.78,3.2 -1.86,1.14 -1.02,1.91 -0.06,1.65 -0.75,1.79 -0.94,0.49 -1.56,1.94 -0.96,2.15 0.18,1.02 -0.92,1.57 -1.08,0.82 -0.13,1.39 -0.12,1.27 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 0.06,-0.61 0,-0.21 z",ER:"m 594.25,428.42 -0.96,-0.93 -1.15,-1.67 -1.24,-0.92 -0.73,-1 -2.44,-1.15 -1.92,-0.03 -0.68,-0.61 -1.64,0.68 -1.7,-1.31 -0.88,2.15 -3.26,-0.6 -0.3,-1.15 1.21,-4.25 0.27,-1.93 0.88,-0.9 2.07,-0.48 1.42,-1.67 1.63,3.38 0.77,2.67 1.54,1.41 3.82,2.72 1.56,1.64 1.52,1.66 0.88,0.98 1.38,0.86 -0.85,0.7 z",ES:"m 450.17,334.81 0.14,-2.68 -1.14,-1.66 3.96,-2.77 3.43,0.7 3.77,-0.03 2.98,0.66 2.33,-0.2 4.53,0.12 1.12,1.49 5.16,1.73 1.02,-0.82 3.16,1.72 3.25,-0.49 0.15,2.19 -2.66,2.49 -3.59,0.78 -0.25,1.24 -1.73,2.03 -1.08,2.96 1.09,2.05 -1.62,1.6 -0.6,2.3 -2.12,0.7 -1.99,2.69 -3.55,0.05 -2.68,-0.06 -1.75,1.22 -1.07,1.31 -1.38,-0.29 -1.03,-1.17 -0.8,-2 -2.62,-0.54 -0.23,-1.16 1.04,-1.32 0.38,-0.96 -0.96,-1.06 0.77,-2.35 -1.12,-2.17 1.21,-0.3 0.11,-1.72 0.46,-0.53 0.03,-2.88 1.3,-1 -0.78,-1.88 -1.64,-0.13 -0.48,0.47 -1.65,0.01 -0.71,-1.84 -1.14,0.55 z",ET:"m 581.79,421.48 1.7,1.31 1.64,-0.68 0.68,0.61 1.92,0.03 2.44,1.15 0.73,1 1.24,0.92 1.15,1.67 0.96,0.93 -0.99,1.26 -0.94,1.33 0.21,0.79 0.05,0.86 1.57,0.05 0.67,-0.2 0.62,0.5 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -1.92,0 -1.13,-0.94 -2.56,1.17 -0.83,1.16 -1.87,-0.22 -0.62,-0.32 -0.66,0.07 -0.88,-0.02 -3.55,-2.38 -1.95,0 -0.96,-0.91 0,-1.57 -1.46,-0.47 -1.65,-3.05 -1.28,-0.65 -0.5,-1.12 -1.42,-1.37 -1.72,-0.2 0.96,-1.61 1.48,-0.07 0.42,-0.86 -0.03,-2.53 0.83,-2.96 1.32,-0.8 0.29,-1.16 1.2,-2.17 1.69,-1.42 1.14,-2.81 0.45,-2.47 3.26,0.6 z",FK:"m 303.91,633.38 3.36,-2.69 2.39,1.12 1.68,-1.79 2.24,2.01 -0.84,1.58 -3.79,1.36 -1.26,-1.59 -2.38,2.05 z",FI:"m 555.67,193.35 -0.41,5.4 4.3,4.99 -2.59,5.48 3.26,7.96 -1.89,5.76 2.53,4.86 -1.15,4.14 4.15,4.26 -1.06,3.1 -2.6,3.45 -6,7.41 -5.09,0.45 -4.93,2.07 -4.56,1.18 -1.63,-3.07 -2.71,-1.87 0.62,-5.72 -1.36,-5.41 1.34,-3.58 2.54,-3.94 6.41,-7.02 1.88,-1.39 -0.3,-2.84 -3.9,-3.22 -0.94,-2.7 -0.08,-11.12 -4.37,-5.15 -3.74,-3.81 1.68,-2.08 3.12,4.15 3.66,-0.39 3.01,1.87 2.67,-3.44 1.38,-5.85 4.35,-2.78 3.6,3.26 z",FJ:"m 980.78,508.86 -0.35,1.4 -0.23,0.16 -1.78,0.72 -1.79,0.61 -0.36,-1.09 1.4,-0.6 0.89,-0.16 1.64,-0.91 0.58,-0.13 z m -5.84,4.31 -1.27,-0.36 -1.08,1 0.27,1.29 1.55,0.36 1.74,-0.4 0.46,-1.53 -0.96,-0.84 -0.71,0.48 z",FR:"m 502.31,333.79 -0.93,2.89 -1.27,-0.76 -0.65,-2.53 0.57,-1.41 1.81,-1.45 0.47,3.26 z m -16.75,-33.35 1.96,2.06 1.44,-0.34 2.45,1.97 0.63,0.37 0.81,-0.09 1.32,1.12 4.04,0.79 -1.42,2.9 -0.36,2.98 -0.77,0.71 -1.28,-0.38 0.09,1.05 -2.05,2.3 -0.04,1.84 1.34,-0.63 0.96,1.77 -0.12,1.13 0.83,1.5 -0.97,1.21 0.72,3.04 1.52,0.49 -0.32,1.68 -2.54,2.17 -5.53,-1.04 -4.08,1.24 -0.32,2.29 -3.25,0.49 -3.15,-1.72 -1.02,0.82 -5.16,-1.73 -1.12,-1.49 1.45,-2.32 0.53,-7.88 -2.89,-4.26 -2.07,-2.09 -4.29,-1.6 -0.28,-3.07 3.64,-0.92 4.71,1.09 -0.89,-4.84 2.65,1.85 6.53,-3.37 0.84,-3.61 2.45,-0.9 0.41,1.56 1.3,0.07 1.3,1.79 z",GA:"m 506.61,474.73 -2.88,-2.82 -1.86,-2.3 -1.7,-2.88 0.09,-0.92 0.61,-0.9 0.68,-2.02 0.57,-2.07 0.95,-0.16 4.07,0.03 -0.02,-3.35 1.33,-0.19 1.71,0.38 1.66,-0.36 0.35,0.15 -0.21,1.22 0.79,1.43 2.08,-0.22 0.7,0.55 -1.21,3.23 1.32,1.64 0.31,2.18 -0.35,1.85 -0.86,1.32 -2.48,-0.12 -1.5,-1.34 -0.22,1.24 -1.89,0.34 -0.96,0.7 1.05,1.85 z",GB:"m 459.63,281.25 -1.5,3.29 -2.12,-0.98 -1.73,0.07 0.58,-2.57 -0.58,-2.6 2.35,-0.2 3,2.99 z m 7.45,-20.76 -3,5.73 2.86,-0.72 3.07,0.03 -0.73,4.22 -2.52,4.53 2.9,0.32 0.22,0.52 2.5,5.79 1.92,0.77 1.73,5.41 0.8,1.84 3.4,0.88 -0.34,2.93 -1.43,1.33 1.12,2.33 -2.52,2.33 -3.75,-0.04 -4.77,1.21 -1.31,-0.87 -1.85,2.06 -2.59,-0.5 -1.97,1.67 -1.49,-0.87 4.11,-4.64 2.51,-0.97 -0.02,0 -4.38,-0.75 -0.79,-1.8 2.93,-1.41 -1.54,-2.48 0.53,-3.06 4.17,0.42 0,0 0.41,-2.74 -1.88,-2.95 -0.04,-0.07 -3.4,-0.85 -0.67,-1.32 1.02,-2.2 -0.92,-1.37 -1.51,2.34 -0.16,-4.8 -1.42,-2.59 1.02,-5.36 2.18,-4.31 2.24,0.42 3.36,-0.41 z",GE:"m 592.01,336.1 0.42,-1.6 -0.7,-2.57 -1.62,-1.41 -1.55,-0.44 -1.03,-1.17 0.34,-0.46 2.37,0.66 4.13,0.62 3.82,1.83 0.49,0.71 1.7,-0.6 2.62,0.8 0.85,1.55 1.77,0.87 -0.73,0.51 1.38,2.02 -0.38,0.43 -1.51,-0.22 -2.09,-1.06 -0.69,0.6 -3.9,0.58 -2.7,-1.82 z",GF:"m 328.14,456.66 -1.07,1.06 -1.34,0.2 -0.38,-0.78 -0.63,-0.12 -0.87,0.76 -1.22,-0.57 0.71,-1.19 0.24,-1.27 0.48,-1.2 -1.09,-1.65 -0.22,-1.91 1.46,-2.41 0.95,0.31 2.06,0.66 2.97,2.36 0.46,1.14 -1.66,2.55 -0.85,2.06 z",GH:"m 478.48,447.09 -4.4,1.64 -1.56,0.96 -2.53,0.81 -2.5,-0.79 0.13,-1.11 -1.21,-2.41 0.73,-3.17 1.18,-2.36 -0.74,-4.01 -0.39,-2.13 0.07,-1.61 4.87,-0.13 1.24,0.21 0.9,-0.46 1.3,0.22 -0.21,0.89 1.17,1.46 0,2.05 0.27,2.22 0.7,1.03 -0.62,2.53 0.22,1.4 0.75,1.78 z",GL:"m 344.38,24.16 9.42,-13.61 9.84,1.07 3.57,-8.95 9.91,-2.42 22.4,3.15 17.54,18.59 -5.18,8.3 -10.73,0.93 -15.09,2.03 1.41,3.64 9.93,-2.24 8.44,6.91 5.45,-6.12 2.33,7.15 -3.08,10.97 7.14,-6.93 13.61,-7.55 8.41,3.81 1.57,8.12 -11.43,12.66 -1.58,3.9 -8.96,2.86 6.49,0.79 -3.28,11.51 -2.26,9.59 0.09,15.26 3.37,8.34 -4.38,0.51 -4.61,3.88 5.17,6.3 0.66,9.62 -3,1.02 3.63,9.15 -6.22,0.75 3.25,4.14 -0.92,3.51 -3.95,1.51 -3.91,0.03 3.51,6.48 0.04,4.13 -5.55,-3.83 -1.44,2.49 3.78,2.29 3.68,5.48 1.06,6.95 -5,1.62 -2.16,-3.26 -3.47,-4.98 0.96,5.87 -3.25,4.41 7.38,0.35 3.87,0.45 -7.52,7.03 -7.62,6.13 -8.2,2.61 -3.09,0.04 -2.9,2.87 -3.9,7.63 -6.03,4.89 -1.94,0.29 -3.74,1.67 -4.02,1.59 -2.41,4.12 -0.04,4.56 -1.41,4.16 -4.58,4.95 1.13,4.71 -1.26,4.85 -1.43,5.56 -3.95,0.34 -4.14,-4.63 -5.61,-0.03 -2.72,-3.18 -1.87,-5.8 -4.86,-7.68 -1.42,-4.15 -0.38,-5.89 -3.89,-6.27 1.01,-5.17 -1.87,-2.53 2.77,-8.65 4.22,-2.85 1.11,-3.26 0.59,-6.26 -3.21,2.86 -1.52,1.19 -2.52,1.14 -3.44,-2.61 -0.19,-5.55 1.1,-4.48 2.6,-0.12 5.72,2.25 -4.82,-5.43 -2.51,-3.01 -2.79,1.24 -2.34,-2.19 3.13,-8.5 -1.7,-3.53 -2.23,-6.74 -3.37,-10.91 -3.57,-4.17 0.03,-4.63 -7.53,-6.69 -5.95,-0.85 -7.49,0.47 -6.84,0.86 -3.26,-3.75 -4.87,-7.66 7.36,-3.97 5.65,-0.68 -12,-3.36 -6.32,-5.44 0.39,-5.34 10.61,-6.87 10.27,-7.16 1.08,-5.64 -7.56,-5.76 2.44,-6.64 9.71,-12.33 4.08,-1.98 -1.17,-8.57 6.64,-5.24 8.62,-3.21 8.62,-0.18 3.06,6.3 7.44,-11.32 6.69,7.78 3.93,1.59 5.83,6.41 L 344,33.25 z",GM:"m 428.28,426.68 0.36,-1.27 3.05,-0.09 0.64,-0.67 0.89,-0.05 1.1,0.71 0.87,0.01 0.93,-0.48 0.56,0.82 -1.21,0.65 -1.22,-0.05 -1.2,-0.61 -1.04,0.66 -0.5,0.03 -0.68,0.4 z",GN:"m 451.84,442.16 -0.79,-0.07 -0.57,1.13 -0.8,-0.01 -0.54,-0.6 0.18,-1.13 -1.17,-1.72 -0.73,0.31 -0.6,0.07 -0.77,0.16 0.03,-1.03 -0.45,-0.74 0.09,-0.82 -0.61,-1.19 -0.78,-1.01 -2.24,0 -0.65,0.53 -0.78,0.06 -0.48,0.61 -0.32,0.79 -1.5,1.24 -1.23,-1.67 -1.09,-1.11 -0.72,-0.36 -0.7,-0.57 -0.31,-1.25 -0.41,-0.62 -0.82,-0.47 1.25,-1.38 0.85,0.05 0.73,-0.48 0.62,0 0.44,-0.38 -0.24,-0.94 0.31,-0.3 0.05,-0.97 1.35,0.03 2.02,0.7 0.62,-0.07 0.21,-0.31 1.52,0.22 0.41,-0.16 0.16,1.05 0.45,-0.01 0.73,-0.38 0.46,0.1 0.78,0.72 1.2,0.23 0.77,-0.62 0.91,-0.38 0.67,-0.4 0.56,0.08 0.62,0.62 0.34,0.79 1.15,1.19 -0.58,0.73 -0.11,0.92 0.6,-0.28 0.35,0.34 -0.15,0.84 0.86,0.82 -0.56,0.21 -0.23,0.97 0.65,1.16 0.69,2.26 -1.04,0.34 -0.27,0.39 0.22,0.54 -0.16,1.23 z",GQ:"m 502.12,460.82 -0.53,-0.42 0.97,-3.13 4.56,0.07 0.02,3.35 -4.07,-0.03 z",GR:"m 541.95,356.96 1.53,1.16 2.18,-0.19 2.09,0.24 -0.07,0.6 1.53,-0.41 -0.35,1.01 -4.04,0.29 0.03,-0.56 -3.42,-0.67 0.52,-1.47 z m 8.15,-20.96 -0.87,2.33 -0.67,0.41 -1.71,-0.1 -1.46,-0.35 -3.4,0.96 1.94,2.06 -1.42,0.59 -1.56,0 -1.48,-1.88 -0.53,0.8 0.63,2.18 1.4,1.7 -1.06,0.79 1.56,1.65 1.39,1.03 0.04,2 -1.36,-1.15 -1.24,0.21 0.83,1.8 -0.92,0.19 -1,-0.69 1.2,3.95 -0.58,0 -0.45,-1.25 -0.57,-0.02 -0.26,1.32 -0.45,-0.3 0.1,-0.74 -0.56,-1.04 H 537 l 0.12,0.84 -0.25,0.27 -0.62,-0.54 -0.38,-1.01 0.52,-0.57 -0.36,-0.74 -0.41,-0.38 -0.42,-0.09 -0.49,-0.94 0.58,-0.52 0.36,-0.48 0.56,0.1 0.25,-0.41 0.59,-0.16 0.68,0.46 0.55,0.17 0.39,-0.62 -0.94,-0.08 -0.56,-0.19 -1.25,0.28 -1.22,0.05 -1.09,-1.64 -0.18,-0.25 0.17,-0.64 -1.42,-1.15 -0.19,-1.03 1.3,-1.76 0.17,-1.19 0.91,-0.53 0.06,-0.97 1.83,-0.33 1.07,-0.81 1.52,0.07 0.46,-0.65 0.53,-0.12 2.07,0.11 2.25,-1.02 1.98,1.3 2.55,-0.35 0.03,-1.86 1.38,0.93 z",GT:"m 222.89,425 -1.44,-0.5 -1.75,-0.05 -1.28,-0.57 -1.51,-1.18 0.07,-0.84 0.32,-0.68 -0.39,-0.54 1.35,-2.36 3.59,-0.01 0.08,-0.98 -0.46,-0.18 -0.31,-0.63 -1.04,-0.67 -1.04,-0.98 1.27,0 0,-1.65 2.62,0 2.59,0.03 -0.02,2.31 -0.22,3.28 0.83,0 0.92,0.53 0.24,-0.44 0.82,0.37 -1.27,1.11 -1.33,0.81 -0.2,0.55 0.22,0.56 -0.58,0.74 -0.66,0.17 0.15,0.34 -0.52,0.32 -0.96,0.72 z",GW:"m 433.08,432.69 -1.5,-1.19 -1.18,-0.18 -0.64,-0.81 0.01,-0.43 -0.85,-0.6 -0.18,-0.61 1.49,-0.47 0.93,0.09 0.75,-0.32 5.18,0.12 -0.05,0.97 -0.31,0.3 0.24,0.94 -0.44,0.38 -0.62,0 -0.73,0.48 -0.85,-0.05 z",GY:"m 307.95,440.25 1.84,1.03 1.74,1.83 0.07,1.45 1.06,0.07 1.5,1.36 1.11,0.98 -0.45,2.52 -1.7,0.73 0.15,0.65 -0.52,1.45 1.25,2.02 0.89,0.01 0.37,1.57 1.71,2.42 -0.68,0.1 -1.55,-0.23 -0.91,0.74 -1.27,0.49 -0.88,0.12 -0.31,0.54 -1.38,-0.14 -1.73,-1.3 -0.2,-1.29 -0.72,-1.41 0.45,-2.38 0.78,-0.98 -0.65,-1.3 -0.96,-0.42 0.37,-1.23 -0.66,-0.64 -1.46,0.12 -1.89,-2.12 0.76,-0.77 -0.06,-1.3 1.73,-0.45 0.69,-0.52 -0.96,-1.04 0.25,-1.03 z",HN:"m 230.68,427.15 -0.48,-0.89 -0.86,-0.25 0.2,-1.15 -0.38,-0.31 -0.58,-0.2 -1.23,0.34 -0.1,-0.39 -0.85,-0.46 -0.6,-0.57 -0.83,-0.24 0.58,-0.74 -0.22,-0.56 0.2,-0.55 1.33,-0.81 1.27,-1.11 0.29,0.12 0.62,-0.51 0.8,-0.04 0.26,0.23 0.44,-0.14 1.3,0.26 1.3,-0.08 0.9,-0.32 0.33,-0.32 0.89,0.15 0.67,0.2 0.73,-0.07 0.56,-0.25 1.28,0.4 0.45,0.06 0.85,0.54 0.81,0.65 1.02,0.44 0.74,0.8 -0.96,-0.06 -0.39,0.39 -0.97,0.38 -0.71,0 -0.62,0.37 -0.56,-0.13 -0.48,-0.44 -0.29,0.08 -0.36,0.69 -0.27,-0.03 -0.05,0.6 -0.98,0.79 -0.51,0.34 -0.29,0.36 -0.83,-0.58 -0.6,0.76 -0.59,-0.02 -0.66,0.07 0.06,1.41 -0.41,0.02 -0.35,0.66 z",HR:"m 528.3,319.18 0.68,1.55 0.89,1.14 -1.08,1.49 -1.27,-0.88 -1.94,0.06 -2.41,-0.66 -1.31,0.09 -0.6,0.82 -1.01,-0.91 -0.59,1.64 1.38,1.83 0.6,1.21 1.29,1.45 1.07,0.85 1.06,1.61 2.48,1.44 -0.31,0.64 -2.63,-1.4 -1.63,-1.38 -2.56,-1.14 -2.36,-2.85 0.57,-0.3 -1.28,-1.64 -0.06,-1.34 -1.8,-0.62 -0.86,1.71 -0.83,-1.33 0.07,-1.38 0.1,-0.06 1.95,0.14 0.52,-0.68 0.95,0.65 1.1,0.08 -0.01,-1.12 0.97,-0.41 0.28,-1.62 2.23,-1.08 0.89,0.5 2.1,1.73 2.31,0.77 z",HT:"m 270.29,407 1.71,0.13 2.43,0.47 0.25,1.61 -0.22,1.13 -0.68,0.5 0.72,0.88 -0.06,0.8 -1.86,-0.5 -1.32,0.2 -1.71,-0.21 -1.31,0.55 -1.51,-0.92 0.25,-0.95 2.58,0.41 2.12,0.24 1.01,-0.66 -1.28,-1.27 0.02,-1.13 -1.77,-0.46 z",HU:"m 520.93,315.36 0.93,-2.65 -0.54,-0.89 1.58,-0.01 0.21,-1.71 1.43,1.07 1.03,0.46 2.36,-0.51 0.22,-0.84 1.12,-0.13 1.36,-0.65 0.3,0.27 1.32,-0.52 0.66,-1 0.92,-0.25 3,1.28 0.6,-0.43 1.55,1.14 0.2,1.12 -1.71,0.87 -1.33,2.8 -1.69,2.76 -2.25,0.76 -1.75,-0.17 -2.15,1.05 -1.05,0.6 -2.31,-0.77 -2.1,-1.73 -0.89,-0.5 -0.55,-1.37 z",ID:"m 813.97,492.31 -1.18,0.05 -3.72,-1.98 2.61,-0.56 1.47,0.86 0.98,0.86 -0.16,0.77 z m 10.43,-0.28 -2.4,0.62 -0.34,-0.34 0.25,-0.96 1.21,-1.72 2.77,-1.12 0.28,0.56 0.05,0.86 -1.82,2.1 z m -18.32,-5.77 1.01,0.75 1.73,-0.23 0.7,1.2 -3.24,0.57 -1.94,0.38 -1.51,-0.02 0.96,-1.62 1.54,-0.02 0.75,-1.01 z m 14.03,-0.01 -0.41,1.56 -4.21,0.8 -3.73,-0.35 -0.01,-1.03 2.23,-0.59 1.76,0.84 1.87,-0.21 2.5,-1.02 z m -40.04,-3.69 5.37,0.28 0.62,-1.16 5.2,1.35 1.02,1.82 4.21,0.51 3.44,1.67 -3.2,1.07 -3.08,-1.13 -2.54,0.08 -2.91,-0.21 -2.62,-0.51 -3.25,-1.07 -2.06,-0.28 -1.17,0.35 -5.11,-1.16 -0.49,-1.21 -2.57,-0.21 1.92,-2.68 3.4,0.17 2.26,1.09 1.16,0.21 0.4,1.02 z m 73.18,-1.58 -1.44,1.91 -0.27,-2.11 0.5,-1.01 0.59,-0.95 0.64,0.82 -0.02,1.34 z m -20.96,-7.71 -1.05,0.93 -1.94,-0.51 -0.55,-1.2 2.84,-0.13 0.7,0.91 z m 9.04,-1.01 1.02,2.13 -2.37,-1.15 -2.34,-0.23 -1.58,0.18 -1.94,-0.1 0.67,-1.53 3.46,-0.12 3.08,0.82 z m 10.29,-5.42 0.78,4.51 2.9,1.67 2.34,-2.96 3.22,-1.68 2.49,0 2.4,0.97 2.08,1 3.01,0.53 0.05,9.1 0.05,9.16 -2.5,-2.31 -2.85,-0.57 -0.69,0.8 -3.55,0.09 1.19,-2.29 1.77,-0.78 -0.73,-3.05 -1.35,-2.35 -5.44,-2.37 -2.31,-0.23 -4.21,-2.58 -0.83,1.36 -1.08,0.25 -0.64,-1.02 -0.01,-1.21 -2.14,-1.37 3.02,-1 2,0.05 -0.24,-0.74 -4.1,-0.01 -1.11,-1.66 -2.5,-0.51 -1.19,-1.38 3.78,-0.67 1.44,-0.91 4.5,1.14 0.45,1.02 z m -24.96,-7.16 -2.25,2.76 -2.11,0.54 -2.7,-0.54 -4.67,0.14 -2.45,0.4 -0.4,2.11 2.51,2.48 1.51,-1.26 5.23,-0.95 -0.23,1.28 -1.22,-0.4 -1.22,1.63 -2.47,1.08 2.65,3.57 -0.51,0.96 2.52,3.22 -0.02,1.84 -1.5,0.82 -1.1,-0.98 1.36,-2.29 -2.75,1.08 -0.7,-0.77 0.36,-1.08 -2.02,-1.64 0.21,-2.72 -1.87,0.85 0.24,3.25 0.11,4 -1.78,0.41 -1.2,-0.82 0.8,-2.57 -0.43,-2.69 -1.18,-0.02 -0.87,-1.91 1.16,-1.83 0.4,-2.21 1.41,-4.2 0.59,-1.15 2.38,-2.07 2.19,0.82 3.54,0.39 3.22,-0.12 2.77,-2.02 0.49,0.61 z m 9.67,0.8 -0.15,2.43 -1.45,-0.27 -0.43,1.69 1.16,1.47 -0.79,0.33 -1.13,-1.76 -0.83,-3.56 0.56,-2.23 0.93,-1.01 0.2,1.52 1.66,0.24 0.27,1.15 z m -30.32,-1.94 3.14,2.58 -3.32,0.33 -0.94,1.9 0.12,2.52 -2.7,1.91 -0.06,2.77 -1.08,4.27 -0.41,-0.99 -3.19,1.26 -1.11,-1.71 -2,-0.16 -1.4,-0.89 -3.33,1 -1.02,-1.35 -1.84,0.15 -2.31,-0.32 -0.43,-3.74 -1.4,-0.77 -1.35,-2.38 -0.39,-2.44 0.33,-2.58 1.67,-1.85 0.47,1.86 1.92,1.57 1.81,-0.57 1.79,0.2 1.63,-1.41 1.34,-0.24 2.65,0.78 2.29,-0.59 1.44,-3.88 1.08,-0.97 0.97,-3.17 3.22,0 2.43,0.47 -1.59,2.52 2.06,2.64 -0.49,1.28 z m -33.81,21.42 -3.1,0.06 -2.36,-2.34 -3.6,-2.28 -1.2,-1.69 -2.12,-2.27 -1.39,-2.09 -2.13,-3.9 -2.46,-2.32 -0.82,-2.39 -1.03,-2.17 -2.53,-1.75 -1.47,-2.39 -2.11,-1.56 -2.92,-3.08 -0.25,-1.42 1.81,0.11 4.34,0.54 2.48,2.73 2.17,1.89 1.55,1.16 2.66,3 2.85,0.04 2.36,1.91 1.62,2.33 2.13,1.27 -1.12,2.27 1.61,0.97 1.01,0.07 0.48,1.94 0.98,1.56 2.06,0.25 1.36,1.76 -0.7,3.47 -0.16,4.32 z",IE:"m 458.13,284.54 0.46,3.36 -2.12,4.12 -4.97,2.68 -3.97,-0.68 2.27,-4.78 -1.46,-4.77 3.81,-3.75 2.12,-2.27 0.58,2.6 -0.58,2.57 1.74,-0.06 z",IL:"m 575.66,367.07 -0.49,1.05 -1.02,-0.46 -0.58,2.2 0.7,0.36 -0.71,0.46 -0.13,0.86 1.32,-0.45 0.07,1.27 -1.4,5.17 -1.84,-5.55 0.81,-1.08 -0.19,-0.19 0.74,-1.53 0.57,-2.5 0.4,-0.84 0.08,-0.03 0.94,0 0.26,-0.58 0.75,-0.05 0.04,1.37 -0.38,0.5 z",IN:"m 693.75,357.69 3.01,3.99 -0.28,2.74 1.11,1.71 -0.09,1.69 -2.01,-0.44 0.79,3.63 2.75,2.06 3.9,2.27 -1.78,1.46 -1.09,2.99 2.72,1.2 2.64,1.55 3.66,1.77 3.84,0.41 1.62,1.59 2.16,0.29 3.38,0.73 2.33,-0.05 0.32,-1.24 -0.37,-1.99 0.22,-1.35 1.71,-0.67 0.24,2.48 0.05,0.63 2.55,1.19 1.77,-0.49 2.36,0.21 2.29,-0.09 0.2,-1.93 -1.14,-1 2.26,-0.4 2.55,-2.35 3.23,-2.03 2.35,0.78 2,-1.34 1.32,1.98 -0.95,1.34 3.02,0.47 0.22,1.2 -0.99,0.58 0.23,1.93 -2,-0.57 -3.63,2.16 0.08,1.78 -1.54,2.6 -0.15,1.5 -1.25,2.52 -2.19,-0.7 -0.11,3.15 -0.63,1.03 0.3,1.28 -1.39,0.72 -1.47,-4.8 -0.78,0.01 -0.46,1.94 -1.53,-1.58 0.86,-1.73 1.26,-0.18 1.29,-2.59 -1.61,-0.53 -2.61,0.05 -2.66,-0.42 -0.25,-2.15 -1.34,-0.16 -2.22,-1.34 -0.99,2.11 2.02,1.63 -1.75,1.15 -0.62,1.12 1.72,0.82 -0.47,1.84 0.97,2.28 0.44,2.48 -0.41,1.1 -1.9,-0.04 -3.46,0.62 0.16,2.25 -1.5,1.76 -4.03,2 -3.14,3.46 -2.11,1.85 -2.79,1.91 0,1.34 -1.4,0.72 -2.53,1.03 -1.31,0.16 -0.84,2.2 0.58,3.75 0.15,2.37 -1.18,2.71 -0.02,4.83 -1.45,0.14 -1.27,2.15 0.85,0.93 -2.56,0.8 -0.94,1.92 -1.13,0.81 -2.65,-2.63 -1.3,-3.96 -1.08,-2.86 -0.98,-1.34 -1.49,-2.74 -0.69,-3.58 -0.49,-1.8 -2.55,-3.97 -1.16,-5.64 -0.84,-3.77 0.01,-3.58 -0.54,-2.8 -4.08,1.79 -1.98,-0.36 -3.66,-3.63 1.35,-1.09 -0.83,-1.18 -3.29,-2.58 1.87,-2.04 6.17,0.01 -0.56,-2.64 -1.57,-1.56 -0.32,-2.39 -1.84,-1.4 3.09,-3.3 3.26,0.24 2.93,-3.32 1.76,-3.26 2.72,-3.24 -0.04,-2.33 2.39,-1.91 -2.27,-1.63 -0.97,-2.25 -0.99,-2.95 1.37,-1.46 4.26,0.83 3.12,-0.51 z",IQ:"m 602.86,356.02 1.83,1.04 0.22,2 -1.42,1.17 -0.65,2.64 1.95,3.18 3.43,1.82 1.45,2.5 -0.46,2.37 0.89,0 0.03,1.73 1.55,1.69 -1.66,-0.15 -1.89,-0.27 -2.06,3.08 -5.21,-0.26 -7.9,-6.49 -4.18,-2.29 -3.38,-0.89 -1.13,-4.04 6.21,-3.5 1.06,-4.12 -0.27,-2.52 1.54,-0.86 1.44,-2.18 1.2,-0.55 3.26,0.46 0.99,0.89 1.34,-0.59 z",IR:"m 626.69,351.78 2.47,-0.68 1.99,-2.02 1.87,0.1 1.23,-0.66 2,0.33 3.1,1.79 2.24,0.39 3.2,3.09 2.09,0.12 0.25,2.91 -1.14,4.25 -0.77,2.45 1.22,0.49 -1.2,1.83 0.92,2.64 0.22,2.09 2.12,0.55 0.23,2.1 -2.54,2.93 1.38,1.68 1.13,1.93 2.68,1.4 0.08,2.77 1.34,0.51 0.23,1.44 -4.04,1.61 -1.06,3.6 -5.27,-0.93 -3.06,-0.71 -3.16,-0.41 -1.2,-3.81 -1.34,-0.56 -2.16,0.56 -2.82,1.51 -3.43,-1.03 -2.83,-2.41 -2.7,-0.9 -1.87,-3.01 -2.07,-4.27 -1.51,0.52 -1.78,-1.07 -1.05,1.26 -1.55,-1.69 -0.03,-1.73 -0.89,0 0.46,-2.37 -1.45,-2.5 -3.43,-1.82 -1.95,-3.18 0.65,-2.64 1.42,-1.17 -0.22,-2 -1.83,-1.04 -1.82,-4.14 -1.53,-2.83 0.54,-1.09 -0.87,-4.12 1.92,-1.03 0.44,1.37 1.42,1.66 1.92,0.47 1.02,-0.1 3.31,-2.66 1.05,-0.27 0.82,1.07 -0.96,1.78 1.75,1.86 0.69,-0.17 0.89,2.61 2.66,0.73 1.95,1.76 3.98,0.6 4.38,-0.92 z",IS:"m 434.82,212.68 -0.64,4.48 3.16,4.6 -3.64,5.01 -8.09,4.38 -2.42,1.15 -3.69,-0.93 -7.82,-2.01 2.76,-2.84 -6.1,-3.2 4.96,-1.28 -0.12,-1.97 -5.88,-1.57 1.89,-4.47 4.25,-1.03 4.37,4.68 4.26,-3.75 3.53,1.96 4.57,-3.71 z",IT:"m 519.02,348.13 -1.01,2.78 0.42,1.09 -0.59,1.79 -2.14,-1.31 -1.43,-0.38 -3.91,-1.79 0.39,-1.82 3.28,0.32 2.86,-0.39 2.13,-0.29 z m -17.69,-10.82 1.68,2.62 -0.39,4.81 -1.27,-0.23 -1.14,1.2 -1.06,-0.95 -0.11,-4.38 -0.64,-2.1 1.54,0.19 1.39,-1.16 z m 8.87,-21.6 4.01,1.05 -0.3,1.99 0.67,1.71 -2.23,-0.58 -2.28,1.42 0.16,1.97 -0.34,1.12 0.92,1.99 2.63,1.95 1.41,3.17 3.12,3.05 2.2,-0.02 0.68,0.83 -0.79,0.74 2.51,1.35 2.06,1.12 2.4,1.92 0.29,0.68 -0.52,1.31 -1.56,-1.7 -2.44,-0.6 -1.18,2.36 2.03,1.34 -0.33,1.88 -1.17,0.21 -1.5,3.06 -1.17,0.27 0.01,-1.08 0.57,-1.91 0.61,-0.77 -1.09,-2.09 -0.86,-1.83 -1.16,-0.46 -0.83,-1.58 -1.8,-0.67 -1.21,-1.49 -2.07,-0.24 -2.19,-1.68 -2.56,-2.45 -1.91,-2.19 -0.87,-3.8 -1.4,-0.45 -2.28,-1.29 -1.29,0.53 -1.62,1.8 -1.17,0.28 0.32,-1.68 -1.52,-0.49 -0.72,-3.04 0.97,-1.21 -0.83,-1.5 0.12,-1.13 1.21,0.86 1.35,-0.19 1.57,-1.36 0.49,0.64 1.34,-0.13 0.61,-1.63 2.07,0.51 1.24,-0.68 0.22,-1.67 1.7,0.58 0.33,-0.78 2.77,-0.71 0.6,1.39 z",JM:"m 258.01,411.21 1.89,0.26 1.49,0.71 0.46,0.8 -1.97,0.05 -0.85,0.49 -1.57,-0.47 -1.6,-1.07 0.33,-0.67 1.18,-0.2 z",JO:"m 575.17,368.12 0.49,-1.05 3.12,1.32 5.49,-3.54 1.13,4.04 -0.53,0.49 -5.62,1.65 2.8,3.26 -0.93,0.54 -0.46,1.09 -2.14,0.44 -0.67,1.16 -1.22,0.98 -3.12,-0.51 -0.09,-0.46 1.4,-5.17 -0.07,-1.27 0.42,-0.96 z",JP:"m 853.01,362.26 0.36,1.15 -1.58,2.03 -1.15,-1.07 -1.44,0.78 -0.74,1.95 -1.83,-0.95 0.02,-1.58 1.55,-2 1.59,0.39 1.15,-1.42 2.07,0.72 z m 17.77,-10.28 -1.06,2.78 0.49,1.73 -1.46,2.42 -3.58,1.6 -4.93,0.21 -4,3.84 -1.88,-1.29 -0.11,-2.52 -4.88,0.75 -3.32,1.59 -3.28,0.06 2.84,2.46 -1.87,5.61 -1.81,1.37 -1.36,-1.27 0.69,-2.96 -1.77,-0.96 -1.14,-2.28 2.65,-1.03 1.47,-2.11 2.82,-1.75 2.06,-2.33 5.58,-1.02 3,0.7 2.93,-6.17 1.87,1.67 4.11,-3.51 1.59,-1.38 1.76,-4.38 -0.48,-4.1 1.18,-2.33 2.98,-0.68 1.53,5.11 -0.08,2.94 -2.59,3.6 0.05,3.63 z m 8.23,-25.93 1.97,0.83 1.98,-1.65 0.62,4.35 -4.16,1.05 -2.46,3.76 -4.41,-2.58 -1.53,4.12 -3.12,0.06 -0.39,-3.74 1.39,-2.94 3,-0.21 0.82,-5.38 0.83,-3.09 3.29,4.12 2.17,1.3 z",KE:"m 590.44,466.03 1.66,2.29 -1.96,1.12 -0.69,1.16 -1.06,0.2 -0.39,1.97 -0.9,1.12 -0.55,1.86 -1.13,0.92 -4.02,-2.79 -0.2,-1.62 -10.16,-5.67 -0.48,-0.31 -0.02,-2.95 0.8,-1.13 1.38,-1.84 1.02,-2.03 -1.23,-3.2 -0.33,-1.4 -1.33,-1.94 1.72,-1.67 1.9,-1.84 1.46,0.47 0,1.57 0.96,0.91 1.95,0 3.55,2.38 0.88,0.02 0.66,-0.07 0.62,0.32 1.87,0.22 0.83,-1.16 2.56,-1.17 1.13,0.94 1.92,0 -2.45,3.17 z",KG:"m 674.47,333.36 0.63,-1.66 1.84,-0.54 4.62,1.31 0.43,-2.24 1.59,-0.8 4,1.61 1.02,-0.42 4.65,0.1 4.16,0.4 1.4,1.37 1.73,0.55 -0.39,0.86 -4.42,2.03 -1,1.48 -3.6,0.44 -1.06,2.35 -2.97,-0.49 -1.93,0.72 -2.68,1.72 0.39,0.85 -0.8,0.83 -5.3,0.55 -3.47,-1.17 -3.04,0.28 0.27,-2.1 3.05,0.61 1.03,-1.13 2.13,0.36 3.59,-2.64 -3.32,-1.96 -2,0.93 -2.07,-1.4 2.35,-2.43 z",KH:"m 765.69,433.85 -1.14,-1.48 -1.41,-2.94 -0.67,-3.45 1.8,-2.38 3.62,-0.55 2.63,0.41 2.31,1.13 1.27,-1.99 2.49,1.06 0.65,1.92 -0.35,3.42 -4.71,2.19 1.23,1.73 -2.94,0.2 -2.43,1.14 z",KP:"m 841.8,332.87 0.39,0.67 -1.06,-0.23 -1.22,1.27 -0.84,1.28 0.11,2.67 -1.45,0.81 -0.5,0.65 -1.06,1.08 -1.87,0.6 -1.21,0.98 -0.09,1.57 -0.33,0.4 1.12,0.58 1.59,1.58 -0.41,0.86 -1.19,0.23 -1.98,0.17 -1.09,1.6 -1.26,-0.12 -0.17,0.32 -1.36,-0.67 -0.34,0.66 -0.82,0.29 -0.1,-0.66 -0.73,-0.32 -0.75,-0.57 0.77,-1.57 0.66,-0.42 -0.25,-0.65 0.71,-1.94 -0.19,-0.59 -1.63,-0.4 -1.32,-0.97 2.28,-2.35 3.09,-1.98 1.93,-2.65 1.33,1.17 2.42,0.14 -0.44,-1.97 4.33,-1.63 1.12,-2.13 z",KR:"m 835.38,346.78 2.42,4.18 0.69,2.27 0.02,3.98 -1.05,1.88 -2.54,0.66 -2.24,1.41 -2.53,0.29 -0.31,-1.85 0.52,-2.57 -1.24,-3.6 2.08,-0.59 -1.92,-3 0.17,-0.32 1.26,0.12 1.09,-1.6 1.98,-0.17 1.19,-0.23 z",XK:"m 533.72,334.17 -0.13,0.77 -0.36,-0.03 -0.18,-1.37 -0.67,-0.38 -0.6,-1.02 0.52,-0.85 0.67,-0.28 0.39,-1.26 0.5,-0.22 0.4,0.54 0.53,0.24 0.36,0.61 0.46,0.18 0.55,0.7 0.4,-0.02 -0.32,0.93 -0.33,0.45 0.09,0.28 -0.63,0.14 z",KW:"m 610.02,376.01 0.58,1.41 -0.25,0.73 0.9,2.41 -1.98,0.08 -0.7,-1.51 -2.5,-0.31 2.06,-3.08 z",KZ:"m 674.47,333.36 -1.61,0.7 -3.69,2.61 -1.23,2.65 -1.05,0.02 -0.76,-1.75 -3.57,-0.12 -0.57,-3.06 -1.37,-0.03 0.21,-3.8 -3.35,-2.8 -4.81,0.3 -3.29,0.56 -2.68,-3.5 -2.29,-1.48 -4.35,-2.84 -0.52,-0.35 -7.22,2.35 0.11,14.13 -1.44,0.18 -1.96,-2.93 -1.9,-1.06 -3.18,0.79 -1.24,1.25 -0.16,-0.92 0.69,-1.57 -0.53,-1.32 -3.25,-1.3 -1.27,-3.47 -1.54,-0.98 -0.1,-1.28 2.73,0.37 0.11,-2.88 2.38,-0.64 2.45,0.59 0.51,-3.91 -0.5,-2.51 -2.81,0.2 -2.38,-1 -3.25,1.79 -2.61,0.86 -1.43,-0.66 0.29,-2.1 -1.79,-2.76 -2.08,0.11 -2.38,-2.83 1.62,-3.22 -0.82,-0.87 2.23,-4.77 2.89,2.53 0.35,-3.19 5.78,-4.85 4.38,-0.12 6.19,3.1 3.31,1.79 2.98,-1.87 4.44,-0.08 3.59,2.29 0.82,-1.31 3.93,0.19 0.71,-2.11 -4.55,-3.09 2.69,-2.23 -0.52,-1.25 2.69,-1.21 -2.02,-3.2 1.28,-1.62 10.49,-1.66 1.37,-1.19 7.02,-1.79 2.52,-2.04 5.04,1.06 0.88,5.01 2.93,-1.16 3.6,1.63 -0.23,2.58 2.69,-0.27 7.02,-4.49 -1.02,1.5 3.58,3.66 6.26,11.58 1.5,-2.33 3.86,2.56 4.03,-1.14 1.54,0.8 1.35,2.55 1.96,0.84 1.2,1.85 3.61,-0.58 1.49,2.63 -2.14,2.83 -2.33,0.4 -0.13,4.18 -1.56,1.86 -5.56,-1.35 -2.02,7.26 -1.44,0.89 -5.55,1.58 2.52,6.75 -1.92,1 0.22,2.16 -1.73,-0.55 -1.4,-1.37 -4.16,-0.4 -4.65,-0.1 -1.02,0.42 -4,-1.61 -1.59,0.8 -0.43,2.24 -4.62,-1.31 -1.84,0.54 z",LA:"m 770.52,423.46 0.91,-1.3 0.13,-2.44 -2.27,-2.53 -0.18,-2.87 -2.13,-2.38 -2.12,-0.2 -0.56,1.02 -1.65,0.08 -0.84,-0.51 -2.95,1.74 -0.07,-2.62 0.69,-3.11 -1.89,-0.13 -0.16,-1.78 -1.22,-0.92 0.6,-1.1 2.39,-1.94 0.25,0.7 1.49,0.08 -0.42,-3.43 1.45,-0.44 1.64,2.37 1.26,2.72 3.45,0.03 1.09,2.59 -1.79,0.77 -0.81,1.07 3.36,1.76 2.33,3.46 1.77,2.57 2.12,2.02 0.71,2.04 -0.51,2.88 -2.49,-1.06 -1.27,1.99 z",LB:"m 575.94,365.18 -0.75,0.05 -0.26,0.58 -0.94,0 1,-2.73 1.39,-2.38 0.06,-0.12 1.26,0.18 0.46,1.32 -1.53,1.27 z",LK:"m 704.82,442.62 -0.42,2.92 -1.17,0.8 -2.44,0.64 -1.34,-2.23 -0.49,-4.03 1.27,-4.58 1.93,1.57 1.31,1.98 z",LR:"m 453.88,451.47 -0.74,0.02 -2.89,-1.33 -2.54,-2.13 -2.39,-1.53 -1.89,-1.81 0.67,-0.9 0.15,-0.81 1.26,-1.53 1.31,-1.31 0.6,-0.07 0.73,-0.31 1.17,1.72 -0.18,1.13 0.54,0.6 0.8,0.01 0.57,-1.13 0.79,0.07 -0.13,0.82 0.28,1.36 -0.61,1.24 0.82,0.77 0.89,0.19 1.19,1.17 0.08,1.11 -0.27,0.35 z",LS:"m 556.75,548 0.98,0.96 -0.86,1.56 -0.48,1.05 -1.56,0.5 -0.52,1.04 -1,0.32 -2.1,-2.49 1.49,-2.03 1.52,-1.25 1.31,-0.64 z",LT:"m 539.24,282.34 -0.23,-1.22 0.3,-1.33 -1.24,-0.77 -2.93,-0.86 -0.6,-4.16 3.21,-1.55 4.7,0.33 2.76,-0.5 0.39,1.05 1.49,0.32 2.7,2.42 0.26,2.2 -2.3,1.57 -0.65,2.72 -3.04,1.8 -2.71,-0.04 -0.67,-1.46 z",LU:"m 492.45,301.54 0.56,0.98 -0.16,1.89 -0.81,0.1 -0.63,-0.38 0.31,-2.43 z",LV:"m 534.54,274 0.1,-3.81 1.38,-3.24 2.64,-1.78 2.22,3.88 2.25,-0.1 0.54,-3.99 2.39,-0.93 1.23,0.65 2.41,1.94 2.32,0.01 1.35,1.19 0.23,2.49 0.91,2.99 -3.02,1.93 -1.7,0.84 -2.7,-2.42 -1.49,-0.32 -0.39,-1.05 -2.76,0.5 -4.7,-0.33 z",LY:"m 517.14,398.18 -1.98,1.12 -1.58,-1.66 -4.43,-1.31 -1.23,-1.91 -2.22,-1.42 -1.31,0.56 -0.99,-1.71 -0.11,-1.32 -1.66,-2.26 1.12,-1.29 -0.25,-1.97 0.36,-1.72 -0.2,-1.44 0.49,-2.59 -0.15,-1.48 -0.91,-2.84 1.37,-0.75 0.24,-1.38 -0.3,-1.35 1.93,-1.26 0.86,-1.05 1.37,-0.95 0.16,-2.55 3.29,1.15 1.18,-0.29 2.34,0.56 3.72,1.47 1.31,2.92 2.52,0.64 3.95,1.36 2.99,1.61 1.37,-0.84 1.34,-1.49 -0.65,-2.51 0.88,-1.6 2.02,-1.55 1.93,-0.45 3.79,0.68 0.96,1.48 1.04,0.01 0.89,0.56 2.79,0.39 0.68,1.08 -1.01,1.57 0.43,1.39 -0.72,2 0.84,2.58 0,11.18 0,11.23 0,5.96 -3.22,0.01 -0.04,1.24 -11.18,-5.7 -11.19,-5.77 z",MA:"m 451.21,383.39 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 -1.22,-0.04 -2.9,-0.75 -2.67,0.24 -1.69,-1.46 -2.06,-0.02 -0.89,2.11 -1.87,3.51 -2.08,1.39 -2.81,1.53 -1.8,2.24 -0.38,1.74 -1.07,2.82 0.7,4.03 -2.34,2.68 -1.4,0.85 -2.21,2.17 -2.61,0.35 -1.3,1.12 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 z",MD:"m 550.14,309.7 0.67,-0.62 1.86,-0.42 2.07,1.31 1.15,0.16 1.27,1.12 -0.2,1.41 1.02,0.67 0.4,1.72 0.98,1.04 -0.19,0.6 0.52,0.42 -0.74,0.29 -1.66,-0.11 -0.27,-0.57 -0.59,0.33 0.2,0.72 -0.77,1.29 -0.49,1.37 -0.7,0.44 -0.51,-1.83 0.3,-1.72 -0.09,-1.79 -1.62,-2.44 -0.89,-1.75 -0.87,-1.24 z",ME:"m 531.02,332.48 -0.17,-0.72 -1.22,1.87 0.19,1.19 -0.59,-0.29 -0.78,-1.23 -1.22,-0.75 0.31,-0.64 0.41,-2.1 0.91,-0.89 0.53,-0.36 0.74,0.66 0.41,0.54 0.92,0.41 1.07,0.79 -0.23,0.33 -0.52,0.85 z",MG:"m 614.42,498.65 0.74,1.21 0.69,1.89 0.46,3.46 0.72,1.35 -0.28,1.38 -0.49,0.86 -0.96,-1.7 -0.52,0.86 0.53,2.14 -0.25,1.24 -0.77,0.67 -0.18,2.48 -1.1,3.42 -1.38,4.09 -1.74,5.67 -1.07,4.21 -1.27,3.55 -2.28,0.73 -2.45,1.31 -1.61,-0.79 -2.23,-1.1 -0.77,-1.62 -0.19,-2.71 -0.98,-2.42 -0.26,-2.17 0.5,-2.16 1.29,-0.52 0.01,-0.99 1.34,-2.26 0.25,-1.88 -0.65,-1.4 -0.53,-1.85 -0.22,-2.7 0.98,-1.63 0.37,-1.85 1.4,-0.1 1.57,-0.6 1.03,-0.52 1.24,-0.04 1.59,-1.65 2.31,-1.78 0.84,-1.44 -0.38,-1.23 1.19,0.35 1.55,-1.99 0.05,-1.72 0.93,-1.28 z",MK:"m 533.23,334.91 0.36,0.03 0.13,-0.77 1.65,-0.59 0.63,-0.14 0.96,-0.22 1.29,-0.06 1.41,1.21 0.2,2.47 -0.54,0.12 -0.46,0.65 -1.52,-0.07 -1.07,0.81 -1.83,0.32 -1.16,-0.9 -0.4,-1.59 z",ML:"m 441.38,422.47 0.94,-0.52 0.47,-1.7 0.89,-0.07 1.96,0.8 1.58,-0.57 1.08,0.19 0.43,-0.64 11.25,-0.04 0.62,-2.03 -0.49,-0.36 -1.35,-12.68 -1.35,-13.06 4.29,-0.05 9.46,6.65 9.46,6.55 0.66,1.39 1.75,0.85 1.3,0.48 0.03,1.88 3.11,-0.29 0.01,6.75 -1.54,1.94 -0.24,1.79 -2.49,0.45 -3.82,0.25 -1.04,1.03 -1.8,0.11 -1.79,0.01 -0.7,-0.55 -1.55,0.41 -2.62,1.2 -0.53,0.9 -2.18,1.28 -0.38,0.74 -1.17,0.58 -1.36,-0.38 -0.77,0.7 -0.41,1.96 -2.23,2.36 0.07,0.96 -0.77,1.21 0.19,1.64 -1.16,0.42 -0.65,0.36 -0.44,-1.21 -0.81,0.32 -0.48,-0.06 -0.52,0.83 -2.16,-0.03 -0.78,-0.42 -0.36,0.26 -0.86,-0.82 0.15,-0.84 -0.35,-0.34 -0.6,0.28 0.11,-0.92 0.58,-0.73 -1.15,-1.19 -0.34,-0.79 -0.62,-0.62 -0.56,-0.08 -0.67,0.4 -0.91,0.38 -0.77,0.62 -1.2,-0.23 -0.78,-0.72 -0.46,-0.1 -0.73,0.38 -0.45,0.01 -0.16,-1.05 0.13,-0.89 -0.24,-1.1 -1.05,-0.81 -0.55,-1.64 z", -MM:"m 754.61,406.2 -1.64,1.28 -1.98,0.14 -1.28,3.19 -1.18,0.53 1.36,2.57 1.78,2.13 1.14,1.92 -1.02,2.52 -0.97,0.53 0.67,1.45 1.87,2.28 0.32,1.6 -0.05,1.33 1.1,2.6 -1.54,2.65 -1.36,2.91 -0.27,-2.1 0.86,-2.18 -0.94,-1.68 0.23,-3.11 -1.14,-1.48 -0.91,-3.44 -0.51,-3.66 -1.21,-2.4 -1.85,1.46 -3.19,2.06 -1.57,-0.26 -1.74,-0.67 0.97,-3.61 -0.58,-2.74 -2.2,-3.39 0.34,-1.07 -1.64,-0.38 -1.99,-2.42 -0.18,-2.41 0.98,0.46 0.05,-2.15 1.39,-0.72 -0.3,-1.28 0.63,-1.03 0.11,-3.15 2.19,0.7 1.25,-2.52 0.15,-1.5 1.54,-2.6 -0.08,-1.78 3.63,-2.16 2,0.57 -0.23,-1.93 0.99,-0.58 -0.22,-1.2 1.64,-0.24 0.94,1.86 1.22,0.75 0.09,2.4 -0.12,2.57 -2.65,2.58 -0.34,3.63 2.96,-0.5 0.67,2.8 1.78,0.59 -0.82,2.5 2.08,1.13 1.22,0.55 2.05,-0.87 0.09,1.24 -2.39,1.94 -0.6,1.1 z",MN:"m 721.54,305.13 2.96,-0.74 5.35,-3.74 4.27,-2.07 2.43,1.35 2.93,0.06 1.87,2.05 2.8,0.15 4.06,1.09 2.72,-3.03 -1.14,-2.6 2.91,-4.66 3.14,1.87 2.54,0.53 3.3,1.15 0.53,3.32 3.99,1.84 2.65,-0.81 3.54,-0.57 2.81,0.58 2.75,2.09 1.7,2.2 2.6,-0.04 3.53,0.69 2.58,-1.06 3.69,-0.71 4.11,-3.06 1.68,0.47 1.47,1.46 3.34,-0.36 -1.36,3.25 -1.98,4.22 0.72,1.71 1.59,-0.53 2.76,0.65 2.16,-1.54 2.25,1.33 2.54,2.89 -0.31,1.45 -2.21,-0.46 -4.07,0.54 -1.98,1.16 -2.05,2.66 -4.28,1.55 -2.79,2.1 -2.88,-0.8 -1.58,-0.36 -1.47,2.54 0.89,1.5 0.46,1.28 -1.97,1.3 -2.01,2.05 -3.27,1.33 -4.21,0.15 -4.53,1.31 -3.26,2.01 -1.24,-1.16 -3.39,0 -4.15,-2.29 -2.77,-0.57 -3.73,0.53 -5.79,-0.85 -3.09,0.09 -1.64,-2.27 -1.28,-3.57 -1.73,-0.43 -3.39,-2.45 -3.78,-0.55 -3.33,-0.68 -1.01,-1.73 1.08,-4.73 -1.93,-3.31 -4,-1.57 -2.36,-2.23 z",MR:"m 441.38,422.47 -1.85,-1.98 -1.7,-2.13 -1.86,-0.77 -1.34,-0.85 -1.57,0.03 -1.36,0.63 -1.4,-0.25 -0.96,0.93 -0.24,-1.56 0.78,-1.44 0.35,-2.75 -0.31,-2.91 -0.34,-1.47 0.28,-1.47 -0.72,-1.42 -1.48,-1.28 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 10.55,7.53 -4.29,0.05 1.35,13.06 1.35,12.68 0.49,0.36 -0.62,2.03 -11.25,0.04 -0.43,0.64 -1.08,-0.19 -1.58,0.57 -1.96,-0.8 -0.89,0.07 -0.47,1.7 z",MW:"m 572.4,495.94 -0.78,2.16 0.78,3.72 0.98,-0.04 1.01,0.92 1.17,2.08 0.24,3.72 -1.21,0.61 -0.86,2.01 -1.83,-1.79 -0.2,-2.04 0.59,-1.35 -0.17,-1.15 -1.1,-0.73 -0.78,0.26 -1.61,-1.38 -1.47,-0.74 0.85,-2.66 0.88,-0.99 -0.54,-2.36 0.56,-2.3 0.48,-0.77 -0.71,-2.4 -1.32,-1.26 2.74,0.52 0.57,0.78 0.95,1.32 z",MX:"m 203.14,388.97 -1.09,2.71 -0.49,2.21 -0.21,4.08 -0.27,1.47 0.49,1.64 0.87,1.47 0.56,2.31 1.86,2.21 0.65,1.69 1.1,1.45 2.98,0.79 1.16,1.22 2.46,-0.82 2.13,-0.29 2.1,-0.53 1.77,-0.51 1.78,-1.2 0.67,-1.73 0.23,-2.49 0.49,-0.87 1.89,-0.79 2.97,-0.69 2.48,0.1 1.7,-0.25 0.67,0.63 -0.09,1.44 -1.51,1.77 -0.66,1.81 0.51,0.51 -0.42,1.28 -0.7,2.29 -0.71,-0.75 -0.59,0.05 -0.53,0.04 -1,1.77 -0.51,-0.35 -0.34,0.14 0.02,0.43 -2.59,-0.03 -2.62,0 0,1.65 -1.27,0 1.04,0.98 1.04,0.67 0.31,0.63 0.46,0.18 -0.08,0.98 -3.59,0.01 -1.35,2.36 0.39,0.54 -0.32,0.68 -0.07,0.84 -3.17,-3.11 -1.45,-0.94 -2.29,-0.76 -1.56,0.21 -2.26,1.09 -1.41,0.29 -1.98,-0.76 -2.1,-0.56 -2.62,-1.33 -2.1,-0.41 -3.18,-1.35 -2.34,-1.4 -0.71,-0.78 -1.57,-0.17 -2.87,-0.93 -1.17,-1.34 -3.01,-1.67 -1.4,-1.87 -0.67,-1.45 0.93,-0.29 -0.29,-0.85 0.65,-0.77 0.01,-1.04 -0.94,-1.34 -0.26,-1.2 -0.94,-1.52 -2.47,-3.02 -2.82,-2.39 -1.36,-1.91 -2.41,-1.26 -0.51,-0.76 0.43,-1.92 -1.43,-0.73 -1.66,-1.52 -0.7,-2.19 -1.51,-0.26 -1.62,-1.66 -1.32,-1.55 -0.12,-1 -1.51,-2.42 -0.99,-2.48 0.04,-1.25 -2.03,-1.29 -0.93,0.14 -1.6,-0.9 -0.45,1.33 0.46,1.56 0.27,2.43 0.97,1.33 2.08,2.21 0.46,0.75 0.43,0.22 0.36,1.1 0.5,-0.05 0.57,2.04 0.85,0.8 0.59,1.11 1.77,1.6 0.93,2.89 0.83,1.35 0.78,1.44 0.15,1.62 1.35,0.1 1.13,1.39 1.02,1.36 -0.07,0.54 -1.18,1.11 -0.5,-0.01 -0.74,-1.85 -1.83,-1.73 -2.02,-1.48 -1.44,-0.78 0.09,-2.25 -0.42,-1.68 -1.34,-0.96 -1.93,-1.39 -0.37,0.4 -0.7,-0.82 -1.73,-0.75 -1.65,-1.83 0.2,-0.24 1.15,0.18 1.04,-1.18 0.11,-1.43 -2.16,-2.27 -1.64,-0.89 -1.04,-2.01 -1.04,-2.12 -1.3,-2.61 -1.14,-2.96 3.19,-0.25 3.56,-0.36 -0.26,0.64 4.23,1.61 6.4,2.31 5.58,-0.03 2.22,0 0,-1.35 4.86,0 1.02,1.17 1.44,1.03 1.66,1.43 0.93,1.69 0.7,1.76 1.45,0.97 2.33,0.96 1.76,-2.53 2.3,-0.06 1.97,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.18,0.96 1.99,0.68 z",MY:"m 758.9,446.32 0.22,1.44 1.85,-0.33 0.92,-1.15 0.64,0.26 1.66,1.69 1.18,1.87 0.16,1.88 -0.3,1.27 0.27,0.96 0.21,1.65 0.99,0.77 1.1,2.46 -0.05,0.94 -1.99,0.19 -2.65,-2.06 -3.32,-2.21 -0.33,-1.42 -1.62,-1.87 -0.39,-2.31 -1.01,-1.52 0.31,-2.04 -0.62,-1.19 0.49,-0.5 2.28,1.22 z m 49.19,4.83 -2.06,0.95 -2.43,-0.47 -3.22,0 -0.97,3.17 -1.08,0.97 -1.44,3.88 -2.29,0.59 -2.65,-0.78 -1.34,0.24 -1.63,1.41 -1.79,-0.2 -1.81,0.57 -1.92,-1.57 -0.47,-1.86 2.05,0.96 2.17,-0.52 0.56,-2.36 1.2,-0.53 3.36,-0.6 2.01,-2.21 1.38,-1.77 1.28,1.45 0.59,-0.95 1.34,0.09 0.16,-1.78 0.13,-1.38 2.16,-1.95 1.41,-2.19 1.13,-0.01 1.44,1.42 0.13,1.22 1.85,0.78 2.34,0.84 -0.2,1.1 -1.88,0.14 0.49,1.35 z",MZ:"m 572.4,495.94 2.11,-0.23 3.37,0.8 0.74,-0.36 1.95,-0.07 1,-0.85 1.68,0.04 3.06,-1.1 2.23,-1.64 0.46,1.27 -0.12,2.83 0.35,2.5 0.11,4.48 0.49,1.4 -0.83,2.07 -1.09,2.01 -1.79,1.8 -2.56,1.11 -3.16,1.41 -3.17,3.15 -1.08,0.54 -1.96,2.09 -1.15,0.69 -0.24,2.12 1.33,2.25 0.55,1.76 0.04,0.9 0.49,-0.15 -0.08,2.96 -0.45,1.41 0.66,0.52 -0.42,1.27 -1.17,1.09 -2.31,1.04 -3.37,1.66 -1.23,1.15 0.24,1.3 0.71,0.21 -0.24,1.64 -2.12,-0.02 -0.24,-1.38 -0.42,-1.39 -0.24,-1.11 0.5,-3.43 -0.73,-2.17 -1.34,-4.26 2.95,-3.41 0.74,-2.15 0.43,-0.27 0.31,-1.74 -0.45,-0.88 0.12,-2.2 0.55,-2.04 -0.01,-3.69 -1.45,-0.94 -1.34,-0.21 -0.6,-0.72 -1.3,-0.61 -2.34,0.06 -0.18,-1.08 -0.27,-2.05 8.51,-2.38 1.61,1.38 0.78,-0.26 1.1,0.73 0.17,1.15 -0.59,1.35 0.2,2.04 1.83,1.79 0.86,-2.01 1.21,-0.61 -0.24,-3.72 -1.17,-2.08 -1.01,-0.92 -0.98,0.04 -0.78,-3.72 z",NA:"m 521.33,546.79 -2.08,-2.39 -1.1,-2.3 -0.62,-3.03 -0.69,-2.25 -0.94,-4.72 -0.06,-3.63 -0.36,-1.64 -1.09,-1.24 -1.45,-2.47 -1.47,-3.57 -0.61,-1.85 -2.29,-2.87 -0.17,-2.25 1.35,-0.55 1.68,-0.5 1.82,0.09 1.67,1.32 0.42,-0.21 11.37,-0.12 1.94,1.4 6.79,0.41 5.15,-1.19 2.3,-0.67 1.82,0.17 1.1,0.66 0.03,0.24 -1.58,0.66 -0.86,0.01 -1.78,1.15 -1.08,-1.21 -4.32,1.03 -2.09,0.09 -0.08,10.57 -2.76,0.11 0,8.86 -0.01,11.52 -2.5,1.63 -1.5,0.23 -1.77,-0.6 -1.26,-0.23 -0.47,-1.36 -1.11,-0.87 z",NC:"m 940.33,523.73 2.3,1.86 1.45,1.38 -1.06,0.73 -1.55,-0.82 -2,-1.35 -1.81,-1.59 -1.85,-2.1 -0.39,-1.01 1.2,0.05 1.58,1.01 1.23,1.01 z",NE:"m 481.54,430.13 0.07,-1.95 -3.24,-0.65 -0.08,-1.38 -1.58,-1.87 -0.38,-1.31 0.22,-1.4 1.8,-0.11 1.04,-1.03 3.82,-0.25 2.49,-0.45 0.24,-1.79 1.54,-1.94 -0.01,-6.75 3.95,-1.32 8.12,-5.85 9.61,-5.75 4.43,1.31 1.58,1.66 1.98,-1.12 0.69,4.67 1.05,0.78 0.05,0.95 1.16,1.02 -0.61,1.28 -1.08,5.98 -0.14,3.79 -3.58,2.74 -1.21,3.8 1.17,1.06 -0.01,1.85 1.8,0.07 -0.28,1.34 -0.79,0.17 -0.09,0.9 -0.53,0.07 -1.89,-3.13 -0.66,-0.12 -2.19,1.6 -2.17,-0.83 -1.51,-0.17 -0.81,0.4 -1.65,-0.08 -1.65,1.22 -1.43,0.07 -3.39,-1.48 -1.33,0.7 -1.43,-0.05 -1.05,-1.08 -2.82,-1.07 -3.01,0.34 -0.73,0.62 -0.39,1.65 -0.81,1.15 -0.19,2.54 -2.14,-1.64 -1.01,0.01 z",NG:"m 499.34,450.33 -2.91,1 -1.07,-0.14 -1.08,0.62 -2.24,-0.06 -1.5,-1.75 -0.92,-2.02 -1.99,-1.84 -2.11,0.03 -2.47,0 0.16,-4.53 -0.07,-1.79 0.53,-1.77 0.86,-0.87 1.36,-1.75 -0.29,-0.76 0.55,-1.14 -0.63,-1.68 0.11,-0.95 0.19,-2.54 0.81,-1.15 0.39,-1.65 0.73,-0.62 3.01,-0.34 2.82,1.07 1.05,1.08 1.43,0.05 1.33,-0.7 3.39,1.48 1.43,-0.07 1.65,-1.22 1.65,0.08 0.81,-0.4 1.51,0.17 2.17,0.83 2.19,-1.6 0.66,0.12 1.89,3.13 0.53,-0.07 1.11,1.14 -0.31,0.51 -0.15,0.95 -2.36,2.2 -0.74,1.81 -0.4,1.47 -0.59,0.63 -0.57,1.97 -1.5,1.16 -0.43,1.42 -0.63,1.14 -0.26,1.16 -1.93,0.95 -1.57,-1.15 -1.07,0.04 -1.67,1.64 -0.81,0.03 -1.33,2.7 z",NI:"m 235.18,432.56 -0.97,-0.9 -1.31,-1.15 -0.62,-0.96 -1.18,-0.89 -1.41,-1.29 0.31,-0.44 0.47,0.43 0.21,-0.21 0.87,-0.11 0.35,-0.66 0.41,-0.02 -0.06,-1.41 0.66,-0.07 0.59,0.02 0.6,-0.76 0.83,0.58 0.29,-0.36 0.51,-0.34 0.98,-0.79 0.05,-0.6 0.27,0.03 0.36,-0.69 0.29,-0.08 0.48,0.44 0.56,0.13 0.62,-0.37 0.71,0 0.97,-0.38 0.39,-0.39 0.96,0.06 -0.24,0.28 -0.14,0.64 0.28,1.05 -0.64,0.98 -0.3,1.15 -0.1,1.27 0.16,0.73 0.07,1.29 -0.43,0.28 -0.26,1.22 0.19,0.75 -0.58,0.73 0.14,0.76 0.42,0.47 -0.67,0.6 -0.82,-0.19 -0.47,-0.58 -0.89,-0.24 -0.64,0.37 -1.85,-0.75 z",NL:"m 492.53,286.23 2.33,0.13 0.53,1.58 -0.7,4.23 -0.71,1.71 -1.69,0 0.48,4.69 -1.55,-1.04 -1.77,-1.95 -2.6,0.93 -2.05,-0.35 1.44,-1.24 2.46,-6.74 z",NO:"m 554.48,175.86 8.77,6.24 -3.61,2.23 3.07,5.11 -4.77,3.19 -2.26,0.72 1.19,-5.59 -3.6,-3.25 -4.35,2.78 -1.38,5.85 -2.67,3.44 -3.01,-1.87 -3.66,0.38 -3.12,-4.15 -1.68,2.09 -1.74,0.32 -0.41,5.08 -5.28,-1.22 -0.74,4.22 -2.69,-0.03 -1.85,5.24 -2.8,7.87 -4.35,9.5 1.02,2.23 -0.98,2.55 -2.78,-0.11 -1.82,5.91 0.17,8.04 1.79,2.98 -0.93,6.73 -2.33,3.81 -1.24,3.15 -1.88,-3.35 -5.54,6.27 -3.74,1.24 -3.88,-2.71 -1,-5.86 -0.89,-13.26 2.58,-3.88 7.4,-5.18 5.54,-6.59 5.13,-9.3 6.74,-13.76 4.7,-5.67 7.71,-9.89 6.15,-3.59 4.61,0.44 4.27,-6.99 5.11,0.38 5.03,-1.74 z",NP:"m 722.58,382.7 -0.22,1.35 0.37,1.99 -0.32,1.24 -2.33,0.05 -3.38,-0.73 -2.16,-0.29 -1.62,-1.59 -3.84,-0.41 -3.66,-1.77 -2.64,-1.55 -2.72,-1.2 1.09,-2.99 1.78,-1.46 1.16,-0.78 2.25,1 2.83,2.09 1.57,0.46 0.94,1.53 2.18,0.63 2.28,1.39 3.17,0.73 z",NZ:"m 960.63,588.88 0.64,1.53 1.99,-1.5 0.81,1.57 0,1.57 -1.04,1.74 -1.83,2.8 -1.43,1.54 1.03,1.86 -2.16,0.05 -2.4,1.46 -0.75,2.57 -1.59,4.03 -2.2,1.8 -1.4,1.16 -2.58,-0.09 -1.82,-1.34 -3.05,-0.28 -0.47,-1.48 1.51,-2.96 3.53,-3.87 1.81,-0.73 2.01,-1.47 2.4,-2.01 1.68,-1.98 1.25,-2.81 1.06,-0.95 0.42,-2.07 1.97,-1.7 0.61,1.56 z m 4.46,-17.02 2.03,3.67 0.06,-2.38 1.27,0.95 0.42,2.65 2.26,1.15 1.89,0.28 1.6,-1.35 1.42,0.41 -0.68,3.15 -0.85,2.09 -2.14,-0.07 -0.75,1.1 0.26,1.56 -0.41,0.68 -1.06,1.97 -1.39,2.53 -2.17,1.49 -0.48,-0.98 -1.17,-0.54 1.62,-3.04 -0.92,-2.01 -3.02,-1.45 0.08,-1.31 2.03,-1.25 0.47,-2.74 -0.13,-2.28 -1.14,-2.34 0.08,-0.61 -1.34,-1.43 -2.21,-3.04 -1.17,-2.41 1.04,-0.27 1.53,1.89 2.18,0.89 0.79,3.04 z",OM:"m 640.54,403.43 -1.05,2.04 -1.27,-0.16 -0.58,0.71 -0.45,1.5 0.34,1.98 -0.26,0.36 -1.29,-0.01 -1.75,1.1 -0.27,1.43 -0.64,0.62 -1.74,-0.02 -1.1,0.74 0.01,1.18 -1.36,0.81 -1.55,-0.27 -1.88,0.98 -1.3,0.16 -0.92,-2.04 -2.19,-4.84 8.41,-2.96 1.87,-5.97 -1.29,-2.14 0.07,-1.22 0.82,-1.26 0.01,-1.25 1.27,-0.6 -0.5,-0.42 0.23,-2 1.43,-0.01 1.26,2.09 1.57,1.11 2.06,0.4 1.66,0.55 1.27,1.74 0.76,1 1,0.38 -0.01,0.67 -1.02,1.79 -0.45,0.84 -1.17,0.99 z m -6.92,-14.54 -0.37,0.56 -0.53,-1.06 0.82,-1.06 0.35,0.27 -0.27,1.29 z",PA:"m 257.13,443.46 -0.93,-0.81 -0.6,-1.52 0.69,-0.75 -0.71,-0.19 -0.52,-0.93 -1.4,-0.78 -1.23,0.18 -0.56,0.98 -1.14,0.7 -0.61,0.1 -0.27,0.59 1.33,1.52 -0.76,0.36 -0.41,0.42 -1.3,0.14 -0.49,-1.68 -0.36,0.48 -0.93,-0.16 -0.56,-1.14 -1.15,-0.18 -0.73,-0.33 -1.2,0 -0.09,0.61 -0.32,-0.42 0.15,-0.56 0.23,-0.57 -0.11,-0.51 0.42,-0.34 -0.58,-0.42 -0.02,-1.13 1.09,-0.25 1,1.01 -0.06,0.6 1.12,0.12 0.27,-0.23 0.77,0.7 1.38,-0.21 1.19,-0.71 1.7,-0.57 0.96,-0.84 1.55,0.16 -0.11,0.28 1.57,0.1 1.25,0.49 0.91,0.84 1.06,0.78 -0.34,0.42 0.65,1.65 -0.53,0.84 -0.91,-0.2 z",PE:"m 280.38,513.39 -0.75,1.51 -1.44,0.74 -2.81,-1.68 -0.25,-1.2 -5.55,-2.92 -5.03,-3.17 -2.17,-1.78 -1.16,-2.37 0.46,-0.83 -2.37,-3.75 -2.77,-5.24 -2.64,-5.62 -1.15,-1.29 -0.88,-2.06 -2.18,-1.84 -2,-1.13 0.91,-1.25 -1.36,-2.67 0.87,-1.95 2.24,-1.77 0.33,1.17 -0.8,0.66 0.07,1.02 1.16,-0.22 1.14,0.3 1.17,1.41 1.59,-1.15 0.53,-1.88 1.72,-2.43 3.37,-1.1 3.06,-2.92 0.87,-1.81 -0.39,-2.11 0.75,-0.27 1.86,1.32 0.89,1.32 1.3,0.72 1.65,2.92 2.09,0.35 1.55,-0.74 1.01,0.48 1.68,-0.24 2.15,1.31 -1.81,2.84 0.84,0.06 1.4,1.49 -2.53,-0.13 -0.37,0.42 -2.3,0.53 -3.2,1.91 -0.21,1.3 -0.71,0.98 0.28,1.51 -1.7,0.81 0,1.19 -0.74,0.51 1.17,2.53 1.56,1.72 -0.59,1.21 1.86,0.16 1.06,1.51 2.47,0.07 2.3,-1.66 -0.19,4.3 1.28,0.33 1.58,-0.49 2.43,4.58 -0.61,0.96 -0.13,2.02 -0.06,2.44 -1.1,1.44 0.51,1.07 -0.65,0.97 1.21,2.44 z",PG:"m 912.57,482.67 -0.79,0.28 -1.21,-1.08 -1.23,-1.78 -0.6,-2.13 0.39,-0.27 0.3,0.83 0.85,0.63 1.36,1.77 1.32,0.95 -0.39,0.8 z m -10.93,-3.75 -1.47,0.23 -0.44,0.79 -1.53,0.68 -1.44,0.66 -1.49,0 -2.3,-0.81 -1.6,-0.78 0.23,-0.87 2.51,0.41 1.53,-0.22 0.42,-1.34 0.4,-0.07 0.27,1.49 1.6,-0.21 0.79,-0.96 1.57,-1 -0.31,-1.65 1.68,-0.05 0.57,0.46 -0.06,1.55 -0.93,1.69 z m -13.43,5.35 2.5,1.84 1.82,2.99 1.61,-0.09 -0.11,1.25 2.17,0.48 -0.84,0.53 2.98,1.19 -0.31,0.82 -1.86,0.2 -0.69,-0.73 -2.41,-0.32 -2.83,-0.43 -2.18,-1.8 -1.59,-1.55 -1.46,-2.46 -3.66,-1.23 -2.38,0.8 -1.71,0.93 0.36,2.08 -2.2,0.97 -1.57,-0.47 -2.9,-0.12 -0.05,-9.16 -0.05,-9.1 4.87,1.92 5.18,1.6 1.93,1.43 1.56,1.41 0.43,1.65 4.67,1.73 0.68,1.49 -2.58,0.3 0.62,1.85 z m 16.67,-8.09 -0.88,0.74 -0.53,-1.65 -0.65,-1.08 -1.27,-0.91 -1.6,-1.19 -2.02,-0.82 0.78,-0.67 1.51,0.78 0.95,0.61 1.18,0.67 1.12,1.17 1.07,0.89 0.34,1.46 z",PH:"m 829.84,440.11 0.29,1.87 0.17,1.58 -0.96,2.57 -1.02,-2.86 -1.31,1.42 0.9,2.06 -0.8,1.31 -3.3,-1.63 -0.79,-2.03 0.86,-1.33 -1.78,-1.33 -0.88,1.17 -1.32,-0.11 -2.08,1.57 -0.46,-0.82 1.1,-2.37 1.77,-0.79 1.53,-1.06 0.99,1.27 2.13,-0.77 0.46,-1.26 1.98,-0.08 -0.17,-2.18 2.27,1.34 0.24,1.42 0.18,1.04 z m -6.71,-5.26 -1.01,0.93 -0.88,1.79 -0.88,0.84 -1.73,-1.95 0.58,-0.76 0.7,-0.79 0.31,-1.76 1.55,-0.17 -0.45,1.91 2.08,-2.74 -0.27,2.7 z m -15.36,2.72 -3.73,2.67 1.38,-1.97 2.03,-1.74 1.68,-1.96 1.47,-2.82 0.5,2.31 -1.85,1.56 -1.48,1.95 z m 9.48,-7.3 1.68,0.88 1.78,0 -0.05,1.19 -1.3,1.2 -1.78,0.85 -0.1,-1.32 0.2,-1.45 -0.43,-1.35 z m 10.14,-0.77 0.79,3.18 -2.16,-0.75 0.06,0.95 0.69,1.75 -1.33,0.63 -0.12,-1.99 -0.84,-0.15 -0.44,-1.72 1.65,0.23 -0.04,-1.08 -1.71,-2.18 2.69,0.06 0.76,1.07 z m -11.14,-2.59 -0.74,2.47 -1.2,-1.42 -1.43,-2.18 2.4,0.1 0.97,1.03 z m -0.58,-15.74 1.73,0.84 0.86,-0.76 0.25,0.75 -0.46,1.22 0.96,2.09 -0.74,2.42 -1.65,0.96 -0.44,2.33 0.63,2.29 1.49,0.32 1.24,-0.34 3.5,1.59 -0.27,1.56 0.92,0.69 -0.29,1.32 -2.18,-1.4 -1.04,-1.5 -0.72,1.05 -1.79,-1.72 -2.55,0.42 -1.4,-0.63 0.14,-1.19 0.88,-0.73 -0.84,-0.67 -0.36,1.04 -1.38,-1.65 -0.42,-1.26 -0.1,-2.77 1.13,0.96 0.29,-4.55 0.91,-2.66 1.7,-0.02 z",PL:"m 517.61,297.22 -1.15,-2.86 0.22,-1.56 -0.7,-2.45 -1.01,-1.65 0.78,-1.25 -0.66,-2.39 1.92,-1.39 4.37,-2.22 3.54,-1.64 2.79,0.82 0.21,1.18 2.71,0.06 3.45,0.55 5.16,-0.08 1.44,0.52 0.67,1.46 0.12,2.09 0.78,1.78 -0.02,1.85 -1.68,0.94 0.87,2.12 0.05,2.01 1.41,3.89 -0.3,1.24 -1.39,0.51 -2.55,3.61 0.72,1.92 -0.61,-0.25 -2.66,-1.64 -2.02,0.6 -1.32,-0.44 -1.66,0.92 -1.41,-1.52 -1.16,0.58 -0.16,-0.26 -1.29,-2.13 -2.08,-0.26 -0.27,-1.37 -1.92,-0.49 -0.42,1.13 -1.52,-0.9 0.17,-1.21 -2.09,-0.39 z",PK:"m 686.24,352.01 2.07,1.63 0.83,2.66 4.61,1.39 -2.71,2.86 -3.12,0.51 -4.26,-0.83 -1.37,1.46 0.99,2.95 0.97,2.25 2.27,1.63 -2.39,1.91 0.04,2.33 -2.72,3.24 -1.76,3.26 -2.93,3.32 -3.26,-0.24 -3.09,3.3 1.84,1.4 0.32,2.39 1.57,1.56 0.56,2.64 -6.17,-0.01 -1.87,2.04 -2.05,-0.77 -0.84,-2.2 -2.17,-2.34 -5.16,0.58 -4.56,0.05 -3.95,0.44 1.06,-3.6 4.04,-1.61 -0.23,-1.44 -1.34,-0.51 -0.08,-2.77 -2.68,-1.4 -1.13,-1.93 -1.38,-1.68 4.69,1.64 2.81,-0.48 1.67,0.4 0.57,-0.7 1.95,0.28 3.65,-1.33 0.1,-2.75 1.56,-1.84 2.09,0 0.3,-0.91 2.15,-0.43 1.03,0.3 1.1,-0.92 -0.15,-1.98 1.19,-2 1.78,-0.85 -1.1,-2.22 2.67,0.11 0.77,-1.22 -0.12,-1.3 1.4,-1.43 -0.33,-1.7 -0.66,-1.46 1.64,-1.51 3.01,-0.73 3.22,-0.4 1.42,-0.65 z",PR:"m 289.66,411.14 1.43,0.26 0.51,0.58 -0.72,0.74 -2.11,-0.02 -1.64,0.1 -0.16,-1.25 0.39,-0.43 z",PS:"m 575.17,368.12 0,2.01 -0.42,0.96 -1.32,0.45 0.13,-0.86 0.71,-0.46 -0.7,-0.36 0.58,-2.2 z",PT:"m 450.17,334.81 1.02,-0.95 1.14,-0.55 0.71,1.84 1.65,-0.01 0.48,-0.47 1.64,0.13 0.78,1.88 -1.3,1 -0.03,2.88 -0.46,0.53 -0.11,1.72 -1.21,0.3 1.12,2.17 -0.77,2.35 0.96,1.06 -0.38,0.96 -1.04,1.32 0.23,1.16 -1.12,0.91 -1.48,-0.49 -1.45,0.38 0.43,-2.74 -0.26,-2.18 -1.26,-0.33 -0.67,-1.35 0.23,-2.36 1.11,-1.31 0.2,-1.47 0.59,-2.21 -0.07,-1.57 -0.56,-1.34 z",PY:"m 299.74,527.24 1.11,-3.59 0.07,-1.6 1.34,-2.62 4.89,-0.86 2.6,0.05 2.62,1.51 0.04,0.91 0.83,1.66 -0.18,4.06 2.96,0.58 1.14,-0.59 1.89,0.82 0.53,0.9 0.26,2.77 0.33,1.18 1.04,0.13 1.05,-0.49 1.01,0.55 0,1.68 -0.38,1.82 -0.55,1.78 -0.46,2.75 -2.54,2.4 -2.22,0.5 -3.15,-0.48 -2.82,-0.85 2.76,-4.73 -0.41,-1.37 -2.88,-1.2 -3.43,-2.26 -2.29,-0.46 z",QA:"m 617.97,392.41 -0.19,-2.24 0.76,-1.62 0.76,-0.34 0.85,0.97 0.05,1.81 -0.61,1.81 -0.78,0.22 z",RO:"m 539.18,311.11 1.21,-0.89 1.74,0.46 1.79,0.02 1.3,1.01 0.96,-0.64 2.07,-0.4 0.71,-0.98 1.18,0.01 0.85,0.4 0.87,1.24 0.89,1.75 1.62,2.44 0.09,1.79 -0.3,1.72 0.51,1.83 1.25,0.73 1.31,-0.64 1.28,0.68 0.06,1.03 -1.36,0.84 -0.85,-0.36 -0.78,4.71 -1.65,-0.41 -2.04,-1.41 -3.3,0.9 -1.39,0.99 -4.12,-0.2 -2.16,-0.61 -1.08,0.29 -0.81,-1.6 -0.51,-0.68 0.65,-0.66 -0.7,-0.49 -0.88,0.88 -1.63,-1.14 -0.22,-1.63 -1.71,-0.94 -0.31,-1.27 -1.52,-1.58 2.25,-0.76 1.69,-2.76 1.33,-2.8 z",RS:"m 534.03,321.15 1.71,0.94 0.22,1.63 1.63,1.14 0.88,-0.88 0.7,0.49 -0.65,0.66 0.51,0.68 -0.69,0.88 0.25,1.42 1.36,1.66 -1.07,1.19 -0.47,1.21 0.31,0.45 -0.47,0.54 -1.29,0.06 -0.96,0.22 -0.09,-0.28 0.33,-0.45 0.32,-0.93 -0.4,0.02 -0.55,-0.7 -0.46,-0.18 -0.36,-0.61 -0.53,-0.24 -0.4,-0.54 -0.5,0.22 -0.39,1.26 -0.67,0.28 0.23,-0.33 -1.07,-0.79 -0.92,-0.41 -0.41,-0.54 -0.74,-0.66 0.66,-0.17 0.41,-1.82 -1.35,-1.5 0.7,-1.72 -1.02,0.01 1.08,-1.49 -0.89,-1.14 -0.68,-1.55 2.15,-1.05 1.75,0.17 1.52,1.58 z",RU:"m 1008.52,216 -2.78,2.97 -4.6,0.7 -0.07,6.46 -1.12,1.35 -2.63,-0.19 -2.14,-2.26 -3.73,-1.92 -0.63,-2.89 -2.85,-1.1 -3.19,0.87 -1.52,-2.37 0.61,-2.55 -3.36,1.64 1.26,3.19 -1.59,2.83 -0.02,0.04 -3.6,2.89 -3.63,-0.48 2.53,3.44 1.67,5.2 1.29,1.67 0.33,2.53 -0.72,1.6 -5.23,-1.32 -7.84,4.51 -2.49,0.69 -4.29,4.1 -4.07,3.5 -1.03,2.55 -4.01,-3.9 -7.31,4.42 -1.28,-2.08 -2.7,2.39 -3.75,-0.76 -0.9,3.63 -3.36,5.22 0.1,2.14 3.19,1.17 -0.38,7.46 -2.6,0.19 -1.2,4.15 1.17,2.1 -4.9,2.47 -0.97,5.4 -4.18,1.14 -0.84,4.66 -4.04,4.18 -1.04,-3.08 -1.2,-6.69 -1.56,-10.65 1.35,-6.95 2.37,-3.07 0.15,-2.44 4.36,-1.18 5.01,-6.78 4.83,-5.73 5.04,-4.57 2.25,-8.37 -3.41,0.51 -1.68,4.92 -7.11,6.36 -2.3,-7.14 -7.24,2 -7.02,9.56 2.32,3.38 -6.26,1.42 -4.33,0.56 0.2,-3.95 -4.36,-0.84 -3.47,2.7 -8.57,-0.94 -9.22,1.62 -9.08,10.33 -10.75,11.78 4.42,0.61 1.38,3 2.72,1.05 1.79,-2.38 3.08,0.31 4.05,5.19 0.09,3.92 -2.19,4.51 -0.24,5.27 -1.26,6.85 -4.23,6.01 -0.94,2.82 -3.81,4.66 -3.78,4.53 -1.81,2.28 -3.74,2.25 -1.77,0.05 -1.76,-1.86 -3.76,2.79 -0.44,1.26 -0.39,-0.66 -0.02,-1.93 1.43,-0.1 0.4,-4.55 -0.74,-3.36 2.41,-1.4 3.4,0.7 1.89,-3.89 0.96,-4.46 1.09,-1.51 1.47,-3.76 -4.63,1.24 -2.43,1.65 -4.26,0 -1.13,-3.95 -3.32,-3.03 -4.88,-1.38 -1.04,-4.28 -0.98,-2.73 -1.05,-1.94 -1.73,-4.61 -2.46,-1.71 -4.2,-1.39 -3.72,0.13 -3.48,0.84 -2.32,2.31 1.54,1.1 0.04,2.52 -1.56,1.45 -2.53,4.72 0.03,1.93 -3.95,2.74 -3.37,-1.63 -3.35,0.36 -1.47,-1.46 -1.68,-0.47 -4.11,3.06 -3.69,0.71 -2.58,1.06 -3.53,-0.7 -2.6,0.04 -1.7,-2.2 -2.75,-2.09 -2.81,-0.58 -3.55,0.57 -2.65,0.81 -3.98,-1.84 -0.53,-3.32 -3.3,-1.15 -2.54,-0.53 -3.14,-1.87 -2.9,4.66 1.14,2.6 -2.73,3.03 -4.05,-1.09 -2.8,-0.16 -1.87,-2.04 -2.92,-0.06 -2.44,-1.35 -4.26,2.07 -5.35,3.74 -2.96,0.74 -1.1,0.35 -1.49,-2.63 -3.61,0.58 -1.19,-1.84 -1.96,-0.85 -1.35,-2.55 -1.55,-0.8 -4.03,1.14 -3.86,-2.57 -1.49,2.33 -6.27,-11.58 -3.58,-3.66 1.03,-1.5 -7.03,4.49 -2.69,0.27 0.23,-2.58 -3.6,-1.63 -2.93,1.17 -0.88,-5.01 -5.04,-1.06 -2.52,2.03 -7.02,1.79 -1.37,1.19 -10.49,1.66 -1.29,1.62 2.02,3.21 -2.69,1.2 0.53,1.25 -2.69,2.22 4.54,3.1 -0.7,2.11 -3.94,-0.19 -0.81,1.31 -3.59,-2.29 -4.45,0.09 -2.98,1.87 -3.32,-1.79 -6.18,-3.1 -4.38,0.12 -5.79,4.85 -0.35,3.19 -2.88,-2.53 -2.24,4.77 0.82,0.87 -1.62,3.21 2.38,2.84 2.08,-0.12 1.79,2.76 -0.28,2.1 1.42,0.66 -1.28,2.39 -2.72,0.66 -2.79,4.09 2.55,3.7 -0.28,2.59 3.06,4.46 -1.67,1.51 -0.48,0.95 -1.24,-0.25 -1.93,-2.27 -0.79,-0.13 -1.76,-0.87 -0.86,-1.55 -2.62,-0.79 -1.7,0.6 -0.49,-0.71 -3.82,-1.83 -4.13,-0.62 -2.37,-0.66 -0.34,0.45 -3.57,-3.27 -3.2,-1.48 -2.42,-2.32 2.04,-0.64 2.33,-3.35 -1.57,-1.6 4.13,-1.67 -0.07,-0.9 -2.52,0.66 0.09,-1.83 1.45,-1.16 2.71,-0.31 0.44,-1.4 -0.62,-2.33 1.14,-2.23 -0.03,-1.26 -4.13,-1.41 -1.64,0.05 -1.73,-2.04 -2.15,0.69 -3.56,-1.54 0.06,-0.87 -1,-1.93 -2.24,-0.22 -0.23,-1.39 0.7,-0.91 -1.79,-2.58 -2.91,0.44 -0.85,-0.23 -0.71,1.04 -1.05,-0.18 -0.69,-2.94 -0.66,-1.54 0.54,-0.44 2.26,0.16 1.09,-1.02 -0.81,-1.25 -1.89,-0.83 0.17,-0.86 -1.14,-0.87 -1.76,-3.15 0.6,-1.31 -0.27,-2.31 -2.74,-1.18 -1.47,0.59 -0.4,-1.24 -2.95,-1.26 -0.9,-2.99 -0.24,-2.49 -1.35,-1.19 1.2,-1.66 -0.83,-4.96 2,-3.13 -0.42,-0.96 3.19,-3.07 -2.94,-2.68 6,-7.41 2.6,-3.45 1.05,-3.1 -4.15,-4.26 1.15,-4.15 -2.52,-4.85 1.89,-5.76 -3.26,-7.96 2.59,-5.48 -4.29,-4.99 0.41,-5.4 2.26,-0.72 4.77,-3.19 2.89,-2.81 4.61,4.86 7.68,1.88 10.59,8.65 2.15,3.51 0.19,4.8 -3.11,3.69 -4.58,1.85 -12.52,-5.31 -2.06,0.9 4.57,5.1 0.18,3.15 0.18,6.75 3.61,1.97 2.19,1.66 0.36,-3.11 -1.69,-2.8 1.78,-2.51 6.78,4.1 2.36,-1.59 -1.89,-4.88 6.53,-6.74 2.59,0.4 2.62,2.43 1.63,-4.81 -2.34,-4.28 1.37,-4.41 -2.06,-4.69 7.84,2.44 1.6,4.18 -3.55,0.91 0.02,4.04 2.21,2.44 4.33,-1.54 0.69,-4.61 5.86,-3.52 9.79,-6.54 2.11,0.38 -2.76,4.64 3.48,0.78 2.01,-2.58 5.25,-0.21 4.16,-3.19 3.2,4.62 3.19,-5.09 -2.94,-4.58 1.46,-2.66 8.28,2.44 3.88,2.49 10.16,8.8 1.88,-3.97 -2.85,-4.11 -0.08,-1.68 -3.38,-0.78 0.92,-3.83 -1.5,-6.49 -0.08,-2.74 5.17,-7.99 1.84,-8.42 2.08,-1.88 7.42,2.51 0.58,5.18 -2.66,7.28 1.74,2.78 0.9,5.94 -0.64,11.07 3.09,4.73 -1.2,5.01 -5.49,10.2 3.21,1.02 1.12,-2.51 3.08,-1.82 0.74,-3.55 2.43,-3.49 -1.63,-4.26 1.31,-5.08 -3.07,-0.64 -0.67,-4.42 2.24,-8.28 -3.64,-7.03 5.02,-6.04 -0.65,-6.62 1.4,-0.22 1.47,5.19 -1.11,8.67 3,1.59 -1.28,-6.37 4.69,-3.58 5.82,-0.49 5.18,5.18 -2.49,-7.62 -0.28,-10.28 4.88,-2.02 6.74,0.44 6.08,-1.32 -2.28,-5.38 3.25,-7.02 3.22,-0.3 5.45,-5.51 7.4,-1.51 0.94,-3.15 7.36,-1.08 2.29,2.61 6.29,-6.24 5.15,0.2 0.77,-5.24 2.68,-5.33 6.62,-5.31 4.81,4.21 -3.82,3.13 6.35,1.92 0.76,6.03 2.56,-2.94 8.2,0.16 6.32,5.84 2.25,4.35 -0.7,5.85 -3.1,3.24 -7.37,5.92 -2.11,3.08 3.48,1.43 4.15,2.55 2.52,-1.91 1.43,6.39 1.23,-2.56 4.48,-1.57 9,1.65 0.68,4.58 11.72,1.43 0.16,-7.47 5.95,1.74 4.48,-0.05 4.53,5.14 1.29,6.04 -1.66,3.84 3.52,6.98 4.41,3.49 2.71,-9.18 4.5,4 4.78,-2.38 5.43,2.72 2.07,-2.47 4.59,1.24 -2.02,-8.4 3.7,-4.07 25.32,6.06 2.39,5.35 7.34,6.65 11.32,-1.62 5.58,1.41 2.33,3.5 -0.34,6.02 3.45,2.29 3.75,-1.64 4.97,-0.21 5.29,1.57 5.31,-0.89 4.88,6.99 3.47,-2.48 -2.27,-5.07 1.25,-3.62 8.95,2.29 5.83,-0.49 8.06,3.84 3.92,3.44 6.87,5.86 7.35,7.34 -0.24,4.44 1.89,1.74 -0.65,-5.15 7.61,1.07 5.55,6.53 z m -127.43,90.5 -2.82,-7.68 -1.16,-4.51 0.07,-4.5 -0.97,-4.5 -0.73,-3.15 -1.25,0.67 1.11,2.21 -2.59,2.17 -0.25,6.3 1.64,4.41 -0.12,5.85 -0.65,3.24 0.32,4.54 -0.31,4.01 0.52,3.4 1.84,-3.13 2.13,2.44 0.08,-2.84 -2.73,-4.23 1.72,-6.11 4.15,1.41 z m -343.02,-27.48 -2.94,-0.86 -3.87,1.58 -0.64,2.13 3.45,0.55 5.16,-0.07 -0.22,-1.23 0.3,-1.33 -1.24,-0.77 z M 980.2,178.9 l 3.66,-0.52 2.89,-2.06 0.24,-1.19 -4.06,-2.51 -2.38,-0.02 -0.36,0.37 -3.57,3.64 0.5,2.73 3.08,-0.44 z m -109.88,-27.09 -2.66,3.92 0.49,0.52 5.75,1.08 4.25,-0.07 -0.34,-2.57 -3.98,-3.81 -3.51,0.93 z m 24.57,-9.53 3.24,-4.25 -7.04,-2.88 -5.23,-1.68 -0.67,3.59 5.21,4.27 4.49,0.95 z m -25.13,-1.69 10.33,0.3 2.21,-8.14 -10.13,-6.07 -7.4,-0.51 -3.7,2.18 -1.51,7.75 5.55,7.01 4.65,-2.52 z m -247.12,25.94 -2.87,1.96 0.41,4.83 5.08,2.35 0.74,3.82 9.16,1.1 1.66,-0.74 -5.36,-7.11 -0.57,-7.52 4.39,-9.14 4.18,-9.82 8.71,-10.17 8.56,-5.34 9.93,-5.74 1.88,-3.71 -1.95,-4.83 -5.46,1.6 -4.8,4.49 -9.33,2.22 -9.26,7.41 -6.27,5.85 0.76,4.87 -6.71,9.03 2.58,1.22 -5.56,8.27 0.1,5.1 z m 147.48,-67.94 0.83,-5.72 -7.11,-8.34 -2.11,-0.98 -2.3,1.7 -5.12,18.6 15.81,-5.26 z m -164.23,-29.31 3.04,3.88 3.28,-2.69 0.39,-2.72 2.52,-1.27 3.76,-2.23 1.08,-2.62 -4.16,-3.85 -2.64,2.9 -1.61,4.12 -0.57,-4.65 -4.26,0.21 -5.47,3.14 6.24,0.52 -1.6,5.26 z m 131.25,13.04 4.65,5.73 7.81,4.2 6.12,-1.8 0.69,-13.62 -6.46,-16.04 -5.45,-9.02 -6.07,4.11 -7.28,11.83 3.83,3.27 2.16,11.34 z",RW:"m 560.79,466.8 1.12,1.57 -0.17,1.64 -0.8,0.35 -1.49,-0.18 -0.86,1.59 -1.71,-0.22 0.26,-1.53 0.39,-0.21 0.1,-1.66 0.81,-0.78 0.68,0.29 z",SA:"m 595.45,417.47 -0.36,-1.24 -0.85,-0.88 -0.22,-1.17 -1.44,-1.04 -1.5,-2.46 -0.79,-2.41 -1.94,-2.04 -1.25,-0.48 -1.86,-2.85 -0.32,-2.08 0.12,-1.79 -1.61,-3.36 -1.31,-1.19 -1.52,-0.63 -0.92,-1.76 0.15,-0.69 -0.78,-1.6 -0.82,-0.69 -1.09,-2.32 -1.71,-2.52 -1.43,-2.16 -1.39,0.01 0.43,-1.74 0.13,-1.11 0.34,-1.28 3.12,0.51 1.22,-0.98 0.67,-1.16 2.14,-0.44 0.46,-1.09 0.93,-0.54 -2.8,-3.26 5.62,-1.65 0.53,-0.49 3.38,0.89 4.18,2.29 7.9,6.49 5.21,0.26 2.5,0.31 0.7,1.51 1.98,-0.08 1.1,2.73 1.38,0.71 0.48,1.11 1.91,1.31 0.17,1.29 -0.28,1.03 0.36,1.04 0.8,0.87 0.38,1.01 0.42,0.75 0.84,0.61 0.78,-0.22 0.53,1.17 0.11,0.71 1.08,3.08 8.42,1.52 0.57,-0.64 1.28,2.14 -1.87,5.97 -8.41,2.96 -8.08,1.13 -2.62,1.32 -2.01,3.07 -1.31,0.48 -0.7,-0.97 -1.07,0.15 -2.71,-0.29 -0.52,-0.3 -3.23,0.07 -0.76,0.27 -1.15,-0.76 -0.75,1.43 0.29,1.23 z",SB:"m 930.06,493 0.78,0.97 -1.96,-0.02 -1.07,-1.74 1.67,0.69 0.58,0.1 z m -3.55,-1.73 -1.09,0.06 -1.72,-0.29 -0.59,-0.44 0.18,-1.12 1.85,0.44 0.91,0.59 0.46,0.76 z m 2.32,-0.77 -0.42,0.52 -2.08,-2.45 -0.58,-1.68 h 0.95 l 1.01,2.25 1.12,1.36 z m -5.06,-3.56 0.12,0.57 -2.2,-1.19 -1.54,-1.01 -1.05,-0.94 0.42,-0.29 1.29,0.67 2.3,1.29 0.66,0.9 z m -6.55,-2.78 -0.56,0.16 -1.23,-0.64 -1.15,-1.15 0.14,-0.47 1.67,1.18 1.13,0.92 z",SD:"m 570.73,437.15 -0.39,-0.05 0.05,-1.41 -0.34,-0.97 -1.44,-1.12 -0.34,-2.05 0.34,-2.1 -1.3,-0.19 -0.19,0.63 -1.69,0.15 0.68,0.83 0.24,1.71 -1.54,1.56 -1.4,2.04 -1.44,0.29 -2.36,-1.65 -1.06,0.58 -0.29,0.83 -1.44,0.53 -0.1,0.58 -2.79,0 -0.39,-0.58 -2.02,-0.1 -1.01,0.49 -0.77,-0.25 -1.44,-1.65 -0.48,-0.77 -2.03,0.39 -0.77,1.31 -0.72,2.52 -0.96,0.53 -0.86,0.31 -0.23,-0.14 -0.97,-0.81 -0.18,-0.87 0.45,-1.18 0,-1.15 -1.62,-1.77 -0.32,-1.22 0.03,-0.69 -1.03,-0.83 -0.03,-1.66 -0.58,-1.1 -0.99,0.17 0.28,-1.05 0.73,-1.2 -0.32,-1.18 0.92,-0.88 -0.58,-0.67 0.74,-1.78 1.28,-2.13 2.42,0.2 -0.14,-11.61 0.04,-1.24 3.22,-0.01 0,-5.96 11.27,0 10.88,0 11.12,0 0.9,2.94 -0.61,0.54 0.41,3.06 1.03,3.52 1.06,0.73 1.54,1.08 -1.42,1.67 -2.07,0.48 -0.88,0.9 -0.27,1.93 -1.21,4.25 0.3,1.15 -0.45,2.47 -1.14,2.81 -1.69,1.42 -1.2,2.17 -0.29,1.16 -1.32,0.8 -0.83,2.96 z",SE:"m 537.7,217.74 -2.72,4.69 0.44,4.02 -4.46,5.13 -5.41,5.34 -2.05,8.41 2,4.07 2.68,3.14 -2.57,6.23 -2.92,1.26 -1.07,8.84 -1.59,4.76 -3.4,-0.49 -1.59,3.95 -3.25,0.23 -0.89,-4.71 -2.35,-5.81 -2.13,-7.5 1.24,-3.15 2.33,-3.81 0.93,-6.73 -1.79,-2.98 -0.18,-8.04 1.83,-5.91 2.78,0.11 0.97,-2.55 -1.02,-2.23 4.35,-9.5 2.81,-7.87 1.85,-5.24 2.69,0.02 0.75,-4.21 5.28,1.22 0.41,-5.08 1.74,-0.33 3.74,3.81 4.37,5.15 0.08,11.12 0.94,2.7 z",SI:"m 514.21,316.76 2.32,0.31 1.42,-0.92 2.45,-0.1 0.53,-0.69 0.47,0.05 0.55,1.37 -2.23,1.08 -0.28,1.62 -0.97,0.41 0.01,1.12 -1.1,-0.08 -0.95,-0.65 -0.52,0.68 -1.95,-0.14 0.62,-0.36 -0.67,-1.71 z",SJ:"m 544.83,104.74 -6.26,5.36 -4.95,-3.02 1.94,-3.42 -1.69,-4.34 5.81,-2.78 1.11,5.18 4.04,3.02 z m -18.15,-26.68 9.23,11.29 -7.06,5.66 -1.56,10.09 -2.46,2.49 -1.33,10.51 -3.38,0.48 -6.03,-7.64 2.54,-4.62 -4.2,-3.86 -5.46,-11.82 -2.18,-11.79 7.64,-5.69 1.54,5.56 3.99,-0.22 1.06,-5.43 4.12,-0.56 3.54,5.55 z m 20.17,-11.46 5.5,5.8 -4.16,8.52 -8.13,1.81 -8.27,-2.56 -0.5,-4.32 -4.02,-0.28 -3.07,-7.48 8.66,-4.72 4.07,4.08 2.84,-5.09 7.08,4.24 z",SK:"m 528.36,304.27 0.16,0.26 1.16,-0.58 1.41,1.52 1.66,-0.92 1.32,0.44 2.02,-0.6 2.66,1.64 -0.77,1.11 -0.55,1.71 -0.6,0.43 -3,-1.28 -0.92,0.25 -0.66,1 -1.32,0.52 -0.3,-0.27 -1.36,0.65 -1.12,0.13 -0.22,0.84 -2.36,0.51 -1.03,-0.46 -1.43,-1.07 -0.28,-1.45 0.23,-0.54 0.39,-0.93 1.25,0.07 0.95,-0.44 0.08,-0.39 0.54,-0.21 0.18,-0.97 0.64,-0.19 0.44,-0.77 z",SL:"m 443.43,444.69 -0.76,-0.21 -2.01,-1.13 -1.46,-1.5 -0.49,-1.03 -0.35,-2.08 1.5,-1.24 0.32,-0.79 0.48,-0.61 0.78,-0.06 0.65,-0.53 2.24,0 0.78,1.01 0.61,1.19 -0.09,0.82 0.45,0.74 -0.03,1.03 0.77,-0.16 -1.31,1.31 -1.26,1.53 -0.15,0.81 z",SN:"m 428.64,425.41 -1.16,-2.24 -1.4,-1.02 1.24,-0.55 1.36,-2.03 0.66,-1.49 0.96,-0.93 1.4,0.25 1.36,-0.63 1.57,-0.03 1.34,0.85 1.86,0.77 1.7,2.13 1.85,1.98 0.13,1.79 0.55,1.64 1.05,0.81 0.24,1.1 -0.13,0.89 -0.41,0.16 -1.52,-0.22 -0.21,0.31 -0.62,0.07 -2.02,-0.7 -1.35,-0.03 -5.18,-0.12 -0.75,0.32 -0.93,-0.09 -1.49,0.47 -0.46,-2.19 2.55,0.06 0.68,-0.4 0.5,-0.03 1.04,-0.66 1.2,0.61 1.22,0.05 1.21,-0.65 -0.56,-0.82 -0.93,0.48 -0.87,-0.01 -1.1,-0.71 -0.89,0.05 -0.64,0.67 z",SO:"m 618.88,430.68 -0.07,-0.79 -1.06,0.01 -1.33,0.98 -1.49,0.28 -1.29,0.42 -0.89,0.06 -1.6,0.1 -1,0.52 -1.39,0.19 -2.47,0.88 -3.05,0.33 -2.65,0.73 -1.39,-0.01 -1.26,-1.19 -0.55,-1.17 -0.91,-0.53 -1.04,1.52 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -2.45,3.17 0.03,10.15 1.66,2.29 0.63,-0.66 0.65,-1.46 3.07,-3.38 2.61,-2.12 4.2,-2.76 2.8,-2.26 3.3,-3.81 2.39,-3.13 2.41,-4.1 1.73,-3.59 1.35,-3.15 0.79,-3.05 0.6,-1.02 -0.01,-1.5 z",SR:"m 315.27,446.97 3.36,0.56 0.3,-0.51 2.27,-0.2 3.01,0.76 -1.46,2.4 0.22,1.91 1.11,1.66 -0.49,1.2 -0.25,1.27 -0.72,1.17 -1.6,-0.59 -1.33,0.29 -1.13,-0.25 -0.28,0.81 0.47,0.55 -0.25,0.57 -1.53,-0.23 -1.71,-2.42 -0.37,-1.57 -0.89,-0.01 -1.25,-2.02 0.52,-1.45 -0.15,-0.65 1.7,-0.73 z",SS:"m 570.73,437.15 0.03,2.2 -0.42,0.86 -1.48,0.07 -0.96,1.61 1.72,0.2 1.42,1.37 0.5,1.12 1.28,0.65 1.65,3.05 -1.9,1.84 -1.72,1.67 -1.73,1.28 -1.97,0 -2.26,0.65 -1.78,-0.63 -1.15,0.77 -2.47,-1.86 -0.67,-1.19 -1.56,0.59 -1.3,-0.19 -0.75,0.47 -1.26,-0.33 -1.69,-2.31 -0.45,-0.89 -2.1,-1.11 -0.71,-1.68 -1.17,-1.21 -1.88,-1.46 -0.03,-0.92 -1.53,-1.13 -1.91,-1.1 0.86,-0.31 0.96,-0.53 0.72,-2.52 0.77,-1.31 2.03,-0.39 0.48,0.77 1.44,1.65 0.77,0.25 1.01,-0.49 2.02,0.1 0.39,0.58 2.79,0 0.1,-0.58 1.44,-0.53 0.29,-0.83 1.06,-0.58 2.36,1.65 1.44,-0.29 1.4,-2.04 1.54,-1.56 -0.24,-1.71 -0.68,-0.83 1.69,-0.15 0.19,-0.63 1.3,0.19 -0.34,2.1 0.34,2.05 1.44,1.12 0.34,0.97 -0.05,1.41 z",SV:"m 229.34,426.01 -0.31,0.67 -1.62,-0.04 -1.01,-0.27 -1.16,-0.57 -1.56,-0.18 -0.79,-0.62 0.09,-0.42 0.96,-0.72 0.52,-0.32 -0.15,-0.34 0.66,-0.17 0.83,0.24 0.6,0.57 0.85,0.46 0.1,0.39 1.23,-0.34 0.58,0.2 0.38,0.31 z",SY:"m 584.27,364.85 -5.49,3.54 -3.12,-1.32 -0.06,-0.02 0.38,-0.5 -0.04,-1.37 0.69,-1.83 1.53,-1.27 -0.46,-1.32 -1.26,-0.18 -0.26,-2.61 0.68,-1.41 0.75,-0.75 0.75,-0.76 0.16,-1.94 0.91,0.68 3.09,-0.97 1.49,0.65 2.31,-0.01 3.22,-1.31 1.52,0.06 3.19,-0.54 -1.44,2.18 -1.54,0.86 0.27,2.52 -1.06,4.12 z",SZ:"m 565.43,540.99 -0.57,1.39 -1.64,0.33 -1.68,-1.69 -0.02,-1.08 0.76,-1.17 0.27,-0.9 0.81,-0.22 1.41,0.57 0.42,1.39 z",TD:"m 516.15,427.51 0.28,-1.34 -1.8,-0.07 0.01,-1.85 -1.17,-1.06 1.21,-3.8 3.58,-2.74 0.14,-3.79 1.08,-5.98 0.61,-1.28 -1.16,-1.02 -0.05,-0.95 -1.05,-0.78 -0.69,-4.67 2.83,-1.66 11.19,5.77 11.18,5.7 0.14,11.61 -2.42,-0.2 -1.28,2.13 -0.74,1.78 0.58,0.67 -0.92,0.88 0.32,1.18 -0.73,1.2 -0.28,1.05 0.99,-0.17 0.58,1.1 0.03,1.66 1.03,0.83 -0.03,0.69 -1.77,0.49 -1.43,1.14 -2.02,3.09 -2.64,1.31 -2.71,-0.18 -0.79,0.26 0.28,0.99 -1.47,0.99 -1.19,1.1 -3.53,1.07 -0.7,-0.63 -0.46,-0.06 -0.52,0.72 -2.32,0.22 0.44,-0.77 -0.88,-1.93 -0.4,-1.17 -1.22,-0.48 -1.65,-1.65 0.61,-1.33 1.28,0.28 0.79,-0.2 1.56,0.03 -1.52,-2.57 0.1,-1.89 -0.19,-1.89 z",TF:"m 668.79,619.28 1.8,1.33 2.65,0.54 0.1,0.81 -0.78,1.96 -4.31,0.28 -0.07,-2.29 0.42,-1.76 z",TG:"m 480.73,446.5 -2.25,0.59 -0.63,-0.98 -0.75,-1.78 -0.22,-1.4 0.62,-2.53 -0.7,-1.03 -0.27,-2.22 0,-2.05 -1.17,-1.46 0.21,-0.89 2.46,0.06 -0.36,1.5 0.85,0.83 0.98,0.99 0.1,1.39 0.57,0.58 -0.13,6.46 z",TH:"m 763.14,429.43 -2.52,-1.31 -2.4,0.06 0.41,-2.25 -2.47,0.02 -0.22,3.14 -1.51,4.15 -0.91,2.5 0.19,2.05 1.82,0.09 1.14,2.57 0.51,2.43 1.56,1.61 1.7,0.33 1.45,1.45 -0.91,1.15 -1.86,0.34 -0.22,-1.44 -2.28,-1.23 -0.49,0.5 -1.11,-1.07 -0.48,-1.39 -1.49,-1.59 -1.36,-1.33 -0.46,1.65 -0.53,-1.56 0.31,-1.76 0.82,-2.71 1.36,-2.91 1.54,-2.65 -1.1,-2.6 0.05,-1.33 -0.32,-1.6 -1.87,-2.28 -0.67,-1.45 0.97,-0.53 1.02,-2.52 -1.14,-1.92 -1.78,-2.13 -1.36,-2.57 1.18,-0.53 1.28,-3.19 1.98,-0.14 1.64,-1.28 1.6,-0.69 1.22,0.92 0.16,1.78 1.89,0.13 -0.69,3.11 0.07,2.62 2.95,-1.74 0.84,0.51 1.65,-0.08 0.56,-1.02 2.12,0.2 2.13,2.38 0.18,2.87 2.27,2.53 -0.13,2.44 -0.91,1.3 -2.63,-0.41 -3.62,0.55 -1.8,2.38 z", -TJ:"m 674.62,340.87 -1.03,1.13 -3.05,-0.61 -0.27,2.1 3.04,-0.28 3.47,1.17 5.3,-0.55 0.71,3.33 0.92,-0.36 1.7,0.81 -0.09,1.38 0.42,2.01 -2.9,0 -1.93,-0.26 -1.74,1.57 -1.25,0.34 -0.98,0.74 -1.11,-1.15 0.27,-2.95 -0.85,-0.17 0.3,-1.09 -1.51,-0.8 -1.21,1.23 -0.3,1.43 -0.43,0.52 -1.68,-0.07 -0.9,1.6 -0.95,-0.67 -2.03,1.12 -0.85,-0.42 1.57,-3.57 -0.6,-2.66 -2.06,-0.86 0.73,-1.59 2.34,0.17 1.33,-2.01 0.89,-2.35 3.75,-0.86 -0.58,1.71 0.4,1.02 z",TL:"m 825.9,488.5 0.33,-0.66 2.41,-0.63 1.96,-0.1 0.87,-0.35 1.06,0.35 -1.03,0.76 -2.92,1.23 -2.35,0.82 -0.05,-0.86 z",TM:"m 647.13,357.15 -0.25,-2.91 -2.09,-0.12 -3.2,-3.09 -2.24,-0.39 -3.1,-1.79 -2,-0.33 -1.23,0.66 -1.87,-0.1 -1.99,2.02 -2.47,0.68 -0.52,-2.49 0.41,-3.73 -2.19,-1.22 0.72,-2.48 -1.86,-0.22 0.62,-3.09 2.64,0.91 2.47,-1.19 -2.05,-2.23 -0.8,-2.14 -2.26,0.96 -0.28,2.73 -0.88,-2.41 1.24,-1.25 3.18,-0.79 1.9,1.06 1.96,2.93 1.44,-0.18 3.16,-0.05 -0.46,-1.88 2.4,-1.3 2.36,-2.2 3.78,2 0.3,2.99 1.07,0.77 3.03,-0.17 0.94,0.67 1.38,3.79 3.21,2.51 1.83,1.69 2.93,1.75 3.73,1.52 -0.08,2.16 -0.84,-0.11 -1.33,-0.94 -0.44,1.25 -2.36,0.68 -0.56,2.79 -1.58,1.05 -2.21,0.52 -0.59,1.55 -2.11,0.46 z",TN:"m 502.09,374.94 -1.2,-5.86 -1.72,-1.33 -0.03,-0.81 -2.29,-1.98 -0.25,-2.53 1.73,-1.88 0.66,-2.82 -0.45,-3.28 0.57,-1.79 3.06,-1.41 1.96,0.42 -0.08,1.77 2.38,-1.29 0.2,0.67 -1.41,1.71 -0.01,1.6 0.97,0.85 -0.37,2.96 -1.85,1.71 0.53,1.83 1.45,0.06 0.71,1.59 1.07,0.52 -0.16,2.55 -1.37,0.95 -0.86,1.05 -1.93,1.26 0.3,1.35 -0.24,1.38 z",TR:"m 579,336.85 4.02,1.43 3.27,-0.57 2.41,0.33 3.31,-1.94 2.99,-0.18 2.7,1.83 0.48,1.3 -0.27,1.79 2.08,0.91 1.1,1.06 -1.92,1.03 0.88,4.11 -0.55,1.1 1.53,2.82 -1.34,0.59 -0.98,-0.89 -3.26,-0.45 -1.2,0.55 -3.19,0.54 -1.51,-0.06 -3.23,1.31 -2.31,0.01 -1.49,-0.66 -3.09,0.97 -0.92,-0.68 -0.15,1.94 -0.75,0.76 -0.75,0.76 -1.03,-1.57 1.06,-1.3 -1.71,0.3 -2.35,-0.8 -1.93,2 -4.26,0.39 -2.27,-1.86 -3.02,-0.12 -0.65,1.44 -1.94,0.41 -2.71,-1.85 -3.06,0.06 -1.66,-3.48 -2.05,-1.96 1.36,-2.78 -1.78,-1.72 3.11,-3.48 4.32,-0.15 1.18,-2.81 5.34,0.49 3.37,-2.42 3.27,-1.06 4.64,-0.08 4.91,2.64 z m -27.25,2.39 -2.34,1.98 -0.88,-1.71 0.04,-0.76 0.67,-0.41 0.87,-2.33 -1.37,-0.99 2.86,-1.18 2.41,0.5 0.33,1.44 2.45,1.2 -0.51,0.91 -3.33,0.2 -1.2,1.15 z",TT:"m 302.56,433.49 1.61,-0.37 0.59,0.1 -0.11,2.11 -2.34,0.31 -0.51,-0.25 0.82,-0.78 z",TW:"m 816.95,393.52 -1.69,4.87 -1.2,2.48 -1.48,-2.55 -0.32,-2.25 1.65,-3 2.25,-2.32 1.28,0.91 z",TZ:"m 570.56,466.28 0.48,0.31 10.16,5.67 0.2,1.62 4.02,2.79 -1.29,3.45 0.16,1.59 1.8,1.02 0.08,0.73 -0.77,1.7 0.16,0.85 -0.18,1.35 0.98,1.76 1.16,2.79 1.02,0.62 -2.23,1.64 -3.06,1.1 -1.68,-0.04 -1,0.85 -1.95,0.07 -0.74,0.36 -3.37,-0.8 -2.11,0.23 -0.78,-3.86 -0.95,-1.32 -0.57,-0.78 -2.74,-0.52 -1.6,-0.85 -1.78,-0.47 -1.12,-0.48 -1.17,-0.71 -1.51,-3.55 -1.63,-1.57 -0.56,-1.62 0.28,-1.46 -0.5,-2.57 1.16,-0.13 1.01,-1.01 1.1,-1.46 0.69,-0.58 -0.03,-0.91 -0.6,-0.63 -0.16,-1.1 0.8,-0.35 0.17,-1.64 -1.12,-1.57 0.99,-0.34 3.07,0.04 z",UA:"m 564.63,292.74 1.04,0.19 0.71,-1.04 0.85,0.23 2.91,-0.44 1.79,2.57 -0.7,0.92 0.23,1.39 2.24,0.21 1,1.93 -0.06,0.87 3.56,1.54 2.15,-0.69 1.73,2.04 1.64,-0.04 4.13,1.4 0.03,1.27 -1.13,2.23 0.61,2.33 -0.44,1.39 -2.71,0.31 -1.44,1.16 -0.09,1.83 -2.24,0.33 -1.87,1.32 -2.62,0.21 -2.42,1.52 -1.32,1.03 1.49,1.47 1.37,0.96 2.86,-0.24 -0.55,1.42 -3.07,0.68 -3.81,2.27 -1.55,-0.79 0.61,-1.85 -3.06,-1.16 0.5,-0.77 3.16,-1.63 -0.4,-0.81 -0.45,0.41 -0.44,-0.22 -4.36,-1.02 -0.19,-1.51 -2.6,0.5 -1.04,2.23 -2.17,2.95 -1.28,-0.68 -1.31,0.64 -1.25,-0.73 0.7,-0.44 0.49,-1.37 0.77,-1.29 -0.2,-0.72 0.59,-0.32 0.27,0.56 1.66,0.11 0.74,-0.29 -0.52,-0.42 0.19,-0.6 -0.98,-1.04 -0.4,-1.72 -1.02,-0.67 0.2,-1.41 -1.27,-1.12 -1.15,-0.16 -2.07,-1.31 -1.86,0.42 -0.67,0.62 -1.18,-0.01 -0.71,0.98 -2.07,0.4 -0.95,0.64 -1.31,-1.01 -1.79,-0.02 -1.74,-0.46 -1.21,0.89 -0.2,-1.12 -1.55,-1.14 0.55,-1.71 0.77,-1.1 0.62,0.24 -0.73,-1.92 2.55,-3.61 1.39,-0.51 0.3,-1.24 -1.41,-3.89 1.34,-0.17 1.54,-1.23 2.17,-0.1 2.83,0.36 3.13,1.08 2.21,0.09 1.05,0.65 1.05,-0.78 0.74,1.05 2.53,-0.22 1.11,0.43 0.19,-2.26 0.86,-1 z",UG:"m 564.85,466.5 -3.07,-0.04 -0.99,0.34 -1.67,0.86 -0.68,-0.29 0.02,-2.1 0.65,-1.06 0.16,-2.24 0.59,-1.29 1.07,-1.46 1.08,-0.74 0.9,-0.99 -1.12,-0.37 0.17,-3.26 1.15,-0.77 1.78,0.63 2.26,-0.65 1.97,0 1.73,-1.28 1.33,1.94 0.33,1.4 1.23,3.2 -1.02,2.03 -1.38,1.84 -0.8,1.13 0.02,2.95 z",US:"m 109.5,280.05 0,0 -1.54,-1.83 -2.47,-1.57 -0.79,-4.36 -3.61,-4.13 -1.51,-4.94 -2.69,-0.34 -4.46,-0.13 -3.29,-1.54 -5.8,-5.64 -2.68,-1.05 -4.9,-1.99 -3.88,0.48 -5.51,-2.59 -3.33,-2.43 -3.11,1.21 0.58,3.93 -1.55,0.36 -3.24,1.16 -2.47,1.86 -3.11,1.16 -0.4,-3.24 1.26,-5.53 2.98,-1.77 -0.77,-1.46 -3.57,3.22 -1.91,3.77 -4.04,3.95 2.05,2.65 -2.65,3.85 -3.01,2.21 -2.81,1.59 -0.69,2.29 -4.38,2.63 -0.89,2.36 -3.28,2.13 -1.92,-0.38 -2.62,1.38 -2.85,1.67 -2.33,1.63 -4.81,1.38 -0.44,-0.81 3.07,-2.27 2.74,-1.51 2.99,-2.71 3.48,-0.56 1.38,-2.06 3.89,-3.05 0.63,-1.03 2.07,-1.83 0.48,-4 1.43,-3.17 -3.23,1.64 -0.9,-0.93 -1.52,1.95 -1.83,-2.73 -0.76,1.94 -1.05,-2.7 -2.8,2.17 -1.72,0 -0.24,-3.23 0.51,-2.02 -1.81,-1.98 -3.65,1.07 -2.37,-2.63 -1.92,-1.36 -0.01,-3.25 -2.16,-2.48 1.08,-3.41 2.29,-3.37 1,-3.15 2.27,-0.45 1.92,0.99 2.26,-3.01 2.04,0.54 2.14,-1.96 -0.52,-2.92 -1.57,-1.16 2.08,-2.52 -1.72,0.07 -2.98,1.43 -0.85,1.43 -2.21,-1.43 -3.97,0.73 -4.11,-1.56 -1.18,-2.65 -3.55,-3.91 3.94,-2.87 6.25,-3.41 h 2.31 l -0.38,3.48 5.92,-0.27 -2.28,-4.34 -3.45,-2.72 -1.99,-3.64 -2.69,-3.17 -3.85,-2.38 1.57,-4.03 4.97,-0.25 3.54,-3.58 0.67,-3.92 2.86,-3.91 2.73,-0.95 5.31,-3.76 2.58,0.57 4.31,-4.61 4.24,1.83 2.03,3.87 1.25,-1.65 4.74,0.51 -0.17,1.95 4.29,1.43 2.86,-0.84 5.91,2.64 5.39,0.78 2.16,1.07 3.73,-1.34 4.25,2.46 3.05,1.13 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.6,2.32 z m 175.93,34.43 -1.25,-1.19 -1.88,0.7 -0.93,-1.08 -2.14,3.1 -0.86,3.15 -1,1.82 -1.19,0.62 -0.9,0.2 -0.28,0.98 -5.17,0 -4.26,0.03 -1.27,0.73 -2.87,2.73 0.29,0.54 0.17,1.51 -2.1,1.27 -2.3,-0.32 -2.2,-0.14 -1.33,0.44 0.25,1.15 0,0 0.05,0.37 -2.42,2.27 -2.11,1.09 -1.44,0.51 -1.66,1.03 -2.03,0.5 -1.4,-0.19 -1.73,-0.77 0.96,-1.45 0.62,-1.32 1.32,-2.09 -0.14,-1.57 -0.5,-2.24 -1.04,-0.39 -1.74,1.7 -0.56,-0.03 -0.14,-0.97 1.54,-1.56 0.26,-1.79 -0.23,-1.79 -2.08,-1.55 -2.38,-0.8 -0.39,1.52 -0.62,0.4 -0.5,1.95 -0.26,-1.33 -1.12,0.95 -0.7,1.32 -0.73,1.92 -0.14,1.64 0.93,2.38 -0.08,2.51 -1.14,1.84 -0.57,0.52 -0.76,0.41 -0.95,0.02 -0.26,-0.25 -0.76,-1.98 -0.02,-0.98 0.08,-0.94 -0.35,-1.87 0.53,-2.18 0.63,-2.71 1.46,-3.03 -0.42,0.01 -2.06,2.54 -0.38,-0.46 1.1,-1.42 1.67,-2.57 1.91,-0.36 2.19,-0.8 2.21,0.42 0.09,0.02 2.47,-0.36 -1.4,-1.61 -0.75,-0.13 -0.86,-0.16 -0.59,-1.14 -2.75,0.36 -2.49,0.9 -1.97,-1.55 -1.59,-0.52 0.9,-2.17 -2.48,1.37 -2.25,1.33 -2.16,1.04 -1.72,-1.4 -2.81,0.85 0.01,-0.6 1.9,-1.73 1.99,-1.65 2.86,-1.37 -3.45,-1.09 -2.27,0.55 -2.72,-1.3 -2.86,-0.67 -1.96,-0.26 -0.87,-0.72 -0.5,-2.35 -0.95,0.02 -0.01,1.64 -5.8,0 -9.59,0 -9.53,0 -8.42,0 h -8.41 -8.27 -8.55 -2.76 -8.32 -7.96 l 0.95,3.47 0.45,3.41 -0.69,1.09 -1.49,-3.91 -4.05,-1.42 -0.34,0.82 0.82,1.94 0.89,3.53 0.51,5.42 -0.34,3.59 -0.34,3.54 -1.1,3.61 0.9,2.9 0.1,3.2 -0.61,3.05 1.49,1.99 0.39,2.95 2.17,2.99 1.24,1.17 -0.1,0.82 2.34,4.85 2.72,3.45 0.34,1.87 0.71,0.55 2.6,0.33 1,0.91 1.57,0.17 0.31,0.96 1.31,0.4 1.82,1.92 0.47,1.7 3.19,-0.25 3.56,-0.36 -0.26,0.65 4.23,1.6 6.4,2.31 5.58,-0.02 2.22,0 0.01,-1.35 4.86,0 1.02,1.16 1.43,1.03 1.67,1.43 0.93,1.69 0.7,1.77 1.45,0.97 2.33,0.96 1.77,-2.53 2.29,-0.06 1.98,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.19,0.96 1.99,0.68 1.09,-0.09 -0.53,-1.06 -0.14,-1.5 0.03,-2.16 0.65,-1.42 1.53,-1.51 2.79,-1.37 2.55,-2.37 2.36,-0.75 1.74,-0.23 2.04,0.74 2.45,-0.4 2.09,1.69 2.03,0.1 1.05,-0.61 1.04,0.47 0.53,-0.42 -0.6,-0.63 0.05,-1.3 -0.5,-0.86 1.16,-0.5 2.14,-0.22 2.49,0.36 3.17,-0.41 1.76,0.8 1.36,1.5 0.5,0.16 2.83,-1.46 1.09,0.49 2.19,2.68 0.79,1.75 -0.58,2.1 0.42,1.23 1.3,2.4 1.49,2.68 1.07,0.71 0.44,1.35 1.38,0.37 0.84,-0.39 0.7,-1.89 0.12,-1.21 0.09,-2.1 -1.33,-3.65 -0.02,-1.37 -1.25,-2.25 -0.94,-2.75 -0.5,-2.25 0.43,-2.31 1.32,-1.94 1.58,-1.57 3.08,-2.16 0.4,-1.12 1.42,-1.23 1.4,-0.22 1.84,-1.98 2.9,-1.01 1.78,-2.53 -0.39,-3.46 -0.29,-1.21 -0.8,-0.24 -0.12,-3.35 -1.93,-1.14 1.85,0.56 -0.6,-2.26 0.54,-1.55 0.33,2.97 1.43,1.36 -0.87,2.4 0.26,0.14 1.58,-2.81 0.9,-1.38 -0.04,-1.35 -0.7,-0.64 -0.58,-1.94 0.92,0.9 0.62,0.19 0.21,0.92 2.04,-2.78 0.61,-2.62 -0.83,-0.17 0.85,-1.02 -0.08,0.45 1.79,-0.01 3.93,-1.11 -0.83,-0.7 -4.12,0.7 2.34,-1.07 1.63,-0.18 1.22,-0.19 2.07,-0.65 1.35,0.07 1.89,-0.61 0.22,-1.07 -0.84,-0.84 0.29,1.37 -1.16,-0.09 -0.93,-1.99 0.03,-2.01 0.48,-0.86 1.48,-2.28 2.96,-1.15 2.88,-1.34 2.99,-1.9 -0.48,-1.29 -1.83,-2.25 -0.03,-5.56 z m -239.56,-50.44 -1.5,0.8 -2.55,1.86 0.43,2.42 1.43,1.32 2.8,-1.95 2.43,-2.47 -1.19,-1.63 -1.85,-0.35 z m -45.62,-28.57 2.04,-1.26 0.23,-0.68 -2.27,-0.67 v 2.61 z m 8.5,15.37 -2.77,0.97 1.7,1.52 1.84,1.04 1.72,-0.87 -0.27,-2.15 -2.22,-0.51 z m 97.35,32.5 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z m -68.72,120.68 -1,-0.28 -0.27,0.26 0.02,0.19 0.32,0.24 0.48,0.63 0.94,-0.21 0.23,-0.36 -0.72,-0.47 z m -2.99,-0.54 1.5,0.09 0.09,-0.32 -1.38,-0.13 -0.21,0.36 z m 5.89,3.29 -0.5,-0.26 -1.07,-0.5 -0.21,-0.06 -0.16,0.28 0.19,0.58 -0.49,0.48 -0.14,0.33 0.46,1.08 -0.08,0.83 0.7,0.42 0.41,-0.49 0.9,-0.46 1.1,-0.63 0.07,-0.16 -0.71,-1.04 -0.47,-0.4 z m -7.86,-5.14 -0.75,0.41 0.11,0.12 0.36,0.68 0.98,0.11 0.2,0.04 0.15,-0.17 -0.81,-0.99 -0.24,-0.2 z m -4.4,-1.56 -0.43,0.3 -0.15,0.22 0.94,0.55 0.33,-0.3 -0.06,-0.7 -0.63,-0.07 z",UY:"m 313.93,552.04 1.82,-0.34 2.81,2.5 1.04,-0.09 2.89,2.08 2.2,1.82 1.62,2.25 -1.24,1.57 0.78,1.9 -1.21,2.12 -3.17,1.88 -2.07,-0.68 -1.52,0.37 -2.59,-1.46 -1.9,0.11 -1.71,-1.87 0.22,-2.16 0.61,-0.74 -0.03,-3.3 0.75,-3.37 z",UZ:"m 662.01,351.2 0.08,-2.16 -3.73,-1.52 -2.93,-1.75 -1.83,-1.69 -3.21,-2.51 -1.38,-3.79 -0.94,-0.67 -3.03,0.17 -1.07,-0.77 -0.3,-2.99 -3.78,-2 -2.36,2.2 -2.4,1.3 0.46,1.88 -3.16,0.05 -0.11,-14.13 7.22,-2.35 0.52,0.35 4.35,2.84 2.29,1.48 2.68,3.5 3.29,-0.56 4.81,-0.3 3.35,2.8 -0.21,3.8 1.37,0.03 0.57,3.06 3.57,0.12 0.76,1.75 1.05,-0.02 1.23,-2.65 3.69,-2.61 1.61,-0.7 0.83,0.37 -2.35,2.43 2.07,1.4 2,-0.93 3.32,1.96 -3.59,2.64 -2.13,-0.36 -1.16,0.1 -0.4,-1.02 0.58,-1.71 -3.75,0.86 -0.89,2.35 -1.33,2.01 -2.34,-0.17 -0.73,1.59 2.06,0.86 0.6,2.66 -1.57,3.57 -2.12,-0.74 z",VE:"m 275.5,430.6 -0.08,0.67 -1.65,0.33 0.92,1.29 -0.04,1.49 -1.23,1.64 1.06,2.24 1.21,-0.18 0.63,-2.04 -0.87,-1 -0.14,-2.14 3.49,-1.16 -0.39,-1.34 0.98,-0.9 1.01,2 1.97,0.05 1.82,1.58 0.11,0.94 2.51,0.02 3,-0.29 1.61,1.27 2.14,0.35 1.57,-0.88 0.03,-0.72 3.48,-0.17 3.36,-0.04 -2.38,0.84 0.95,1.34 2.25,0.21 2.12,1.39 0.45,2.26 1.46,-0.07 1.1,0.67 -2.22,1.65 -0.25,1.03 0.96,1.04 -0.69,0.52 -1.73,0.45 0.06,1.3 -0.76,0.77 1.89,2.12 0.38,0.79 -1.03,1.07 -3.14,1.04 -2.01,0.44 -0.81,0.66 -2.23,-0.7 -2.08,-0.36 -0.52,0.26 1.25,0.72 -0.11,1.87 0.39,1.76 2.37,0.24 0.16,0.58 -2.01,0.8 -0.32,1.18 -1.16,0.45 -2.08,0.65 -0.54,0.86 -2.18,0.18 -1.55,-1.48 -0.85,-2.77 -0.75,-0.98 -1.02,-0.61 1.42,-1.39 -0.09,-0.63 -0.8,-0.83 -0.56,-1.85 0.22,-2.01 0.62,-0.94 0.51,-1.5 -0.99,-0.49 -1.6,0.32 -2.02,-0.15 -1.13,0.3 -1.98,-2.41 -1.63,-0.36 -3.6,0.27 -0.67,-0.98 -0.69,-0.23 -0.1,-0.59 0.33,-1.04 -0.22,-1.13 -0.62,-0.62 -0.36,-1.3 -1.44,-0.18 0.77,-1.66 0.35,-2.01 0.81,-1.06 1.09,-0.81 0.71,-1.42 z",VN:"m 778.46,402.12 -3.74,2.56 -2.34,2.81 -0.62,2.05 2.15,3.09 2.62,3.82 2.54,1.79 1.71,2.33 1.28,5.32 -0.38,5.02 -2.33,1.87 -3.22,1.83 -2.28,2.36 -3.5,2.62 -1.02,-1.81 0.79,-1.91 -2.08,-1.61 2.43,-1.14 2.94,-0.2 -1.23,-1.73 4.71,-2.19 0.35,-3.42 -0.65,-1.92 0.51,-2.88 -0.71,-2.04 -2.12,-2.02 -1.77,-2.57 -2.33,-3.46 -3.36,-1.76 0.81,-1.07 1.79,-0.77 -1.09,-2.59 -3.45,-0.03 -1.26,-2.72 -1.64,-2.37 1.51,-0.74 2.23,0.02 2.73,-0.35 2.39,-1.62 1.35,1.14 2.57,0.55 -0.45,1.74 1.34,1.22 z",VU:"m 946.12,510.15 -0.92,0.38 -0.94,-1.27 0.1,-0.78 1.76,1.67 z m -2.07,-4.44 0.46,2.33 -0.75,-0.36 -0.58,0.16 -0.4,-0.8 -0.06,-2.21 1.33,0.88 z",YE:"m 624.41,416.58 -2.03,0.79 -0.54,1.28 -0.07,0.99 -2.79,1.22 -4.48,1.35 -2.51,2.03 -1.23,0.15 -0.84,-0.17 -1.64,1.2 -1.79,0.55 -2.35,0.15 -0.71,0.16 -0.61,0.75 -0.74,0.21 -0.43,0.73 -1.39,-0.06 -0.9,0.38 -1.94,-0.14 -0.73,-1.67 0.08,-1.57 -0.45,-0.85 -0.55,-2.12 -0.81,-1.19 0.56,-0.14 -0.29,-1.32 0.34,-0.56 -0.12,-1.26 1.23,-0.93 -0.29,-1.23 0.75,-1.43 1.15,0.76 0.76,-0.27 3.23,-0.07 0.52,0.3 2.71,0.29 1.07,-0.15 0.7,0.97 1.31,-0.48 2.01,-3.07 2.62,-1.32 8.08,-1.13 2.2,4.84 z",ZA:"m 563.88,548.96 -0.55,0.46 -1.19,1.63 -0.78,1.66 -1.59,2.33 -3.17,3.38 -1.98,1.98 -2.12,1.51 -2.93,1.3 -1.43,0.17 -0.36,0.93 -1.7,-0.5 -1.39,0.64 -3.04,-0.65 -1.7,0.41 -1.16,-0.18 -2.89,1.33 -2.39,0.54 -1.73,1.28 -1.28,0.08 -1.19,-1.21 -0.95,-0.06 -1.21,-1.51 -0.13,0.47 -0.37,-0.91 0.02,-1.96 -0.91,-2.23 0.9,-0.6 -0.07,-2.53 -1.84,-3.05 -1.41,-2.74 0,-0.01 -2.01,-4.15 1.34,-1.57 1.11,0.87 0.47,1.36 1.26,0.23 1.76,0.6 1.51,-0.23 2.5,-1.63 0,-11.52 0.76,0.46 1.66,2.93 -0.26,1.89 0.63,1.1 2.01,-0.32 1.4,-1.39 1.33,-0.93 0.69,-1.48 1.37,-0.72 1.18,0.38 1.34,0.87 2.28,0.15 1.79,-0.72 0.28,-0.96 0.49,-1.47 1.53,-0.25 0.84,-1.15 0.93,-2.03 2.52,-2.26 3.97,-2.22 1.14,0.03 1.36,0.51 0.94,-0.36 1.49,0.3 1.34,4.26 0.73,2.17 -0.5,3.43 0.24,1.11 -1.42,-0.57 -0.81,0.22 -0.26,0.9 -0.77,1.17 0.03,1.08 1.67,1.7 1.64,-0.34 0.57,-1.39 2.13,0.03 -0.7,2.28 -0.33,2.62 -0.73,1.43 -1.9,1.62 z m -7.13,-0.96 -1.22,-0.98 -1.31,0.65 -1.52,1.25 -1.5,2.03 2.1,2.48 1,-0.32 0.52,-1.03 1.56,-0.5 0.48,-1.05 0.86,-1.56 -0.97,-0.97 z",ZM:"m 567.36,489.46 1.32,1.26 0.71,2.4 -0.48,0.77 -0.56,2.3 0.54,2.36 -0.88,0.99 -0.85,2.66 1.47,0.74 -8.51,2.38 0.27,2.05 -2.13,0.4 -1.59,1.15 -0.34,1.01 -1.01,0.22 -2.44,2.4 -1.55,1.89 -0.95,0.07 -0.91,-0.34 -3.13,-0.32 -0.5,-0.22 -0.03,-0.24 -1.1,-0.66 -1.82,-0.17 -2.3,0.67 -1.83,-1.82 -1.89,-2.38 0.13,-9.16 5.84,0.04 -0.24,-0.99 0.42,-1.07 -0.49,-1.33 0.32,-1.38 -0.3,-0.88 0.97,0.07 0.16,0.88 1.31,-0.07 1.78,0.26 0.94,1.29 2.24,0.4 1.72,-0.9 0.63,1.49 2.15,0.4 1.03,1.22 1.15,1.57 2.15,0.03 -0.24,-3.08 -0.77,0.51 -1.96,-1.1 -0.76,-0.51 0.35,-2.85 0.5,-3.35 -0.63,-1.25 0.8,-1.8 0.75,-0.33 3.77,-0.48 1.1,0.29 1.17,0.71 1.12,0.48 1.78,0.47 z",ZW:"m 562.96,527.25 -1.49,-0.3 -0.95,0.36 -1.35,-0.51 -1.14,-0.03 -1.79,-1.36 -2.17,-0.46 -0.82,-1.9 -0.01,-1.05 -1.2,-0.32 -3.17,-3.25 -0.89,-1.71 -0.56,-0.52 -1.08,-2.35 3.13,0.32 0.91,0.34 0.95,-0.07 1.55,-1.89 2.44,-2.4 1.01,-0.22 0.34,-1.01 1.59,-1.15 2.13,-0.4 0.18,1.08 2.34,-0.06 1.3,0.61 0.6,0.72 1.34,0.21 1.45,0.94 0.01,3.69 -0.55,2.04 -0.12,2.2 0.45,0.88 -0.31,1.74 -0.43,0.27 -0.74,2.15 z"}}}}),b}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.js deleted file mode 100644 index b4babce..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.js +++ /dev/null @@ -1,325 +0,0 @@ -/*! - * - * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) - * Requires Mapael - * - * Map of World by country - * Miller projection - * - * @source http://code.highcharts.com/mapdata/ - * - * @deprecated : this map will be definitely moved to 'mapael-maps' repository starting from the next major release (3.0.0). - * You can use instead https://github.com/neveldo/mapael-maps/blob/master/world/world_countries_miller.js - */ -(function (factory) { - if (typeof exports === 'object') { - // CommonJS - module.exports = factory(require('jquery'), require('jquery-mapael')); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery', 'mapael'], factory); - } else { - // Browser globals - factory(jQuery, jQuery.mapael); - } -}(function ($, Mapael) { - - "use strict"; - - $.extend(true, Mapael, { - maps: { - world_countries_miller: { - /* - * map-specific constants - * (set by user) - */ - // Width of the map, in pixel - width : 700.9375, - // Height of the map, in pixel - height : 337.375, - // Longitude of the left side of the map, in degree - leftLongitude: -175.0, - // Longitude of the right side of the map, in degree - rightLongitude: 190.0, - // Latitude of the top of the map, in degree - topLatitude: 84.0, - // Latitude of the bottom of the map, in degree - bottomLatitude: -56.0, - /* - * Transform a longitude coordinate into projection-specific x' coordinate - * Note: this is not in pixel - * - * @param lon longitude value in degree - * @return x' projection-specific value - */ - _projectLongitude: function (lon) { - // Compute longitude in radian - return lon * Math.PI / 180; - }, - /* - * Transform a latitude coordinate into projection-specific y' coordinate - * Note: this is not in pixel - * - * @param lat latitude value in degree - * @return y' projection-specific value - */ - _projectLatitude: function (lat) { - // Compute latitude in radian - var latRad = lat * Math.PI / 180; - return 1.25 * Math.log( Math.tan( Math.PI / 4 + 0.4 * latRad ) ); - }, - /* - * Get x,y point from lat,lon coordinate - * - * Principle: - * (lat, lon) are inputs - * Projection(lat, lon) = (x', y') - * Transformation(x', y') = (x, y) - * - * Source: http://jkwiens.com/2009/01/23/miller-projection/ - * - * @param lat latitude value in degree - * @param lon longitude value in degree - * @return {x, y} coordinate in pixel - */ - getCoords: function (lat, lon) { - var self = this; - - // Project map boundaries with projection (only once for performance) - if (self._xLeftPrime === undefined) self._xLeftPrime = self._projectLongitude(self.leftLongitude); - if (self._xRightPrime === undefined) self._xRightPrime = self._projectLongitude(self.rightLongitude); - if (self._yTopPrime === undefined) self._yTopPrime = self._projectLatitude(self.topLatitude); - if (self._yBottomPrime === undefined) self._yBottomPrime = self._projectLatitude(self.bottomLatitude); - - // Compute x' and y' (projection-specific value) - var xPrime = self._projectLongitude(lon); - var yPrime = self._projectLatitude(lat); - - // Compute x and y - var x = (xPrime - self._xLeftPrime) * (self.width / (self._xRightPrime - self._xLeftPrime)); - var y = (self._yTopPrime - yPrime) * (self.height / (self._yTopPrime - self._yBottomPrime)); - - return {x: x, y: y}; - }, - elems: { - "FO" : "m 322.53,80.19 0.9,0.8 0,0.3 -1,-0.7 z", - "UM" : "m 26.03,206.59 0,0 -0.1,0 0.1,0 z", - "US" : "m 100.93,117.39 0.2,0.1 -0.6,-0.2 0,-0.3 z m 0.2,-0.6 0.2,0.1 -0.3,0.2 -0.3,-0.1 z m -19,-15.8 0.2,0 0,0.4 -0.3,-0.4 z m -0.1,-0.7 0.3,0.3 -0.2,0.2 -0.2,-0.1 z m -0.5,0 0.8,1.3 -0.9,-0.7 -0.1,-0.7 z m 3.3,0.1 -0.1,0.3 -0.4,0 0.1,-0.7 z m -3.7,-0.5 0.1,0.3 -0.4,0 0,-0.3 z m 2.8,-0.3 0.3,0.4 -0.2,0.4 -0.2,-0.6 z m -3.5,-0.1 0.4,-0.1 0,0.3 -0.4,0.3 z m 0.7,0.1 -0.1,0 -0.2,-0.3 0.3,0 z m -1.1,-1.3 0.3,-0.4 0.8,-0.2 -0.2,0.3 z m 2.6,-0.8 0.8,0.3 -0.4,0.5 -0.7,-0.4 z m -0.3,-0.6 0,0.4 -0.8,-0.2 0.3,-0.3 z m 1,0.2 0.1,0.6 -0.5,-0.4 0,-0.6 z m -1.4,-1.2 0.6,0.6 -0.4,0.2 -0.3,0 z m -1.7,-0.8 1.5,0.5 -0.3,1.2 -1,0 z m -3.5,-0.4 -0.1,0.6 -0.4,0.1 0.2,-0.5 z m -1.5,-2.1 -0.2,0.4 -0.2,-0.2 0.2,-0.5 z m 91.6,25.5 -0.2,0.4 -1,0.5 -0.1,-0.2 z m 3,6.8 -0.2,0.6 -0.4,0.7 -0.2,-0.4 z m 2.8,-1 0,0.4 -0.3,0 0.2,-0.4 z m 3.7,-0.7 0.1,0.3 -0.6,0 0.3,-0.2 z m -96.8,-24.9 -0.6,-2.5 0.8,-0.1 0.6,0.7 z m -61.3,4.8 -0.9,1.5 -2.4,0.4 -2.2,1.3 1.2,-1.5 2.3,0 0,-1 z m 59.3,-7.9 -0.4,-1.4 1,0.8 0.4,3 z m -0.7,-2.2 -0.3,1.3 -1.4,-1.2 1.1,-1.3 z m 1.1,-1.2 1.4,0.4 0.5,2.3 -1,-0.2 z m -66.2,-14.8 1.6,0.2 -2,1.1 -1.9,-1.3 -2.2,-0.4 3,-0.6 z m 89,39.1 -0.1,0.1 0,-0.1 z m 45.7,49.9 -0.1,-0.8 -0.5,-0.2 -1.5,-2.5 -1.5,-2.5 -0.2,-0.1 -0.1,-0.1 -2.1,-0.7 -1.6,1.9 -2.6,-1.4 -0.7,-1.8 -3.2,-2.6 -3.2,0 0,0.9 -5.5,0 -7.2,-2.4 0.2,-0.5 -4.6,0.4 -0.3,-1.2 -2.4,-2 -2.5,-0.1 -1.5,-1.1 -3.4,-5.7 -0.2,-1.3 -2.3,-2.5 -0.3,-2 -1,-1.4 0.6,-2.3 -0.9,-3.2 0.8,-2.4 0.5,-4 -1.3,-6.7 3.6,0.6 -0.1,-0.2 0.7,0.6 -0.7,-0.7 0,0 0.3,-0.4 -0.3,0.3 0,-1.8 52.8,0 4.8,1.2 2.3,1.2 3.6,0.1 -2.8,1.2 -2,1.7 2.5,-0.2 0.6,0.7 3.5,-1.6 0.1,0.1 -0.1,-0.1 1.1,-0.6 0.6,0.1 -1.1,0.9 1.8,1.4 4.6,-0.7 0.9,0.8 0.7,-0.2 0,0.5 -1.2,1.1 -4.3,-0.1 -2,3.2 1.4,-0.6 -1.1,3.6 0.1,2.3 1,1.5 1.3,-0.6 0.8,-2.5 -0.6,-1.5 0.5,-2.5 3.2,-2.7 2.1,1.1 0.3,2.4 -1,0.8 2.3,0.2 0.5,2.1 -0.2,0.9 -0.3,0.2 -0.3,-0.3 -0.5,0.8 -0.7,1.4 1.8,0.7 1.6,-0.3 4.8,-2.4 0.5,-0.8 -0.3,-0.4 0,-0.4 4.5,-0.1 1.8,-2.7 1,-0.9 1,-0.3 0,0 6.2,-0.1 2.3,-2 0.5,-2 1.5,-1.8 2.7,0.9 0,3.2 0.4,0.3 0.4,0 -0.1,0.8 0.6,0.2 0.3,0.9 -2.4,1 0.1,0.1 -0.4,0.4 0,-0.3 0,0 -0.7,0.3 0.3,-0.1 0,0.4 -0.3,0 -0.1,-0.3 -0.4,0.2 -2.9,1.8 -0.1,3.7 -4.4,1.1 -2.2,1.4 -0.1,1.9 -2.9,4 -1.5,-2.8 0.3,3 -0.4,2.2 0.9,-0.1 0.5,2.8 -1.5,2.2 -1.2,-0.1 -1.6,1.8 -2.3,1.4 -3.8,3.1 -0.6,2.1 1.8,4.7 0.9,3.4 -0.6,3.4 -1.4,0 -2,-2.7 -1.3,-2.9 0.4,-2.1 -2.7,-2.5 -1.8,1 -2.1,-1.4 -5.3,-0.3 -1.5,0.6 0.9,2.4 -1.6,-0.9 -1.3,0.8 -1.9,-1.4 -1.3,0.4 -3.4,-0.3 -4.6,2.8 -2,3.1 0.8,1.7 -2.1,-0.2 z m -65.4,-67.3 -0.3,0.2 -0.2,-0.4 0.5,0 0,0 0.3,-1.3 2.3,3 -0.1,1.4 -1.6,-1.8 -1,-0.7 z m -43.4,79.5 -0.5,-0.5 0,0 0.5,0.2 0,0.3 0,0 z m 0,0 2.3,2 -2.1,0.9 -0.2,-2.9 0,0 z m 47.3,-77.4 -0.1,0.3 -0.3,-0.2 0.4,-0.1 0,0 z m -5.8,-8.9 0.1,0.1 -0.6,-0.1 0,-0.2 -0.3,-0.2 -3.7,0.5 -3.1,-2.4 -3,-1.3 -5.6,-1.7 -2.8,-0.1 -3.5,-0.9 0,-1.1 -3.5,0 0.4,2.5 -3.2,0 -0.7,0.9 -4.1,1.5 1.3,-1.3 -1.3,-0.4 0.9,-2.8 1.8,-0.9 -0.2,-0.9 -3.4,2.4 -0.7,1.7 -2.7,1.5 1.5,1.3 -1.9,2.4 -3.6,1.6 -2.1,2.7 -0.9,-0.5 -2.1,2.2 -1.9,0.1 -3.2,1.2 -1.6,1.4 -4.7,1.2 0.5,-1.3 2.4,-0.6 3.7,-2.2 2.2,0.3 -0.3,-1.2 2.8,-1.5 2.2,-2 1.3,-3.7 -3.7,1.3 -2.5,-1.8 -2.7,1.4 0.1,-2.6 -1.2,-1.8 -2.5,0.9 -2.6,-1.5 -1.1,1 -2.1,0.4 -1.5,-1 3.4,-0.3 2.1,-1.6 -3,-1.9 0.7,-1.5 3.1,-3.7 1.5,0.7 1.8,-1.2 3.1,-1 -1.2,-2.1 0.5,-1.6 -3.8,1.7 -5.8,-0.6 -3.6,-3.5 5.3,-2.3 3,-0.5 0.1,1.6 3.5,0.3 0.3,-3.3 -3.9,-0.3 -0.8,-1.6 -4.8,-2.4 0.8,-1.8 3.6,-0.2 2.4,-1.5 -0.1,-0.9 2.4,-2.4 2,0 2.3,-1.6 3.1,-0.1 2.3,-1.7 3.3,0.7 1.9,1.2 3.4,-0.3 0.7,1.4 5.3,-0.3 4,1.3 4.8,0.7 2.5,-0.5 4.4,1.6 0,29.2 3.5,0.6 3,2.4 0.4,1 2,-2 1.7,-0.6 1,1.5 3,2.5 3,5 3.4,1.8 0.1,1.7 0,0 -1.8,1.3 0.1,-2.4 -0.3,-0.1 -0.3,-0.6 -0.4,0.4 -0.6,-0.2 -0.5,-1.3 -2.1,-2 -2.2,-3.1 z m -38.1,3.7 -1.1,-1.2 3,-2 1.7,-1.6 0.4,2.8 -2.9,1.7 -3.7,3.4 z m -3.9,82.1 -3,-1 2.1,0.2 0.9,0.8 z m 47.8,-76.9 0.1,-0.2 0,0.2 -0.1,0 0,0 z", - "JP" : "m 606.33,125.09 0,-0.1 0.6,0.4 -0.3,0.1 z m -15.5,25.1 -1.3,0.7 -2.1,-0.3 2.8,-3.2 3.7,-0.5 2.2,0.3 3,-4.4 -0.5,1.4 2.4,-0.6 0.4,-1.6 1.8,-0.6 1.1,-2.6 -0.4,-1.2 1.1,-3.2 0.7,1 1.3,-0.7 1.2,3.9 -1.8,2.3 -0.1,2.2 -0.9,2.4 0.5,1.2 -1.7,1.8 -0.3,-1.4 -3,1.8 -3.2,0.3 0.7,0.7 -1.8,1.4 -1.7,-0.6 0.6,-1.7 -3.2,0.3 -1.5,0.9 1.1,0.3 1.3,-1.2 0.9,0.5 -0.9,2.3 -0.9,-0.6 -2.2,1.7 -0.5,-1.6 z m -6.8,2 -0.4,-2 1.3,1.7 1.2,-1.1 2.4,0.6 0.6,1.3 -1.4,3.4 -2.1,0.2 -0.1,-3.3 z m 21.7,-19.1 -1,1 -0.6,-2.9 1.1,-1.6 1.9,0 0.9,-5.1 3.6,3.2 2.4,0.9 0.9,1.4 -2.6,0.5 -1.8,2.4 -2.7,-1.5 -2.9,0.7 z", - "SC" : "m 442.43,226.39 0.2,0.3 -0.1,0.2 -0.5,-0.7 z", - "IN" : "m 504.93,175.49 0.1,0 0,0.5 -0.2,-0.1 z m 0.1,-12.1 1.3,-0.3 0.2,1.4 1.7,1.2 4.4,-0.4 -0.9,-1.7 1.9,-0.4 3.9,-2.9 1.2,0.6 1.6,-0.7 2.3,2.4 -1.2,1.8 -3.2,1.8 0,1.5 -1.8,3.8 -1.5,-0.3 -0.2,3.3 -1.2,0.8 -0.8,-3.5 -1.1,1.5 -0.8,-1.3 2.5,-2.7 -0.8,-0.5 -3.2,0.1 -1,-1.7 -2.7,-1 -0.7,1.2 1.6,1.5 -1.7,1 1.4,0.7 -0.4,1.4 1,3 -1.6,1.1 -0.1,-1 -1.9,1 -1.6,3.2 -1.7,0.1 -2.6,3.2 -3.5,2.5 0.1,0.8 -3.9,1.8 -0.5,1.3 0.6,3.2 -0.9,2.6 0,3.3 -4.5,4.3 -1.9,-1.6 -1.3,-4.2 -2,-3.4 -0.9,-3.3 -1.7,-3 -1.5,-7.4 0.4,-1.3 -1,-3.6 -0.5,2.2 -2.1,1 -1.3,-0.4 -2.1,-2.1 1.8,-1.2 -2.9,-1.2 -0.9,-1.4 1.3,-0.8 2.1,0.2 2.1,-1.1 -3,-4.3 1.9,-2.5 2.7,0.2 2,-2.3 0.9,-1.8 2.2,-2.5 -0.1,-1.3 1.5,-0.9 -2.4,-2.2 -0.5,-2.5 1.1,-0.9 2.8,0.6 2.4,-1.3 1.4,-0.9 0.9,1.8 1.3,0.7 -0.3,1.7 1.4,1.7 -2.2,0.5 0.7,2.5 4.4,2.4 -1.3,0.9 -0.6,1.9 5.2,2.8 3.5,0.3 2.4,1.6 2.9,0.4 1.6,-0.7 z", - "FR" : "m 228.83,121.39 -0.4,0.1 -0.1,-0.8 0.2,0.5 z m 125.6,9.9 -0.5,2.9 -0.8,-0.5 -0.1,-2.3 z m 301.9,127.2 -0.6,2.6 -3,-1.6 -1.7,-1.7 -0.4,-1.4 4.2,3.2 z m -187.7,60.9 2.7,0.3 -0.8,1.5 -2.5,0 z m -253.1,-136.4 0.1,-0.1 0,0.2 z m 135.1,-54.4 0,0.1 -0.1,0 0,0 -0.1,0.1 -2.4,1.4 -4.2,-1 -1.7,1.4 0.3,1.2 -1.3,0.2 -1,-0.3 -0.1,0 0,0 -0.5,-0.1 0.1,-0.3 -0.6,0.1 -2.8,-0.2 -3.4,-1.7 0.6,-0.4 0.9,-5.8 -1.8,-2.4 -1.6,-1.1 -3.6,-1.4 -0.1,-1.2 3.2,-0.8 0.7,0.9 2.5,-0.3 -1,-2.7 3.3,1.1 0.7,-1 2.7,-1.3 0,-1.7 1.8,-0.5 3.1,2.8 3.2,1.1 0.3,0.2 0.7,0 3.6,1.2 -1.2,3.4 -2.8,2.4 0.2,0.7 0.1,-0.2 0.2,0 0.8,-0.1 -0.1,0.7 0.5,0.5 -0.8,1.9 z m -118,79 0.4,-0.8 1.9,0.6 2.4,2.7 -2.5,3.5 -3.1,-0.3 1.2,-2.1 -0.9,-2.8 z", - "FM" : "m 639.23,204.49 0.2,0.1 0,0.2 -0.2,0 z", - "CN" : "m 544.43,180.89 1.7,-1.7 2.1,-0.3 0.6,0.9 -1.1,2 -1.4,1 -1.9,-0.7 z m -37.9,-16.4 -0.2,-1.4 -1.3,0.3 -3,-0.5 -1.1,0.4 -1.7,-0.9 -1.9,-1.9 -1.1,0.1 -2.8,-2.4 -2,0.3 -4.4,-2.4 -0.7,-2.5 2.2,-0.5 -1.4,-1.7 0.3,-1.7 -1.3,-0.7 -0.9,-1.8 -0.8,0.1 -1.1,-0.4 -1.6,-1.8 -2.7,-1.2 -0.3,-0.2 1,-0.3 -0.3,-2.8 -1.8,-0.1 -0.3,-2 0.6,-1.3 3,-1.3 0.3,0.7 2.1,-1.4 2.5,-0.3 0.5,-0.7 3.5,-1.9 1.2,-2.2 -1.4,-4.4 4.2,-1.2 1.4,-4 3.3,0.9 1.5,-0.5 0.5,-3.3 3,-1.7 0.3,-0.1 0.6,-0.1 0.3,1.4 2.1,1.5 2.4,0.8 1.4,2.6 -0.3,3.3 5,0.6 3.6,1.5 1.9,3.7 10.1,0.5 0.7,0.7 3.3,1 2.8,0 3,-1.2 5.2,-0.4 4.7,-2.9 -1,-1.7 1.1,-1.5 3.1,0.8 1.8,-1.5 2.1,-0.2 1.8,-2 3.2,-1 2.7,0.3 0.4,-0.8 -2.6,-2.6 -1.5,0 -0.1,0.1 -0.3,0.4 -3.2,0.2 -0.7,-1.1 2.3,-4.1 2,0.7 2.8,-1.2 -0.1,-0.9 1.8,-3.3 1.3,-1.1 -1.4,-1.7 1.5,-1.3 4.7,-0.8 4.7,1.5 4.5,8.8 2.5,0.3 2.8,2.7 0.4,1.6 2.7,-0.1 3.7,-1.7 0.7,1.7 -1.2,1.1 -0.5,2.4 -2,2.8 -0.5,-0.6 -1.1,0.2 -2,0.9 0.6,1.9 -0.5,2.8 -0.9,0.7 -1.3,-1 -0.3,1.2 -3.2,1.1 0.2,1.4 -2.9,-0.7 -1.2,1.8 -3.1,1.8 -3.6,1.5 -2.6,1.5 0.3,-1.4 1.9,-2.5 -2.1,-1 -1.4,1.7 -1.8,0.6 -1,1.6 -2.4,0.2 0.7,2.1 1.4,0 1.2,2.3 2.4,-1.6 1.7,0.9 2.1,0.1 -3.7,2 -3,3.1 2,1.6 1.2,3.5 1.8,1.5 0.3,2.2 -1.9,0.8 2.7,1.5 -1.5,1.1 0.1,2 -1.3,0.7 -2.9,4.1 0.6,1.2 -1.8,0.6 -4.5,4.4 -3.3,0.2 -1.1,1.2 -1.1,-1.6 -0.1,1.8 -5.5,1.5 -1.5,2.2 -0.3,-2.4 -2.5,-0.8 -0.9,0.8 -2.7,-1.8 0.4,-0.8 -2.8,-1.2 -2.6,1.7 -2.8,-0.5 -0.7,0.7 -1.2,0.3 0.4,2.3 -1,-0.9 -1.9,0.3 -0.5,-1.3 -1.5,-0.2 0.7,-1.8 -1.2,-0.2 -0.6,-1.8 -1.8,0.4 0.1,-2.4 1.9,-1.7 0,-3.5 -2.2,-1.9 -0.4,0.6 -2.3,-2.4 -1.6,0.7 -1.2,-0.6 -3.9,2.9 -1.9,0.4 -2.7,-1.3 z", - "PT" : "m 322.13,143.49 -3.1,0.4 0.5,-2.6 -1.4,-1.1 1.5,-4.7 -0.1,-2.7 4.2,0.1 0.7,0.8 -1.4,1.3 -0.1,4.5 z", - "SW" : "m 185.73,187.29 0,0 0,0 z", - "SH" : "m 561.73,188.69 0,0 0,0 0,0 z", - "BR" : "m 241.13,217.99 2.5,0.3 -0.8,2.2 -3.4,0.6 -0.4,-2.2 z m -7.3,66.1 0.8,-1.6 -0.1,-0.3 -4.7,-3.8 -0.8,0.5 -1.5,-2.1 -1.5,0.2 3.5,-4.1 3.7,-2.2 -0.1,-3.1 -1.4,-0.1 0.1,-0.1 -0.1,-0.2 0.7,-1.5 0,-1.3 -2.2,-0.2 -0.4,-2.6 -1.5,-1.1 -3,-0.1 0.3,-2.2 -0.7,-1.6 1.2,-3.9 -1.6,-1.8 -0.2,-1.8 -3.2,-0.1 -0.6,-4.8 -2.6,-0.5 -2.4,-1.7 -2.5,-0.4 -1.9,-2.5 -0.1,-2.9 -2.3,0.5 -3.2,2 -2.4,0 -2.1,0.1 0.3,-3 -1.3,0.9 -1.9,0.2 -3.5,-4.8 1.7,-2.2 0.4,-2.4 4.1,-1.8 1.5,0.1 1,-5.3 -1.2,-2.4 0.4,-3.6 3.3,0 1.5,-0.7 0.9,1.6 2.6,1.1 2.7,-1.7 1.5,-1.6 -1.3,-0.1 -1.2,-2.9 5.9,-0.5 1.6,-1.8 1.4,0.2 0.9,2.2 -0.9,2.3 0.5,1.6 1.8,1.3 3.2,-1.6 1.2,0.2 1,-1.1 2.6,0.3 3.1,0.3 2.5,-3.5 1.2,0.3 0.7,3.2 1.5,1 0.2,3.1 -3,0.9 1.4,2.6 2.7,0.3 2.9,-2.7 5.2,1.5 0.7,2.6 1.8,-0.8 4,1.2 3.1,-0.1 2.9,1.6 2.5,2.3 3.1,0.4 1.5,3.9 -1,3.9 -3.1,3 -2.2,3.6 -1.7,1.2 0.2,5.1 -0.6,3.5 -0.9,1.1 -0.1,2.3 -2.7,4.2 0.2,0.9 -2,2 -4.4,0 -5,2.7 -1.7,1.3 -1.5,2.3 0.4,2.7 -0.7,2.3 -2,2 -1,2.1 -1.7,-0.6 -0.4,1.9 -1.5,1.4 -0.8,2.9 -1.4,1.3 -0.3,-0.2 z", - "KI" : "m 34.93,213.89 0.2,0.4 0.2,0.2 -0.4,-0.1 z", - "PH" : "m 574.43,195.49 1.3,-0.2 -1.5,-1.5 1.7,-0.1 1.1,2.8 -1.3,-0.2 -0.5,1.8 z m -8.8,0.5 0.2,-1.8 0.9,0.5 -1.1,1.3 z m -0.4,0.4 0,0 0.4,-0.4 0,0 0,0 -0.4,0.4 z m 4.6,1.5 0.1,-3.5 2.2,1.5 -0.4,1.1 2.1,-0.8 -0.1,1.8 -1.9,2.5 -1.2,-1.5 0.4,-1.7 z m 4.4,5.8 -1.6,-0.8 -1.8,0.2 -1,2.5 0.2,-2.6 2.5,-1.9 1,1.1 1.7,-1.7 1.4,0.1 0,-2 1.6,2.3 0.5,3 -0.7,1 -0.9,-1.1 -0.8,1.3 0.1,2 -2.2,-1.1 z m 0.3,-12.1 -0.7,3.8 -1.2,-1 -0.5,-2.4 -1.2,-1 0.1,1.6 -1.7,-1.6 -1,1.1 1,0.9 -0.9,1.4 -1.6,-2.5 1.2,-0.1 -1.8,-2.4 -0.5,-3 1.1,0.4 -0.1,-2.8 1.6,-2.9 -0.2,0.8 2.3,0.8 0.5,2.2 -0.7,1.7 -1.2,0.6 0.3,3.4 1.5,-0.3 z m -9.3,4.8 0.3,1.3 -4.6,3.9 4.3,-5.2 z", - "MX" : "m 170.23,178.09 -0.5,0.6 0,-0.3 0.1,-0.3 z m -38.2,-2.3 0.3,0.1 0.6,0.8 -0.5,-0.4 z m -10.1,-5.6 0.3,0 0.2,0.3 0,0.1 z m -0.4,-1 -0.1,0.4 -0.1,0 0.1,-0.4 z m -5.8,-6.3 -0.1,0.1 -0.2,-0.2 0.3,-0.5 z m -5.8,-1.7 -0.1,0 -0.1,-0.5 0.2,0.2 z m 10.9,0.4 0.2,-1 0.5,0.4 -0.3,0.5 z m -1.8,-1.7 0.6,0.5 0.1,0.6 -0.9,-0.8 z m 23.5,-0.1 -0.1,0.2 0.4,0 1.5,2.5 1.5,2.5 0.4,0.5 0.2,0.5 1.8,1 2.1,0.2 -1,3 -0.4,4 1.4,3.7 2.5,3.8 2.6,1.2 5,-1 1.8,-1 1.1,-3.7 4.2,-1.2 2.7,0.7 -1.3,2.1 -0.8,3.9 -0.9,-0.5 -1.1,1.2 -0.5,0.1 -3.5,0 -0.9,1.1 2,1.8 -2.6,0.6 -0.9,2.9 -3.2,-3 -1.8,-0.7 -3.3,1.5 -4.2,-1.7 -4.4,-1.4 -1.4,-1.2 -3.3,-0.9 -2.8,-2 -1.4,-2.1 1,-2.1 -1.2,-2.3 -4.8,-5.3 -2.2,-1.1 0,-1.9 -2.1,-1.3 -3,-3.4 -1.9,-3.8 0.1,-0.7 -2.9,-1.3 -0.2,3.3 2,1.9 6,9 -0.2,1.3 1.6,0.2 0.6,1.9 -0.8,0.7 -0.8,-1.4 -3.5,-2.6 -0.2,-2.4 -2.6,-1.4 -2.8,-2.3 1.7,-0.2 0.2,-1.1 -3.1,-2.7 -0.7,-2.2 -2.1,-3.6 4.6,-0.4 -0.2,0.5 7.2,2.4 5.5,0 0,-0.9 3.2,0 3.2,2.6 0.7,1.8 2.6,1.4 1.6,-1.9 z m 7,8.5 -0.4,1 0.2,0.8 0.5,-1.8 z", - "ES" : "m 306.83,163.39 -2,-0.6 -1.3,0.1 1.9,-1 z m 23.8,-15.8 0.1,0.1 -0.1,0 0,-0.1 z m -4.7,-1.3 0.2,0.1 0,0.1 -0.1,-0.1 z m 0.1,-0.5 -1.5,-0.3 -0.7,-1.5 -1.7,-0.5 0.8,-4 0.1,-4.5 1.4,-1.3 -0.7,-0.8 -4.2,-0.1 -0.9,-2.7 2.5,-1.4 1.3,0.4 7,0.1 3.4,0.3 3.4,1.7 2.8,0.2 0.2,0.4 0.3,-0.2 0.5,0.1 0,0 0,-0.1 0.1,0.1 0,0 1,0.3 1.3,-0.2 0.1,1 -2.3,1.6 -2,0.5 -2.5,3.5 1,1.6 -1.4,1 -0.4,1.6 -1.8,0.6 -0.8,1.2 -4.5,0.2 -1.7,1.2 z", - "BU" : "m 183.13,187.49 0,0 0,0 0,0 z", - "MV" : "m 476.83,206.89 0.5,0.7 -0.6,0 0.2,-0.4 z", - "SP" : "m 558.13,197.09 0,0 -0.1,0 0.1,0 z", - "GB" : "m 330.13,90.09 0.1,0.2 -0.2,0.1 -0.3,-0.3 z m 0.2,-0.8 0,0.5 0.3,0.1 -0.8,-0.1 z m 0.5,-0.2 -0.4,-0.2 0.8,0.3 -0.2,0.2 z m 3.5,-3.1 -0.5,1.4 -0.1,-1 -0.6,-0.3 z m 0.2,-0.9 0.3,0.1 -0.8,0.2 0.2,-0.5 z m 0.3,-0.4 -0.1,0.3 -0.3,0 0.1,-0.4 z m -154.3,95.9 0.1,-0.1 0.4,0.1 -0.3,0.1 z m 18.7,-4.9 -0.4,0 -0.1,-0.2 0.3,0.1 z m -1,-0.2 -0.1,0.2 -0.3,0 0.3,-0.1 z m 124.5,-81.9 0,-1.5 1.6,-0.9 -0.2,1.3 z m -100.7,234.1 1.4,-2.7 2,0.4 0.3,0.8 z m 179.2,-179.3 -0.1,0 -0.1,0 -0.1,-0.1 0,0 0.1,0.1 -0.2,0 0,-0.1 0,0 0,-0.1 0.1,0 0.3,0 0,0 -0.2,0 z m -0.3,-0.1 0,0 0,0 z m -74.8,-2.5 -0.1,0.1 0,-0.1 z m 73.4,3.3 -0.2,0 -0.3,0 0.1,-0.1 z m -77.1,-48.5 1.8,-0.6 1.5,1.7 -1.4,1.4 -2,0 -1.7,-0.9 z m 2.3,-6.2 2,-3.6 3.8,0 -2,2 1.1,0.6 3,0.1 0.3,0.6 -2.7,3.8 3,1.3 0.8,2.5 2.1,1.4 0.8,2.7 -0.6,0.5 3.2,0.3 -0.2,1.8 -1.7,1.5 1.3,0.9 -2.1,1 -7.1,0.3 -3.8,1 2.4,-2.5 2.1,0 -2.5,-1.5 -1.8,-0.2 2.1,-1 0.1,-2.5 1.9,-0.4 0.6,-2.1 -1.5,-0.9 0.5,-0.9 -2,-0.1 0.1,1.3 -1.4,-1.1 0.9,-1.8 -2,-2.4 -1.7,-0.7 1.5,-0.4 -1.9,-1.8 z", - "GR" : "m 386.63,147.99 -3,0.5 -2.3,-0.8 1.3,-0.6 z m 2.5,-2.3 1.2,-0.6 -0.3,0.8 -0.5,0.5 z m -0.8,-0.9 -0.4,-0.2 0.4,-0.4 -0.1,0.3 z m -0.5,-1 0.2,0.1 -0.2,0.2 0.1,-0.2 z m -3.3,0.2 0.7,-0.5 0.1,0.4 -0.4,0.8 z m 2.2,-1.4 -0.5,0.2 -0.2,-0.1 0.2,-0.1 z m 1.2,-0.3 0.2,0.1 -0.5,0.1 -0.4,-0.2 z m -1.7,-1.8 0.2,0.6 -0.4,-0.1 -0.2,-0.5 z m -1.2,-3.3 -0.4,0.1 0.4,-1.1 0.4,0 z m -8.5,-1.5 0.2,-0.1 -0.2,0.1 -0.1,-0.1 0,-0.1 0.1,-0.1 0.2,0 1.5,-0.6 2,-0.5 3,-0.6 1.4,0.8 2.1,-1.1 0.6,0.7 -1.2,1.5 -1.9,-0.6 -2.5,0.8 1.3,1.1 -3.4,-0.7 -0.1,1 5.4,5.8 -2.8,-1.9 0.3,1.3 -1.7,-0.6 -0.9,0.9 0.9,2.5 -2.5,-0.6 -1,-3.3 -2.6,-3.3 0.7,-0.3 z m 10.4,3.3 0.3,0.4 -0.3,0.2 -1.2,-0.5 1.1,-0.3 0,0 z", - "AS" : "m 9.63,245.09 -0.1,0 -0.1,0.2 -0.2,-0.1 z", - "DK" : "m 357.83,100.89 1,0.8 -0.6,0 -0.8,-0.3 z m -1.7,0.1 0.3,0.1 -0.2,0.1 -0.4,-0.4 z m 4.2,-0.3 -0.7,0.4 0,-0.3 0.3,-0.1 z m -5.3,-0.2 0.5,0.4 -0.1,0.2 -0.4,-0.1 z m 2,0.4 -0.2,0.5 -0.2,-0.2 0.7,-0.9 z m 3.4,-2 -1.2,2.7 -1.7,-2.6 2.2,-1.3 z m -6.1,2.4 -1.1,-0.3 -0.3,0 -1.1,-4.4 3.2,-1.5 1.6,-1.8 -0.7,2.3 1.4,1.3 -0.9,0.9 0.6,2.3 -2.4,-0.5 z", - "GL" : "m 234.93,60.89 0.2,0.2 -0.5,0.1 -0.2,-0.2 z m 1.5,-0.8 -1.8,0.4 0.2,-0.2 0.7,-0.2 z m -4.8,-5.7 -0.5,0 -0.2,-0.4 0.5,0.1 z m 2.2,-2.3 -0.9,-0.3 0.7,-0.7 0.5,0.7 z m -2.9,-4.6 -0.9,0.6 -0.2,-0.3 1.1,-0.5 z m -1.2,-1.6 -0.4,0.4 -0.7,-0.2 0.5,-0.2 z m 1.3,-0.1 -1.1,0.9 -0.1,-0.8 0.7,-0.2 z m -1.8,-2.8 0.9,0.5 -0.3,0 -1,-0.5 z m -0.7,-1.2 0.6,0.1 -1.2,0.1 0,-0.4 z m -0.4,-2.3 -1.1,0 -0.9,0 1.6,-0.3 z m -25.1,-8 -0.8,0 0.1,-0.2 0.8,-0.1 z m -5,-3.6 1.6,0.3 -0.6,0.2 -1.6,-0.3 z m 2.5,-0.2 1.3,0.4 -1.6,0 -0.4,-0.3 z m 102.6,-10.6 -2.2,1.3 -1.8,-0.7 3.2,-1.1 z m -94.9,-3 0.6,0.2 -0.4,0.1 -0.2,-0.1 z m 30,-6 -1.7,-0.1 -2.1,-0.5 0.8,-1 z m -4.8,50.1 0.6,-0.6 -3,-0.9 0.3,-1.7 3,0 2.4,1.4 -0.3,1.1 z m 1.4,12.1 -0.3,0 0,-0.2 0,-0.1 -0.2,-0.1 -0.7,-2.6 2.6,-1.4 -3.2,-0.5 1.5,-3.6 3.8,-1.2 0.7,-3.9 -1.2,-0.9 -4.6,-1.4 -1.4,-1.2 4.1,0.1 3.4,1.3 -1.5,-2.1 -2,-1.1 -0.3,0.2 -0.9,-0.1 0.3,-0.6 0.2,0 -0.3,-0.2 2.3,-0.6 -1.9,-0.2 -0.8,0.5 -0.5,-0.5 0.8,0 0.2,0 -2.2,-0.2 0.3,1 -2.6,0.2 -1.2,-1.1 0.6,-0.6 -0.3,-0.2 0.4,-0.1 0.1,0.1 1.2,-1.2 0.5,-2.1 -1,-0.4 0.1,-0.1 -0.8,-0.3 -0.1,0 -0.2,-0.1 0.8,-1.2 -1.5,-0.9 0.7,-0.9 -1.4,-0.7 0.5,-1.1 -1.8,-2.2 -2.1,-0.5 -0.9,-1.2 0.4,-1.4 -4.7,-1.7 -5,-0.8 -1,0.9 -4.2,-0.5 -0.5,1.3 -3.7,-0.5 -2.4,-1.3 3.2,-1.2 -4.6,-0.4 -1.8,-0.8 0.8,-0.8 4.9,-0.8 3,0.1 1,-1 -5.7,0.6 -0.5,-0.9 -3.5,-0.4 -3,-1.6 0.6,-1.5 6.2,-1.2 2.5,-1.2 4,-0.1 2.1,-1.7 -0.4,-2.3 -3.8,-0.1 -0.8,-1.3 4.5,-1.9 0.6,-1 3.5,-1 2.7,0.7 1.5,-2 -1.3,-1.1 5.5,-1.7 7.9,-1.2 1.7,1.2 -0.4,2.6 1.6,-2.3 3,0.7 3.7,-0.2 -2.2,-1 -1,-1.7 4,0.3 5.8,1.9 1.6,1.2 1.8,-0.3 -1.4,-0.9 0.4,-0.3 -4.1,-1.2 -2.8,-2 1.3,0.7 2.6,-0.2 3.6,1.3 -0.6,1.4 2,-1.4 -3.9,-1.8 9.1,0.1 -8.9,-0.5 -2.3,-0.5 1.5,-0.6 1.8,0.5 0.9,-0.9 4.8,-0.3 4.4,0.2 1.9,0.1 0.3,-1.2 3.7,-0.5 8.2,-0.5 3.5,0.2 9.6,1.4 -0.8,0.5 -9,0.3 -8,1.1 5.9,-0.4 3.4,-0.6 5.2,0.3 4.1,-0.5 1.4,1.3 3.5,0.4 2.5,0.9 -2.1,1.3 -14.2,1 -5.6,1.3 2.1,0.1 7.5,-1.1 6,0.4 -0.1,0.9 -3.1,0.8 -0.1,0.9 5,-1.5 1.1,-1.3 3.4,-0.3 0.3,2.6 -3.6,2.7 2.2,-0.4 6.4,-3.7 3,1.2 2.4,-1.2 3.6,0.1 3.6,0.8 1.3,0.8 -3.8,2 -2.3,0.1 0.5,1 -2.1,0.6 -3.2,-0.1 2.4,1.2 -1.2,0.8 -4.5,0.5 -3,0.9 2.2,0.8 -0.7,1.4 1.2,1 -1.8,0.6 0.9,1.3 -2,-0.6 -1.6,2.5 -0.2,1.6 4.2,-0.2 -0.3,0.8 2.9,0.4 -2.9,0.4 -2.8,-0.5 0.7,1.1 4.1,0.7 -0.8,2.8 0.4,2.3 -1.1,-2.1 0.7,-1.2 -3.4,-0.7 -2.3,1.2 0,1.6 3.4,-0.1 1.1,3.4 3.9,1.4 -2.1,0.2 -1.8,2.7 -3.6,0.7 1.3,2.4 -1.9,-0.1 -1.4,0.8 -3.3,-1.2 -4.1,1.3 1.1,0.3 -0.2,-0.1 2.3,-0.9 2.4,1.3 2.5,0.6 0.1,0.8 -2,-0.3 1.8,1 -1.3,0.1 0.9,1.2 -4.2,-1.7 -0.2,-0.8 1.5,0 -1.6,-0.3 -1.2,-0.5 -1,0.5 2.2,1.8 3.9,1.8 -1.1,0.7 2.4,1.6 0.7,2.5 -3.6,0.4 -1.8,-2.3 -3,-1.7 0.5,1.4 -4.5,1 -0.6,1.8 1.8,-0.2 -1.5,0 0.8,-1.1 4.5,-1.1 0,1.4 -1.7,0.7 -1.2,0 -2,1.3 1.1,0.3 3.8,-1.4 3.4,1 2.2,0 -1.6,1.6 -1.7,0.4 -4.1,2.8 -3.4,0.5 -2.6,1.2 -5,0.5 -2.6,1.6 0.2,0.8 -2.7,3 -3.3,1.7 -2.8,0.8 -0.3,-2.1 -1,1.8 -3.1,0.7 1.3,0.4 -1.5,1 -1.1,2 0.6,2 -3.1,3.4 -0.9,5 -1.6,1.2 0.4,1.5 -2.1,0.2 -2,-0.9 -0.2,-1.3 -4.7,-0.6 -2.1,-1.6 -0.5,-2.2 -1.9,-1 0.3,-1.4 -2.4,-1.6 0.2,-2.8 -1.5,0.8 0.1,-2.6 z", - "GU" : "m 613.53,191.99 -0.2,0.4 -0.1,-0.3 0.5,-0.5 z", - "MP" : "m 615.13,188.99 0.1,-0.4 0.3,-0.1 -0.2,0.3 z", - "PR" : "m 211.33,182.59 -1.8,0.7 -1.7,0 0,-1.2 z", - "VI" : "m 212.33,183.59 0.4,0 -0.7,0.2 0.1,-0.2 z", - "CA" : "m 175.63,27.69 -3.1,-0.2 0.9,-2.2 -2.3,-0.5 -2.3,0.3 0,-1.4 1.7,-1.5 2.6,-0.5 3.9,0.5 2.7,-0.3 -4.8,-0.3 -1.4,-2.9 -2.7,-0.6 0,-2.5 5.1,0.3 3.1,1.7 0.9,1.2 0.4,-1.6 -3.3,-1.5 9.9,-1.3 -3.7,-0.1 6.4,-1.3 -5.8,0.4 -6.3,1.3 -1.8,-1 -1,1.1 -4.5,-0.4 1.2,-1.8 -2.2,1.7 -4.1,-1.2 5.2,-0.5 0.3,-0.6 -6.3,0.5 -1,-0.7 3.7,-1.9 -4,1 1.8,-1.2 -4.6,0 1.8,-1 5.7,-1.2 6.3,0.6 -3.8,-0.7 2.7,-0.7 -0.8,-0.9 5.3,0.8 5.7,1.6 -5.2,-2 1.2,-1.4 2.9,0.6 -1.9,-1.1 3.2,0.1 -0.5,-0.8 5.8,0.3 1.9,-0.9 3.7,0.3 0.7,0.6 1.7,-1 6.3,-0.2 0.1,0.6 6.2,0.5 -4.3,1.2 2.3,-0.1 5.2,-1.2 3.4,1.9 2.6,0.1 0.5,1.4 -5.9,2.2 -1.9,-0.2 -2.4,1.2 -6.6,1.6 10.6,-1.8 -7.2,3.6 -4.5,2.7 -1.6,1.8 -3.6,-0.2 0.4,1.1 -5.3,0.8 -2.8,-0.5 0.1,0.8 5.5,0.2 0,0.8 -3.2,-0.4 -3.4,0.3 4.1,0.3 2.2,0.9 -0.3,0.8 -3.3,0.2 2.7,0.7 -0.9,1.1 -3.9,1.2 -1.3,1.8 -4.8,0.2 3.4,1 -0.7,0.7 2.8,-0.2 0.3,1.2 -2.9,1.4 0.8,1.8 -1.7,-0.1 0.8,-1.6 -3.3,0.7 0.5,-1.2 -6,-0.2 -0.9,0.6 -5.8,-0.5 -5.1,-0.2 -0.9,-0.9 4.3,-1.7 1.2,-0.9 -1,-1.8 1.9,-0.4 2.4,0.8 0.3,1.1 z m 0,0 0,0 0,0 0,0 0,0 0,0 1,-0.1 1.2,-2.1 -2.2,2.2 0,0 0,0 0,0 z m 9.3,102.5 0,0.2 0.3,0.2 -4.7,0.7 -2.4,1.4 -0.9,-0.7 1.2,0 -0.4,-0.5 0.3,-0.2 0.2,-0.9 1.3,-0.8 0.8,-4.4 2.3,1.8 0.7,-0.7 -1.9,-2.7 -6.5,-1 0,-0.5 -0.7,0.2 -0.7,-3.5 -1.9,-0.2 -1.1,-1.9 -3.1,-0.6 -2.9,2.5 -3.6,-0.1 -2.3,-1.2 -4.8,-1.2 -52.8,0 -0.4,-0.2 -0.2,0.2 -0.1,0 -0.4,-0.9 -2.7,-1.5 0.2,-0.7 -0.4,-0.1 0,0.1 0.3,0.2 -0.3,0.1 -0.2,-0.4 -0.5,-0.1 0,-0.1 -0.2,-0.2 -0.1,0.2 -0.6,-0.1 -0.1,0 -0.6,-0.1 0.5,0.1 0,0 -0.3,0 0.3,0.1 0.1,0 0.4,0.1 0.4,0.4 -0.1,0.1 0.3,0.3 0,0 1.2,1.6 2,1.6 -0.1,-0.5 0.5,0.3 0.5,0 -0.8,0.2 0.3,0.3 -0.5,0.7 -2.1,-0.6 -3.7,-2.1 -0.1,-0.5 0.1,-0.1 -0.3,-0.5 0,0 -0.1,-0.2 -1.9,-0.4 -1.2,-1.7 1,-0.3 2.6,0.8 0.1,-0.1 -0.2,-0.1 0.6,0 0.2,-0.2 -0.2,-0.2 -0.6,0.4 -2.3,-1.3 -0.3,-2.3 -0.3,0.8 -0.3,-0.3 0.2,-0.4 0.4,-0.1 0,0 0,-0.1 0.1,-0.2 -0.2,0.1 0,-0.1 0.2,0 -0.1,-0.3 -0.1,0.1 -0.2,-1.3 -1,-0.9 -0.5,1.2 -0.6,-0.9 0.1,-0.3 -0.3,0 0,-0.3 0.3,-0.2 0,0.4 0.1,-0.4 0.7,0.3 -0.2,-0.2 0.4,-2 -0.8,1 0.4,-0.1 -0.1,0.3 -0.4,0.2 -0.1,-0.2 -0.3,0.5 -2.2,-2.4 0.9,-1.9 0,-0.7 -0.1,-1.7 -3.4,-1.8 -3,-5 -3,-2.5 -1,-1.5 -1.7,0.6 -2,2 -0.4,-1 -3,-2.4 -3.5,-0.6 0,-29.2 3.6,0.5 3.6,1.9 2.6,0.1 0.1,-1.3 3.9,-0.7 1.1,0.3 5.4,-2.6 1.7,0.5 -4.7,1.7 -1.7,1.6 3.1,-1.8 0.6,1.1 1.1,-1.4 6.2,-2 0.9,1.8 2.3,1.4 1.8,-2.7 0.2,2.6 2.4,-0.5 0.4,-1.2 2.9,0.3 2.2,1.2 4.3,1.3 3.9,0.7 0.1,-0.6 3.4,1.5 0.2,1 -1.7,-0.1 -1.1,1.1 3.2,0.8 4.4,-0.1 2.3,-0.8 2.3,0.7 0.6,1.3 1.6,0.3 0.8,2.4 0.7,-1.9 -1.5,-1.9 4.5,-3.1 -3.8,1.6 -2.3,-0.4 1.1,-1.1 4.7,-0.9 0.9,1.8 1.6,1 2.2,0.1 3.5,1.1 1.6,-0.6 4.5,0.2 1.5,0.7 -2.2,-2.6 2.8,-0.3 0.8,1.4 1.8,-0.9 -1.1,2.7 2.2,1.9 -0.3,-3.8 1.2,0.1 2.4,-2.7 -2,0.3 0.6,-2.3 -3.6,-1.4 -0.7,-1.7 0.2,-3.3 2.4,-2.3 1.1,-0.2 -1,0.1 0,-1.8 -1.1,-1.2 0,-3.1 0.9,-1.4 3,-0.6 2.7,0.7 4,0.3 -3.2,3.9 -1,0.5 -3.4,-0.2 1.3,1.1 -1.2,1.6 -0.8,0.1 2.5,1.9 0.3,2.1 2.9,2.5 -2.5,1.5 2,0.7 2.6,2.1 0.3,2.1 1.2,-2.7 1.4,-0.6 1.9,1.7 -0.9,1.5 1.7,3.8 3.1,-3.1 0.5,-2.2 1.8,-1 -1.5,-0.8 0,-1.7 2.2,-0.3 0.9,0.2 0,-0.1 0.6,0.1 -0.1,0.1 1.9,0.4 2.4,1.5 -0.9,1 1.1,0.9 -2.7,0.6 2.7,3.3 -0.5,1.5 -3.5,2.1 -2,-2 1.3,2.5 -3,-0.3 -0.4,-0.9 -2.5,0.4 1.8,0.9 -2.9,2.6 -1.1,0 -3.3,-1.9 1.2,1.9 3.8,0.3 -1.8,3.2 -2,0.8 -1.8,-0.7 -0.4,1.6 -1.5,0.2 0,0.1 0.6,0.2 -0.1,0.1 -0.1,-0.2 -0.4,-0.1 0.6,1.5 -3.9,1.7 -3.2,4.8 -0.9,2.6 0.8,3.5 2.4,-0.1 1.4,3.6 -0.5,1.4 3.2,-0.9 4.1,1.1 2.5,2.2 5.7,2.2 4.4,0.5 0.3,3.3 -0.3,2.2 4.9,4.7 2.4,-3.1 -0.9,-1.8 -0.3,-2.9 -1.2,-1.3 3.8,-1.7 2.1,-2 0.3,-2.1 -1.1,-3.2 -2.8,-1.8 2.4,-3.4 -1.7,-3 1.2,-1.8 -1.2,-2.4 1.3,-0.9 5.2,1.3 2.1,-1 3.8,2.4 -0.2,0.9 4.6,1.7 -0.8,0.7 0.7,4.7 1.3,-0.1 2.1,2.3 3.6,-2.1 0.5,-2.5 1.3,-1.8 0.9,0.4 0.4,1.4 0.2,-0.4 0.2,0.3 -0.3,0.2 -0.1,-0.1 0.2,1 1.3,0.3 0.9,1.9 3,4.2 -1.1,1.3 4.1,4 4.8,1.7 -1.4,0.7 1.7,1.3 2.5,0.7 0.4,3.2 -2.6,2 -3.1,0.6 -2.4,2.2 -3.6,0.6 -1.2,-0.5 -7.8,0 -1.8,2.4 -3.2,1.4 -1.7,2.4 -2.7,2.5 -3.2,1.3 -3.3,2.9 -1,0.3 -1,0.9 -6.1,1.4 -1.6,1.3 1.4,0.1 0,0.2 z m -90.5,-17.9 0,0 0,0 z m 5.8,2.8 -0.1,-0.3 -0.2,0.1 0,0.1 z m -7.8,-7.2 0.3,-0.4 -1,0.4 -0.3,0.8 z m 57.5,-44.6 -0.4,0.1 0.1,0.3 0.3,-0.2 z m -54.8,52.4 0.3,0.1 0,-0.2 -0.1,-0.1 z m -0.2,-0.3 -0.1,-0.2 -0.2,0 0,0.2 z m 117.6,-39.5 0,2.5 -1.1,0.4 -2.5,-0.6 -1.9,-1.4 -0.2,1.1 3.2,2.7 -0.6,1 -4.4,-1.2 -2,-1.2 -4,-1.6 0.3,-1.2 -2.1,-0.8 -1.6,-2.4 -2.3,0.8 -2.2,-0.8 -1.7,1.3 -2.2,-0.5 -0.5,-1.8 1.3,-1.6 3.2,0.8 3,-1 1.4,0.2 -1.9,-2.2 2.9,-1.9 1.5,-1.7 -1.6,-3.2 -1.6,-0.3 -3.1,-2.3 -2.2,1.2 0,-1.2 1.9,-0.7 -4,-2 0,-1.2 -2.4,-0.5 0.3,1.5 -5.7,-0.9 -0.7,1.2 -7.9,-1.1 -4.6,-1.2 -1.7,-2.2 4.2,0.5 -1.4,-0.9 -3.3,-0.4 -0.5,-2.1 1,-3.2 1.2,-1.8 2.2,-1.6 2.1,-0.5 3,0.2 -3,3.6 0.5,3 3,2.6 -1.2,-3.6 1.9,0.6 -2.3,-1.9 1,-2.2 4.5,-1.9 2.5,0.1 2.4,3.6 -1.1,2.8 2,-1.9 1.7,1.7 0.9,-2 1.6,-0.6 4.6,0.9 -0.2,1.3 2,0.2 0,1.2 2.3,1.7 1.1,-1.4 2.6,1.4 -1.8,0.6 -0.1,0.4 0.6,-0.3 0.6,0.4 1.3,-0.6 -0.8,1.9 2.5,-1.1 3,1.1 2.4,2.9 -1.4,0.2 0.2,0.1 -0.4,0.3 0.4,0.1 0.4,-0.3 0.4,0.2 -0.5,0.2 0.7,0.1 0.8,1.1 -1.8,0.4 -0.7,0.8 -0.2,0 -0.4,-0.1 0.5,0.2 -0.4,0.5 2.8,0.6 0.6,0.8 0.2,-0.2 0.4,0 0,0.3 -0.6,-0.1 0.6,0.8 2.5,-0.4 2,2.5 0.2,0 0.4,-0.1 0.5,0.1 -0.1,0 0.8,0.1 -0.7,1.2 2.6,-0.4 1,2.1 -2.1,0.5 -0.1,1.7 -2,0.7 0.2,1.7 -1.9,-0.6 -4.4,-4.5 -2,0.2 1.5,1.5 -1.6,1.4 4.5,2.5 -0.2,0.8 2,1.6 0,0.2 0,0 0.1,0.4 0.3,0.3 z m -14.4,-23.2 -0.1,0.3 0.6,-0.2 -0.3,0.1 z m 8,4.1 -1.4,0.1 0.8,0.2 z m -5.8,64.5 -0.2,0 0.5,-0.4 0,0.2 z m -100.9,-5.5 0.3,0.4 0.4,0.2 -0.3,-0.1 z m 114.1,-2 4.3,1.4 -0.7,0.7 -2.6,-0.8 z m -116.5,-0.2 -0.2,-0.3 0.2,-0.1 0.2,0.3 z m -5.6,-3.7 -0.4,0 -0.1,-0.4 0.3,-0.2 z m 93.5,-1.6 -0.5,0.3 -0.6,0.2 0,-0.3 z m -99.5,0 -0.1,0.1 -0.1,0.2 0,-0.4 z m 5.4,0.2 -0.2,-0.2 0.2,-0.2 0.1,0 z m -0.1,-0.5 -0.1,0.2 -0.4,0 0.2,-0.2 z m -0.8,-0.7 0.1,0.4 -0.1,0.2 -0.2,-0.5 z m 0.3,-0.3 0.1,0.3 -0.1,0.2 -0.4,-0.4 z m -6,-0.3 0.4,0 0,0.2 -0.3,0.1 z m 6.3,0.9 -0.2,-0.6 0.2,-0.5 0.2,0.8 z m -1.8,-1.1 0.7,0.5 0,0.3 -0.3,-0.2 z m 2,0.5 0,-0.2 -0.1,-0.2 0.3,0 z m -2.5,-1.2 0.1,0.3 -0.2,0 -0.2,-0.4 z m 0.3,-0.2 0.2,0.4 -0.2,0 -0.2,-0.5 z m 91.9,-0.2 0.6,0.1 0.8,1.3 -2.6,-0.9 z m 3,0.2 0.1,0.1 -0.3,0.1 0.1,-0.3 z m -94,-0.5 -0.3,0.1 -0.1,-0.1 0.3,-0.5 z m -3.1,-0.3 0.1,-0.5 1.2,0.7 -0.1,0.6 z m 0.9,-0.4 -0.5,0 -0.1,-0.2 0.4,-0.2 z m 0.6,-0.1 0.9,0.8 -0.5,0.3 -1.4,-1.6 z m -1.7,-1.2 0.6,0.1 0.2,0.3 -0.7,0.4 z m -0.8,-1.3 0.7,0 0.1,0.6 -0.6,-0.2 z m 99.2,-0.8 -0.6,0.2 -0.1,-0.1 1.2,-0.2 z m -98,0.4 0,-0.1 0.5,-0.6 -0.1,0.5 z m 98.6,-3.5 0.4,-1 0.2,0 -0.1,0.7 z m -1.2,-1.5 0,0.5 -0.7,0.6 0.6,-0.6 z m -0.5,-0.7 -0.2,0.1 0.2,-0.3 0.2,0.3 z m 23.6,-3.9 -0.3,-0.1 0.1,-0.2 0.1,0 z m -2.9,-2 -0.6,0.1 0,-0.5 0.5,0 z m -21.7,-1.9 0.3,-0.2 0.1,0.2 -0.2,0.1 z m 0.7,-0.6 0.2,0.1 -0.2,0.2 -0.3,0.1 z m 29.3,-2 0.5,0.8 -0.5,-0.2 -0.2,-0.3 z m -6.5,0 0.5,0.3 -0.3,0.5 -0.8,0 z m -19.4,-0.8 -0.2,0.2 -0.7,0.2 0.2,-0.2 z m 25.7,-2.3 -0.1,0.9 -1.2,-0.8 0.8,-0.3 z m -1.9,-0.6 0.2,0.3 -0.5,-0.2 0.3,-0.2 z m -51.8,-0.3 -0.4,0.3 -0.3,-0.2 0.4,0 z m 53.2,0 0.5,0.5 -0.7,0 -0.2,-0.3 z m -27.5,-1.3 0.2,1.2 -0.8,1.2 -0.9,-1.7 z m -24.8,0 0.1,-0.1 0.4,0 -0.2,0.2 z m 53,-0.5 0.6,0 -0.4,0.5 -0.6,-0.1 z m -25.1,0 -0.5,-0.1 0.9,0 -0.3,0.1 z m 24.8,0 -0.5,0 0.2,-0.1 0.2,-0.1 z m -18.4,-0.5 0.8,0.1 0.2,0.2 -0.8,-0.1 z m 7,-0.4 1.2,0.8 -1.1,0.1 -0.9,-1 z m -21.6,-0.4 0.3,0.9 -2.3,1.5 -1.5,-0.9 1.2,-1.3 z m 29.3,0.1 0,0.1 -0.5,-0.5 0.2,0.1 z m -22.3,-1.6 1.4,0.1 0.3,0.8 -0.7,0.3 z m 27.3,-0.4 -0.2,0.4 0,0.5 -0.4,-0.9 z m -24.8,-0.2 1.1,0.6 -0.8,0.2 -0.9,-0.5 z m 24.7,-0.3 -0.2,0 0,-0.2 0.3,0.1 z m -25.5,-0.7 -0.4,0.2 -0.4,-0.1 0,-0.1 z m 24.1,-0.6 -0.1,0 -0.1,-0.4 0.3,0.2 z m -16.4,-0.9 -0.1,0.6 -0.1,-0.1 -0.1,-0.6 z m 15.8,-0.7 0.1,0.3 -0.8,0.4 0.4,-0.6 z m 5.4,-3.2 0.4,0 0.2,0.3 -0.6,-0.1 z m -39.9,-0.3 -0.4,0.1 -0.1,-0.2 0.4,0 z m -3.4,-0.7 0.6,0.6 0.1,1 -0.8,-0.7 z m 1.4,-0.2 1.1,0.5 0.7,1.1 -1.4,-0.5 z m 2.3,-0.6 0.4,0.1 -0.1,0.3 -0.6,-0.3 z m 39.7,-2.8 0.1,0 -0.9,0.5 0.3,-0.5 z m -86.1,0.3 -0.3,0 -0.2,-0.3 0.1,-0.1 z m -1,-1 -0.1,0.3 -0.3,-0.4 0.4,-0.2 z m -1,-0.5 0.2,0 -0.1,0.3 -0.3,-0.3 z m 85.4,0.1 -0.4,0 0.1,-0.4 0.3,0.3 z m -84.5,-0.1 -0.4,0 0.1,-0.4 0.2,0 z m -10.1,-1.2 -0.4,0 0.9,-0.1 0,0.1 z m 9.9,0.1 -0.4,0 0.1,-0.2 0.2,-0.1 z m -2.1,-0.3 0.5,0.1 -0.1,0.2 -0.4,-0.2 z m -0.4,-0.2 0.1,0.2 -0.3,-0.2 0,-0.2 z m -1,-0.4 0.5,-0.2 -0.6,0.4 -0.6,0.2 z m 68.2,0.3 1.6,0.3 0,0.7 -1.9,-0.1 z m -23.2,0.4 -0.4,0.7 -0.7,-0.6 0.4,-1.3 z m -48.4,-0.9 -0.2,0 0.1,-0.3 0.3,0 z m 69,-0.3 0.9,0.2 0.2,2.3 -1.6,1 -2.1,0 -0.7,-1.5 1.2,-1.8 z m -6.5,0.4 -0.3,-0.1 0,-0.4 0.7,0.2 z m -5.9,-0.6 0.2,0.1 -0.2,0.1 -0.3,-0.2 z m 15.2,0.4 -0.5,-0.6 0.3,0 0.3,0.3 z m -70.1,-1.1 0,0.1 0.1,0.2 -0.7,0 z m 11.9,0.6 -1,-0.5 0.8,-0.1 0.4,0.2 z m 49.7,-0.8 -0.1,0.5 -0.6,0 0.5,-0.4 z m 7.8,0.3 -0.5,0 -0.2,-0.3 0.2,-0.1 z m -0.7,0 0.1,0.7 -1.1,-0.6 0.3,-0.7 z m -51.5,-0.8 -0.1,0.7 -1,-0.4 0.6,-0.4 z m 3.1,-0.4 -0.5,0.6 -0.4,-0.1 0,-0.8 z m 0.3,-0.1 -0.4,-0.2 0.2,-0.5 0.2,0.2 z m -69,-0.6 0.1,0.1 -0.4,-0.1 0,-0.2 z m 65.8,0.1 0.1,-0.5 0.2,0.1 -0.1,0.3 z m 21.3,-0.9 0.2,0.4 -0.3,0.1 -0.1,-0.5 z m 23.2,-0.1 0,0.5 -0.8,1.1 -1.1,-0.1 z m -109.4,-0.7 0.3,-0.2 -0.3,0.7 -0.5,-0.2 z m 103.1,0.5 0.4,0.1 0.1,0.2 -0.8,-0.2 z m -16.2,0.2 -0.3,0.5 -0.3,-0.3 0.3,-0.3 z m 25.2,-0.1 0.7,0.1 -0.9,0.9 -0.5,-0.5 z m -46.4,-0.5 0.6,0.3 -0.5,0.3 -0.2,-0.2 z m 8.8,0 1,0 0,0.7 -0.8,-0.4 z m 1.9,-0.2 0.6,0.3 -0.7,0.7 0,-0.8 z m -82.7,0.1 -0.5,0.2 -0.2,-0.2 0.2,-0.2 z m 116.6,-0.3 -1.1,0.7 -0.6,-0.1 1.1,-0.8 z m -3.3,-0.5 0.3,0.7 -2.3,-0.2 1,-0.4 z m -5.4,0.2 -0.1,0.1 -0.5,-0.2 0.3,-0.1 z m -17.8,-0.2 0.1,-0.2 0.5,0.2 -0.1,0.3 z m -10.6,-0.3 -0.2,0 -0.1,-0.1 0.3,0 z m 19.8,-0.7 0.8,0 -0.4,0.5 -1.1,-0.5 z m -47.2,-0.7 -0.9,0.1 -0.3,-0.3 0.8,0.2 z m -9.2,-0.8 0.6,0 -0.9,0.2 -0.3,-0.2 z m -0.8,0 -0.7,0 -0.1,-0.1 0.1,-0.1 z m -21.5,-0.2 -0.3,0 -0.2,0.2 0.3,-0.4 z m 52.5,-0.3 0.4,0 0.5,0.8 -0.8,-0.3 z m 52.7,-2.6 0.7,-0.1 -0.4,0.5 -0.5,-0.2 z m 0.8,-0.4 -0.5,0 0.2,-0.4 0.3,0 z m -61,-6.4 -1.3,1.7 -2.3,-2.1 -0.2,-1.1 2.7,-0.1 z m 0.4,-11.5 0.7,-1.4 2.5,1.4 0.7,1.2 -2.6,0.5 z m 27,-5.3 1.2,1.2 -0.8,0.5 -2.1,-0.8 z m -28.2,0.9 1.1,1.1 -1.5,-0.1 -1.6,-2.3 z m 37.2,91.2 -0.2,0 -0.5,0 0.2,-0.2 z m -4.1,-2.7 0.2,0.2 -0.7,0 0.1,-0.3 z m 10.5,6.8 0.6,0.1 0.2,1.1 -2.7,-0.8 z m -2,0.2 -0.1,0.2 -0.3,-0.1 0.2,-0.2 z m -1.4,-0.8 0.5,0.2 -0.4,0.3 -0.2,-0.3 z m 14.7,5 -0.3,0.1 0.1,-0.2 0.5,0 z m -36.9,-101.2 4.6,0.2 -0.5,1.1 -4.8,-0.1 z m 68.6,96.9 -2.3,1.3 -1,-1.4 1.8,-2.4 0.3,1.8 z m -4.3,-3 0.1,1.9 -1.1,1.2 -1.3,-1.1 2.2,-0.2 z m -134.6,-14.3 -0.4,-0.5 1.4,-0.3 0.2,1.5 z m -1.3,-3.2 2.6,0.1 -0.7,2.3 -1.6,-0.5 z m 102.4,-5 -0.9,0.4 1.4,-2 0.4,0.6 z m -29,-63.2 2.3,1.8 -0.2,2.4 -2.9,-0.2 -2.9,-1.1 0.8,-1.8 z m -28.2,-10.5 -3.3,-0.2 -3.7,0.4 -0.3,-0.5 5.4,-1.5 1.7,0.7 z m 25.9,-0.7 2,0.6 -0.1,1 -3.8,1.4 -1.7,-1.1 -1.2,-1.9 0.5,-1.4 3.8,0.9 z m 55,101.8 -0.6,-0.2 0.1,-0.8 -0.5,-0.1 -0.3,-0.2 0,-3.2 -2.7,-0.9 -1.5,1.8 -0.5,2 -2.3,2 -6.2,0.1 2.3,-1 0.7,-1.5 5,-2.3 2.9,-3 5.4,-2.4 2.4,0 1.4,0.8 -0.2,1.1 -2.1,1.1 -2.1,-0.3 1.7,1.1 2.2,-0.5 -1.2,1.6 2,2.8 3.1,1 1,-0.6 1.8,1.3 -4,1.5 -1.5,0 -3.3,2.9 -1.2,-1.5 0.4,-1.1 2.2,-1.4 0.6,-1.8 -2.6,1.7 z m -12.4,-1 0.3,-0.2 -0.1,0.4 -0.1,0.2 -0.8,0 0.5,-0.3 -0.2,0.1 0.2,-0.3 0.3,-0.1 z m -96.9,-9.5 -0.8,-0.5 0.6,0.1 0.2,0.4 0,0 z m 7.2,-80.5 -0.7,-1.4 -0.9,1.1 -2.1,-0.1 -0.8,-1.2 2.5,-0.8 5.2,-3.7 4.6,-0.8 1.9,1 -1.6,0.5 0.7,2 -2.3,0.7 -0.7,1.7 -2.2,2.3 -1.5,-0.4 3.3,-2 -0.1,-2.6 -1.5,0.2 -1.1,2.5 z m 127.6,85 1.8,-1 0.5,1.4 -0.6,1.8 -2.4,-0.3 0.8,-1.2 -2.2,0.2 -1.5,1.1 0.1,-2 -6.7,0.3 -0.5,-0.8 1.4,-1.6 3.8,-6.9 2.1,0.9 -2.1,2.3 2.4,0.3 -0.4,1.4 3,-0.9 1.2,1.2 -0.8,1.7 1.6,0.3 z m -60.8,-43.2 -3,0.3 1.8,-1.5 -0.4,-1.6 0.9,-3.7 0.9,-0.5 1.3,2.2 0.4,-0.8 4.3,2.3 1.6,1.6 2.5,1.3 -1.5,1.1 -4.9,-2 -0.2,1 -3.1,2 z m -23.8,-20 2.2,1.3 2,2.1 1.2,0.1 -2.5,1.3 -1.8,-0.3 -4.1,-1.6 2.3,-1.1 z m -11.4,-3 4.7,2.2 1.2,1.1 -2.9,-0.1 -0.8,1.5 1.5,-0.3 0.3,1.4 -2.9,0.9 -5.8,-1.3 -0.1,-1.1 -1.6,1.6 -3.1,1 -8.2,0.9 -0.9,-2.5 -4.4,-0.3 -2.8,-2.4 0.9,-0.4 5.4,-0.7 5.1,0.2 -1.3,-0.8 -3.5,-0.8 -3.9,0.6 -3,-0.2 -1.5,-1.5 4.4,-1.2 0.5,-0.6 -4.5,0.6 0.2,-1 -1.9,0.1 0,-1 1.8,-1.1 -0.9,-0.8 2.4,-1.7 5.3,-1.8 1.2,0.9 0.4,2 1.4,-1.5 3.4,1.1 -0.8,1.5 2,-1.1 1.6,0.4 -1.8,-1.9 1.2,0.1 2.8,1.5 1.7,3.4 0.9,-1 -1,-0.8 -0.6,-2.3 0.2,-2.9 1.6,1.3 1.3,-0.1 2.1,1.6 0.2,1.2 1.8,3.2 -0.5,1.8 z m 49.5,-10.5 3.6,2.1 -0.1,1 -7.1,-0.1 -1.5,-1.6 -0.1,-1.7 z m -35.2,6.4 -3.1,0.9 -1.2,1.4 -3.6,-3.3 -2.3,-0.5 -1.8,-1.8 1.6,-1 1.2,1.4 1.7,-0.1 0.4,-1.4 -2.7,-1.4 1,-0.9 5.6,-1.3 0.8,-1.5 -0.5,2.1 1.5,0.3 0.2,1.7 -2.3,1.3 2.1,0.3 0.8,-0.8 1,2.7 z m -48,-9.7 2.7,1 4,0 2.3,0.7 3,2.3 -7.4,3.1 -1.9,1.7 -0.9,2.4 -4.7,1.4 -1.9,-2.1 -3.5,-1 2,-4 2.1,-2.6 -1.9,-2.2 z m 40.7,-1.8 -0.8,-1.6 1.8,-0.9 -5.4,0.6 -1.4,-1 2.2,-0.9 0.7,-1.9 3.9,2.1 -2.6,-2.5 0.4,-0.7 6.3,1 0.5,4 -1.2,1.8 z m -18.6,-3.4 1.4,-0.8 -2.1,-0.8 3.1,-2.3 0.5,3.3 2.8,0.6 0.9,-0.7 2.1,0.7 0,1.3 3.7,1.5 -2,0.5 -2,-1.2 -0.7,1.1 -4.6,0.6 -0.8,-0.6 -5.4,2.2 -3.9,0.2 -1.4,-1 3.1,-1.1 2,0 1.6,-1 -5.8,0.7 -0.2,-1.2 -1.7,1.6 -4.9,-0.9 3.1,-4.5 1.9,-0.7 0,-1 0.9,0.2 0.9,2.1 1.8,-0.3 3,1.7 0.4,1.2 4.5,0.2 0.1,-0.9 z m 58.7,3.9 -1.5,1 -3.1,0.6 -3.3,-0.4 -7.9,0.4 -2.3,-0.8 -2.1,0.5 -4,-0.9 -0.9,-1.7 0.7,-2.5 -1.9,-2 -1.8,0.4 -3.4,-0.5 -1.9,-2.4 2,-0.3 4,0.6 1.2,1.2 3.1,-0.3 4,2 -1.6,0.5 3.8,2.1 4.2,0 4.4,-1.2 5,0.2 2.8,1.2 0,1.2 -1.5,0.5 z m -59.1,-10.4 -3.6,0.8 -2.1,-0.9 -0.7,-1.2 -1.1,0.5 -1.8,-1.1 1.5,-0.5 2.1,0.8 4.8,-0.9 2,0.6 z m 12.5,-7.8 2.5,1.5 1.5,-0.3 4,2.1 -0.6,0.6 1.6,2.3 -4.2,0.2 0.3,-1.5 -3.3,0 0.1,-0.7 -3.3,0.4 -1.1,-0.9 2.8,0 -1,-2.1 -2.8,-0.1 0.3,-1.4 z m 24.9,-5.3 2.7,0.2 0.5,1.5 1.1,-1.1 1.5,0.1 1.4,2.2 -0.4,1.5 3.1,0 1.2,1.2 -3,1 -4.8,3.8 -5.8,-0.2 -4.3,-3.2 2,-0.9 2.6,0.1 -1.4,-1.3 -2.6,0.9 -3.5,-0.7 -1.8,-3.2 3.6,0.4 -3.3,-1 1,-1.3 1.6,-0.2 -0.6,-0.8 1.3,-1.2 3.2,-0.1 -2.4,-0.8 2.2,-0.5 2.8,1 z m -64.2,100.3 0.2,0.1 -0.1,0.1 -0.1,-0.2 0,0 z", - "ST" : "m 348.93,217.59 -0.3,-0.3 0.4,-0.3 0.2,0.3 z", - "CV" : "m 290.83,188.39 0.5,0.4 0,0.4 -0.5,-0.2 z", - "DM" : "m 218.73,187.89 0.3,0.3 -0.2,0.4 -0.2,-0.5 z", - "NL" : "m 346.93,104.89 -0.7,0.2 0.1,-0.2 0.8,-0.1 z m -131.3,78.2 -0.1,0 0,-0.1 z m 127.1,-72.9 0.8,0 0.9,0 -0.8,0.4 z m 7.4,-4.8 -0.4,2.6 -1.2,1 -0.7,2.7 -1.9,-1.8 -1.5,0.3 -0.8,-0.6 2.4,-3.5 2.6,-1.6 z", - "JM" : "m 188.03,182.19 2.4,1.1 -2,0.4 -2.2,-1.1 z", - "WS" : "m 6.43,243.59 0.1,0.6 -0.5,0 -0.5,-0.6 z", - "OM" : "m 444.03,168.69 -0.1,0.1 0,-0.2 0.3,0 z m -0.4,-1.7 0.6,-0.6 -0.2,1.5 -0.2,-0.1 z m -7.8,14.2 5.7,-2 1.3,-3.9 -0.9,-1.5 1.2,-4.4 1.1,-0.2 1.5,2.1 3.1,0.8 2,2.7 -4.1,5 0.3,1.3 -2.2,0.9 -0.6,1.3 -1.8,0.2 -0.8,1.6 -3.7,0.7 -0.7,-1.3 z", - "VC" : "m 219.13,192.79 -0.1,-0.3 0.2,-0.3 0,0.3 z", - "TR" : "m 386.03,136.89 -0.4,0.2 -0.2,-0.1 0.5,-0.3 z m 3.9,-4.1 2.1,1.7 -3,0.6 -0.7,0.8 -2.2,-0.3 1.2,-1.5 -0.6,-0.7 1.4,-0.8 z m 32.2,5.3 -1.6,0.6 0.5,3.1 1,1.8 -3.9,-0.4 -0.7,0.5 -0.3,-0.5 -4.7,1.3 -2.9,-0.3 -3.1,0.1 -1.4,2 0.2,-2.2 -1.3,0.8 -1.5,-0.4 -3.3,1.6 -1.5,-1.2 -2.6,-0.7 -0.5,1.4 -1.4,0.3 -2.6,-2.1 -2.2,-0.6 0.1,-1.4 -1.9,-0.7 1.6,-1.3 -1.2,-0.8 -0.1,-0.2 -0.5,-0.3 1.2,-2.1 4.6,-0.1 0.1,-1.8 3.9,0.3 4,-2.1 5,0.6 3,1.6 3.7,-0.1 1.3,0.4 2.7,-1.3 2.4,-0.2 1.2,1.1 0.5,2.2 2.1,1 z", - "BD" : "m 512.93,177.09 -1.5,-3.5 -2.5,2 -2.1,-0.6 -1,-3 0.4,-1.4 -1.4,-0.7 1.7,-1 -1.6,-1.5 0.7,-1.2 2.7,1 1,1.7 3.2,-0.1 0.8,0.5 -2.5,2.7 0.8,1.3 1.1,-1.5 0.8,3.5 0.1,1.3 z", - "LC" : "m 219.63,191.49 -0.3,-0.3 0.3,-0.4 0.1,0.3 z", - "NR" : "m 655.93,218.79 0,0 -0.1,-0.1 0.1,0 z", - "NO" : "m 376.13,55.29 -0.4,0.2 -0.4,-0.2 0.4,-0.4 z m -1.5,0.3 -0.5,-0.2 -0.4,-0.6 1.2,0.5 z m 5.1,-1.2 0.6,0.4 -1.1,-0.1 0.1,-0.3 z m 1.6,-0.8 0.3,0.5 -1.1,0.6 -0.5,-0.4 z m 0.6,-0.4 0.6,0.4 -0.8,0.3 -0.2,-0.6 z m -0.8,-0.4 -0.6,0.9 -1.8,0.3 0.7,-0.8 z m 1.3,-0.6 0,0.3 -0.3,-0.1 0.1,-0.3 z m 3,-0.5 0.6,0.5 -0.8,0.3 -0.5,-0.4 z m -8,-28.6 1.5,1.4 -2.3,0.2 -1.7,-1.2 z m 10.1,-0.2 -0.6,-0.3 0.3,-0.4 0.5,0.4 z m 4.4,-1.2 -1.8,0.4 -0.5,-0.1 1.1,-0.5 z m -16.9,-0.9 1.2,0.3 -0.9,0.3 -0.6,-0.2 z m -0.1,-1 -0.9,0.1 -0.1,-0.2 0.1,-0.1 z m 25.8,-3.7 -1.6,0.4 -2.3,0.2 -0.2,-0.2 z m -17.7,-0.8 -0.5,0.1 0.1,-0.3 0,-0.1 z m -0.4,-0.5 0.2,0.1 -0.2,0.1 -0.4,-0.1 z m -8.1,0.1 -0.2,-0.1 0.2,-0.1 0.3,0.1 z m 2.6,-0.9 -0.4,0.1 -0.2,-0.1 0.4,-0.1 z m -1,0.2 0,-0.3 -0.5,-0.3 0.8,0.2 z m -4.7,43 1.2,0 2.3,-1.3 0.6,0.6 0.2,-0.1 0.1,0 0.1,-0.2 0.3,-0.3 -0.2,-0.2 0.4,-0.1 0.1,0 1.1,-1 0.2,0 0,0.1 0.1,0.1 0,-0.1 2.3,0.3 3.2,-2 2.5,-0.3 -1.6,1.3 0.1,1.4 3,-3 -0.4,2 2.1,-2.5 4.6,1.3 2.1,1.5 -1.8,0.8 -2.7,-0.4 4,1.3 -1.7,1.5 -1.9,1.1 0.8,-1.5 -2.8,-2 -3.6,1.3 -0.8,2.7 -1.4,1.1 -1.8,-0.9 -2.9,0.4 -1.4,-1.9 -2,0.8 -1.3,2.3 -3.5,-0.6 -0.5,1.8 -1.1,-0.4 -2.2,2.2 0.5,1.2 -3.6,3 0,2.5 -1.7,2.3 0.6,1.8 -2.4,0.2 -1.4,2 0.7,3 -0.3,1.6 1.3,1.1 -1.2,1.1 0.5,2.5 -1.2,0.7 -0.8,2.5 -1.9,-0.7 -3.7,2.8 -1.8,0.6 -2,-0.2 -2.5,-2.9 0.8,-2.6 -1.9,-2.9 1.3,-1.5 -1,-0.8 1.5,-1.5 2.6,-1.1 -0.1,-0.6 3.6,-1.3 -1.9,-0.2 1.9,-1.2 2.5,1.5 2.6,-1.5 -2.9,0.9 -0.7,-0.8 3.2,-3.2 1.5,-0.8 0.3,-1.2 2.7,-4.7 3.8,-2.7 -1.5,-0.2 3.2,-1.3 -0.7,-0.6 2.2,-1.1 -0.8,-1.1 1,-1.6 1.8,-0.1 1.4,-1 -0.1,-1 0.9,1 z m 22.4,-0.9 -0.3,-0.3 -0.3,0.5 0.7,-0.2 z m -9.5,-24.6 0,-0.2 1,-0.7 -1,0.9 0,0 z m -20.5,28.4 2,-0.6 1.3,-1.5 0.9,2.1 -1.8,1.3 -4.3,0.8 0.2,-0.6 3.4,-0.7 z m 17,-31.5 -1.3,-0.8 -3.2,0.1 1.4,-2 -1.4,-0.7 3.9,-0.7 1.3,1.6 1.5,0.2 z m -14.5,-10.2 1.6,-1.6 4.5,2.7 0.1,1.2 5,1.3 -4.9,1.6 -1.5,4.1 -0.9,0.1 -1.7,3.6 -4.7,-2.5 -0.9,-1.4 5.5,-1.4 -5.9,0.4 -0.2,-1.2 2.8,-0.2 1.4,-1 -1.9,-1.6 -0.1,1.4 -3.3,0.8 -1.9,-1.7 0.3,1.7 -2.1,-1 -1.2,-1.9 1.7,-0.3 -1.2,-2.5 0.6,-0.6 2.1,0.1 3.2,-0.9 0.2,1.4 1.2,-1.1 1.5,0.9 2,2.9 z m 15.5,-2.7 5.8,0.6 0.7,1.4 -2.3,1.5 -3.7,1.4 -2.1,-0.2 -0.1,-0.8 -4,0.2 -2.2,-1.1 4.2,-0.4 0.1,-0.5 -6,0.5 0.1,-1.4 -1.9,-0.4 0.6,-0.7 2.3,0.8 2,-1.4 1,0.9 1.8,-0.3 1,1.2 0.7,-2.2 0.5,1.5 z m 2.5,16 -0.2,0.2 0.1,-0.2 0.1,0 0,0 z", - "KN" : "m 216.43,184.69 -0.5,-0.3 0.1,-0.1 0.2,0.2 z", - "BH" : "m 432.93,166.69 0.3,0.1 -0.1,0.8 -0.2,-0.4 z", - "TO" : "m 1.43,258.89 -0.1,0.1 -0.7,-0.3 0.4,-0.1 z", - "FI" : "m 375.83,86.59 -0.1,0.3 -0.6,0.1 0.3,-0.2 z m -0.8,0.1 0.1,-0.1 -0.2,0.4 -0.3,-0.2 z m 0.3,-0.5 -0.6,0.5 -0.9,-0.5 0.9,-0.3 z m 2.3,0.1 0,0.2 0.7,-0.1 -0.8,0.3 z m 1.6,0.7 0.1,-0.6 0.7,0.2 -0.6,0.7 z m -2.2,-1.7 0.1,0.3 -0.1,0.3 0,-0.4 z m 0,-8.1 0.2,0.3 -0.3,0.2 -0.2,-0.3 z m 6.9,-5.4 -0.5,0.3 -0.1,-0.2 0.2,-0.1 z m -5.9,13.9 -0.3,-0.1 -0.8,-4.4 0.5,-3.7 1.7,-0.3 4.6,-4.7 0.9,0.1 0.2,-2.2 -2.3,-0.9 -1,-2 0.7,-1.2 -1.1,-2.2 0.4,-1.6 -5.7,-3.5 2,-0.8 1.4,1.9 2.9,-0.4 1.8,0.9 1.4,-1.1 0.8,-2.7 3.6,-1.3 2.8,2 -0.8,1.5 -1,1.7 0.5,1 2.5,1.8 -1.7,2.7 1.5,2.3 -0.6,3.6 1.9,3 -1.1,0.8 3,2.5 -0.6,1.2 -3.9,3.8 -2.7,2 -7.7,1.6 -2.6,-0.9 0.1,-0.1 -0.3,0 0,0 -0.8,-0.2 0.2,0.1 -0.1,0.2 -0.3,-0.3 z", - "ID" : "m 593.33,228.59 1,0 -1.1,2.3 -0.1,-1.6 -1.9,-1.3 z m -51.2,-5.5 -1.9,0.6 -1.4,-1.8 0.5,-1.1 1.1,2.5 z m 19.2,10.6 2.9,-0.2 0,0.7 -3.9,0.9 -2.2,-0.5 1,-1.2 z m 20.3,-20.3 -0.2,1.9 1.6,2 -1.7,-0.4 -0.5,3.4 -1.2,-2 1.1,-0.1 -0.5,-2.7 z m -7.9,22.2 0.5,0.3 0.3,-0.6 0.3,-0.1 0.6,-0.3 0.1,0.4 0.2,0.6 -1.1,1.2 -1.9,0.5 z m -11.7,-25.7 -0.4,0.3 0,-0.4 z m 44.2,12.8 0,8.2 0,4.2 -1.8,-1.9 -4.6,0.6 0.7,-1.5 1.6,-0.6 -2,-3.9 -3.5,-1.5 -1.5,-0.1 -3,-1.8 -1.4,1.2 -1.3,-2.7 3.4,-0.6 -2.5,-0.1 -3.5,-1.9 -1.1,-2.3 1.9,1.3 2.8,-0.8 2.4,0.6 0.3,2.8 1.6,2.2 2.5,-1.5 -0.2,-1.7 3.2,-0.3 3.9,1.7 z m -39.3,14.7 -2.9,-1.4 1.4,-0.4 1,-2 4,0.6 1.3,-0.8 5.4,-0.4 -3.3,1.1 -0.5,-0.5 -3.9,1.1 -3.5,-0.1 1.7,2.2 z m -23.2,-4.7 -3.5,-0.8 -2,-1.2 1.1,-1.7 4.4,0.7 0.5,0.9 3.6,0.4 0.9,-1 2.2,0.9 6,-0.1 0,3.8 -3.8,-1 -1.1,0.3 -3.7,-0.5 -2.6,-0.9 z m 37.9,-9.1 -2.7,1.5 -1.4,-0.9 -0.1,-1.9 0.3,1.4 1.9,0.5 1.7,-0.9 3,-0.2 2,0.6 0.4,1.4 z m -10.2,5 -1.6,-0.4 1.8,-1.9 -2.7,0.3 0.2,-1.1 -2.3,-1.5 -0.2,4.3 -1.8,-0.3 0.5,-2 -1.6,-3.2 1.1,-1.3 1.3,-5.1 1.7,-1.2 1.3,0.5 4.4,0.5 2.3,-1.8 -1.2,2.5 -8,0.1 -0.6,1.2 1.3,2.2 1.9,-1.7 3.3,0.3 -0.2,2.1 -1.1,-1.2 -2.2,1.5 1.8,2.4 1,2.3 z m -10,-18.7 -0.4,1.6 1.4,1.9 -0.5,0.8 2.2,1.6 -2.4,0.6 -0.6,2.4 -1.6,1.7 0,1.4 -1.2,2.7 -2.6,1.1 -0.7,-1.5 -2.3,-0.4 -2.4,0.7 -0.1,-1.5 -2.8,0.5 -0.6,-3.6 -0.9,0.3 -1.2,-4 1.5,-2.4 1.7,2.3 4.7,-1.3 2.9,0.2 1.8,-3 0.8,-2.6 z m -37,-0.1 2.9,1.9 2.3,2.5 1.3,-0.5 4,3.6 -0.7,1.9 1.9,0.5 0.7,2.6 1.7,0 0.8,1.7 -0.4,4.5 -2.1,0.5 -6,-5.1 -1.5,-2 -1,-2.6 -1.8,-2 -1.8,0.5 1.6,3.3 -0.7,-0.1 -1.1,-3.2 1.5,-1.2 -1.1,-2.5 -2.3,-0.2 1.2,2 -0.5,0.8 -1,-2.9 -1.4,-0.5 1.7,0.3 0.5,-1.3 -4.1,-3.7 -0.3,-1.9 2.2,1.1 2,0 z", - "MU" : "m 446.83,256.49 -0.1,0.8 -0.6,0 0.3,-0.9 z", - "SE" : "m 371.43,89.89 0,0 0.1,-0.3 0.2,-0.1 z m 7.4,-19.2 0,-0.4 0.3,0.2 0,0.2 z m 3.7,-1.2 -4.4,0.9 -1.3,2.7 0.8,0.7 -1.5,1.7 -3.4,2.1 -2.3,2.1 -1.4,3.2 0.4,1.9 1.2,0.4 2.2,2.5 -1.2,1.7 -3.3,1.5 -0.6,2 0.6,2.7 0.7,-1.2 1.9,0.2 1.3,-1.8 -0.1,1.9 -3.1,0 -1.2,2.7 -3.4,0.3 -1,2 -2.3,0 -1.2,-4.1 -1.5,-2.9 0.2,0 0.2,-0.3 -0.5,0.1 0,0.2 -0.5,-1.1 0.4,-1.8 0.8,-2.5 1.2,-0.7 -0.5,-2.5 1.2,-1.1 -1.3,-1.1 0.3,-1.6 -0.7,-3 1.4,-2 2.4,-0.2 -0.6,-1.8 1.7,-2.3 0,-2.5 3.6,-3 -0.5,-1.2 2.2,-2.2 1.1,0.4 0.5,-1.8 3.5,0.6 1.3,-2.3 5.7,3.5 -0.4,1.6 1.1,2.2 -0.7,1.2 z m -23.7,22.4 -0.6,0.2 0.1,0.3 0.6,-0.2 z", - "TT" : "m 219.73,197.09 -0.2,1.3 -0.9,-0.3 -0.4,-0.8 z", - "MY" : "m 528.33,207.39 0,0.4 -0.2,-0.1 0,-0.3 z m 33.7,2.5 -0.4,-0.1 0.1,0 -0.3,0.1 -3.3,-0.5 -0.8,2.6 -1.8,3 -2.9,-0.2 -4.7,1.3 -1.7,-2.3 2.6,1 0.6,-1.6 0.2,0 0,-0.3 0,-0.2 3,-0.9 1.9,-2.8 1.2,1.1 0.7,-1.6 0.1,-0.1 0,0.2 0.6,1 -0.4,-1.2 1.9,-2.3 2.2,-1 3.8,2.8 -2.1,0.6 0.8,1 -1.4,0.3 z m -34,-4.4 1.8,0.4 0.1,1.2 1.8,-1.2 2.6,2.7 0,3.6 1.6,3 -1.7,-0.4 -4,-2.5 -1.1,-1.9 z", - "PA" : "m 187.13,203.99 -1.2,-2.6 -2,-0.7 -1.7,1.7 0.9,1.2 -3.4,0.4 0.1,-1.8 -2.2,0.3 -0.3,-0.6 0,-0.1 0,0 0,0 0,0 0.9,-2.3 0.9,1.2 2,0.3 2.7,-1.6 2.3,0.4 2,1.4 0.4,1.4 z", - "PW" : "m 593.83,203.79 0,-0.2 0.1,-0.3 0.2,0 z", - "TV" : "m 679.43,233.99 0,0 0,-0.1 0,0.1 z", - "MH" : "m 663.83,204.19 0.3,0.1 0.1,0 -0.1,0 z", - "CL" : "m 195.93,330.49 2.3,1.1 -1.4,0.9 -1.8,-1.9 z m -3.3,-14 1,2.1 0.1,3.2 -2.2,-0.8 1.3,-0.9 -1.3,-1 0.1,-1.9 z m 2.9,-12.8 -0.4,2.3 -2,0.7 1.1,-1.6 0.3,-2.5 z m 9.4,24.9 0,5.6 -0.2,0 0.2,0.1 -0.1,0.2 -2.5,-0.3 -1.1,1.1 -1.4,-2.5 1.6,-1.8 0.2,2 2.6,0.3 -2.1,-0.9 -0.6,-2.8 1.9,-1.5 z m -3.4,-75.6 0.8,-0.1 0.9,-1.5 1,2.8 1,1 -0.6,2 1.1,1.7 0.6,3 1.3,0 -0.3,2.4 -2.3,1.6 0.5,4.3 -1,0.5 -1.6,2.6 -1.8,6.6 1.6,3.8 -1.2,3.9 0,1.9 -1.2,1 -0.3,2.6 0.6,2.2 -1,0.5 -1.1,4.1 0.4,3.1 -0.8,2.1 1,2.1 -0.8,2 1.4,1.3 -1.1,4.6 -1.2,1.7 0.5,1 -2.5,3 0.8,3 1.6,-0.3 -0.2,2.3 1,1.1 3.7,0.1 2.9,0.9 -1.3,-0.4 -3,1.4 -0.6,2.7 -4.2,-1.4 0.5,-1.1 -2.2,-0.3 -0.6,-1.5 1.4,0.3 -0.3,-2.5 -2.4,-1.2 1.6,-0.9 -0.3,-4.5 -0.6,-2.2 0.9,-2.3 -2.2,-0.3 1.8,-2.9 0.9,1.4 1.5,-1.7 -0.3,-1.1 -2,-0.1 1.1,-2.4 0.5,2.3 2.1,-6.3 -0.9,-1.3 -1.5,0.6 -0.4,-1.8 1.3,-3.3 -0.8,-3.9 0.9,-1.3 1.1,-3.4 0.8,-1 1.6,-5.9 -0.5,-4.5 0.7,-0.6 -0.5,-2.1 1.2,-2.7 0.9,-4.6 -0.3,-4.6 1,-3.3 z m 6.1,81.7 1.3,0.8 -4,-0.3 3,2 -1.4,0 -2,-1.9 -1.9,0.6 -0.2,-1 4.7,-0.3 0.3,0 z", - "TH" : "m 532.13,194.49 0.1,0.1 0.2,0.3 -0.3,0 z m -0.4,11.4 -1.8,1.2 -0.1,-1.2 -1.8,-0.4 -1.6,-2.3 -2.1,-1.7 1,-3.5 1.7,-2.8 -0.9,-3.7 -1.7,-2.1 1.1,-2.6 -2.7,-4.6 1.2,-2.6 0.9,0.3 3,-1.3 0.7,1.6 1.5,0 -0.2,4 1.8,-1.5 1,0.8 1.5,-1.2 1.2,0.2 1.6,1.9 -0.2,1.6 1.7,1.6 -0.8,2.7 -3,-0.2 -2.5,1.7 1.1,3.7 -2.1,-2 -1.6,0.2 0,-1.7 -1.8,0.1 0,2.4 -1.4,3 -0.1,2.7 1.2,-0.2 1.1,4.1 2.1,0.6 z", - "GD" : "m 218.33,194.79 -0.2,0 0,-0.3 0.2,-0.1 z", - "EE" : "m 379.63,90.99 0.8,0.6 -1.6,0.6 -0.7,-1 z m 1.4,-0.1 -0.3,0.2 -0.3,-0.2 0.2,-0.2 z m -0.3,-1.2 0.3,0 0,0.2 -0.4,0 z m -0.9,0.1 0.6,0.4 -1,0.5 -0.9,-0.7 z m 9.5,0 -1.4,0.6 1.3,2.2 -0.2,0.5 -0.4,0.8 -1.6,0 -2.3,-1.5 -1.9,0.6 -1.5,-2 -0.1,-1.8 4.8,-1.2 3.9,0.4 0.2,0.2 0.1,0.2 -0.1,0 -0.2,0.1 0,0 0.1,0 0,0 0.1,0 -0.1,0 -0.2,0 -0.2,0.4 z", - "AG" : "m 218.03,184.89 0.2,0.2 -0.3,0 -0.1,-0.2 z", - "TW" : "m 565.23,172.19 1,0 1.9,-3.1 1.6,-0.1 -1,3.9 -1.1,2.5 z", - "BB" : "m 222.33,192.79 -0.2,-0.1 0.1,-0.4 0.3,0.3 z", - "IT" : "m 359.93,141.89 6.3,-0.8 -0.8,1.2 -0.2,2.4 -1.2,-0.3 z m -5.6,-7.3 0.8,1.5 -0.5,3.1 -2.2,0.4 0.1,-3 -0.5,-1.3 z m -3.7,-6 -1.7,-3.1 0.8,-1.9 2,-0.8 1.5,0.4 2.2,-0.7 0.9,-1.2 3.3,-0.5 0.4,0.9 2.5,0.4 -0.6,0.6 0.6,1.7 -0.9,-0.5 -2.1,1.1 0.5,2.6 2.3,1.6 0.9,2.2 2.1,1.5 1.7,0 -0.2,1 4,1.9 0.9,1.2 -2.8,-0.9 -1,1.9 1.2,0.6 -2.1,3.3 0.3,-1.9 -1.1,-2.9 -3.7,-2.6 -1.2,0 -3.6,-3 -2.1,-3.4 -2.5,-1 z m 9.5,4.4 0,0 0,0 0,0 z m 0,-4.6 0.1,-0.2 -0.1,0 -0.1,0.1 z", - "MT" : "m 363.63,146.09 0.5,0.2 0,0.3 -0.3,-0.1 z", - "VU" : "m 656.83,245.19 1.4,1.2 0.7,3.8 -1.7,-0.8 -1.6,-2.6 z", - "SG" : "m 535.13,214.99 0.3,0.2 -0.3,0.2 -0.4,-0.1 z", - "CY" : "m 400.93,148.29 0,0 0,0 z m 0.5,-0.1 0.2,0.2 -0.4,0 -0.2,-0.2 0.2,0 0.2,0 z m -0.5,0.1 0,0 0.1,0.1 0,0 z m -0.1,0.1 -0.2,0.3 -1.1,0.4 -0.4,-0.1 -0.1,0.1 -0.9,-0.9 0.6,-0.3 0.1,0.1 0,-0.1 0.1,0 0,0 0.1,0 0,0 0,0 0,0 1.3,0.1 0.5,0.3 z", - "LK" : "m 489.33,199.29 1.6,0.6 2,3.4 -0.1,1.9 -2.2,1.3 -1,-0.4 -0.6,-3.7 0.8,-2.7 z", - "KM" : "m 419.53,240.59 -0.5,-0.4 0.1,-0.7 0.3,0 z", - "FJ" : "m 675.43,250.99 2.2,0.1 0,-1 3.1,-1.2 -3.2,2.4 0.9,0.5 -0.4,2.4 -0.7,-1.3 -1.5,-0.3 z", - "RU" : "m 621.23,124.99 -2.1,0.7 -1.5,1.4 -2.9,1.4 1.3,-1.6 4.8,-2.3 z m -189,-65.8 -2.9,0.8 -0.5,-1.8 1.8,-0.8 1.7,0.8 z m 17.7,-4.7 2.2,1.5 -1.8,0.7 -1.9,-1.3 z m 22.6,-10.7 1,0.4 -3.4,0.7 0.1,-1.3 z m 80.8,-3.8 -1.1,1 -2.5,-0.9 1,-0.8 z m -107.6,-23.8 -2.8,0.4 0.6,-1 4.7,-0.6 0.7,2.5 z m -4.8,-1.3 -0.5,1.2 -3.3,0.2 0.5,-1.1 2.8,0.6 z m 2.9,-2.7 4.8,0.2 -3.3,1.7 -2.1,0.2 -3.5,-0.8 z m 16.4,-0.5 1.4,1.2 -4.5,1.1 -1.1,-0.7 2.9,-0.6 z m -13.1,-2.3 1,1 -1.4,1.6 -3.5,-0.2 z m -34.3,120.1 -1.9,-1.7 -4.6,-2.5 1.8,-0.4 0.6,-2.6 2.8,-1.3 -2.1,-0.3 1.2,-1.8 1.8,0.1 -0.1,-2.3 0.8,-1.2 -1.8,-1.5 -3.4,-1.4 -3.4,0.2 -1.1,-2.2 -1.7,-0.1 0.5,-1.3 -1.2,-1.5 -3.9,0.6 -1,-2.3 2.8,-1.1 -1.8,-1 -1.7,-4.8 -5.2,-1.4 -1,-1.9 -0.6,-1.9 0.4,-0.8 0.2,-0.5 0.4,-1.3 -0.3,-1.5 0.3,-0.5 0.2,-0.3 0.2,-0.1 0,0 -0.1,0 0,0 0,0 0.1,0 0.2,-0.1 -0.1,-0.2 -0.2,-0.2 0.2,-0.9 3.3,-1 -3.9,-1.1 2.7,-2 3.9,-3.8 0.6,-1.2 -3,-2.5 1.1,-0.8 -1.9,-3 0.6,-3.6 -1.5,-2.3 1.7,-2.7 -2.5,-1.8 -0.5,-1 1,-1.7 1.9,-1.1 1.7,-1.5 2.3,-0.6 2.1,0.8 -2.1,0.6 7.5,1.3 9.8,5 0.6,1.5 -1.8,2.6 -2.1,0.9 -2.7,0.1 -8.5,-2 -2.4,-1.3 5.2,4.5 -0.9,1.1 0.9,1.6 1.5,-1 2.4,0 4.9,1.9 1.7,-0.8 -1.2,-2.5 2.9,-1.4 2.4,-2.3 3.1,2.9 0.6,-2.6 -1.3,-1.6 0.8,-3.5 -1.8,-1.2 5,0.5 1.5,2 -2.6,0.4 -0.8,1.3 1.7,1.4 3.7,-0.3 0.5,-2.1 1.5,-0.3 4.5,-2.5 4.4,-1.4 1,1.9 1.4,0.5 2.5,-1.6 2.5,0.4 3,-1.5 1.5,2.2 2.4,-2.6 -1.5,-1.6 1.2,-0.9 6.5,1 2.9,1.6 3,0.9 2,1.6 1.6,-2 -1.2,-0.1 -0.9,-1.8 -2.3,-0.3 1,-3.9 -1.7,0.1 0.9,-2.1 3,-1.9 0.9,-3.1 1.2,-0.7 3.8,-0.1 2.4,0.7 0.1,1.6 -2,2.6 1.6,1.5 -0.4,2.9 0.2,4.6 2.1,1.4 -1,2.6 -1.1,0.4 -1.9,3.1 -2.3,1 3.3,0.3 2.7,-1.8 2.4,-2.8 -0.6,-3.4 3.7,-1 1.8,1.6 -0.4,2.5 1.9,-1.6 -0.8,-2.1 -4.2,-1.3 -3.3,0.2 -0.5,-1.8 1.6,-2.7 -2.5,-3.2 0.9,-1.4 2.7,-1 -0.4,-2.9 1.8,-2.4 2.1,0.3 -2.3,2.7 0.4,1.8 -1,3 4.9,0.9 0.9,-0.4 -3.7,-1 -0.6,-1.3 1.8,-0.5 1.2,0.8 0.6,-1.7 2.4,-2.9 0.5,2.6 4.5,2.5 2.9,-0.1 -1.9,1.5 1.1,1 0.7,2.4 1.1,-0.5 -1.2,-2.7 0.9,-1.4 -2.8,-2.3 -2.8,-1 -0.7,-2.4 0.4,-1.4 12.5,-1.1 -0.5,-1.1 -2.8,-2.2 3.1,0.5 -0.5,-1.3 2.1,-0.2 4.1,-2.2 6.9,-1.1 -1.2,-0.7 3.2,-0.1 2.3,-0.9 -0.9,-1.5 1.6,-1.3 0.5,2.6 -1.1,0.8 1.2,1.1 2.6,-0.5 2,-2.1 3.8,-0.1 0.6,-2.2 4,-2.3 2.8,-0.2 2.2,0.6 -1.3,1.5 4.3,1.2 -2,1.5 2.8,-0.1 0.1,-0.8 6.2,0 2.6,0.5 0.2,1.6 1.4,0 0.6,2.5 -2.1,-1.1 2,2.3 -7,3.6 -3.6,2.6 -1.8,0.1 -1.5,1.5 2.6,0.1 6.1,-1.9 -2.5,-0.1 0.8,-1.1 4.5,1.2 1.5,-0.7 0.6,1.4 3.7,-0.8 5.9,0.5 -0.2,1.1 3.6,1.1 5.2,0.4 1.1,-1.3 -0.5,-1.2 2.5,-1.3 0.3,0.7 3.2,1.1 1.2,-0.5 4.6,2 -1,3.4 -2,-1.3 3.6,4.6 2.2,1.4 1.2,-0.5 1.9,-3.5 2.2,1.6 1.6,0.2 2.8,-0.9 2,0.3 3.3,-0.3 2.5,0.6 -1.6,-2.5 0.6,-1.2 3.9,-1 7.4,0.8 2.9,0.9 -2,0.4 0.5,1.3 2,-1.8 4.6,0.6 0.9,0.9 -2,0.7 4.7,1.4 1.4,1.5 2.8,0.1 4.3,-0.8 5,0.4 2.2,1.1 0.8,1.5 -0.8,1.2 2.7,1.5 5.6,-1.1 1.6,0.7 4,0.2 2.5,-1.8 2.3,0.5 -0.5,1 -2.1,-0.4 0.5,1.6 2.4,1.5 2.6,-0.9 -0.7,-3.6 9.4,0.9 3.5,0.8 7.3,2.9 0.3,0.7 6.5,2.9 1.6,3.7 0.8,-1.4 4.4,0 3.9,2.7 -1.6,1.6 -3.1,0.3 -0.9,2.6 0.8,0.9 -2.2,0.3 -2.6,-1.6 -2.2,-0.6 -0.1,-1.2 -2,-0.7 -3,0.3 -2.2,-2.1 0.8,1.8 -0.8,1.5 -4,1.5 -3.5,-0.6 3.1,2 0.5,-0.5 2.6,5 -1,1.3 -2,-0.8 -2.6,0.2 -6.2,2.7 -2.8,2.1 -2.7,1.2 -0.4,1.4 -2.2,-1.8 -4.4,0.8 -1.6,1.3 0.6,-1.8 -3.1,2 -2.2,-0.8 -0.9,1.6 1.2,1.7 1.6,0.1 -2.2,1.2 -0.8,-1.5 -2.1,2.5 2.6,1 -1.1,2.6 1.2,1.6 -2.4,0.1 -0.7,1.4 0.7,2 -4,1.8 -0.8,2.4 -1.9,1 -1.7,3.4 -3.8,3.5 -1,-0.1 2.9,-1.9 -1.2,-5 -1.1,-6.2 0.9,-4 2.8,-2.9 2.9,-1.7 1.7,-2 3.8,-3 0.1,-0.6 4,-2.7 0.2,-2.7 2.1,-0.4 -1.2,-0.9 -2.5,0.5 -0.6,2.1 -5.4,3.6 -0.7,-1 1.1,-3 -5.5,0.5 -4.9,4.1 -1.6,2.5 2.1,0.9 -3.5,-0.2 -3.8,1.1 -1.2,-1.8 -2.2,-0.8 -1.6,1.5 -9.3,-0.5 -2.5,0.6 -3.2,2.3 -0.8,1.5 -3.5,2.4 -2.1,2.4 -4.5,3.2 2.5,0.8 0.3,-1 2.7,-0.1 -1.5,2.6 1.1,1.2 1.6,-1.9 2,0 3.2,3 -1.9,6.7 0.2,2.4 -0.7,2.7 -1.8,1.7 -2.2,3.7 -4.3,4.4 -1.4,2.1 -3.8,1.9 -2.6,-1.5 -2.1,2.4 -0.1,-0.3 -0.2,-0.3 0.9,-0.7 0.5,-2.8 -0.6,-1.9 2,-0.9 0.7,1.7 0.9,-1.3 2,-2.8 0.5,-2.4 1.2,-1.1 -0.7,-1.7 -3.7,1.7 -2.7,0.1 -0.4,-1.6 -2.8,-2.7 -2.5,-0.3 -4.5,-8.8 -4.7,-1.5 -4.7,0.8 -1.5,1.3 1.4,1.7 -1.3,1.1 -1.8,3.3 0.1,0.9 -2.8,1.2 -2,-0.7 -2.5,-0.2 -2.1,-1 -2.4,1.7 -4.4,1.2 -4.2,-0.5 -1.2,-1.5 -5,-1.4 -3.1,0.9 -2.7,-1.2 -0.2,-1.8 -6.3,-2.1 -2.1,2.9 1,1.2 -1.9,2 -5.2,-0.7 -0.7,-1.4 -3.6,-0.7 -8.7,4.2 -0.6,0.1 -0.3,0.1 -1.4,-1.3 -2.6,0.1 -3.5,-3.6 -3.8,0.7 -1.4,-1.4 -1.4,1.2 -4,-6.3 -2.6,-1.8 0.3,-1.3 -4.7,2.3 -1.4,-1 -4.5,-0.4 -0.6,-3.1 -4.9,0.2 -0.2,0.7 -5.7,1.6 -8.1,1.2 0.5,1.6 1.6,0.4 -2.7,1.1 0.7,0.9 -1.7,1.2 2.6,1.1 -0.2,1.7 -2.7,-0.2 -0.4,0.8 -2.2,-1.2 -4,-0.1 -1.7,1.3 -2.2,-0.8 -2.2,-1.7 -5.3,-0.3 -3.6,2.7 -0.5,1.9 -1.7,-1.6 -1.2,1.6 0.2,1.5 -1,2 1.2,1.4 1.8,0.1 2.2,3.5 -3,1.5 -1.8,2.5 1.7,2.1 -0.3,1.7 2.2,2.7 -1.6,1.5 -2.5,-1.6 -3.1,-1.9 -1.7,0.4 -2.1,-1.4 z m 271.5,-79 1.5,0.9 -0.9,0.7 -4,0.2 -2.3,0.6 0.2,-1.5 2.6,-1.2 z m -78.8,-8.9 2.7,0.1 2.6,1.4 -0.4,1.3 -5.1,-1.1 z m -92.9,-23.7 -1.9,-1.1 5,0.6 -2.1,1.1 z m -86.5,-4.2 2.6,-0.3 -4.2,1.7 -1.9,-0.9 z m 25.7,-0.9 2.6,-0.7 1.1,1.5 -2.3,1.7 -2.6,-0.1 -0.9,-1 z m -77.7,89.4 1.2,-0.6 -1.5,0.6 0,0 0.6,-1.2 1.9,-1 0.2,0 -0.9,0.9 1.4,-0.8 3,1 -0.1,1.4 -0.2,0 z m 144,-85.5 -1.4,0.2 -1,0.2 -4.2,-1.3 2.4,-1 0.5,-2.2 5.2,-1.3 4.2,2.6 -1.4,0.3 0,1.8 -3.6,0.6 4.3,-0.3 1.5,1.3 1.6,-0.8 1.4,1.6 -1,3.7 -3.2,0.1 -1.8,-0.8 -3.4,-0.2 -2.4,-2.2 z m 92.4,98.5 -1.3,3.3 1.6,3.6 -1.8,-0.2 -0.7,1.7 -0.5,-1.7 0.7,-3.3 -0.4,-2.1 0.5,-5.8 -1.1,-1.5 0.2,-4.2 2,-0.8 -0.5,-1.6 1.4,3 0.3,4.2 1.6,5.7 z m -166.2,-71 -2,3.4 1.4,3.7 2.9,1.9 -0.9,0.8 -3.3,-0.9 -0.5,0.7 -3.6,-1.1 0.6,-1.2 -1.3,-0.6 0.2,1.2 -2.9,-1.9 -0.1,-1.3 1.8,-0.5 1.4,-3.7 3.5,-1.2 z m 173.7,-7.9 2.4,-0.4 1.4,0.6 3.3,0.6 -0.5,0.9 -4.6,0.3 -4.1,-1.7 0.7,-1.3 z m -11.1,-3.4 2.3,1.3 2.7,0.1 2.7,1.3 -2.6,1.9 -2.9,-1.4 0.3,1.1 2,0.6 -2.6,0.4 -1,-0.6 -5.4,1.3 -2.1,-0.8 -2,-1.9 -1.6,-0.4 -1.1,0.3 0.4,-1.9 2.6,1 0.8,-1.4 2.8,-1 4,2.4 z m -141.2,-3.3 2.3,0.6 0.3,1.2 -3.5,1.9 -11,3 -4.3,3.4 -1.8,-0.5 0.1,1.4 -2.8,3.5 -3.4,-0.7 -1.5,0.5 -1.1,-1.7 2.2,-0.8 1.4,-2.5 2.9,-2.9 2.2,-0.7 1,-1.2 4.5,-0.8 0,-0.7 2.5,0.3 3.2,-0.5 z m 63.7,-7.4 0.3,-1.4 2.4,-1.3 1.6,0.5 -0.4,1.2 1.7,-0.5 2.4,1.3 2,2.5 -1.7,-0.9 -2.9,0.9 -4.7,0.3 -2.3,0.9 -1.5,-0.3 z m -103.8,-6.5 5.7,-1.5 -1.2,-0.6 2.6,-1.1 2.6,1.5 -3.8,0.9 0.9,2.2 -1.3,-0.7 z", - "VA" : "m 360.13,132.99 0,0 0,0 0,0 z", - "SM" : "m 360.13,128.39 -0.1,-0.1 0.1,-0.1 0.1,0 z", - "KZ" : "m 451.63,123.39 -2.1,0.7 0.6,1.3 -1.4,-0.8 0.4,-0.3 -0.6,0.2 -5.1,1.3 0.1,8.5 -0.9,0.1 -2.6,-2.4 -1.3,0.5 0,0 0,0 0,0 -0.8,0.3 0,0 0,0 0,0 -1.2,0.5 0.5,-2.2 -1.5,-0.3 -3.1,-4.2 2.1,-1.6 2.1,-0.2 1.1,-1.4 0,-2.1 -1.8,0.1 -1.8,-0.7 -3.8,1.9 -2.2,-3.5 -1.8,-0.1 -1.2,-1.4 1,-2 -0.2,-1.5 1.2,-1.6 1.7,1.6 0.5,-1.9 3.6,-2.7 5.3,0.3 2.2,1.7 2.2,0.8 1.7,-1.3 4,0.1 2.2,1.2 0.4,-0.8 2.7,0.2 0.2,-1.7 -2.6,-1.1 1.7,-1.2 -0.7,-0.9 2.7,-1.1 -1.6,-0.4 -0.5,-1.6 8.1,-1.2 5.7,-1.6 0.2,-0.7 4.9,-0.2 0.6,3.1 4.5,0.4 1.4,1 4.7,-2.3 -0.3,1.3 2.6,1.8 4,6.3 1.4,-1.2 1.4,1.4 3.8,-0.7 3.5,3.6 2.6,-0.1 1.4,1.3 -3,1.7 -0.5,3.3 -1.5,0.5 -3.3,-0.9 -1.4,4 -4.2,1.2 1.4,4.4 -1.2,2.2 -3.4,-1.6 -6.2,0.1 -1.9,-1 -1.3,2 -3.2,-1 -1.7,1.4 -3.6,2 -0.9,1.7 -1.3,-1.3 -2.3,0 -0.4,-1.8 -0.9,-0.1 -0.5,-2 -1.6,-1.9 -5.6,0.5 -1.9,-2.1 -1.8,-1.1 -0.7,-2 1.3,-0.5 z m 0.3,0 0.1,0 0,0.1 1.5,-0.7 z m -19.5,2.7 -0.4,-0.2 0.1,-0.3 0.6,0 z", - "AZ" : "m 422.53,134.89 -0.1,0.1 0,-0.1 0.1,0 z m 0.4,0.2 -0.1,0 0,-0.1 0,0 z m 0.5,0.8 0,-0.1 0.1,0 -0.1,0.1 z m -1.3,2.2 -0.1,-0.1 1.9,0.3 0.7,1.5 -1.3,-0.3 z m 3.1,-5.1 2.5,1.6 1.6,-1.5 1.9,2.8 -1.3,4.9 -1.7,-0.9 -0.1,-2 -2.8,1.9 -1.6,-2.6 0.6,-0.4 -1.9,-2.4 2.9,0.5 z", - "TJ" : "m 471.53,135.09 0,0.1 -0.1,-0.2 0,0 z m 0,2.5 0.1,0.1 -0.2,0.1 -0.2,-0.2 z m 5.8,0.9 0.3,2 1.8,0.1 0.3,2.8 -3.1,-0.5 -3.2,1.7 0,-2.6 -2,-1 -0.9,1.8 -1.6,0.9 -2.9,-0.2 1.1,-2.3 -0.4,-1.6 -1.5,-0.6 2.1,-0.7 1.9,-2.8 2,-0.5 0.9,1.8 -1.9,0 -1.2,1.6 4.1,-0.2 1.5,0.9 z", - "LS" : "m 390.23,273.89 0.9,-0.3 1.5,1.6 -2.6,2.8 -2,-2.2 z", - "UZ" : "m 473.73,137.49 -0.2,0 0,-0.1 0.2,-0.1 z m -1.2,-0.3 0.1,0.3 -0.3,0.1 -0.2,-0.5 z m -22.4,-11.8 -0.5,1 1.4,1.2 0.3,-1.5 1.8,1.1 1.9,2.1 5.6,-0.5 1.6,1.9 0.5,2 0.9,0.1 0.4,1.8 2.3,0 1.3,1.3 0.9,-1.7 3.6,-2 -1.5,1.5 2.4,1 0.6,-0.7 2.7,1.5 -2.8,1.5 -1.4,-0.2 -0.9,-1.8 -2,0.5 -1.9,2.8 -2.1,0.7 1.5,0.6 0.4,1.6 -1.1,2.3 -1,0 -1.4,-0.3 0.1,-1.5 -1.8,-0.5 -6.1,-3.9 -0.9,-2.3 -3.6,-0.9 -0.4,-2.1 -2.5,-1.1 -1.8,1.5 -0.4,-0.4 -0.7,0.9 -0.1,1.5 -1.9,-0.1 -0.1,-8.5 5.1,-1.3 -0.6,2.6 0.8,-2.5 z m 21.4,9.7 -0.1,-0.1 0,0 0.1,0.2 z", - "MA" : "m 325.92969,146.28906 -1,0.30078 -1.69922,3.80078 -3.30078,1.59961 -1.40039,1.5 -1.09961,2.5 0.5,2.09961 -1.90039,2.90039 -1.69922,1.40039 -2.80078,0.79883 L 311.125,164 h 8.54883 l 0.0566,-0.21094 v -2.09961 l 1.90039,-1.5 3.69922,-0.5 4,-2.29883 v -1.90039 l 2.19922,-1.09961 2.40039,0.0996 0.40039,-0.90039 -1.19922,-1.5 -0.20117,-3.19922 -0.90039,-0.80078 -1.19922,-0.0996 -0.0996,-0.30078 h -0.0996 v -0.0996 l -2.70117,0.40039 -1.79883,-1.5 -0.10156,-0.0996 z", - "CO" : "m 185.43,214.99 0.2,-1.4 1.6,-1 1.4,-2.2 -0.4,-1.1 0,-4 -1.1,-1.3 1.4,-1.4 -0.4,-1.4 0.9,0.3 2.5,-1.8 0.2,-2.1 2.7,-1.5 1.6,0.1 3.4,-2.2 0.3,1.1 -1.2,0.4 -1.8,2.4 -0.2,2.1 1.2,1.8 0.5,2.5 3.8,0.2 1.3,1.6 3.8,-0.1 -0.8,3.1 1.1,2.2 -1,1 1.2,0.9 0.6,2.2 -0.9,-1.6 -1.5,0.7 -3.3,0 -0.4,3.6 1.2,2.4 -1,5.3 -1.5,-0.8 1.4,-2.1 -1.9,-1 -2.6,0.5 -1.6,-0.4 -0.8,-1.8 -3.2,-2.2 -1.9,-1.1 -2.2,-0.4 z", - "TL" : "m 573.73,235.59 0.4,-0.2 0.4,-0.1 -0.3,0.6 z m 1.7,-0.7 0.5,-0.7 3.5,-0.6 -1,1.2 -2.7,1.1 -0.2,-0.6 z", - "TZ" : "m 403.23,239.89 0,-0.2 -0.1,-0.1 0,-0.1 -0.3,-0.1 0,-0.1 0,0 0,-0.1 -0.5,-2.5 -0.4,-0.4 -0.2,-0.2 0,0 -0.2,-0.2 0,0 0,0 -0.2,0.1 -0.1,0.3 -1,-0.2 -0.9,-0.4 -1.8,-0.6 -1.6,-1 -2.3,-5.1 -0.5,-2.8 2.2,-2.3 -0.5,-1.6 0.5,-1.5 -0.7,-1 0.7,-0.1 1.8,0 0,0.1 0.1,-0.1 0,0 0.2,2.7 2.5,0.1 1.6,-2.7 6.9,3.8 0.2,1.1 2.7,2 1.3,1.1 -1.1,0.9 0.5,1.3 -0.4,4.4 2.1,3.4 -5.7,2.4 z", - "AR" : "m 204.93,334.29 0.1,0.2 -0.2,0 z m 26.8,-66.8 1.4,0.1 0.1,3.1 -3.7,2.2 -3.5,4.1 -1.2,3.6 0,1.2 -0.7,3.9 2.8,2.5 -0.5,0.9 1.4,2.2 -1.8,2.8 -2.8,1.2 -3.5,0.7 -2.3,-0.2 -0.5,4.4 -2.8,0.7 -2.1,-1.1 -0.3,2.9 0.9,1.1 1.6,-0.8 0.3,1.5 -1.6,-0.5 0,1 -1.7,1.6 -0.5,3.2 -1.2,0 -2.1,1.4 -0.6,1.3 1.6,2.1 1.6,0.1 0,2.4 -3.1,2.4 -0.6,2.4 -1.9,0.8 -0.6,1.7 1.4,3.5 -2.9,-0.9 -3.7,-0.1 -1,-1.1 0.2,-2.3 -1.6,0.3 -0.8,-3 2.5,-3 -0.5,-1 1.2,-1.7 1.1,-4.6 -1.4,-1.3 0.8,-2 -1,-2.1 0.8,-2.1 -0.4,-3.1 1.1,-4.1 1,-0.5 -0.6,-2.2 0.3,-2.6 1.2,-1 0,-1.9 1.2,-3.9 -1.6,-3.8 1.8,-6.6 1.6,-2.6 1,-0.5 -0.5,-4.3 2.3,-1.6 0.3,-2.4 1.9,-2 3.1,0.8 0.5,1.3 0.8,-1.7 2.4,0.5 3.2,3.1 1.8,0.4 4.8,2.9 -2,3.9 5.4,0.2 1.9,-1.6 z m -26.8,66.7 0,-5.6 0.3,1.7 2.2,2 2.8,1.6 2.4,0.6 -3.7,0.4 -1.3,-0.2 -0.5,-0.1 z", - "SA" : "m 429.03,161.99 0.9,1.9 2.4,1.9 0,1.9 1.3,2 0.3,0.4 0.4,-0.1 0.2,0.6 0.5,0.1 1.9,2.7 5,0.4 0.9,1.5 -1.3,3.9 -5.7,2 -5.5,0.8 -1.8,0.9 -1.4,2 -4.4,-0.6 -3.8,0.2 -0.7,1.9 -3,-4.6 -0.5,-1.6 -2.5,-1.9 -1.1,-1.7 0,-2.5 -1.2,-2.4 -1.8,-1 -0.5,-1.9 -3.9,-5.8 -1.2,-0.2 0.7,-2.5 2.1,0.3 3.7,-2.7 -2,-2.1 4.2,-1.3 2.5,0.4 3.1,1.8 5,3.9 3.6,0.2 1.7,0.2 z", - "PK" : "m 479.03,143.89 2.7,1.2 1.6,1.8 0.5,1.2 -2.4,1.3 -2.8,-0.6 -1.1,0.9 0.5,2.5 2.4,2.2 -1.5,0.9 0.1,1.3 -2.2,2.5 -0.9,1.8 -2,2.3 -2.7,-0.2 -1.9,2.5 3,4.3 -2.1,1.1 -2.1,-0.2 -1.3,0.8 -1.6,-0.4 -1.9,-2.8 -5.4,0.5 -3.7,0 0.5,-2.1 2.4,-0.8 -0.7,-3.3 -1.6,-0.7 -2,-2.7 3.1,1 3.1,0 4,-0.9 0.3,-2.3 3.4,-1.9 2.3,-0.2 0.4,-2.5 1.5,-0.5 -0.6,-1.5 2,-0.1 1.1,-2.4 -0.9,-1.9 2.7,-1.7 z", - "YE" : "m 435.83,181.19 1.4,3.3 0.7,1.3 -1.6,2 -5.1,1.7 -1.7,1.4 -1.3,0 -2.5,1.2 -1.7,0.1 -3.6,1.5 -0.9,-0.5 -1.4,-5.3 0.1,-1.5 0.7,-1.9 3.8,-0.2 4.4,0.6 1.4,-2 1.8,-0.9 z", - "AE" : "m 444.03,167.89 0.2,0.2 0,1.1 -1.1,0.2 -1.2,4.4 -5,-0.4 -1.9,-2.7 4.9,0.2 3.7,-3.9 0.2,0.8 z m 0,0.8 0.2,-0.1 -0.3,0 0,0.2 z", - "KE" : "m 411.33,226.69 -2.7,-2 -0.2,-1.1 -6.9,-3.8 0.3,-1.6 -0.4,-0.9 1.8,-2.7 -0.1,-1.5 -1.8,-3.4 2.8,-1.5 1,0.8 1.7,0.3 2.4,1.6 2.8,0.4 2.3,-1.7 2.2,0.6 -1.8,2.2 0,7 1.1,1.6 -2.6,2 z", - "PE" : "m 192.13,217.99 3.2,2.2 0.8,1.8 1.6,0.4 2.6,-0.5 1.9,1 -1.4,2.1 1.5,0.8 -1.5,-0.1 -4.1,1.8 -0.4,2.4 -1.7,2.2 3.5,4.8 1.9,-0.2 1.3,-0.9 -0.3,3 2.1,-0.1 1.7,3 -0.8,2.2 0.4,1 -0.9,2.6 -1.3,0.6 1.8,0.8 0.1,0 0.1,0 -0.2,0.5 0.1,0.1 -1.2,1.5 0.3,0.4 -0.9,1.5 -0.8,0.1 -2.1,-2 -7.1,-3.8 -2.1,-2.5 0.1,-1.4 -2.7,-4 -2.5,-5.9 -1.9,-2.7 -2.2,-1.4 -0.3,-3.5 1.8,-1.6 -0.4,1.3 2.8,1.8 1.4,-3.1 3.2,-1.5 2.1,-2 z", - "DO" : "m 198.63,182.19 0,0 -0.1,-0.1 0,0 -0.1,-0.1 0.6,-0.3 -0.1,-1.9 1.4,-0.5 2.1,0.6 0.6,1.1 2.4,0.9 -1.1,0.4 -3.4,0 -1.4,1.6 -0.6,-0.8 0.1,-0.6 z", - "HT" : "m 198.63,182.19 0,0 -0.1,-0.1 0,0 z m 0.3,-2.4 0.1,1.9 -0.6,0.3 0.1,0.2 0.1,0 0.4,0.3 -0.1,0.6 -3,-0.4 -1.1,0.4 -0.7,-1.3 3,0.5 -0.1,-2 -1.3,-0.7 z", - "PG" : "m 606.23,235.09 0,-4.2 0,-8.2 5.8,2.3 1,0 2.4,2 -0.1,1.2 3.3,0.9 0.8,1.4 -1.8,0.1 0.5,1.4 1.8,1.1 2.1,2.8 3.3,0.2 -0.5,1.8 -5.2,-0.7 -1.7,-1.4 -1.9,-2.6 -4.5,-1 -0.7,2.7 -1.4,0.7 z m 17.2,-12.6 -0.6,-1.7 1.1,1.5 3.5,1.6 2.1,2 -0.5,1.1 -1.2,-2.4 z m -0.6,7.3 -3,-1.1 5.6,-0.6 1.2,-0.9 -0.2,-1.5 1.7,0.3 -0.5,2 -3.2,1.7 z", - "AO" : "m 359.73,228.69 0,-0.5 -0.4,-0.9 1.4,-1.2 0.6,0.5 -1.2,0.8 z m 21.3,23 -4.9,0.7 -3.9,-0.5 -0.6,-0.7 -8.6,0 -1.5,-0.9 -2.7,0.6 0,-2.8 1.4,-4.6 2.2,-2.3 0.2,-3 -1.4,-3.1 0.7,-1.4 -2.1,-4.3 1.7,-0.5 6.6,0.1 0.7,2.7 1.2,1.5 3.3,-0.2 0.4,-1.9 4.3,0.5 0,4.1 0.7,1 0.2,2.6 3.3,-0.8 0,4.1 -3.8,0 0,6.2 z", - "KH" : "m 542.13,189.59 0,4.6 -3.4,2.5 -2.4,1.2 -1.6,-0.2 -1.4,-2.2 -1.1,-3.7 2.5,-1.7 3,0.2 3.1,0.1 z", - "VN" : "m 536.33,197.89 2.4,-1.2 3.4,-2.5 0,-4.6 0.3,-1.1 -2.2,-3.4 -3.4,-3.5 -1.7,-1 2.1,-1.5 -1.7,-1.8 -1.8,0.2 -0.3,-1.4 -1.6,-1.7 0.7,-0.7 2.8,0.5 2.6,-1.7 2.8,1.2 -0.4,0.8 2.7,1.8 -2,1.1 -1.7,1.8 -0.8,2 1.9,3 4.1,4.1 1.4,4.8 -0.9,3 -3.3,1.9 -1.1,-0.3 -0.4,1.9 -3.3,1.4 0,-2.7 z", - "MZ" : "m 403.03,243.59 -0.3,-2.5 0.5,-1.2 4.8,0.3 5.7,-2.4 0.8,8.3 -1.8,3.2 -5.4,2.8 -4.2,4 -0.5,1.1 1.6,3.3 -0.7,5 -2.6,1 -2.4,1.8 0.8,1.8 -1.1,0 -0.4,0 -0.2,-1.2 -0.2,-0.6 0.1,-3.1 -1.3,-4.1 2.1,-2.2 1.2,-2.5 -0.5,-1.1 0.5,-2.2 -0.1,-3.3 -4.9,-2 -0.4,-1.3 5.7,-1.9 0.9,1.1 1.3,-0.4 -0.2,2.9 1.7,1.3 1.3,-1 0.1,-2.7 z", - "CR" : "m 176.13,196.89 0.4,0.8 1.7,1.8 -0.9,2.3 0,0 -0.3,-0.5 -5.1,-3.3 0.3,-1.4 2.6,0.2 z m 1.5,5.6 -0.3,-0.6 0,-0.1 0,0 z", - "BJ" : "m 343.23,195.39 0.4,2.1 -2,3 -0.1,5.1 -1.6,0.2 -0.5,0.1 -0.1,-5.4 -1.3,-3.7 1,-0.9 1.9,-0.9 0.8,-0.9 z", - "NG" : "m 341.53,205.59 0.1,-5.1 2,-3 -0.4,-2.1 1,-3.4 2.6,-0.8 2.8,1.7 1.7,-0.7 3.4,1 1,-0.8 2.5,-0.2 2,0.6 2.1,-1.3 0.9,1.3 1.2,1.7 -4.7,7.4 -1.8,3.6 -1.4,-1.3 -3.3,2.5 -0.5,1.9 -4.6,1 -1.1,-0.7 -2.3,-3.2 z", - "IR" : "m 422.03,143.59 -1,-1.8 -0.5,-3.1 1.6,-0.6 1.2,1.4 1.3,0.3 0.5,-0.1 0.2,0.1 2.8,-1.9 0.1,2 1.7,0.9 0.2,1.5 2.3,0.8 1.7,1.4 1.6,0.4 4,-0.6 -0.2,-1.1 2.9,-1.6 3.4,-0.4 0.3,0.6 2.8,0.6 2.9,2.4 1.6,0.1 0.2,2.1 -1.4,5.5 0.5,3.3 1.7,0.2 0.2,1.1 -1.8,2.1 2,2.7 1.6,0.7 0.7,3.3 -2.4,0.8 -0.5,2.1 -3.2,-0.3 -5,-0.9 -0.5,-2.2 -1.3,-0.7 -3,1.5 -6.5,-3 -2.6,-4.7 -2.1,-0.4 -0.8,0.9 -1.6,-2.2 0.3,-1.6 -0.9,-1.3 -2.1,-1.2 -1.7,-2.2 1.8,-3.9 -2,-0.4 z", - "SV" : "m 168.13,192.09 -1.8,0.3 -2.5,-0.9 -0.1,-0.2 1.5,-1.1 3.2,1.1 z", - "SL" : "m 314.33,204.59 -2.8,-1.3 -0.7,-2.8 1.5,-1.5 2.4,-0.3 1.9,2.9 -0.6,1.4 z", - "GW" : "m 307.53,196.79 -1.7,-0.5 -1.6,-2.1 3,-0.7 2.8,0 0,1.9 -1.9,0.4 z", - "HR" : "m 371.73,131.79 -1.3,-0.9 -0.3,-0.2 0.4,0.2 1.1,0.6 0,0.1 z m -9.4,-7.2 3.3,0.1 0.6,-1.8 1.7,-0.7 1.6,1.3 3,0.1 0.2,1.8 0,0.7 -4,-1 -2.2,0.3 0.8,2.2 2.6,3 -1.7,-0.4 -3.5,-2.5 0,-2.2 -1.7,0.7 z", - "BZ" : "m 165.63,183.49 0.5,-0.1 1.1,-1.2 0.2,3 -1.4,2.1 -0.6,0 z", - "ZA" : "m 397.83,270.09 0.4,0 1.1,0 -1,3.5 -2.3,2.1 -1.5,2.7 -2.9,3 -3.4,2.7 -4.3,1.4 -4.4,-0.4 -1.3,0.7 -4.3,0.9 -2.2,-2 -1.3,-2.1 0.9,-0.4 -0.2,-2 -1.7,-2.9 -1.6,-3.6 1.2,-1.2 0.6,1.4 3.3,0.5 1.6,-1.1 0,-7.5 1.7,2.8 -0.3,1.6 1.9,-0.1 2,-1.8 0.6,-1.4 3.4,1.1 1.5,-0.4 0.5,-1.8 1.9,-0.9 0.3,-1.3 2.3,-2 2.2,-0.9 1.9,0.3 1.8,0.1 1.3,4.1 -0.1,3.1 -1,-0.5 -1.1,1.4 0.6,1.6 z m -7.6,3.8 -2.2,1.9 2,2.2 2.6,-2.8 -1.5,-1.6 z", - "CF" : "m 380.03,196.89 1.5,2.1 -0.3,2 1.4,0.2 2.2,2.6 2,1.3 0.1,1.1 1.9,1.9 -3.5,-0.6 -5.9,2.3 -3.7,-0.4 -1.7,-1.4 -2.2,1.5 0.1,1.7 -2.2,-0.5 -1.7,0.5 -0.7,2.3 -0.2,-1.1 -1.8,-1.8 -1.5,-4.3 2.1,-2.9 2.5,0 3.5,-1 0.9,-1.8 2.6,-0.3 3.9,-3.5 z", - "SD" : "m 382.63,201.19 -1.4,-0.2 0.3,-2 -1.5,-2.1 -1.2,-3.5 -0.3,-2 0.9,-0.7 1.1,-3 1.7,-0.1 0,-7.4 0,-1 1.9,0 0,-4 12,0 10.8,0 0.8,2.4 0.4,4.2 2.1,1.4 -3.1,1.8 -1.1,3.8 0.2,1.7 -0.8,3 -0.8,0.1 -1.6,3.7 -0.5,-0.3 -1,2.7 -1.7,-2.6 0.1,-2.7 -2.2,0.4 0.6,1.9 -2.2,2.4 -2.4,-0.9 -2.2,1.8 -4.4,-0.4 -1.4,-1.7 -1.4,0.2 z", - "CD" : "m 392.23,224.09 -0.2,3.3 0.8,3.1 2,2.9 -3.2,0.5 -1.1,1.2 0.4,0.6 0.3,0.8 -0.6,3.1 1.3,1.8 1.4,-0.4 0,2.5 -1.1,0 -3.9,-3.6 -0.9,0.8 -2.6,-0.7 -0.1,-0.9 -1.9,0.4 -0.6,-1 -3.3,0.8 -0.2,-2.6 -0.7,-1 0,-4.1 -4.3,-0.5 -0.4,1.9 -3.3,0.2 -1.2,-1.5 -0.7,-2.7 -6.6,-0.1 -1.4,0.4 -0.4,-0.6 0.4,-1.3 1.2,-0.8 2.5,-0.7 0.9,1 2.6,-2.8 0.1,-2.3 2.9,-3 0.6,-5.1 1,-2.5 -0.1,-1.7 2.2,-1.5 1.7,1.4 3.7,0.4 5.9,-2.3 3.5,0.6 1.8,1.5 2.7,-0.5 2,2 -0.2,2 1,0.5 -1.4,1.3 -0.1,0.5 -1,0.8 -0.5,1.7 -0.7,0.8 0.6,0 -0.1,0.8 0,0.9 -0.4,0.3 -0.3,0.3 -0.5,0.5 -0.1,1 0,0.3 0.2,0.1 0.4,0.7 z", - "KW" : "m 429.03,161.99 -1.9,-1 -1.7,-0.2 1.1,-1.8 1.6,-0.1 0.3,1.4 z", - "DE" : "m 353.93,119.39 0,0 0,0 z m -1,-18.4 0.3,0 1.1,0.3 3.9,2.3 2,-1.5 2.2,-0.3 0.7,1.4 0.4,0.4 -0.1,0 0.1,0.1 -0.3,-0.3 0.4,0.8 -0.3,2.2 1,0.7 0.3,4.4 -4.4,1.2 -0.2,1.6 2.7,2.4 -2,1.6 0.5,1.5 -1.6,-0.5 -2.3,0.7 -2.4,-0.3 -1.3,-0.7 0.3,0.4 -1.4,0.2 -1.7,0 1.2,-3.4 -3.6,-1.2 0.3,-0.9 -0.7,-0.8 0.5,-0.4 -0.7,-1.2 0.7,-2.7 1.2,-1 0.4,-2.6 0.2,-1.3 2.4,0.5 0.8,-0.9 z", - "BE" : "m 347.83,111.69 0.7,1.2 -0.5,0.4 -0.8,0.6 0.2,0.9 -3.2,-1.1 -3.1,-2.8 1.2,-0.6 0.4,-0.1 0.9,0.4 0.8,-0.4 0.1,0.1 -0.1,-0.1 1.5,-0.3 z", - "IE" : "m 322.43,100.59 -1.8,1.6 1.7,0.9 2,0 0.5,3 -0.7,2 -2.3,0.3 -2.2,1.3 -2.1,0.3 -1.2,-1.2 2.9,-3.5 -2.1,-0.3 0.3,-2.5 2.4,0.2 0.6,-2.4 z", - "KP" : "m 586.53,132.09 -2,1.7 0.1,1.6 -4.2,2.5 -0.1,1.3 1.7,1.2 -2.3,0.7 -0.9,1 -2.1,-0.4 -0.4,0.8 -1.1,-1.9 1.3,-1.8 -2.1,-1.7 3.1,-1.8 1.2,-1.8 2.9,0.7 -0.2,-1.4 3.2,-1.1 0.3,-1.2 1.3,1 0.2,0.3 z", - "KR" : "m 578.83,142.09 0.9,-1 2.3,-0.7 1.9,2.9 0.2,3.9 -1.6,1.7 -1,-0.4 -1.1,1.1 -2.2,-0.4 z", - "GY" : "m 221.43,201.49 1.7,1 3.7,3.7 -0.1,1.1 -1.6,2.5 3,4.3 -1.2,-0.2 -3.2,1.6 -1.8,-1.3 -0.5,-1.6 0.9,-2.3 -0.9,-2.2 -1.4,-0.2 -1.2,-1.4 0.3,-1.2 1.7,-1.1 -0.4,-1.3 z", - "HN" : "m 167.43,187.59 4.4,-0.5 3.1,0.3 2.2,1.6 -3.2,0.4 -1.8,1.6 -1.9,0.4 -1.1,1.5 -0.4,-0.5 -0.6,-0.3 0.3,-0.8 -3.2,-1.1 0.4,-1.3 z", - "MM" : "m 512.93,177.09 0.7,-0.5 -0.1,-1.3 1.2,-0.8 0.2,-3.3 1.5,0.3 1.8,-3.8 0,-1.5 3.2,-1.8 1.2,-1.8 0.4,-0.6 2.2,1.9 0,3.5 -1.9,1.7 -0.1,2.4 1.8,-0.4 0.6,1.8 1.2,0.2 -0.7,1.8 1.5,0.2 0.5,1.3 1.9,-0.3 -0.9,0.5 -1.2,2 -3,1.3 -0.9,-0.3 -1.2,2.6 2.7,4.6 -1.1,2.6 1.7,2.1 0.9,3.7 -1.7,2.8 -0.3,-5.5 -1.5,-3.2 -0.3,-2.8 -0.8,-1.4 -3.4,2.5 -2.4,-0.6 0.8,-2.9 -1.2,-3.7 -1.8,-1.2 z", - "GA" : "m 355.03,215.89 3,0 0,-2.3 0,-0.2 3.7,0.3 -0.1,1.7 2.4,0.6 -1.2,2.2 1.2,0.7 -0.7,3.6 -3.2,-1.1 -1.7,0.8 0.5,2.6 -1.3,0.5 -3.6,-4 -1.1,-2.4 1.1,-0.3 0.1,-1.9 z", - "GQ" : "m 358.03,213.59 0,2.3 -3,0 -0.8,-0.4 0.8,-2.2 0.4,0.3 z", - "NI" : "m 172.23,196.59 -3.7,-3.4 0.6,-0.3 1.1,-1.5 1.9,-0.4 1.8,-1.6 3.2,-0.4 -1.4,7 0.4,0.9 -1.3,-0.1 z", - "LV" : "m 388.63,93.89 0.6,1.9 1,1.9 -1.1,0.9 -1.9,0.4 -3.3,-2.1 -0.8,0.5 -4.5,-0.5 -2,1 0,-2.1 1.3,-2 1.7,-0.5 2,2.1 1.4,-0.7 -0.2,-1.7 1.9,-0.6 2.3,1.5 z", - "UG" : "m 397.23,219.69 0,-0.1 0,0.1 z m -4.3,0.7 0,-0.9 0.1,-0.8 0.5,-0.6 -0.4,-0.2 0.5,-1.7 1,-0.8 1.8,-1.3 -0.3,-0.5 -1,-0.5 0.2,-2 5.1,-0.5 0.9,-0.9 1.8,3.4 0.1,1.5 -1.8,2.7 -2.7,0.2 -1.6,2.2 -1.8,0 -0.7,0.1 -1,0.8 z", - "MW" : "m 403.13,239.59 0,-0.1 0,0 z m -0.3,-0.3 0,0 0,-0.1 0,0.1 z m -0.9,-3 -0.2,-0.2 0,0 z m -0.4,-0.4 0,0 0,0 z m -2.2,-0.2 0.9,0.4 1,0.2 0.8,3.8 0,3.2 1,0.3 1.9,2.2 -0.1,2.7 -1.3,1 -1.7,-1.3 0.2,-2.9 -1.3,0.4 -0.9,-1.1 -0.7,-0.6 1,-2.3 -0.2,-3.2 0.8,-0.5 z", - "AM" : "m 425.33,139.79 -0.2,-0.1 -0.5,0.1 -0.7,-1.5 -1.9,-0.3 -2.1,-1 -0.5,-2.2 1.5,-0.3 1.5,-0.1 1.9,2.4 -0.6,0.4 z m -2.8,-4.9 0,0 -0.1,0 0,0.1 z m 0.4,0.2 -0.1,-0.1 0,0 0,0.1 z m 0.5,0.8 0,0 0.1,-0.1 -0.1,0 z", - "SX" : "m 419.13,195.79 1.9,2 2.9,-0.8 1.3,0.4 1.8,-1 3,-0.1 0,3.4 -1.9,2.8 -1.9,0 -5.6,-1.9 -2.7,-3.1 0.6,-0.7 z", - "TM" : "m 445.53,132.89 1.5,0.6 -0.4,-1.1 1.8,-1.5 2.5,1.1 0.4,2.1 3.6,0.9 0.9,2.3 6.1,3.9 1.8,0.5 -0.1,1.5 -1.4,-0.5 -1.9,1.1 -0.6,1.8 -4.2,2.4 -1.9,-1 -0.2,-2.1 -1.6,-0.1 -2.9,-2.4 -2.8,-0.6 -0.3,-0.6 -3.4,0.4 -2.9,1.6 0.1,-3.5 -0.8,-2.3 -1.6,-0.2 0.4,-2.1 1.5,0.8 1.9,-1.1 -1.5,-2.2 -0.8,-0.1 0,0 1.3,-0.5 2.6,2.4 0.9,-0.1 1.9,0.1 z m -7.6,-0.1 0.2,-0.3 0.6,0 0,0 -0.8,0.3 0,0 z m 0,0 -0.5,1.3 -0.7,-0.8 1.2,-0.5 0,0 z", - "ZM" : "m 390.93,235.69 1.2,-1.4 -0.5,-0.4 3.2,-0.5 0.9,1.1 0.2,-0.4 1.6,1 1.8,0.6 1.4,2.3 -0.8,0.5 0.2,3.2 -1,2.3 0.7,0.6 -5.7,1.9 0.4,1.3 -3,0.8 -0.2,0.9 -1.2,0.6 -1.1,0.6 -1,1.6 -0.6,0.2 -2.8,-0.5 -2,-0.6 -1.6,0.3 -2.6,-2.9 0,-6.2 3.8,0 0,-4.1 0.6,1 1.9,-0.4 0.1,0.9 2.6,0.7 0.9,-0.8 3.9,3.6 1.1,0 0,-2.5 -1.4,0.4 -1.3,-1.8 0.6,-3.1 z", - "NC" : "m 401.23,148.19 -0.3,0 -0.1,0 -0.6,-0.3 -1.2,0 0,0 0,0 0,0 -0.1,0 0,0 3.6,-1.1 -1.1,1.4 z m -2.5,-0.3 0.1,0 -0.1,0.1 z", - "MR" : "m 319.73,164.49 6,3.8 1.3,0.9 -3.3,0 2,18.9 -10,0.1 -1.9,-0.2 -1,1.5 -4,-3.7 -3.8,0.4 -0.4,1.2 1,-4.2 -1,-2.8 0.7,-1.6 -1.7,-1.1 0.2,-1.1 7.6,0 0,-3.4 1.9,-0.9 0,-5.1 6.3,0 z", - "DZ" : "m 327.03,169.19 -1.3,-0.9 -6,-3.8 0,-0.7 0,-2.1 1.9,-1.5 3.7,-0.5 4,-2.3 0,-1.9 2.2,-1.1 2.4,0.1 0.4,-0.9 -1.2,-1.5 -0.2,-3.2 -0.9,-0.8 6.3,-3 3.6,-0.7 3.5,-0.2 0.9,0.5 4.1,-0.9 2.3,0.3 -0.4,1.1 -0.3,3.9 -1.4,1.6 1.6,2.9 1.4,1 0.9,3.8 0.6,2.3 0,5.4 -0.8,0.8 1.2,2.6 2.9,1.1 0.8,1.6 -8.6,5.3 -3.2,2.8 -3,0.6 -2.2,0 0.2,-1.3 -2.5,-0.8 -1.4,-1.8 z", - "LT" : "m 377.03,100.09 -0.2,-1.2 -0.2,-1 2,-1 4.5,0.5 0.8,-0.5 3.3,2.1 0.3,0.9 -1.7,1 -0.8,1.7 -2,1.1 -1.8,-0.1 0,-0.6 -1.3,-0.5 0.1,-1.4 z m -0.7,-0.1 0.3,-0.6 -0.1,0.6 z", - "ET" : "m 416.33,196.19 -0.2,0.2 0.2,0.2 0.3,0.3 1.9,-0.1 -0.6,0.7 2.7,3.1 5.6,1.9 1.9,0 -5.8,5.9 -1.8,-0.1 -4,1.9 -2.2,-0.6 -2.3,1.7 -2.8,-0.4 -2.4,-1.6 -1.7,-0.3 -2.3,-3.9 -2,-1.9 -1.2,-0.3 0.3,-1.3 1.4,0.1 0.2,-2 1,-2.7 0.5,0.3 1.6,-3.7 0.8,-0.1 0.8,-3 2.6,-1.2 5.7,1.5 2.9,3.1 -1.2,1.8 z", - "ER" : "m 417.43,193.89 -2.9,-3.1 -5.7,-1.5 -2.6,1.2 -0.2,-1.7 1.1,-3.8 3.1,-1.8 2.1,5.6 2.8,0.9 3.7,3.8 -0.8,0.6 z", - "GH" : "m 338.53,206.19 -6.2,2.6 -2,-0.7 0,-0.1 0.3,0.1 0.2,-0.1 -0.7,-3.3 1.4,-2.6 -0.4,-2.4 -0.1,-2.9 5,-0.3 1,1.8 0.3,6.4 z", - "SI" : "m 362.33,124.59 0,-0.1 0.2,-0.1 -0.6,-1.7 0.6,-0.6 1.6,0.4 3,-1.2 0.3,0 0.5,0.9 -1.7,0.7 -0.6,1.8 z", - "GT" : "m 166.03,187.29 0.6,0.3 0.8,0 -1.8,1.3 -0.4,1.3 -1.5,1.1 0.1,0.2 -2.4,-0.4 -1.7,-1.2 0.9,-2.9 2.6,-0.6 -2,-1.8 0.9,-1.1 3.5,0 -0.2,3.8 z", - "BA" : "m 370.13,130.69 -0.2,-0.1 0,0 -2.6,-3 -0.8,-2.2 2.2,-0.3 4,1 0.7,-0.1 -0.4,3.2 -1.4,1.3 0,1 -1.1,-0.6 z", - "JO" : "m 404.13,156.59 0.2,-0.2 -0.2,-0.1 -0.1,0 0.1,-0.2 0.2,0 0.1,-0.9 0,-1.8 0.3,-0.3 2,1 3.8,-2.3 0.6,1.9 0.1,0.8 -4.2,1.3 2,2.1 -3.7,2.7 -2.1,-0.3 0.1,-0.4 -0.1,-0.1 0.4,-1.8 z", - "SY" : "m 410.53,151.79 -3.8,2.3 -2,-1 0.3,-0.4 -0.1,-1 1.5,-1.7 -1.3,-0.9 -0.1,-1.7 0,-1.1 1.4,-2 3.1,-0.1 2.9,0.3 4.7,-1.3 0.3,0.5 -1.9,1.3 -0.3,3.8 -1,1 z", - "MC" : "m 350.53,128.69 0,0.1 -0.1,0 0.1,-0.1 z", - "AL" : "m 376.43,135.29 0,0 0,-0.1 z m -3,-2.8 0,-0.3 0,-0.2 0.6,-0.8 0.7,0.3 0.8,0.8 0.2,0.7 -0.3,0.8 0.4,1 0,0.4 0.2,0 0.2,0 0.2,0 -0.1,0.1 0.1,0 0,0.1 -0.1,0.1 0.1,0 0,0.1 0.1,0.1 0,0.1 0,-0.1 -1.2,2 -0.7,0.3 -1.4,-2.2 0.2,-2.7 -0.1,-0.3 z m 0,-0.4 0,0 -0.1,0 z", - "UY" : "m 234.53,282.19 -0.9,1 0.2,0.9 0,0.2 0.3,0.2 -0.8,1.4 -2.2,1.2 -2.3,0 -3.3,-1 -1,-1.2 0.3,-3.1 0,-1.2 1.2,-3.6 1.5,-0.2 1.5,2.1 0.8,-0.5 z", - "CNM" : "m 401.43,148.19 0,0 0,0 -0.2,0 0,0 z m -2.7,-0.3 0,0 0,0.1 0.1,-0.1 0,0 0,0.1 z m 0.2,0 0,0 0,0 0.1,0 0,0 z m 1.9,0.3 0,0.1 0,0 -0.5,-0.3 -1.3,-0.1 0,0 1.2,0 z", - "MN" : "m 561.33,119.09 0.7,-0.2 -0.3,-0.3 1.5,0 2.6,2.6 -0.4,0.8 -2.7,-0.3 -3.2,1 -1.8,2 -2.1,0.2 -1.8,1.5 -3.1,-0.8 -1.1,1.5 1,1.7 -4.7,2.9 -5.2,0.4 -3,1.2 -2.8,0 -3.3,-1 -0.7,-0.7 -10.1,-0.5 -1.9,-3.7 -3.6,-1.5 -5,-0.6 0.3,-3.3 -1.4,-2.6 -2.4,-0.8 -2.1,-1.5 -0.3,-1.4 8.7,-4.2 3.6,0.7 0.7,1.4 5.2,0.7 1.9,-2 -1,-1.2 2.1,-2.9 6.3,2.1 0.2,1.8 2.7,1.2 3.1,-0.9 5,1.4 1.2,1.5 4.2,0.5 4.4,-1.2 2.4,-1.7 2.1,1 2.5,0.2 -2.3,4.1 0.7,1.1 z", - "RW" : "m 391.83,222.89 -0.2,-0.1 0,-0.3 0.9,-0.9 -0.3,-0.6 0.3,-0.3 0.4,-0.3 0.7,0.2 1,-0.8 0.7,1 -0.5,1.5 -1.3,0.5 z", - "SO" : "m 416.53,210.19 4,-1.9 1.8,0.1 5.8,-5.9 1.9,-2.8 0,-3.4 4.5,-1.1 -0.9,4.5 -5.5,9.6 -3.7,3.8 -4.9,3.5 -3.7,4.4 -1.1,-1.6 0,-7 z", - "BO" : "m 204.03,248.89 -0.1,-0.3 0.3,0.3 -0.1,0 z m -0.8,2.5 -0.3,-0.4 1.2,-1.5 0.9,-0.4 -1.5,-1.6 0.9,-2.6 -0.4,-1 0.8,-2.2 -1.7,-3 2.4,0 3.2,-2 2.3,-0.5 0.1,2.9 1.9,2.5 2.5,0.4 2.4,1.7 2.6,0.5 0.6,4.8 3.2,0.1 0.2,1.8 1.6,1.8 -1.2,3.9 -1.8,-1.7 -5.1,0.7 -0.9,1.8 -0.8,3.4 -2.4,-0.5 -0.8,1.7 -0.5,-1.3 -3.1,-0.8 -1.9,2 -1.3,0 -0.6,-3 -1.1,-1.7 0.6,-2 -1,-1 z", - "CM" : "m 361.73,213.69 -3.7,-0.3 0,0.2 -2.6,0 -0.4,-0.3 -0.3,-2.9 -2,-1.8 0.5,-1.9 3.3,-2.5 1.4,1.3 1.8,-3.6 4.7,-7.4 -1.2,-1.7 0.5,-0.1 -0.1,0.4 0.4,-0.1 1.3,2.7 -0.2,1.5 1.2,1.5 -2.9,0 -0.4,0.7 2.3,2.2 0.6,1.8 -2.1,2.9 1.5,4.3 1.8,1.8 0.2,1.1 -0.1,1 -3,-0.9 z m 2.1,-21 0,0.1 0,-0.1 z", - "CG" : "m 361.73,213.69 2.5,-0.1 3,0.9 0.1,-1 0.7,-2.3 1.7,-0.5 2.2,0.5 -1,2.5 -0.6,5.1 -2.9,3 -0.1,2.3 -2.6,2.8 -0.9,-1 -2.5,0.7 -0.6,-0.5 -1.4,1.2 -0.4,-0.8 -1.3,-1.2 1.3,-0.5 -0.5,-2.6 1.7,-0.8 3.2,1.1 0.7,-3.6 -1.2,-0.7 1.2,-2.2 -2.4,-0.6 z", - "EH" : "M 319.73047,163.78906 319.67383,164 H 311.125 l -0.89453,1.78906 -1.70117,1.10156 -0.69922,2.89844 -1.40039,1.40039 -2.69922,5.20117 -0.20117,1.09961 0.10156,0.19922 0.19922,-1.09961 h 7.59961 v -3.40039 l 1.90039,-0.90039 v -5.09961 h 6.30078 l 0.0996,-2.69922 z", - "RS" : "m 373.03,129.19 0.4,-3.2 -0.7,0.1 0,-0.7 -0.2,-1.8 1.2,-0.6 1.3,0.1 2.4,2.3 -0.2,0.9 2.5,1.3 -0.6,1 1.1,1.6 -1.1,1.8 -0.8,0 -0.7,0.2 0.3,-1 -1.9,-1.4 -0.8,1 -1.4,-0.8 z", - "ME" : "m 373.03,129.19 0.8,0.8 1.4,0.8 -0.6,0.3 0.1,0.4 -0.7,-0.3 -0.6,0.8 0,0.1 -0.1,0 -0.4,0 0.5,0.4 -0.1,0.3 0.1,0.3 -1.2,-1 -0.5,-0.3 -0.1,-0.2 0,-0.1 0,-1 z", - "TG" : "m 338.03,196.79 1.3,3.7 0.1,5.4 -0.4,0.1 -0.5,0.2 -1.2,-1.5 -0.3,-6.4 -1,-1.8 1.2,0.3 z", - "LA" : "m 542.13,189.59 -1.3,0.8 -3.1,-0.1 0.8,-2.7 -1.7,-1.6 0.2,-1.6 -1.6,-1.9 -1.2,-0.2 -1.5,1.2 -1,-0.8 -1.8,1.5 0.2,-4 -1.5,0 -0.7,-1.6 1.2,-2 0.9,-0.5 1,0.9 -0.4,-2.3 1.2,-0.3 1.6,1.7 0.3,1.4 1.8,-0.2 1.7,1.8 -2.1,1.5 1.7,1 3.4,3.5 2.2,3.4 z", - "AF" : "m 479.73,143.39 -1,0.3 0.3,0.2 -3.8,0.4 -2.7,1.7 0.9,1.9 -1.1,2.4 -2,0.1 0.6,1.5 -1.5,0.5 -0.4,2.5 -2.3,0.2 -3.4,1.9 -0.3,2.3 -4,0.9 -3.1,0 -3.1,-1 1.8,-2.1 -0.2,-1.1 -1.7,-0.2 -0.5,-3.3 1.4,-5.5 1.9,1 4.2,-2.4 0.6,-1.8 1.9,-1.1 1.4,0.5 1.4,0.3 1,0 2.9,0.2 1.6,-0.9 0.9,-1.8 2,1 0,2.6 3.2,-1.7 z", - "UA" : "m 378.73,117.59 0.3,-0.7 0.4,-1 0.2,-1.1 2.8,-2.5 -0.9,-2.5 1.5,-0.9 2.6,-0.1 2.9,0.8 3.9,0.6 2.3,-0.5 0.8,-1.3 1.6,-0.1 3.9,-0.6 1.2,1.5 -0.5,1.3 1.7,0.1 1.1,2.2 3.4,-0.2 3.4,1.4 1.8,1.5 -0.8,1.2 0.1,2.3 -1.8,-0.1 -1.2,1.8 -4.4,1.1 -2.1,1.2 1.5,2.5 -3.1,1.7 -2.1,-2.9 1.7,-0.7 -3.9,-0.7 1.2,-0.6 -2.3,-0.4 -2.6,2.4 -0.2,1 -1.7,-0.1 -1.1,-0.5 1.4,-2.4 2.2,0.2 -1.9,-2.8 0.3,-0.8 -2.9,-1.4 -2.2,0.4 -2.6,0.9 -4.5,-0.1 -0.5,-0.4 z m 15.3,4.9 0.5,0.7 0.2,-0.2 -0.6,-0.6 z m 7.4,0.7 1.8,1 -0.3,-0.9 -1.2,-0.6 z", - "SK" : "m 379.43,115.89 -0.4,1 -0.3,0.7 -3.2,-0.3 -1.1,0.9 -4,1 -1.3,-0.6 -0.6,-0.9 0.2,-0.6 2.2,-1.2 1.4,-1.1 5.8,0.4 z", - "JK" : "m 485.23,147.19 -1.4,0.9 -0.5,-1.2 1.1,0.4 z", - "BG" : "m 391.03,128.69 -1.7,3.1 0.6,1 -1.8,-0.2 -1.4,0.8 -2.1,1.1 -1.4,-0.8 -3,0.6 0.1,-1 -1.2,-1.3 1.1,-1.8 -1.1,-1.6 0.6,-1 1.2,0.8 3.9,0.5 3.2,-1.2 z", - "QA" : "m 433.63,169.69 -0.2,-1.5 1.6,-0.8 -0.7,2.6 -0.4,0.1 z", - "LI" : "m 354.53,120.39 0.2,0.3 -0.1,0.2 -0.2,-0.1 z", - "AT" : "m 354.63,120.89 0.1,-0.2 -0.2,-0.3 0.3,-0.4 -0.2,-0.2 0.2,0 0.1,-0.1 2.4,0.3 2.3,-0.7 1.6,0.5 -0.5,-1.5 2,-1.6 1.7,0.4 0.5,-0.9 3.8,0.9 -0.2,0.6 0.6,0.9 -1.1,0.6 -0.9,2.1 -3,1.2 -1.6,-0.4 -2.5,-0.4 -0.4,-0.9 -3.3,0.5 -0.7,0.1 z", - "SZ" : "m 397.43,268.29 0.2,0.6 0.2,1.2 -1.9,0.7 -0.6,-1.6 1.1,-1.4 z", - "HU" : "m 378.73,117.59 0.9,0.7 0.5,0.4 -1.7,1.1 -1.6,2.9 -1.8,0.4 -1.3,-0.1 -1.2,0.6 -3,-0.1 -1.6,-1.3 -0.5,-0.9 -0.3,0 0.9,-2.1 1.1,-0.6 1.3,0.6 4,-1 1.1,-0.9 z", - "RO" : "m 379.73,127.59 -2.5,-1.3 0.2,-0.9 -2.4,-2.3 1.8,-0.4 1.6,-2.9 1.7,-1.1 4.5,0.1 2.6,-0.9 0.8,0.3 2.4,3.7 -0.1,2.8 1.1,0.5 1.7,0.1 -2,2.1 -0.1,1.3 -3,-1 -3.2,1.2 -3.9,-0.5 z", - "NE" : "m 343.23,195.39 -1.5,-1.3 -0.8,0.9 -0.4,-1.3 -2.3,-0.9 -1.5,-3.6 2.1,-0.7 4.2,-0.2 1.3,-2 0.1,-5.4 3,-0.6 3.2,-2.8 8.6,-5.3 2.9,0.7 1.4,1.1 1.5,-0.8 0.3,3.1 1.6,2.2 -0.5,0.9 -0.5,5.9 -3.9,4.9 0.3,1.3 -2.1,1.3 -2,-0.6 -2.5,0.2 -1,0.8 -3.4,-1 -1.7,0.7 -2.8,-1.7 -2.6,0.8 z", - "LU" : "m 348.43,114.99 -0.7,0 -0.3,-0.2 -0.2,-0.9 0.8,-0.6 0.7,0.8 z", - "AD" : "m 339.03,131.39 0.6,-0.1 -0.1,0.3 -0.3,0.2 z", - "CI" : "m 331.13,199.69 0.4,2.4 -1.4,2.6 0.7,3.3 -5.7,0.2 -3.3,1.3 0.1,-2.8 -2.1,-1.3 0.2,-2 1.2,-3.6 -0.2,-1.4 3.3,-0.2 1.4,-0.3 1.6,1.4 2.8,-0.5 z m -0.8,8.4 -0.3,-0.1 0.3,0 z", - "LR" : "m 320.03,203.39 -0.2,2 2.1,1.3 -0.1,2.8 -3.3,-1.5 -4.2,-3.4 1.7,-1.6 0.6,-1.4 1.5,0.3 0.7,2.2 z", - "BN" : "m 556.53,208.59 0.2,-0.1 0,-0.1 0.4,1.2 z m -2,0.4 1.1,-0.2 0.8,-0.3 -0.7,1.6 z", - "IQ" : "m 429.23,158.99 -0.8,-0.2 -0.3,0.1 -1.6,0.1 -1.1,1.8 -3.6,-0.2 -5,-3.9 -3.1,-1.8 -2.5,-0.4 -0.1,-0.8 -0.6,-1.9 3.7,-2 1,-1 0.3,-3.8 1.9,-1.3 0.7,-0.5 3.9,0.4 1,2.6 2,0.4 -1.8,3.9 1.7,2.2 2.1,1.2 0.9,1.3 -0.3,1.6 z", - "GE" : "m 422.43,134.39 -1.5,0.1 -1.5,0.3 -1.2,-1.1 -2.4,0.2 -0.1,-2.6 -2.9,-1.8 5.5,0.6 2.1,1.4 1.7,-0.4 3.1,1.9 0.1,1.9 z", - "GM" : "m 304.23,192.79 -0.1,-0.6 0.5,-0.4 3.2,-0.4 -1.8,1.2 z", - "CH" : "m 353.93,119.39 0,0 0,0 0,0 0.6,0.4 0.1,0 0.2,0.2 -0.3,0.4 -0.1,0.4 0.2,0.1 1,0.5 0.7,-0.1 -0.9,1.2 -2.2,0.7 -1.5,-0.4 -2,0.8 -0.5,-0.5 0.1,-0.7 -0.3,-0.3 -0.5,0.4 -0.3,0.2 -0.2,-0.7 2.8,-2.4 1.7,0 z", - "TD" : "m 364.03,192.99 0.6,-0.2 -0.8,-0.1 0,0 -0.2,-0.1 0.1,0.1 -0.5,0.1 -0.9,-1.3 -0.3,-1.3 3.9,-4.9 0.5,-5.9 0.5,-0.9 -1.6,-2.2 -0.3,-3.1 1.9,-0.9 15.3,7.9 0,7.4 -1.7,0.1 -1.1,3 -0.9,0.7 0.3,2 1.2,3.5 -0.7,-0.1 -3.9,3.5 -2.6,0.3 -0.9,1.8 -3.5,1 -2.5,0 -0.6,-1.8 -2.3,-2.2 0.4,-0.7 2.9,0 -1.2,-1.5 0.2,-1.5 z", - "KV" : "m 375.73,132.99 -0.2,-0.7 -0.8,-0.8 -0.1,-0.4 0.6,-0.3 0.8,-1 1.9,1.4 -0.3,1 -0.9,0.1 z", - "LB" : "m 403.53,152.39 0.9,-1.7 0.7,-1.6 1.3,0.9 -1.5,1.7 -0.7,0.7 z", - "DJ" : "m 418.53,196.79 -1.9,0.1 -0.3,-0.3 0.2,-0.2 -0.2,-0.2 -0.1,-0.5 1.2,-1.8 0.6,0.2 0.8,-0.6 0.5,1.4 -0.2,0.9 z", - "BI" : "m 393.13,226.19 -0.6,-1 -0.3,-1.1 0,-0.5 -0.4,-0.7 1.7,-0.1 1.3,-0.5 0.5,1.6 z", - "SR" : "m 231.73,213.29 -2.6,-0.3 -1,1.1 -3,-4.3 1.6,-2.5 0.5,-1 5.6,0.4 -0.2,0.9 -0.6,0.8 0.9,2.8 z", - "IL" : "m 401.83,156.19 1.2,-2.1 0.5,-1.7 0.7,0 0.7,-0.7 0.1,1 -0.3,0.4 -0.3,0.3 0,1.8 -0.4,0.5 0.1,0.4 -0.1,0.2 0.1,0 -0.1,0.2 0.1,0.1 -0.5,1.4 -0.4,1.8 -0.1,0.2 0,0 -0.1,-0.5 z", - "ML" : "m 325.73,197.89 -1.4,0.3 -3.3,0.2 -0.8,-2.3 -1.5,-2.2 -2.9,1.1 -1.3,-0.9 -1.4,-2.6 -0.3,-2 1,-1.5 1.9,0.2 10,-0.1 -2,-18.9 3.3,0 11.5,7.8 1.4,1.8 2.5,0.8 -0.2,1.3 2.2,0 -0.1,5.4 -1.3,2 -4.2,0.2 -2.1,0.7 -1.8,-0.3 -2.7,1.8 -1.4,0.2 -1.3,1.7 -1,-0.5 -1,2.4 -1.1,0.4 z", - "SN" : "m 304.23,194.19 -0.1,-0.9 0.1,-0.5 1.8,-0.2 1.8,-1.2 -3.2,0.4 -1.1,-2.6 1.1,-1.8 0.4,-1.2 3.8,-0.4 4,3.7 0.3,2 1.4,2.6 -1.9,0.1 -2.6,-0.7 -2.8,0 z", - "GN" : "m 314.53,194.09 1.3,0.9 2.9,-1.1 1.5,2.2 0.8,2.3 0.2,1.4 -1.2,3.6 -1.2,0.7 -0.7,-2.2 -1.5,-0.3 -1.9,-2.9 -2.4,0.3 -1.5,1.5 -1,-1.5 -2.3,-2.2 0.6,-1 1.9,-0.4 0,-1.9 2.6,0.7 z", - "ZW" : "m 384.63,251.99 2.8,0.5 0.6,-0.2 2.1,-2.2 0,0 1.2,-0.6 0.2,-0.9 3,-0.8 4.9,2 0.1,3.3 -0.5,2.2 0.5,1.1 -1.2,2.5 -2.1,2.2 -1.8,-0.1 -1.9,-0.3 -2.6,-1.2 -0.6,-2.2 -3,-2 z", - "PL" : "m 373.83,102.19 -0.4,0.5 0.7,-0.5 5.6,0.3 0.2,0 1.3,0.5 0,0.6 0.8,3.3 -1.4,0.9 0.9,2 0.9,2.5 -2.8,2.5 -0.2,1.1 -1.3,-0.7 -5.8,-0.4 -0.5,-0.9 -4.1,-1.7 -3.1,-0.7 -0.3,-4.4 -1,-0.7 0.3,-2.2 0.7,-0.4 -0.8,-0.1 -0.1,-0.1 0.1,0 3.7,-1 0.8,-0.7 3.3,-0.7 0.6,1.1 1.9,-0.1 z", - "MK" : "m 376.43,135.29 0,0 0,0.1 z m 2.7,-3.3 1.2,1.3 -0.1,1 -2,0.5 -1.5,0.6 -0.3,-0.4 0,0.3 0,-0.1 0,0 -0.2,0 -0.2,0 0.1,-0.4 -0.3,0 -0.4,-1 0.3,-0.8 1,-0.7 0.9,-0.1 0.7,-0.2 z", - "PY" : "m 232.43,264.39 -0.3,0.8 -0.4,2 0.1,0.2 -0.1,0.1 -0.3,2.2 -1.9,1.6 -5.4,-0.2 2,-3.9 -4.8,-2.9 -1.8,-0.4 -3.2,-3.1 0.8,-3.4 0.9,-1.8 5.1,-0.7 1.8,1.7 0.7,1.6 -0.3,2.2 3,0.1 1.5,1.1 0.4,2.6 z", - "BY" : "m 381.53,109.79 -0.9,-2 1.4,-0.9 -0.8,-3.3 1.8,0.1 2,-1.1 0.8,-1.7 1.7,-1 -0.3,-0.9 1.9,-0.4 1.1,-0.9 5.2,1.4 1.7,4.8 1.8,1 -2.8,1.1 1,2.3 -1.6,0.1 -0.8,1.3 -2.3,0.5 -3.9,-0.6 -2.9,-0.8 -2.6,0.1 z", - "CZ" : "m 372.33,114.79 -1.4,1.1 -2.2,1.2 -3.8,-0.9 -0.5,0.9 -1.7,-0.4 -2.7,-2.4 0.2,-1.6 4.4,-1.2 3.1,0.7 4.1,1.7 z", - "BF" : "m 338.03,196.79 -0.8,0 -1.2,-0.3 -5,0.3 0.1,2.9 -1,-0.9 -2.8,0.5 -1.6,-1.4 0.7,-3 1.1,-0.4 1,-2.4 1,0.5 1.3,-1.7 1.4,-0.2 2.7,-1.8 1.8,0.3 1.5,3.6 2.3,0.9 0.4,1.3 -1.9,0.9 z", - "NA" : "m 381.03,251.69 1.6,-0.3 2,0.6 -3.2,1.3 -0.5,-0.9 -4.5,0.6 0.1,7.2 -2,0.1 0,5.5 0,7.5 -1.6,1.1 -3.3,-0.5 -0.6,-1.4 -1.2,1.2 -2.2,-2.6 -1.4,-5.6 -0.4,-4.6 -1.9,-2.9 -1.6,-3.5 -1,-1.1 -0.5,-2.5 2.7,-0.6 1.5,0.9 8.6,0 0.6,0.7 3.9,0.5 z", - "LY" : "m 365.03,173.19 -1.5,0.8 -1.4,-1.1 -2.9,-0.7 -0.8,-1.6 -2.9,-1.1 -1.2,-2.6 0.8,-0.8 0,-5.4 -0.6,-2.3 1.4,-1.4 -0.3,-1.1 2.8,-2.2 -0.1,-1.5 1.6,0.8 1.9,-0.2 3.5,1.1 1.7,2.3 2.5,0.4 3.3,1.8 1.3,-0.5 0.3,-2.7 1.2,-1.7 2.1,-0.8 2.8,0.7 0,0.6 3.6,0.8 0.3,0.6 -0.9,3.1 0.6,2.1 0,14.6 0,4 -1.9,0 0,1 -15.3,-7.9 z", - "TN" : "m 358.33,152.19 0.1,1.5 -2.8,2.2 0.3,1.1 -1.4,1.4 -0.9,-3.8 -1.4,-1 -1.6,-2.9 1.4,-1.6 0.3,-3.9 0.4,-1.1 2.2,-0.9 2.7,4.6 -1.9,2 0.4,1.3 1.4,-0.2 z", - "BT" : "m 506.53,164.49 2.5,-2.2 2.7,1.3 0.9,1.7 -4.4,0.4 z", - "MD" : "m 390.33,124.69 0.1,-2.8 -2.4,-3.7 -0.8,-0.3 2.2,-0.4 2.9,1.4 -0.3,0.8 1.9,2.8 -2.2,-0.2 z", - "SS" : "m 401.33,209.69 -0.9,0.9 -5.1,0.5 -2,-2 -2.7,0.5 -1.8,-1.5 -1.9,-1.9 -0.1,-1.1 -2,-1.3 -2.2,-2.6 1.7,-3.1 1.4,-0.2 1.4,1.7 4.4,0.4 2.2,-1.8 2.4,0.9 2.2,-2.4 -0.6,-1.9 2.2,-0.4 -0.1,2.7 1.7,2.6 -0.2,2 -1.4,-0.1 -0.3,1.3 1.2,0.3 2,1.9 2.3,3.9 -1,-0.8 z", - "BW" : "m 384.63,251.99 1.7,3.3 3,2 0.6,2.2 2.6,1.2 -2.2,0.9 -2.3,2 -0.3,1.3 -1.9,0.9 -0.5,1.8 -1.5,0.4 -3.4,-1.1 -0.6,1.4 -2,1.8 -1.9,0.1 0.3,-1.6 -1.7,-2.8 0,-5.5 2,-0.1 -0.1,-7.2 4.5,-0.6 0.5,0.9 z", - "BS" : "m 191.33,169.99 -1.3,-1.4 0,0 0,0 0.5,0.3 0.8,1.1 z m 0,0 0.8,0.9 0.5,2.1 4.4,1.5 -4,-1 -2.2,-1.6 1.1,-1.1 -0.6,-0.8 z m -1.3,-1.4 -1.6,-1.2 -1.4,1.5 0.7,2.9 -1.3,-1.9 0.1,-1.1 1.9,-1.9 1.6,1.7 0,0 z", - "NZ" : "m 661.13,313.49 -2.7,-0.1 -0.2,1.4 -0.8,-2.2 -1.8,0.1 -0.6,-1 0.9,-1.6 2.7,-2.6 2.6,-1.1 2.7,-2.2 1.9,-3.9 1.2,-0.9 0.7,1.8 1.4,-0.9 0.7,2.2 -3.4,4.3 -2.1,1.3 -1.3,3.3 z m 12.3,-12.7 -1.6,1.1 -1.2,-0.7 1.2,-2.3 -2.8,-2 1.6,-1.3 0.4,-2.3 -0.9,-2.5 -2.4,-3.1 1.5,-0.5 2.4,2.7 1.4,1.1 0.2,2 2.8,0.7 2.2,-0.5 -1.4,3 -0.9,-0.1 z", - "CU" : "m 188.73,178.29 -3,-0.4 -1.1,-1.8 -2.4,-1 -2.6,-0.2 -0.1,-1 -1.7,-0.1 -3.3,1.9 0.2,-1.2 2.2,-1.3 2.3,-0.4 3.8,0.3 1.6,1.4 0.9,-0.3 0.8,0 3.4,2.7 3.5,1.1 0.9,1.1 -6.6,0.5 z", - "EC" : "m 182.53,224.19 1,-1.4 -2.1,-0.6 0,-2.4 1.6,-2.1 -0.1,-1.3 2.5,-1.4 2.6,1.5 2.2,0.4 1.9,1.1 -0.5,2.7 -2.1,2 -3.2,1.5 -1.4,3.1 -2.8,-1.8 z", - "AU" : "m 617.53,306.39 -1.6,0 -1.5,-2.2 -1.1,-3.5 0,-1.4 -1.2,-0.9 4.1,2.5 3.8,-1.3 0.1,2.7 -0.5,3.3 -0.9,-0.8 z m -1.4,-54.7 0.6,2.8 5.1,2.8 0.9,3.5 2.3,0.9 0.2,1.8 1.9,1.1 1.4,2.1 1.4,-0.3 -0.6,1.6 1,3.3 0.1,3 -2.1,7.5 -1.4,0.9 -3.1,6.5 -0.4,3.5 -3.2,0.7 -3.5,2 -2.9,-0.5 0.1,-1.3 -2.8,2.1 -2.2,-1.1 -3.3,-0.7 -1.8,-1.9 -0.3,-2.6 -1.1,-1 -4.4,1.1 1.2,-1 -0.6,-1.5 2,-3.8 -1.2,0 -3.4,3.9 -0.9,-2.3 -1.7,-1.5 -0.3,-1.5 -3.7,-0.9 -2.1,-1.2 -4.1,0.5 -3.2,1.2 -2.1,-0.1 -4,2 -1.1,1.6 -6.8,0 -3,2.1 -2.4,0.4 -2.3,-0.5 -1.9,-1.6 1.3,-1.7 0.1,-3.5 -1.4,-3 0,-1.6 -1.5,-2.8 -0.3,-1.6 -2.1,-3.2 1.1,-0.5 1.1,1.9 0.1,-1.4 -1.3,-2.5 0.4,-3.9 4.3,-3.1 3.5,-0.8 6.2,-2 2.6,-2.9 -0.3,-1.8 1.5,-1.3 1.1,1.8 0.1,-2.6 1.6,0.3 0,-2.1 1.3,-1.2 2.9,-0.8 0.6,-1 2.4,1.9 2.8,0.8 -0.6,-1.3 3.1,-4.8 -1.8,-0.3 0.7,-1.1 2,0.1 0,2 2.4,-0.3 -0.2,-2.2 1.1,1.3 3.7,1.1 2.7,-0.9 0.8,1 -1.9,2.8 -0.9,2.2 2.1,1.6 4.7,2.3 1.9,1.6 1.6,-0.5 1.6,-4.6 -0.1,-5 0.7,-0.9 0.3,-3.6 0.9,1.1 1.8,5.8 0.8,1.5 1,-0.7 1.7,1.5 0.1,2.7 z", - "VE" : "m 199.73,195.09 -1.1,0.5 0.6,1.7 -1,1.7 1.2,1.5 0.9,-1.3 -1.1,-2.1 2.8,-1.2 2.4,0 1.8,1.9 3.2,-0.4 2.9,1.1 1.6,-1 2.3,-0.3 0.9,1.4 2.8,1.3 -0.2,0.9 1.7,0.7 -1,1.4 0.4,1.3 -1.7,1.1 -0.3,1.2 1.2,1.4 -1.6,1.8 -5.9,0.5 1.2,2.9 1.3,0.1 -1.5,1.6 -2.7,1.7 -2.6,-1.1 -0.6,-2.2 -1.2,-0.9 1,-1 -1.1,-2.2 0.8,-3.1 -3.8,0.1 -1.3,-1.6 -3.8,-0.2 -0.5,-2.5 -1.2,-1.8 0.2,-2.1 1.8,-2.4 z", - "SB" : "m 644.23,236.59 -1.9,-0.1 0,-2.4 -2.9,-1.9 -1.4,0.8 1.2,1.3 -2.6,-1.1 0.1,-1.7 3.3,0.7 2.3,1.4 0.5,1.4 1.7,-0.8 z", - "MG" : "m 431.73,249.49 -4.3,14.5 -1,2.3 -3.7,1.2 -2.1,-1.2 -0.5,-3.1 -1.1,-2.4 0.6,-1.9 1.8,-2.6 -1,-5 1,-2.5 2.2,-0.4 3.6,-1.7 1.4,-3.3 0.9,0.1 1.1,-2.9 1.3,2.1 1,4.7 -1.6,0.2 z", - "IS" : "m 290.23,72.39 4.3,-0.5 -0.3,-1.1 -2.3,-0.6 -2.6,0.2 1.5,-0.8 0.6,-1.4 1.9,0.4 -0.2,-1.2 2.4,1.5 -0.4,1.4 1.1,0.6 1.6,-2.4 3.4,-0.2 1.4,0.7 2.1,-0.7 -0.1,-1 3.6,1.4 -0.3,1 2,0.7 0.5,1.4 -2,2.1 -6.1,2.1 -1.9,1 -2.8,-0.5 -1.9,-1 -2.9,0.1 1.9,-1.7 -1.4,-1.3 z", - "EG" : "m 403.13,159.99 -1.2,3.6 -2,-1.7 -1.4,-2.9 0.2,2.1 1.9,2.4 0.8,2.4 2.9,5.4 0.3,2.1 2.3,1.8 -10.8,0 -12,0 0,-14.6 -0.6,-2.1 0.9,-3.1 4.2,0.7 3.3,1.1 2.5,-1.4 2.3,0.1 1,0.8 4.1,-0.5 1.2,3.3 z", - "KG" : "m 477.33,138.49 -2.7,0.6 -1.5,-0.9 -4.1,0.2 1.2,-1.6 1.9,0 1.4,0.2 2.8,-1.5 -2.7,-1.5 -0.6,0.7 -2.4,-1 1.5,-1.5 1.7,-1.4 3.2,1 1.3,-2 1.9,1 6.2,-0.1 3.4,1.6 -3.5,1.9 -0.5,0.7 -2.5,0.3 -2.1,1.4 -0.3,-0.7 -3,1.3 z m -5.8,-0.9 -0.3,0 0.2,0.2 0.2,-0.1 z m 2.2,-0.1 0,-0.2 -0.2,0.1 0,0.1 z m -1.2,-0.3 -0.4,-0.1 0.2,0.5 0.3,-0.1 z", - "NP" : "m 505.03,163.39 0.1,2.3 -1.6,0.7 -2.9,-0.4 -2.4,-1.6 -3.5,-0.3 -5.2,-2.8 0.6,-1.9 1.3,-0.9 2,-0.3 2.8,2.4 1.1,-0.1 1.9,1.9 1.7,0.9 1.1,-0.4 z" - } - } - } - }); - - return Mapael; - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.min.js deleted file mode 100644 index a121114..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.min.js +++ /dev/null @@ -1,3 +0,0 @@ -!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("jquery-mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries_miller:{width:700.9375,height:337.375,leftLongitude:-175,rightLongitude:190,topLatitude:84,bottomLatitude:-56,_projectLongitude:function(a){return a*Math.PI/180},_projectLatitude:function(a){var b=a*Math.PI/180;return 1.25*Math.log(Math.tan(Math.PI/4+.4*b))},getCoords:function(a,b){var c=this;void 0===c._xLeftPrime&&(c._xLeftPrime=c._projectLongitude(c.leftLongitude)),void 0===c._xRightPrime&&(c._xRightPrime=c._projectLongitude(c.rightLongitude)),void 0===c._yTopPrime&&(c._yTopPrime=c._projectLatitude(c.topLatitude)),void 0===c._yBottomPrime&&(c._yBottomPrime=c._projectLatitude(c.bottomLatitude));var d=c._projectLongitude(b),e=c._projectLatitude(a);return{x:(d-c._xLeftPrime)*(c.width/(c._xRightPrime-c._xLeftPrime)),y:(c._yTopPrime-e)*(c.height/(c._yTopPrime-c._yBottomPrime))}},elems:{FO:"m 322.53,80.19 0.9,0.8 0,0.3 -1,-0.7 z",UM:"m 26.03,206.59 0,0 -0.1,0 0.1,0 z",US:"m 100.93,117.39 0.2,0.1 -0.6,-0.2 0,-0.3 z m 0.2,-0.6 0.2,0.1 -0.3,0.2 -0.3,-0.1 z m -19,-15.8 0.2,0 0,0.4 -0.3,-0.4 z m -0.1,-0.7 0.3,0.3 -0.2,0.2 -0.2,-0.1 z m -0.5,0 0.8,1.3 -0.9,-0.7 -0.1,-0.7 z m 3.3,0.1 -0.1,0.3 -0.4,0 0.1,-0.7 z m -3.7,-0.5 0.1,0.3 -0.4,0 0,-0.3 z m 2.8,-0.3 0.3,0.4 -0.2,0.4 -0.2,-0.6 z m -3.5,-0.1 0.4,-0.1 0,0.3 -0.4,0.3 z m 0.7,0.1 -0.1,0 -0.2,-0.3 0.3,0 z m -1.1,-1.3 0.3,-0.4 0.8,-0.2 -0.2,0.3 z m 2.6,-0.8 0.8,0.3 -0.4,0.5 -0.7,-0.4 z m -0.3,-0.6 0,0.4 -0.8,-0.2 0.3,-0.3 z m 1,0.2 0.1,0.6 -0.5,-0.4 0,-0.6 z m -1.4,-1.2 0.6,0.6 -0.4,0.2 -0.3,0 z m -1.7,-0.8 1.5,0.5 -0.3,1.2 -1,0 z m -3.5,-0.4 -0.1,0.6 -0.4,0.1 0.2,-0.5 z m -1.5,-2.1 -0.2,0.4 -0.2,-0.2 0.2,-0.5 z m 91.6,25.5 -0.2,0.4 -1,0.5 -0.1,-0.2 z m 3,6.8 -0.2,0.6 -0.4,0.7 -0.2,-0.4 z m 2.8,-1 0,0.4 -0.3,0 0.2,-0.4 z m 3.7,-0.7 0.1,0.3 -0.6,0 0.3,-0.2 z m -96.8,-24.9 -0.6,-2.5 0.8,-0.1 0.6,0.7 z m -61.3,4.8 -0.9,1.5 -2.4,0.4 -2.2,1.3 1.2,-1.5 2.3,0 0,-1 z m 59.3,-7.9 -0.4,-1.4 1,0.8 0.4,3 z m -0.7,-2.2 -0.3,1.3 -1.4,-1.2 1.1,-1.3 z m 1.1,-1.2 1.4,0.4 0.5,2.3 -1,-0.2 z m -66.2,-14.8 1.6,0.2 -2,1.1 -1.9,-1.3 -2.2,-0.4 3,-0.6 z m 89,39.1 -0.1,0.1 0,-0.1 z m 45.7,49.9 -0.1,-0.8 -0.5,-0.2 -1.5,-2.5 -1.5,-2.5 -0.2,-0.1 -0.1,-0.1 -2.1,-0.7 -1.6,1.9 -2.6,-1.4 -0.7,-1.8 -3.2,-2.6 -3.2,0 0,0.9 -5.5,0 -7.2,-2.4 0.2,-0.5 -4.6,0.4 -0.3,-1.2 -2.4,-2 -2.5,-0.1 -1.5,-1.1 -3.4,-5.7 -0.2,-1.3 -2.3,-2.5 -0.3,-2 -1,-1.4 0.6,-2.3 -0.9,-3.2 0.8,-2.4 0.5,-4 -1.3,-6.7 3.6,0.6 -0.1,-0.2 0.7,0.6 -0.7,-0.7 0,0 0.3,-0.4 -0.3,0.3 0,-1.8 52.8,0 4.8,1.2 2.3,1.2 3.6,0.1 -2.8,1.2 -2,1.7 2.5,-0.2 0.6,0.7 3.5,-1.6 0.1,0.1 -0.1,-0.1 1.1,-0.6 0.6,0.1 -1.1,0.9 1.8,1.4 4.6,-0.7 0.9,0.8 0.7,-0.2 0,0.5 -1.2,1.1 -4.3,-0.1 -2,3.2 1.4,-0.6 -1.1,3.6 0.1,2.3 1,1.5 1.3,-0.6 0.8,-2.5 -0.6,-1.5 0.5,-2.5 3.2,-2.7 2.1,1.1 0.3,2.4 -1,0.8 2.3,0.2 0.5,2.1 -0.2,0.9 -0.3,0.2 -0.3,-0.3 -0.5,0.8 -0.7,1.4 1.8,0.7 1.6,-0.3 4.8,-2.4 0.5,-0.8 -0.3,-0.4 0,-0.4 4.5,-0.1 1.8,-2.7 1,-0.9 1,-0.3 0,0 6.2,-0.1 2.3,-2 0.5,-2 1.5,-1.8 2.7,0.9 0,3.2 0.4,0.3 0.4,0 -0.1,0.8 0.6,0.2 0.3,0.9 -2.4,1 0.1,0.1 -0.4,0.4 0,-0.3 0,0 -0.7,0.3 0.3,-0.1 0,0.4 -0.3,0 -0.1,-0.3 -0.4,0.2 -2.9,1.8 -0.1,3.7 -4.4,1.1 -2.2,1.4 -0.1,1.9 -2.9,4 -1.5,-2.8 0.3,3 -0.4,2.2 0.9,-0.1 0.5,2.8 -1.5,2.2 -1.2,-0.1 -1.6,1.8 -2.3,1.4 -3.8,3.1 -0.6,2.1 1.8,4.7 0.9,3.4 -0.6,3.4 -1.4,0 -2,-2.7 -1.3,-2.9 0.4,-2.1 -2.7,-2.5 -1.8,1 -2.1,-1.4 -5.3,-0.3 -1.5,0.6 0.9,2.4 -1.6,-0.9 -1.3,0.8 -1.9,-1.4 -1.3,0.4 -3.4,-0.3 -4.6,2.8 -2,3.1 0.8,1.7 -2.1,-0.2 z m -65.4,-67.3 -0.3,0.2 -0.2,-0.4 0.5,0 0,0 0.3,-1.3 2.3,3 -0.1,1.4 -1.6,-1.8 -1,-0.7 z m -43.4,79.5 -0.5,-0.5 0,0 0.5,0.2 0,0.3 0,0 z m 0,0 2.3,2 -2.1,0.9 -0.2,-2.9 0,0 z m 47.3,-77.4 -0.1,0.3 -0.3,-0.2 0.4,-0.1 0,0 z m -5.8,-8.9 0.1,0.1 -0.6,-0.1 0,-0.2 -0.3,-0.2 -3.7,0.5 -3.1,-2.4 -3,-1.3 -5.6,-1.7 -2.8,-0.1 -3.5,-0.9 0,-1.1 -3.5,0 0.4,2.5 -3.2,0 -0.7,0.9 -4.1,1.5 1.3,-1.3 -1.3,-0.4 0.9,-2.8 1.8,-0.9 -0.2,-0.9 -3.4,2.4 -0.7,1.7 -2.7,1.5 1.5,1.3 -1.9,2.4 -3.6,1.6 -2.1,2.7 -0.9,-0.5 -2.1,2.2 -1.9,0.1 -3.2,1.2 -1.6,1.4 -4.7,1.2 0.5,-1.3 2.4,-0.6 3.7,-2.2 2.2,0.3 -0.3,-1.2 2.8,-1.5 2.2,-2 1.3,-3.7 -3.7,1.3 -2.5,-1.8 -2.7,1.4 0.1,-2.6 -1.2,-1.8 -2.5,0.9 -2.6,-1.5 -1.1,1 -2.1,0.4 -1.5,-1 3.4,-0.3 2.1,-1.6 -3,-1.9 0.7,-1.5 3.1,-3.7 1.5,0.7 1.8,-1.2 3.1,-1 -1.2,-2.1 0.5,-1.6 -3.8,1.7 -5.8,-0.6 -3.6,-3.5 5.3,-2.3 3,-0.5 0.1,1.6 3.5,0.3 0.3,-3.3 -3.9,-0.3 -0.8,-1.6 -4.8,-2.4 0.8,-1.8 3.6,-0.2 2.4,-1.5 -0.1,-0.9 2.4,-2.4 2,0 2.3,-1.6 3.1,-0.1 2.3,-1.7 3.3,0.7 1.9,1.2 3.4,-0.3 0.7,1.4 5.3,-0.3 4,1.3 4.8,0.7 2.5,-0.5 4.4,1.6 0,29.2 3.5,0.6 3,2.4 0.4,1 2,-2 1.7,-0.6 1,1.5 3,2.5 3,5 3.4,1.8 0.1,1.7 0,0 -1.8,1.3 0.1,-2.4 -0.3,-0.1 -0.3,-0.6 -0.4,0.4 -0.6,-0.2 -0.5,-1.3 -2.1,-2 -2.2,-3.1 z m -38.1,3.7 -1.1,-1.2 3,-2 1.7,-1.6 0.4,2.8 -2.9,1.7 -3.7,3.4 z m -3.9,82.1 -3,-1 2.1,0.2 0.9,0.8 z m 47.8,-76.9 0.1,-0.2 0,0.2 -0.1,0 0,0 z",JP:"m 606.33,125.09 0,-0.1 0.6,0.4 -0.3,0.1 z m -15.5,25.1 -1.3,0.7 -2.1,-0.3 2.8,-3.2 3.7,-0.5 2.2,0.3 3,-4.4 -0.5,1.4 2.4,-0.6 0.4,-1.6 1.8,-0.6 1.1,-2.6 -0.4,-1.2 1.1,-3.2 0.7,1 1.3,-0.7 1.2,3.9 -1.8,2.3 -0.1,2.2 -0.9,2.4 0.5,1.2 -1.7,1.8 -0.3,-1.4 -3,1.8 -3.2,0.3 0.7,0.7 -1.8,1.4 -1.7,-0.6 0.6,-1.7 -3.2,0.3 -1.5,0.9 1.1,0.3 1.3,-1.2 0.9,0.5 -0.9,2.3 -0.9,-0.6 -2.2,1.7 -0.5,-1.6 z m -6.8,2 -0.4,-2 1.3,1.7 1.2,-1.1 2.4,0.6 0.6,1.3 -1.4,3.4 -2.1,0.2 -0.1,-3.3 z m 21.7,-19.1 -1,1 -0.6,-2.9 1.1,-1.6 1.9,0 0.9,-5.1 3.6,3.2 2.4,0.9 0.9,1.4 -2.6,0.5 -1.8,2.4 -2.7,-1.5 -2.9,0.7 z",SC:"m 442.43,226.39 0.2,0.3 -0.1,0.2 -0.5,-0.7 z",IN:"m 504.93,175.49 0.1,0 0,0.5 -0.2,-0.1 z m 0.1,-12.1 1.3,-0.3 0.2,1.4 1.7,1.2 4.4,-0.4 -0.9,-1.7 1.9,-0.4 3.9,-2.9 1.2,0.6 1.6,-0.7 2.3,2.4 -1.2,1.8 -3.2,1.8 0,1.5 -1.8,3.8 -1.5,-0.3 -0.2,3.3 -1.2,0.8 -0.8,-3.5 -1.1,1.5 -0.8,-1.3 2.5,-2.7 -0.8,-0.5 -3.2,0.1 -1,-1.7 -2.7,-1 -0.7,1.2 1.6,1.5 -1.7,1 1.4,0.7 -0.4,1.4 1,3 -1.6,1.1 -0.1,-1 -1.9,1 -1.6,3.2 -1.7,0.1 -2.6,3.2 -3.5,2.5 0.1,0.8 -3.9,1.8 -0.5,1.3 0.6,3.2 -0.9,2.6 0,3.3 -4.5,4.3 -1.9,-1.6 -1.3,-4.2 -2,-3.4 -0.9,-3.3 -1.7,-3 -1.5,-7.4 0.4,-1.3 -1,-3.6 -0.5,2.2 -2.1,1 -1.3,-0.4 -2.1,-2.1 1.8,-1.2 -2.9,-1.2 -0.9,-1.4 1.3,-0.8 2.1,0.2 2.1,-1.1 -3,-4.3 1.9,-2.5 2.7,0.2 2,-2.3 0.9,-1.8 2.2,-2.5 -0.1,-1.3 1.5,-0.9 -2.4,-2.2 -0.5,-2.5 1.1,-0.9 2.8,0.6 2.4,-1.3 1.4,-0.9 0.9,1.8 1.3,0.7 -0.3,1.7 1.4,1.7 -2.2,0.5 0.7,2.5 4.4,2.4 -1.3,0.9 -0.6,1.9 5.2,2.8 3.5,0.3 2.4,1.6 2.9,0.4 1.6,-0.7 z",FR:"m 228.83,121.39 -0.4,0.1 -0.1,-0.8 0.2,0.5 z m 125.6,9.9 -0.5,2.9 -0.8,-0.5 -0.1,-2.3 z m 301.9,127.2 -0.6,2.6 -3,-1.6 -1.7,-1.7 -0.4,-1.4 4.2,3.2 z m -187.7,60.9 2.7,0.3 -0.8,1.5 -2.5,0 z m -253.1,-136.4 0.1,-0.1 0,0.2 z m 135.1,-54.4 0,0.1 -0.1,0 0,0 -0.1,0.1 -2.4,1.4 -4.2,-1 -1.7,1.4 0.3,1.2 -1.3,0.2 -1,-0.3 -0.1,0 0,0 -0.5,-0.1 0.1,-0.3 -0.6,0.1 -2.8,-0.2 -3.4,-1.7 0.6,-0.4 0.9,-5.8 -1.8,-2.4 -1.6,-1.1 -3.6,-1.4 -0.1,-1.2 3.2,-0.8 0.7,0.9 2.5,-0.3 -1,-2.7 3.3,1.1 0.7,-1 2.7,-1.3 0,-1.7 1.8,-0.5 3.1,2.8 3.2,1.1 0.3,0.2 0.7,0 3.6,1.2 -1.2,3.4 -2.8,2.4 0.2,0.7 0.1,-0.2 0.2,0 0.8,-0.1 -0.1,0.7 0.5,0.5 -0.8,1.9 z m -118,79 0.4,-0.8 1.9,0.6 2.4,2.7 -2.5,3.5 -3.1,-0.3 1.2,-2.1 -0.9,-2.8 z",FM:"m 639.23,204.49 0.2,0.1 0,0.2 -0.2,0 z",CN:"m 544.43,180.89 1.7,-1.7 2.1,-0.3 0.6,0.9 -1.1,2 -1.4,1 -1.9,-0.7 z m -37.9,-16.4 -0.2,-1.4 -1.3,0.3 -3,-0.5 -1.1,0.4 -1.7,-0.9 -1.9,-1.9 -1.1,0.1 -2.8,-2.4 -2,0.3 -4.4,-2.4 -0.7,-2.5 2.2,-0.5 -1.4,-1.7 0.3,-1.7 -1.3,-0.7 -0.9,-1.8 -0.8,0.1 -1.1,-0.4 -1.6,-1.8 -2.7,-1.2 -0.3,-0.2 1,-0.3 -0.3,-2.8 -1.8,-0.1 -0.3,-2 0.6,-1.3 3,-1.3 0.3,0.7 2.1,-1.4 2.5,-0.3 0.5,-0.7 3.5,-1.9 1.2,-2.2 -1.4,-4.4 4.2,-1.2 1.4,-4 3.3,0.9 1.5,-0.5 0.5,-3.3 3,-1.7 0.3,-0.1 0.6,-0.1 0.3,1.4 2.1,1.5 2.4,0.8 1.4,2.6 -0.3,3.3 5,0.6 3.6,1.5 1.9,3.7 10.1,0.5 0.7,0.7 3.3,1 2.8,0 3,-1.2 5.2,-0.4 4.7,-2.9 -1,-1.7 1.1,-1.5 3.1,0.8 1.8,-1.5 2.1,-0.2 1.8,-2 3.2,-1 2.7,0.3 0.4,-0.8 -2.6,-2.6 -1.5,0 -0.1,0.1 -0.3,0.4 -3.2,0.2 -0.7,-1.1 2.3,-4.1 2,0.7 2.8,-1.2 -0.1,-0.9 1.8,-3.3 1.3,-1.1 -1.4,-1.7 1.5,-1.3 4.7,-0.8 4.7,1.5 4.5,8.8 2.5,0.3 2.8,2.7 0.4,1.6 2.7,-0.1 3.7,-1.7 0.7,1.7 -1.2,1.1 -0.5,2.4 -2,2.8 -0.5,-0.6 -1.1,0.2 -2,0.9 0.6,1.9 -0.5,2.8 -0.9,0.7 -1.3,-1 -0.3,1.2 -3.2,1.1 0.2,1.4 -2.9,-0.7 -1.2,1.8 -3.1,1.8 -3.6,1.5 -2.6,1.5 0.3,-1.4 1.9,-2.5 -2.1,-1 -1.4,1.7 -1.8,0.6 -1,1.6 -2.4,0.2 0.7,2.1 1.4,0 1.2,2.3 2.4,-1.6 1.7,0.9 2.1,0.1 -3.7,2 -3,3.1 2,1.6 1.2,3.5 1.8,1.5 0.3,2.2 -1.9,0.8 2.7,1.5 -1.5,1.1 0.1,2 -1.3,0.7 -2.9,4.1 0.6,1.2 -1.8,0.6 -4.5,4.4 -3.3,0.2 -1.1,1.2 -1.1,-1.6 -0.1,1.8 -5.5,1.5 -1.5,2.2 -0.3,-2.4 -2.5,-0.8 -0.9,0.8 -2.7,-1.8 0.4,-0.8 -2.8,-1.2 -2.6,1.7 -2.8,-0.5 -0.7,0.7 -1.2,0.3 0.4,2.3 -1,-0.9 -1.9,0.3 -0.5,-1.3 -1.5,-0.2 0.7,-1.8 -1.2,-0.2 -0.6,-1.8 -1.8,0.4 0.1,-2.4 1.9,-1.7 0,-3.5 -2.2,-1.9 -0.4,0.6 -2.3,-2.4 -1.6,0.7 -1.2,-0.6 -3.9,2.9 -1.9,0.4 -2.7,-1.3 z",PT:"m 322.13,143.49 -3.1,0.4 0.5,-2.6 -1.4,-1.1 1.5,-4.7 -0.1,-2.7 4.2,0.1 0.7,0.8 -1.4,1.3 -0.1,4.5 z",SW:"m 185.73,187.29 0,0 0,0 z",SH:"m 561.73,188.69 0,0 0,0 0,0 z",BR:"m 241.13,217.99 2.5,0.3 -0.8,2.2 -3.4,0.6 -0.4,-2.2 z m -7.3,66.1 0.8,-1.6 -0.1,-0.3 -4.7,-3.8 -0.8,0.5 -1.5,-2.1 -1.5,0.2 3.5,-4.1 3.7,-2.2 -0.1,-3.1 -1.4,-0.1 0.1,-0.1 -0.1,-0.2 0.7,-1.5 0,-1.3 -2.2,-0.2 -0.4,-2.6 -1.5,-1.1 -3,-0.1 0.3,-2.2 -0.7,-1.6 1.2,-3.9 -1.6,-1.8 -0.2,-1.8 -3.2,-0.1 -0.6,-4.8 -2.6,-0.5 -2.4,-1.7 -2.5,-0.4 -1.9,-2.5 -0.1,-2.9 -2.3,0.5 -3.2,2 -2.4,0 -2.1,0.1 0.3,-3 -1.3,0.9 -1.9,0.2 -3.5,-4.8 1.7,-2.2 0.4,-2.4 4.1,-1.8 1.5,0.1 1,-5.3 -1.2,-2.4 0.4,-3.6 3.3,0 1.5,-0.7 0.9,1.6 2.6,1.1 2.7,-1.7 1.5,-1.6 -1.3,-0.1 -1.2,-2.9 5.9,-0.5 1.6,-1.8 1.4,0.2 0.9,2.2 -0.9,2.3 0.5,1.6 1.8,1.3 3.2,-1.6 1.2,0.2 1,-1.1 2.6,0.3 3.1,0.3 2.5,-3.5 1.2,0.3 0.7,3.2 1.5,1 0.2,3.1 -3,0.9 1.4,2.6 2.7,0.3 2.9,-2.7 5.2,1.5 0.7,2.6 1.8,-0.8 4,1.2 3.1,-0.1 2.9,1.6 2.5,2.3 3.1,0.4 1.5,3.9 -1,3.9 -3.1,3 -2.2,3.6 -1.7,1.2 0.2,5.1 -0.6,3.5 -0.9,1.1 -0.1,2.3 -2.7,4.2 0.2,0.9 -2,2 -4.4,0 -5,2.7 -1.7,1.3 -1.5,2.3 0.4,2.7 -0.7,2.3 -2,2 -1,2.1 -1.7,-0.6 -0.4,1.9 -1.5,1.4 -0.8,2.9 -1.4,1.3 -0.3,-0.2 z",KI:"m 34.93,213.89 0.2,0.4 0.2,0.2 -0.4,-0.1 z",PH:"m 574.43,195.49 1.3,-0.2 -1.5,-1.5 1.7,-0.1 1.1,2.8 -1.3,-0.2 -0.5,1.8 z m -8.8,0.5 0.2,-1.8 0.9,0.5 -1.1,1.3 z m -0.4,0.4 0,0 0.4,-0.4 0,0 0,0 -0.4,0.4 z m 4.6,1.5 0.1,-3.5 2.2,1.5 -0.4,1.1 2.1,-0.8 -0.1,1.8 -1.9,2.5 -1.2,-1.5 0.4,-1.7 z m 4.4,5.8 -1.6,-0.8 -1.8,0.2 -1,2.5 0.2,-2.6 2.5,-1.9 1,1.1 1.7,-1.7 1.4,0.1 0,-2 1.6,2.3 0.5,3 -0.7,1 -0.9,-1.1 -0.8,1.3 0.1,2 -2.2,-1.1 z m 0.3,-12.1 -0.7,3.8 -1.2,-1 -0.5,-2.4 -1.2,-1 0.1,1.6 -1.7,-1.6 -1,1.1 1,0.9 -0.9,1.4 -1.6,-2.5 1.2,-0.1 -1.8,-2.4 -0.5,-3 1.1,0.4 -0.1,-2.8 1.6,-2.9 -0.2,0.8 2.3,0.8 0.5,2.2 -0.7,1.7 -1.2,0.6 0.3,3.4 1.5,-0.3 z m -9.3,4.8 0.3,1.3 -4.6,3.9 4.3,-5.2 z",MX:"m 170.23,178.09 -0.5,0.6 0,-0.3 0.1,-0.3 z m -38.2,-2.3 0.3,0.1 0.6,0.8 -0.5,-0.4 z m -10.1,-5.6 0.3,0 0.2,0.3 0,0.1 z m -0.4,-1 -0.1,0.4 -0.1,0 0.1,-0.4 z m -5.8,-6.3 -0.1,0.1 -0.2,-0.2 0.3,-0.5 z m -5.8,-1.7 -0.1,0 -0.1,-0.5 0.2,0.2 z m 10.9,0.4 0.2,-1 0.5,0.4 -0.3,0.5 z m -1.8,-1.7 0.6,0.5 0.1,0.6 -0.9,-0.8 z m 23.5,-0.1 -0.1,0.2 0.4,0 1.5,2.5 1.5,2.5 0.4,0.5 0.2,0.5 1.8,1 2.1,0.2 -1,3 -0.4,4 1.4,3.7 2.5,3.8 2.6,1.2 5,-1 1.8,-1 1.1,-3.7 4.2,-1.2 2.7,0.7 -1.3,2.1 -0.8,3.9 -0.9,-0.5 -1.1,1.2 -0.5,0.1 -3.5,0 -0.9,1.1 2,1.8 -2.6,0.6 -0.9,2.9 -3.2,-3 -1.8,-0.7 -3.3,1.5 -4.2,-1.7 -4.4,-1.4 -1.4,-1.2 -3.3,-0.9 -2.8,-2 -1.4,-2.1 1,-2.1 -1.2,-2.3 -4.8,-5.3 -2.2,-1.1 0,-1.9 -2.1,-1.3 -3,-3.4 -1.9,-3.8 0.1,-0.7 -2.9,-1.3 -0.2,3.3 2,1.9 6,9 -0.2,1.3 1.6,0.2 0.6,1.9 -0.8,0.7 -0.8,-1.4 -3.5,-2.6 -0.2,-2.4 -2.6,-1.4 -2.8,-2.3 1.7,-0.2 0.2,-1.1 -3.1,-2.7 -0.7,-2.2 -2.1,-3.6 4.6,-0.4 -0.2,0.5 7.2,2.4 5.5,0 0,-0.9 3.2,0 3.2,2.6 0.7,1.8 2.6,1.4 1.6,-1.9 z m 7,8.5 -0.4,1 0.2,0.8 0.5,-1.8 z",ES:"m 306.83,163.39 -2,-0.6 -1.3,0.1 1.9,-1 z m 23.8,-15.8 0.1,0.1 -0.1,0 0,-0.1 z m -4.7,-1.3 0.2,0.1 0,0.1 -0.1,-0.1 z m 0.1,-0.5 -1.5,-0.3 -0.7,-1.5 -1.7,-0.5 0.8,-4 0.1,-4.5 1.4,-1.3 -0.7,-0.8 -4.2,-0.1 -0.9,-2.7 2.5,-1.4 1.3,0.4 7,0.1 3.4,0.3 3.4,1.7 2.8,0.2 0.2,0.4 0.3,-0.2 0.5,0.1 0,0 0,-0.1 0.1,0.1 0,0 1,0.3 1.3,-0.2 0.1,1 -2.3,1.6 -2,0.5 -2.5,3.5 1,1.6 -1.4,1 -0.4,1.6 -1.8,0.6 -0.8,1.2 -4.5,0.2 -1.7,1.2 z",BU:"m 183.13,187.49 0,0 0,0 0,0 z",MV:"m 476.83,206.89 0.5,0.7 -0.6,0 0.2,-0.4 z",SP:"m 558.13,197.09 0,0 -0.1,0 0.1,0 z",GB:"m 330.13,90.09 0.1,0.2 -0.2,0.1 -0.3,-0.3 z m 0.2,-0.8 0,0.5 0.3,0.1 -0.8,-0.1 z m 0.5,-0.2 -0.4,-0.2 0.8,0.3 -0.2,0.2 z m 3.5,-3.1 -0.5,1.4 -0.1,-1 -0.6,-0.3 z m 0.2,-0.9 0.3,0.1 -0.8,0.2 0.2,-0.5 z m 0.3,-0.4 -0.1,0.3 -0.3,0 0.1,-0.4 z m -154.3,95.9 0.1,-0.1 0.4,0.1 -0.3,0.1 z m 18.7,-4.9 -0.4,0 -0.1,-0.2 0.3,0.1 z m -1,-0.2 -0.1,0.2 -0.3,0 0.3,-0.1 z m 124.5,-81.9 0,-1.5 1.6,-0.9 -0.2,1.3 z m -100.7,234.1 1.4,-2.7 2,0.4 0.3,0.8 z m 179.2,-179.3 -0.1,0 -0.1,0 -0.1,-0.1 0,0 0.1,0.1 -0.2,0 0,-0.1 0,0 0,-0.1 0.1,0 0.3,0 0,0 -0.2,0 z m -0.3,-0.1 0,0 0,0 z m -74.8,-2.5 -0.1,0.1 0,-0.1 z m 73.4,3.3 -0.2,0 -0.3,0 0.1,-0.1 z m -77.1,-48.5 1.8,-0.6 1.5,1.7 -1.4,1.4 -2,0 -1.7,-0.9 z m 2.3,-6.2 2,-3.6 3.8,0 -2,2 1.1,0.6 3,0.1 0.3,0.6 -2.7,3.8 3,1.3 0.8,2.5 2.1,1.4 0.8,2.7 -0.6,0.5 3.2,0.3 -0.2,1.8 -1.7,1.5 1.3,0.9 -2.1,1 -7.1,0.3 -3.8,1 2.4,-2.5 2.1,0 -2.5,-1.5 -1.8,-0.2 2.1,-1 0.1,-2.5 1.9,-0.4 0.6,-2.1 -1.5,-0.9 0.5,-0.9 -2,-0.1 0.1,1.3 -1.4,-1.1 0.9,-1.8 -2,-2.4 -1.7,-0.7 1.5,-0.4 -1.9,-1.8 z",GR:"m 386.63,147.99 -3,0.5 -2.3,-0.8 1.3,-0.6 z m 2.5,-2.3 1.2,-0.6 -0.3,0.8 -0.5,0.5 z m -0.8,-0.9 -0.4,-0.2 0.4,-0.4 -0.1,0.3 z m -0.5,-1 0.2,0.1 -0.2,0.2 0.1,-0.2 z m -3.3,0.2 0.7,-0.5 0.1,0.4 -0.4,0.8 z m 2.2,-1.4 -0.5,0.2 -0.2,-0.1 0.2,-0.1 z m 1.2,-0.3 0.2,0.1 -0.5,0.1 -0.4,-0.2 z m -1.7,-1.8 0.2,0.6 -0.4,-0.1 -0.2,-0.5 z m -1.2,-3.3 -0.4,0.1 0.4,-1.1 0.4,0 z m -8.5,-1.5 0.2,-0.1 -0.2,0.1 -0.1,-0.1 0,-0.1 0.1,-0.1 0.2,0 1.5,-0.6 2,-0.5 3,-0.6 1.4,0.8 2.1,-1.1 0.6,0.7 -1.2,1.5 -1.9,-0.6 -2.5,0.8 1.3,1.1 -3.4,-0.7 -0.1,1 5.4,5.8 -2.8,-1.9 0.3,1.3 -1.7,-0.6 -0.9,0.9 0.9,2.5 -2.5,-0.6 -1,-3.3 -2.6,-3.3 0.7,-0.3 z m 10.4,3.3 0.3,0.4 -0.3,0.2 -1.2,-0.5 1.1,-0.3 0,0 z",AS:"m 9.63,245.09 -0.1,0 -0.1,0.2 -0.2,-0.1 z",DK:"m 357.83,100.89 1,0.8 -0.6,0 -0.8,-0.3 z m -1.7,0.1 0.3,0.1 -0.2,0.1 -0.4,-0.4 z m 4.2,-0.3 -0.7,0.4 0,-0.3 0.3,-0.1 z m -5.3,-0.2 0.5,0.4 -0.1,0.2 -0.4,-0.1 z m 2,0.4 -0.2,0.5 -0.2,-0.2 0.7,-0.9 z m 3.4,-2 -1.2,2.7 -1.7,-2.6 2.2,-1.3 z m -6.1,2.4 -1.1,-0.3 -0.3,0 -1.1,-4.4 3.2,-1.5 1.6,-1.8 -0.7,2.3 1.4,1.3 -0.9,0.9 0.6,2.3 -2.4,-0.5 z",GL:"m 234.93,60.89 0.2,0.2 -0.5,0.1 -0.2,-0.2 z m 1.5,-0.8 -1.8,0.4 0.2,-0.2 0.7,-0.2 z m -4.8,-5.7 -0.5,0 -0.2,-0.4 0.5,0.1 z m 2.2,-2.3 -0.9,-0.3 0.7,-0.7 0.5,0.7 z m -2.9,-4.6 -0.9,0.6 -0.2,-0.3 1.1,-0.5 z m -1.2,-1.6 -0.4,0.4 -0.7,-0.2 0.5,-0.2 z m 1.3,-0.1 -1.1,0.9 -0.1,-0.8 0.7,-0.2 z m -1.8,-2.8 0.9,0.5 -0.3,0 -1,-0.5 z m -0.7,-1.2 0.6,0.1 -1.2,0.1 0,-0.4 z m -0.4,-2.3 -1.1,0 -0.9,0 1.6,-0.3 z m -25.1,-8 -0.8,0 0.1,-0.2 0.8,-0.1 z m -5,-3.6 1.6,0.3 -0.6,0.2 -1.6,-0.3 z m 2.5,-0.2 1.3,0.4 -1.6,0 -0.4,-0.3 z m 102.6,-10.6 -2.2,1.3 -1.8,-0.7 3.2,-1.1 z m -94.9,-3 0.6,0.2 -0.4,0.1 -0.2,-0.1 z m 30,-6 -1.7,-0.1 -2.1,-0.5 0.8,-1 z m -4.8,50.1 0.6,-0.6 -3,-0.9 0.3,-1.7 3,0 2.4,1.4 -0.3,1.1 z m 1.4,12.1 -0.3,0 0,-0.2 0,-0.1 -0.2,-0.1 -0.7,-2.6 2.6,-1.4 -3.2,-0.5 1.5,-3.6 3.8,-1.2 0.7,-3.9 -1.2,-0.9 -4.6,-1.4 -1.4,-1.2 4.1,0.1 3.4,1.3 -1.5,-2.1 -2,-1.1 -0.3,0.2 -0.9,-0.1 0.3,-0.6 0.2,0 -0.3,-0.2 2.3,-0.6 -1.9,-0.2 -0.8,0.5 -0.5,-0.5 0.8,0 0.2,0 -2.2,-0.2 0.3,1 -2.6,0.2 -1.2,-1.1 0.6,-0.6 -0.3,-0.2 0.4,-0.1 0.1,0.1 1.2,-1.2 0.5,-2.1 -1,-0.4 0.1,-0.1 -0.8,-0.3 -0.1,0 -0.2,-0.1 0.8,-1.2 -1.5,-0.9 0.7,-0.9 -1.4,-0.7 0.5,-1.1 -1.8,-2.2 -2.1,-0.5 -0.9,-1.2 0.4,-1.4 -4.7,-1.7 -5,-0.8 -1,0.9 -4.2,-0.5 -0.5,1.3 -3.7,-0.5 -2.4,-1.3 3.2,-1.2 -4.6,-0.4 -1.8,-0.8 0.8,-0.8 4.9,-0.8 3,0.1 1,-1 -5.7,0.6 -0.5,-0.9 -3.5,-0.4 -3,-1.6 0.6,-1.5 6.2,-1.2 2.5,-1.2 4,-0.1 2.1,-1.7 -0.4,-2.3 -3.8,-0.1 -0.8,-1.3 4.5,-1.9 0.6,-1 3.5,-1 2.7,0.7 1.5,-2 -1.3,-1.1 5.5,-1.7 7.9,-1.2 1.7,1.2 -0.4,2.6 1.6,-2.3 3,0.7 3.7,-0.2 -2.2,-1 -1,-1.7 4,0.3 5.8,1.9 1.6,1.2 1.8,-0.3 -1.4,-0.9 0.4,-0.3 -4.1,-1.2 -2.8,-2 1.3,0.7 2.6,-0.2 3.6,1.3 -0.6,1.4 2,-1.4 -3.9,-1.8 9.1,0.1 -8.9,-0.5 -2.3,-0.5 1.5,-0.6 1.8,0.5 0.9,-0.9 4.8,-0.3 4.4,0.2 1.9,0.1 0.3,-1.2 3.7,-0.5 8.2,-0.5 3.5,0.2 9.6,1.4 -0.8,0.5 -9,0.3 -8,1.1 5.9,-0.4 3.4,-0.6 5.2,0.3 4.1,-0.5 1.4,1.3 3.5,0.4 2.5,0.9 -2.1,1.3 -14.2,1 -5.6,1.3 2.1,0.1 7.5,-1.1 6,0.4 -0.1,0.9 -3.1,0.8 -0.1,0.9 5,-1.5 1.1,-1.3 3.4,-0.3 0.3,2.6 -3.6,2.7 2.2,-0.4 6.4,-3.7 3,1.2 2.4,-1.2 3.6,0.1 3.6,0.8 1.3,0.8 -3.8,2 -2.3,0.1 0.5,1 -2.1,0.6 -3.2,-0.1 2.4,1.2 -1.2,0.8 -4.5,0.5 -3,0.9 2.2,0.8 -0.7,1.4 1.2,1 -1.8,0.6 0.9,1.3 -2,-0.6 -1.6,2.5 -0.2,1.6 4.2,-0.2 -0.3,0.8 2.9,0.4 -2.9,0.4 -2.8,-0.5 0.7,1.1 4.1,0.7 -0.8,2.8 0.4,2.3 -1.1,-2.1 0.7,-1.2 -3.4,-0.7 -2.3,1.2 0,1.6 3.4,-0.1 1.1,3.4 3.9,1.4 -2.1,0.2 -1.8,2.7 -3.6,0.7 1.3,2.4 -1.9,-0.1 -1.4,0.8 -3.3,-1.2 -4.1,1.3 1.1,0.3 -0.2,-0.1 2.3,-0.9 2.4,1.3 2.5,0.6 0.1,0.8 -2,-0.3 1.8,1 -1.3,0.1 0.9,1.2 -4.2,-1.7 -0.2,-0.8 1.5,0 -1.6,-0.3 -1.2,-0.5 -1,0.5 2.2,1.8 3.9,1.8 -1.1,0.7 2.4,1.6 0.7,2.5 -3.6,0.4 -1.8,-2.3 -3,-1.7 0.5,1.4 -4.5,1 -0.6,1.8 1.8,-0.2 -1.5,0 0.8,-1.1 4.5,-1.1 0,1.4 -1.7,0.7 -1.2,0 -2,1.3 1.1,0.3 3.8,-1.4 3.4,1 2.2,0 -1.6,1.6 -1.7,0.4 -4.1,2.8 -3.4,0.5 -2.6,1.2 -5,0.5 -2.6,1.6 0.2,0.8 -2.7,3 -3.3,1.7 -2.8,0.8 -0.3,-2.1 -1,1.8 -3.1,0.7 1.3,0.4 -1.5,1 -1.1,2 0.6,2 -3.1,3.4 -0.9,5 -1.6,1.2 0.4,1.5 -2.1,0.2 -2,-0.9 -0.2,-1.3 -4.7,-0.6 -2.1,-1.6 -0.5,-2.2 -1.9,-1 0.3,-1.4 -2.4,-1.6 0.2,-2.8 -1.5,0.8 0.1,-2.6 z",GU:"m 613.53,191.99 -0.2,0.4 -0.1,-0.3 0.5,-0.5 z",MP:"m 615.13,188.99 0.1,-0.4 0.3,-0.1 -0.2,0.3 z",PR:"m 211.33,182.59 -1.8,0.7 -1.7,0 0,-1.2 z",VI:"m 212.33,183.59 0.4,0 -0.7,0.2 0.1,-0.2 z",CA:"m 175.63,27.69 -3.1,-0.2 0.9,-2.2 -2.3,-0.5 -2.3,0.3 0,-1.4 1.7,-1.5 2.6,-0.5 3.9,0.5 2.7,-0.3 -4.8,-0.3 -1.4,-2.9 -2.7,-0.6 0,-2.5 5.1,0.3 3.1,1.7 0.9,1.2 0.4,-1.6 -3.3,-1.5 9.9,-1.3 -3.7,-0.1 6.4,-1.3 -5.8,0.4 -6.3,1.3 -1.8,-1 -1,1.1 -4.5,-0.4 1.2,-1.8 -2.2,1.7 -4.1,-1.2 5.2,-0.5 0.3,-0.6 -6.3,0.5 -1,-0.7 3.7,-1.9 -4,1 1.8,-1.2 -4.6,0 1.8,-1 5.7,-1.2 6.3,0.6 -3.8,-0.7 2.7,-0.7 -0.8,-0.9 5.3,0.8 5.7,1.6 -5.2,-2 1.2,-1.4 2.9,0.6 -1.9,-1.1 3.2,0.1 -0.5,-0.8 5.8,0.3 1.9,-0.9 3.7,0.3 0.7,0.6 1.7,-1 6.3,-0.2 0.1,0.6 6.2,0.5 -4.3,1.2 2.3,-0.1 5.2,-1.2 3.4,1.9 2.6,0.1 0.5,1.4 -5.9,2.2 -1.9,-0.2 -2.4,1.2 -6.6,1.6 10.6,-1.8 -7.2,3.6 -4.5,2.7 -1.6,1.8 -3.6,-0.2 0.4,1.1 -5.3,0.8 -2.8,-0.5 0.1,0.8 5.5,0.2 0,0.8 -3.2,-0.4 -3.4,0.3 4.1,0.3 2.2,0.9 -0.3,0.8 -3.3,0.2 2.7,0.7 -0.9,1.1 -3.9,1.2 -1.3,1.8 -4.8,0.2 3.4,1 -0.7,0.7 2.8,-0.2 0.3,1.2 -2.9,1.4 0.8,1.8 -1.7,-0.1 0.8,-1.6 -3.3,0.7 0.5,-1.2 -6,-0.2 -0.9,0.6 -5.8,-0.5 -5.1,-0.2 -0.9,-0.9 4.3,-1.7 1.2,-0.9 -1,-1.8 1.9,-0.4 2.4,0.8 0.3,1.1 z m 0,0 0,0 0,0 0,0 0,0 0,0 1,-0.1 1.2,-2.1 -2.2,2.2 0,0 0,0 0,0 z m 9.3,102.5 0,0.2 0.3,0.2 -4.7,0.7 -2.4,1.4 -0.9,-0.7 1.2,0 -0.4,-0.5 0.3,-0.2 0.2,-0.9 1.3,-0.8 0.8,-4.4 2.3,1.8 0.7,-0.7 -1.9,-2.7 -6.5,-1 0,-0.5 -0.7,0.2 -0.7,-3.5 -1.9,-0.2 -1.1,-1.9 -3.1,-0.6 -2.9,2.5 -3.6,-0.1 -2.3,-1.2 -4.8,-1.2 -52.8,0 -0.4,-0.2 -0.2,0.2 -0.1,0 -0.4,-0.9 -2.7,-1.5 0.2,-0.7 -0.4,-0.1 0,0.1 0.3,0.2 -0.3,0.1 -0.2,-0.4 -0.5,-0.1 0,-0.1 -0.2,-0.2 -0.1,0.2 -0.6,-0.1 -0.1,0 -0.6,-0.1 0.5,0.1 0,0 -0.3,0 0.3,0.1 0.1,0 0.4,0.1 0.4,0.4 -0.1,0.1 0.3,0.3 0,0 1.2,1.6 2,1.6 -0.1,-0.5 0.5,0.3 0.5,0 -0.8,0.2 0.3,0.3 -0.5,0.7 -2.1,-0.6 -3.7,-2.1 -0.1,-0.5 0.1,-0.1 -0.3,-0.5 0,0 -0.1,-0.2 -1.9,-0.4 -1.2,-1.7 1,-0.3 2.6,0.8 0.1,-0.1 -0.2,-0.1 0.6,0 0.2,-0.2 -0.2,-0.2 -0.6,0.4 -2.3,-1.3 -0.3,-2.3 -0.3,0.8 -0.3,-0.3 0.2,-0.4 0.4,-0.1 0,0 0,-0.1 0.1,-0.2 -0.2,0.1 0,-0.1 0.2,0 -0.1,-0.3 -0.1,0.1 -0.2,-1.3 -1,-0.9 -0.5,1.2 -0.6,-0.9 0.1,-0.3 -0.3,0 0,-0.3 0.3,-0.2 0,0.4 0.1,-0.4 0.7,0.3 -0.2,-0.2 0.4,-2 -0.8,1 0.4,-0.1 -0.1,0.3 -0.4,0.2 -0.1,-0.2 -0.3,0.5 -2.2,-2.4 0.9,-1.9 0,-0.7 -0.1,-1.7 -3.4,-1.8 -3,-5 -3,-2.5 -1,-1.5 -1.7,0.6 -2,2 -0.4,-1 -3,-2.4 -3.5,-0.6 0,-29.2 3.6,0.5 3.6,1.9 2.6,0.1 0.1,-1.3 3.9,-0.7 1.1,0.3 5.4,-2.6 1.7,0.5 -4.7,1.7 -1.7,1.6 3.1,-1.8 0.6,1.1 1.1,-1.4 6.2,-2 0.9,1.8 2.3,1.4 1.8,-2.7 0.2,2.6 2.4,-0.5 0.4,-1.2 2.9,0.3 2.2,1.2 4.3,1.3 3.9,0.7 0.1,-0.6 3.4,1.5 0.2,1 -1.7,-0.1 -1.1,1.1 3.2,0.8 4.4,-0.1 2.3,-0.8 2.3,0.7 0.6,1.3 1.6,0.3 0.8,2.4 0.7,-1.9 -1.5,-1.9 4.5,-3.1 -3.8,1.6 -2.3,-0.4 1.1,-1.1 4.7,-0.9 0.9,1.8 1.6,1 2.2,0.1 3.5,1.1 1.6,-0.6 4.5,0.2 1.5,0.7 -2.2,-2.6 2.8,-0.3 0.8,1.4 1.8,-0.9 -1.1,2.7 2.2,1.9 -0.3,-3.8 1.2,0.1 2.4,-2.7 -2,0.3 0.6,-2.3 -3.6,-1.4 -0.7,-1.7 0.2,-3.3 2.4,-2.3 1.1,-0.2 -1,0.1 0,-1.8 -1.1,-1.2 0,-3.1 0.9,-1.4 3,-0.6 2.7,0.7 4,0.3 -3.2,3.9 -1,0.5 -3.4,-0.2 1.3,1.1 -1.2,1.6 -0.8,0.1 2.5,1.9 0.3,2.1 2.9,2.5 -2.5,1.5 2,0.7 2.6,2.1 0.3,2.1 1.2,-2.7 1.4,-0.6 1.9,1.7 -0.9,1.5 1.7,3.8 3.1,-3.1 0.5,-2.2 1.8,-1 -1.5,-0.8 0,-1.7 2.2,-0.3 0.9,0.2 0,-0.1 0.6,0.1 -0.1,0.1 1.9,0.4 2.4,1.5 -0.9,1 1.1,0.9 -2.7,0.6 2.7,3.3 -0.5,1.5 -3.5,2.1 -2,-2 1.3,2.5 -3,-0.3 -0.4,-0.9 -2.5,0.4 1.8,0.9 -2.9,2.6 -1.1,0 -3.3,-1.9 1.2,1.9 3.8,0.3 -1.8,3.2 -2,0.8 -1.8,-0.7 -0.4,1.6 -1.5,0.2 0,0.1 0.6,0.2 -0.1,0.1 -0.1,-0.2 -0.4,-0.1 0.6,1.5 -3.9,1.7 -3.2,4.8 -0.9,2.6 0.8,3.5 2.4,-0.1 1.4,3.6 -0.5,1.4 3.2,-0.9 4.1,1.1 2.5,2.2 5.7,2.2 4.4,0.5 0.3,3.3 -0.3,2.2 4.9,4.7 2.4,-3.1 -0.9,-1.8 -0.3,-2.9 -1.2,-1.3 3.8,-1.7 2.1,-2 0.3,-2.1 -1.1,-3.2 -2.8,-1.8 2.4,-3.4 -1.7,-3 1.2,-1.8 -1.2,-2.4 1.3,-0.9 5.2,1.3 2.1,-1 3.8,2.4 -0.2,0.9 4.6,1.7 -0.8,0.7 0.7,4.7 1.3,-0.1 2.1,2.3 3.6,-2.1 0.5,-2.5 1.3,-1.8 0.9,0.4 0.4,1.4 0.2,-0.4 0.2,0.3 -0.3,0.2 -0.1,-0.1 0.2,1 1.3,0.3 0.9,1.9 3,4.2 -1.1,1.3 4.1,4 4.8,1.7 -1.4,0.7 1.7,1.3 2.5,0.7 0.4,3.2 -2.6,2 -3.1,0.6 -2.4,2.2 -3.6,0.6 -1.2,-0.5 -7.8,0 -1.8,2.4 -3.2,1.4 -1.7,2.4 -2.7,2.5 -3.2,1.3 -3.3,2.9 -1,0.3 -1,0.9 -6.1,1.4 -1.6,1.3 1.4,0.1 0,0.2 z m -90.5,-17.9 0,0 0,0 z m 5.8,2.8 -0.1,-0.3 -0.2,0.1 0,0.1 z m -7.8,-7.2 0.3,-0.4 -1,0.4 -0.3,0.8 z m 57.5,-44.6 -0.4,0.1 0.1,0.3 0.3,-0.2 z m -54.8,52.4 0.3,0.1 0,-0.2 -0.1,-0.1 z m -0.2,-0.3 -0.1,-0.2 -0.2,0 0,0.2 z m 117.6,-39.5 0,2.5 -1.1,0.4 -2.5,-0.6 -1.9,-1.4 -0.2,1.1 3.2,2.7 -0.6,1 -4.4,-1.2 -2,-1.2 -4,-1.6 0.3,-1.2 -2.1,-0.8 -1.6,-2.4 -2.3,0.8 -2.2,-0.8 -1.7,1.3 -2.2,-0.5 -0.5,-1.8 1.3,-1.6 3.2,0.8 3,-1 1.4,0.2 -1.9,-2.2 2.9,-1.9 1.5,-1.7 -1.6,-3.2 -1.6,-0.3 -3.1,-2.3 -2.2,1.2 0,-1.2 1.9,-0.7 -4,-2 0,-1.2 -2.4,-0.5 0.3,1.5 -5.7,-0.9 -0.7,1.2 -7.9,-1.1 -4.6,-1.2 -1.7,-2.2 4.2,0.5 -1.4,-0.9 -3.3,-0.4 -0.5,-2.1 1,-3.2 1.2,-1.8 2.2,-1.6 2.1,-0.5 3,0.2 -3,3.6 0.5,3 3,2.6 -1.2,-3.6 1.9,0.6 -2.3,-1.9 1,-2.2 4.5,-1.9 2.5,0.1 2.4,3.6 -1.1,2.8 2,-1.9 1.7,1.7 0.9,-2 1.6,-0.6 4.6,0.9 -0.2,1.3 2,0.2 0,1.2 2.3,1.7 1.1,-1.4 2.6,1.4 -1.8,0.6 -0.1,0.4 0.6,-0.3 0.6,0.4 1.3,-0.6 -0.8,1.9 2.5,-1.1 3,1.1 2.4,2.9 -1.4,0.2 0.2,0.1 -0.4,0.3 0.4,0.1 0.4,-0.3 0.4,0.2 -0.5,0.2 0.7,0.1 0.8,1.1 -1.8,0.4 -0.7,0.8 -0.2,0 -0.4,-0.1 0.5,0.2 -0.4,0.5 2.8,0.6 0.6,0.8 0.2,-0.2 0.4,0 0,0.3 -0.6,-0.1 0.6,0.8 2.5,-0.4 2,2.5 0.2,0 0.4,-0.1 0.5,0.1 -0.1,0 0.8,0.1 -0.7,1.2 2.6,-0.4 1,2.1 -2.1,0.5 -0.1,1.7 -2,0.7 0.2,1.7 -1.9,-0.6 -4.4,-4.5 -2,0.2 1.5,1.5 -1.6,1.4 4.5,2.5 -0.2,0.8 2,1.6 0,0.2 0,0 0.1,0.4 0.3,0.3 z m -14.4,-23.2 -0.1,0.3 0.6,-0.2 -0.3,0.1 z m 8,4.1 -1.4,0.1 0.8,0.2 z m -5.8,64.5 -0.2,0 0.5,-0.4 0,0.2 z m -100.9,-5.5 0.3,0.4 0.4,0.2 -0.3,-0.1 z m 114.1,-2 4.3,1.4 -0.7,0.7 -2.6,-0.8 z m -116.5,-0.2 -0.2,-0.3 0.2,-0.1 0.2,0.3 z m -5.6,-3.7 -0.4,0 -0.1,-0.4 0.3,-0.2 z m 93.5,-1.6 -0.5,0.3 -0.6,0.2 0,-0.3 z m -99.5,0 -0.1,0.1 -0.1,0.2 0,-0.4 z m 5.4,0.2 -0.2,-0.2 0.2,-0.2 0.1,0 z m -0.1,-0.5 -0.1,0.2 -0.4,0 0.2,-0.2 z m -0.8,-0.7 0.1,0.4 -0.1,0.2 -0.2,-0.5 z m 0.3,-0.3 0.1,0.3 -0.1,0.2 -0.4,-0.4 z m -6,-0.3 0.4,0 0,0.2 -0.3,0.1 z m 6.3,0.9 -0.2,-0.6 0.2,-0.5 0.2,0.8 z m -1.8,-1.1 0.7,0.5 0,0.3 -0.3,-0.2 z m 2,0.5 0,-0.2 -0.1,-0.2 0.3,0 z m -2.5,-1.2 0.1,0.3 -0.2,0 -0.2,-0.4 z m 0.3,-0.2 0.2,0.4 -0.2,0 -0.2,-0.5 z m 91.9,-0.2 0.6,0.1 0.8,1.3 -2.6,-0.9 z m 3,0.2 0.1,0.1 -0.3,0.1 0.1,-0.3 z m -94,-0.5 -0.3,0.1 -0.1,-0.1 0.3,-0.5 z m -3.1,-0.3 0.1,-0.5 1.2,0.7 -0.1,0.6 z m 0.9,-0.4 -0.5,0 -0.1,-0.2 0.4,-0.2 z m 0.6,-0.1 0.9,0.8 -0.5,0.3 -1.4,-1.6 z m -1.7,-1.2 0.6,0.1 0.2,0.3 -0.7,0.4 z m -0.8,-1.3 0.7,0 0.1,0.6 -0.6,-0.2 z m 99.2,-0.8 -0.6,0.2 -0.1,-0.1 1.2,-0.2 z m -98,0.4 0,-0.1 0.5,-0.6 -0.1,0.5 z m 98.6,-3.5 0.4,-1 0.2,0 -0.1,0.7 z m -1.2,-1.5 0,0.5 -0.7,0.6 0.6,-0.6 z m -0.5,-0.7 -0.2,0.1 0.2,-0.3 0.2,0.3 z m 23.6,-3.9 -0.3,-0.1 0.1,-0.2 0.1,0 z m -2.9,-2 -0.6,0.1 0,-0.5 0.5,0 z m -21.7,-1.9 0.3,-0.2 0.1,0.2 -0.2,0.1 z m 0.7,-0.6 0.2,0.1 -0.2,0.2 -0.3,0.1 z m 29.3,-2 0.5,0.8 -0.5,-0.2 -0.2,-0.3 z m -6.5,0 0.5,0.3 -0.3,0.5 -0.8,0 z m -19.4,-0.8 -0.2,0.2 -0.7,0.2 0.2,-0.2 z m 25.7,-2.3 -0.1,0.9 -1.2,-0.8 0.8,-0.3 z m -1.9,-0.6 0.2,0.3 -0.5,-0.2 0.3,-0.2 z m -51.8,-0.3 -0.4,0.3 -0.3,-0.2 0.4,0 z m 53.2,0 0.5,0.5 -0.7,0 -0.2,-0.3 z m -27.5,-1.3 0.2,1.2 -0.8,1.2 -0.9,-1.7 z m -24.8,0 0.1,-0.1 0.4,0 -0.2,0.2 z m 53,-0.5 0.6,0 -0.4,0.5 -0.6,-0.1 z m -25.1,0 -0.5,-0.1 0.9,0 -0.3,0.1 z m 24.8,0 -0.5,0 0.2,-0.1 0.2,-0.1 z m -18.4,-0.5 0.8,0.1 0.2,0.2 -0.8,-0.1 z m 7,-0.4 1.2,0.8 -1.1,0.1 -0.9,-1 z m -21.6,-0.4 0.3,0.9 -2.3,1.5 -1.5,-0.9 1.2,-1.3 z m 29.3,0.1 0,0.1 -0.5,-0.5 0.2,0.1 z m -22.3,-1.6 1.4,0.1 0.3,0.8 -0.7,0.3 z m 27.3,-0.4 -0.2,0.4 0,0.5 -0.4,-0.9 z m -24.8,-0.2 1.1,0.6 -0.8,0.2 -0.9,-0.5 z m 24.7,-0.3 -0.2,0 0,-0.2 0.3,0.1 z m -25.5,-0.7 -0.4,0.2 -0.4,-0.1 0,-0.1 z m 24.1,-0.6 -0.1,0 -0.1,-0.4 0.3,0.2 z m -16.4,-0.9 -0.1,0.6 -0.1,-0.1 -0.1,-0.6 z m 15.8,-0.7 0.1,0.3 -0.8,0.4 0.4,-0.6 z m 5.4,-3.2 0.4,0 0.2,0.3 -0.6,-0.1 z m -39.9,-0.3 -0.4,0.1 -0.1,-0.2 0.4,0 z m -3.4,-0.7 0.6,0.6 0.1,1 -0.8,-0.7 z m 1.4,-0.2 1.1,0.5 0.7,1.1 -1.4,-0.5 z m 2.3,-0.6 0.4,0.1 -0.1,0.3 -0.6,-0.3 z m 39.7,-2.8 0.1,0 -0.9,0.5 0.3,-0.5 z m -86.1,0.3 -0.3,0 -0.2,-0.3 0.1,-0.1 z m -1,-1 -0.1,0.3 -0.3,-0.4 0.4,-0.2 z m -1,-0.5 0.2,0 -0.1,0.3 -0.3,-0.3 z m 85.4,0.1 -0.4,0 0.1,-0.4 0.3,0.3 z m -84.5,-0.1 -0.4,0 0.1,-0.4 0.2,0 z m -10.1,-1.2 -0.4,0 0.9,-0.1 0,0.1 z m 9.9,0.1 -0.4,0 0.1,-0.2 0.2,-0.1 z m -2.1,-0.3 0.5,0.1 -0.1,0.2 -0.4,-0.2 z m -0.4,-0.2 0.1,0.2 -0.3,-0.2 0,-0.2 z m -1,-0.4 0.5,-0.2 -0.6,0.4 -0.6,0.2 z m 68.2,0.3 1.6,0.3 0,0.7 -1.9,-0.1 z m -23.2,0.4 -0.4,0.7 -0.7,-0.6 0.4,-1.3 z m -48.4,-0.9 -0.2,0 0.1,-0.3 0.3,0 z m 69,-0.3 0.9,0.2 0.2,2.3 -1.6,1 -2.1,0 -0.7,-1.5 1.2,-1.8 z m -6.5,0.4 -0.3,-0.1 0,-0.4 0.7,0.2 z m -5.9,-0.6 0.2,0.1 -0.2,0.1 -0.3,-0.2 z m 15.2,0.4 -0.5,-0.6 0.3,0 0.3,0.3 z m -70.1,-1.1 0,0.1 0.1,0.2 -0.7,0 z m 11.9,0.6 -1,-0.5 0.8,-0.1 0.4,0.2 z m 49.7,-0.8 -0.1,0.5 -0.6,0 0.5,-0.4 z m 7.8,0.3 -0.5,0 -0.2,-0.3 0.2,-0.1 z m -0.7,0 0.1,0.7 -1.1,-0.6 0.3,-0.7 z m -51.5,-0.8 -0.1,0.7 -1,-0.4 0.6,-0.4 z m 3.1,-0.4 -0.5,0.6 -0.4,-0.1 0,-0.8 z m 0.3,-0.1 -0.4,-0.2 0.2,-0.5 0.2,0.2 z m -69,-0.6 0.1,0.1 -0.4,-0.1 0,-0.2 z m 65.8,0.1 0.1,-0.5 0.2,0.1 -0.1,0.3 z m 21.3,-0.9 0.2,0.4 -0.3,0.1 -0.1,-0.5 z m 23.2,-0.1 0,0.5 -0.8,1.1 -1.1,-0.1 z m -109.4,-0.7 0.3,-0.2 -0.3,0.7 -0.5,-0.2 z m 103.1,0.5 0.4,0.1 0.1,0.2 -0.8,-0.2 z m -16.2,0.2 -0.3,0.5 -0.3,-0.3 0.3,-0.3 z m 25.2,-0.1 0.7,0.1 -0.9,0.9 -0.5,-0.5 z m -46.4,-0.5 0.6,0.3 -0.5,0.3 -0.2,-0.2 z m 8.8,0 1,0 0,0.7 -0.8,-0.4 z m 1.9,-0.2 0.6,0.3 -0.7,0.7 0,-0.8 z m -82.7,0.1 -0.5,0.2 -0.2,-0.2 0.2,-0.2 z m 116.6,-0.3 -1.1,0.7 -0.6,-0.1 1.1,-0.8 z m -3.3,-0.5 0.3,0.7 -2.3,-0.2 1,-0.4 z m -5.4,0.2 -0.1,0.1 -0.5,-0.2 0.3,-0.1 z m -17.8,-0.2 0.1,-0.2 0.5,0.2 -0.1,0.3 z m -10.6,-0.3 -0.2,0 -0.1,-0.1 0.3,0 z m 19.8,-0.7 0.8,0 -0.4,0.5 -1.1,-0.5 z m -47.2,-0.7 -0.9,0.1 -0.3,-0.3 0.8,0.2 z m -9.2,-0.8 0.6,0 -0.9,0.2 -0.3,-0.2 z m -0.8,0 -0.7,0 -0.1,-0.1 0.1,-0.1 z m -21.5,-0.2 -0.3,0 -0.2,0.2 0.3,-0.4 z m 52.5,-0.3 0.4,0 0.5,0.8 -0.8,-0.3 z m 52.7,-2.6 0.7,-0.1 -0.4,0.5 -0.5,-0.2 z m 0.8,-0.4 -0.5,0 0.2,-0.4 0.3,0 z m -61,-6.4 -1.3,1.7 -2.3,-2.1 -0.2,-1.1 2.7,-0.1 z m 0.4,-11.5 0.7,-1.4 2.5,1.4 0.7,1.2 -2.6,0.5 z m 27,-5.3 1.2,1.2 -0.8,0.5 -2.1,-0.8 z m -28.2,0.9 1.1,1.1 -1.5,-0.1 -1.6,-2.3 z m 37.2,91.2 -0.2,0 -0.5,0 0.2,-0.2 z m -4.1,-2.7 0.2,0.2 -0.7,0 0.1,-0.3 z m 10.5,6.8 0.6,0.1 0.2,1.1 -2.7,-0.8 z m -2,0.2 -0.1,0.2 -0.3,-0.1 0.2,-0.2 z m -1.4,-0.8 0.5,0.2 -0.4,0.3 -0.2,-0.3 z m 14.7,5 -0.3,0.1 0.1,-0.2 0.5,0 z m -36.9,-101.2 4.6,0.2 -0.5,1.1 -4.8,-0.1 z m 68.6,96.9 -2.3,1.3 -1,-1.4 1.8,-2.4 0.3,1.8 z m -4.3,-3 0.1,1.9 -1.1,1.2 -1.3,-1.1 2.2,-0.2 z m -134.6,-14.3 -0.4,-0.5 1.4,-0.3 0.2,1.5 z m -1.3,-3.2 2.6,0.1 -0.7,2.3 -1.6,-0.5 z m 102.4,-5 -0.9,0.4 1.4,-2 0.4,0.6 z m -29,-63.2 2.3,1.8 -0.2,2.4 -2.9,-0.2 -2.9,-1.1 0.8,-1.8 z m -28.2,-10.5 -3.3,-0.2 -3.7,0.4 -0.3,-0.5 5.4,-1.5 1.7,0.7 z m 25.9,-0.7 2,0.6 -0.1,1 -3.8,1.4 -1.7,-1.1 -1.2,-1.9 0.5,-1.4 3.8,0.9 z m 55,101.8 -0.6,-0.2 0.1,-0.8 -0.5,-0.1 -0.3,-0.2 0,-3.2 -2.7,-0.9 -1.5,1.8 -0.5,2 -2.3,2 -6.2,0.1 2.3,-1 0.7,-1.5 5,-2.3 2.9,-3 5.4,-2.4 2.4,0 1.4,0.8 -0.2,1.1 -2.1,1.1 -2.1,-0.3 1.7,1.1 2.2,-0.5 -1.2,1.6 2,2.8 3.1,1 1,-0.6 1.8,1.3 -4,1.5 -1.5,0 -3.3,2.9 -1.2,-1.5 0.4,-1.1 2.2,-1.4 0.6,-1.8 -2.6,1.7 z m -12.4,-1 0.3,-0.2 -0.1,0.4 -0.1,0.2 -0.8,0 0.5,-0.3 -0.2,0.1 0.2,-0.3 0.3,-0.1 z m -96.9,-9.5 -0.8,-0.5 0.6,0.1 0.2,0.4 0,0 z m 7.2,-80.5 -0.7,-1.4 -0.9,1.1 -2.1,-0.1 -0.8,-1.2 2.5,-0.8 5.2,-3.7 4.6,-0.8 1.9,1 -1.6,0.5 0.7,2 -2.3,0.7 -0.7,1.7 -2.2,2.3 -1.5,-0.4 3.3,-2 -0.1,-2.6 -1.5,0.2 -1.1,2.5 z m 127.6,85 1.8,-1 0.5,1.4 -0.6,1.8 -2.4,-0.3 0.8,-1.2 -2.2,0.2 -1.5,1.1 0.1,-2 -6.7,0.3 -0.5,-0.8 1.4,-1.6 3.8,-6.9 2.1,0.9 -2.1,2.3 2.4,0.3 -0.4,1.4 3,-0.9 1.2,1.2 -0.8,1.7 1.6,0.3 z m -60.8,-43.2 -3,0.3 1.8,-1.5 -0.4,-1.6 0.9,-3.7 0.9,-0.5 1.3,2.2 0.4,-0.8 4.3,2.3 1.6,1.6 2.5,1.3 -1.5,1.1 -4.9,-2 -0.2,1 -3.1,2 z m -23.8,-20 2.2,1.3 2,2.1 1.2,0.1 -2.5,1.3 -1.8,-0.3 -4.1,-1.6 2.3,-1.1 z m -11.4,-3 4.7,2.2 1.2,1.1 -2.9,-0.1 -0.8,1.5 1.5,-0.3 0.3,1.4 -2.9,0.9 -5.8,-1.3 -0.1,-1.1 -1.6,1.6 -3.1,1 -8.2,0.9 -0.9,-2.5 -4.4,-0.3 -2.8,-2.4 0.9,-0.4 5.4,-0.7 5.1,0.2 -1.3,-0.8 -3.5,-0.8 -3.9,0.6 -3,-0.2 -1.5,-1.5 4.4,-1.2 0.5,-0.6 -4.5,0.6 0.2,-1 -1.9,0.1 0,-1 1.8,-1.1 -0.9,-0.8 2.4,-1.7 5.3,-1.8 1.2,0.9 0.4,2 1.4,-1.5 3.4,1.1 -0.8,1.5 2,-1.1 1.6,0.4 -1.8,-1.9 1.2,0.1 2.8,1.5 1.7,3.4 0.9,-1 -1,-0.8 -0.6,-2.3 0.2,-2.9 1.6,1.3 1.3,-0.1 2.1,1.6 0.2,1.2 1.8,3.2 -0.5,1.8 z m 49.5,-10.5 3.6,2.1 -0.1,1 -7.1,-0.1 -1.5,-1.6 -0.1,-1.7 z m -35.2,6.4 -3.1,0.9 -1.2,1.4 -3.6,-3.3 -2.3,-0.5 -1.8,-1.8 1.6,-1 1.2,1.4 1.7,-0.1 0.4,-1.4 -2.7,-1.4 1,-0.9 5.6,-1.3 0.8,-1.5 -0.5,2.1 1.5,0.3 0.2,1.7 -2.3,1.3 2.1,0.3 0.8,-0.8 1,2.7 z m -48,-9.7 2.7,1 4,0 2.3,0.7 3,2.3 -7.4,3.1 -1.9,1.7 -0.9,2.4 -4.7,1.4 -1.9,-2.1 -3.5,-1 2,-4 2.1,-2.6 -1.9,-2.2 z m 40.7,-1.8 -0.8,-1.6 1.8,-0.9 -5.4,0.6 -1.4,-1 2.2,-0.9 0.7,-1.9 3.9,2.1 -2.6,-2.5 0.4,-0.7 6.3,1 0.5,4 -1.2,1.8 z m -18.6,-3.4 1.4,-0.8 -2.1,-0.8 3.1,-2.3 0.5,3.3 2.8,0.6 0.9,-0.7 2.1,0.7 0,1.3 3.7,1.5 -2,0.5 -2,-1.2 -0.7,1.1 -4.6,0.6 -0.8,-0.6 -5.4,2.2 -3.9,0.2 -1.4,-1 3.1,-1.1 2,0 1.6,-1 -5.8,0.7 -0.2,-1.2 -1.7,1.6 -4.9,-0.9 3.1,-4.5 1.9,-0.7 0,-1 0.9,0.2 0.9,2.1 1.8,-0.3 3,1.7 0.4,1.2 4.5,0.2 0.1,-0.9 z m 58.7,3.9 -1.5,1 -3.1,0.6 -3.3,-0.4 -7.9,0.4 -2.3,-0.8 -2.1,0.5 -4,-0.9 -0.9,-1.7 0.7,-2.5 -1.9,-2 -1.8,0.4 -3.4,-0.5 -1.9,-2.4 2,-0.3 4,0.6 1.2,1.2 3.1,-0.3 4,2 -1.6,0.5 3.8,2.1 4.2,0 4.4,-1.2 5,0.2 2.8,1.2 0,1.2 -1.5,0.5 z m -59.1,-10.4 -3.6,0.8 -2.1,-0.9 -0.7,-1.2 -1.1,0.5 -1.8,-1.1 1.5,-0.5 2.1,0.8 4.8,-0.9 2,0.6 z m 12.5,-7.8 2.5,1.5 1.5,-0.3 4,2.1 -0.6,0.6 1.6,2.3 -4.2,0.2 0.3,-1.5 -3.3,0 0.1,-0.7 -3.3,0.4 -1.1,-0.9 2.8,0 -1,-2.1 -2.8,-0.1 0.3,-1.4 z m 24.9,-5.3 2.7,0.2 0.5,1.5 1.1,-1.1 1.5,0.1 1.4,2.2 -0.4,1.5 3.1,0 1.2,1.2 -3,1 -4.8,3.8 -5.8,-0.2 -4.3,-3.2 2,-0.9 2.6,0.1 -1.4,-1.3 -2.6,0.9 -3.5,-0.7 -1.8,-3.2 3.6,0.4 -3.3,-1 1,-1.3 1.6,-0.2 -0.6,-0.8 1.3,-1.2 3.2,-0.1 -2.4,-0.8 2.2,-0.5 2.8,1 z m -64.2,100.3 0.2,0.1 -0.1,0.1 -0.1,-0.2 0,0 z",ST:"m 348.93,217.59 -0.3,-0.3 0.4,-0.3 0.2,0.3 z",CV:"m 290.83,188.39 0.5,0.4 0,0.4 -0.5,-0.2 z",DM:"m 218.73,187.89 0.3,0.3 -0.2,0.4 -0.2,-0.5 z",NL:"m 346.93,104.89 -0.7,0.2 0.1,-0.2 0.8,-0.1 z m -131.3,78.2 -0.1,0 0,-0.1 z m 127.1,-72.9 0.8,0 0.9,0 -0.8,0.4 z m 7.4,-4.8 -0.4,2.6 -1.2,1 -0.7,2.7 -1.9,-1.8 -1.5,0.3 -0.8,-0.6 2.4,-3.5 2.6,-1.6 z",JM:"m 188.03,182.19 2.4,1.1 -2,0.4 -2.2,-1.1 z",WS:"m 6.43,243.59 0.1,0.6 -0.5,0 -0.5,-0.6 z",OM:"m 444.03,168.69 -0.1,0.1 0,-0.2 0.3,0 z m -0.4,-1.7 0.6,-0.6 -0.2,1.5 -0.2,-0.1 z m -7.8,14.2 5.7,-2 1.3,-3.9 -0.9,-1.5 1.2,-4.4 1.1,-0.2 1.5,2.1 3.1,0.8 2,2.7 -4.1,5 0.3,1.3 -2.2,0.9 -0.6,1.3 -1.8,0.2 -0.8,1.6 -3.7,0.7 -0.7,-1.3 z",VC:"m 219.13,192.79 -0.1,-0.3 0.2,-0.3 0,0.3 z", -TR:"m 386.03,136.89 -0.4,0.2 -0.2,-0.1 0.5,-0.3 z m 3.9,-4.1 2.1,1.7 -3,0.6 -0.7,0.8 -2.2,-0.3 1.2,-1.5 -0.6,-0.7 1.4,-0.8 z m 32.2,5.3 -1.6,0.6 0.5,3.1 1,1.8 -3.9,-0.4 -0.7,0.5 -0.3,-0.5 -4.7,1.3 -2.9,-0.3 -3.1,0.1 -1.4,2 0.2,-2.2 -1.3,0.8 -1.5,-0.4 -3.3,1.6 -1.5,-1.2 -2.6,-0.7 -0.5,1.4 -1.4,0.3 -2.6,-2.1 -2.2,-0.6 0.1,-1.4 -1.9,-0.7 1.6,-1.3 -1.2,-0.8 -0.1,-0.2 -0.5,-0.3 1.2,-2.1 4.6,-0.1 0.1,-1.8 3.9,0.3 4,-2.1 5,0.6 3,1.6 3.7,-0.1 1.3,0.4 2.7,-1.3 2.4,-0.2 1.2,1.1 0.5,2.2 2.1,1 z",BD:"m 512.93,177.09 -1.5,-3.5 -2.5,2 -2.1,-0.6 -1,-3 0.4,-1.4 -1.4,-0.7 1.7,-1 -1.6,-1.5 0.7,-1.2 2.7,1 1,1.7 3.2,-0.1 0.8,0.5 -2.5,2.7 0.8,1.3 1.1,-1.5 0.8,3.5 0.1,1.3 z",LC:"m 219.63,191.49 -0.3,-0.3 0.3,-0.4 0.1,0.3 z",NR:"m 655.93,218.79 0,0 -0.1,-0.1 0.1,0 z",NO:"m 376.13,55.29 -0.4,0.2 -0.4,-0.2 0.4,-0.4 z m -1.5,0.3 -0.5,-0.2 -0.4,-0.6 1.2,0.5 z m 5.1,-1.2 0.6,0.4 -1.1,-0.1 0.1,-0.3 z m 1.6,-0.8 0.3,0.5 -1.1,0.6 -0.5,-0.4 z m 0.6,-0.4 0.6,0.4 -0.8,0.3 -0.2,-0.6 z m -0.8,-0.4 -0.6,0.9 -1.8,0.3 0.7,-0.8 z m 1.3,-0.6 0,0.3 -0.3,-0.1 0.1,-0.3 z m 3,-0.5 0.6,0.5 -0.8,0.3 -0.5,-0.4 z m -8,-28.6 1.5,1.4 -2.3,0.2 -1.7,-1.2 z m 10.1,-0.2 -0.6,-0.3 0.3,-0.4 0.5,0.4 z m 4.4,-1.2 -1.8,0.4 -0.5,-0.1 1.1,-0.5 z m -16.9,-0.9 1.2,0.3 -0.9,0.3 -0.6,-0.2 z m -0.1,-1 -0.9,0.1 -0.1,-0.2 0.1,-0.1 z m 25.8,-3.7 -1.6,0.4 -2.3,0.2 -0.2,-0.2 z m -17.7,-0.8 -0.5,0.1 0.1,-0.3 0,-0.1 z m -0.4,-0.5 0.2,0.1 -0.2,0.1 -0.4,-0.1 z m -8.1,0.1 -0.2,-0.1 0.2,-0.1 0.3,0.1 z m 2.6,-0.9 -0.4,0.1 -0.2,-0.1 0.4,-0.1 z m -1,0.2 0,-0.3 -0.5,-0.3 0.8,0.2 z m -4.7,43 1.2,0 2.3,-1.3 0.6,0.6 0.2,-0.1 0.1,0 0.1,-0.2 0.3,-0.3 -0.2,-0.2 0.4,-0.1 0.1,0 1.1,-1 0.2,0 0,0.1 0.1,0.1 0,-0.1 2.3,0.3 3.2,-2 2.5,-0.3 -1.6,1.3 0.1,1.4 3,-3 -0.4,2 2.1,-2.5 4.6,1.3 2.1,1.5 -1.8,0.8 -2.7,-0.4 4,1.3 -1.7,1.5 -1.9,1.1 0.8,-1.5 -2.8,-2 -3.6,1.3 -0.8,2.7 -1.4,1.1 -1.8,-0.9 -2.9,0.4 -1.4,-1.9 -2,0.8 -1.3,2.3 -3.5,-0.6 -0.5,1.8 -1.1,-0.4 -2.2,2.2 0.5,1.2 -3.6,3 0,2.5 -1.7,2.3 0.6,1.8 -2.4,0.2 -1.4,2 0.7,3 -0.3,1.6 1.3,1.1 -1.2,1.1 0.5,2.5 -1.2,0.7 -0.8,2.5 -1.9,-0.7 -3.7,2.8 -1.8,0.6 -2,-0.2 -2.5,-2.9 0.8,-2.6 -1.9,-2.9 1.3,-1.5 -1,-0.8 1.5,-1.5 2.6,-1.1 -0.1,-0.6 3.6,-1.3 -1.9,-0.2 1.9,-1.2 2.5,1.5 2.6,-1.5 -2.9,0.9 -0.7,-0.8 3.2,-3.2 1.5,-0.8 0.3,-1.2 2.7,-4.7 3.8,-2.7 -1.5,-0.2 3.2,-1.3 -0.7,-0.6 2.2,-1.1 -0.8,-1.1 1,-1.6 1.8,-0.1 1.4,-1 -0.1,-1 0.9,1 z m 22.4,-0.9 -0.3,-0.3 -0.3,0.5 0.7,-0.2 z m -9.5,-24.6 0,-0.2 1,-0.7 -1,0.9 0,0 z m -20.5,28.4 2,-0.6 1.3,-1.5 0.9,2.1 -1.8,1.3 -4.3,0.8 0.2,-0.6 3.4,-0.7 z m 17,-31.5 -1.3,-0.8 -3.2,0.1 1.4,-2 -1.4,-0.7 3.9,-0.7 1.3,1.6 1.5,0.2 z m -14.5,-10.2 1.6,-1.6 4.5,2.7 0.1,1.2 5,1.3 -4.9,1.6 -1.5,4.1 -0.9,0.1 -1.7,3.6 -4.7,-2.5 -0.9,-1.4 5.5,-1.4 -5.9,0.4 -0.2,-1.2 2.8,-0.2 1.4,-1 -1.9,-1.6 -0.1,1.4 -3.3,0.8 -1.9,-1.7 0.3,1.7 -2.1,-1 -1.2,-1.9 1.7,-0.3 -1.2,-2.5 0.6,-0.6 2.1,0.1 3.2,-0.9 0.2,1.4 1.2,-1.1 1.5,0.9 2,2.9 z m 15.5,-2.7 5.8,0.6 0.7,1.4 -2.3,1.5 -3.7,1.4 -2.1,-0.2 -0.1,-0.8 -4,0.2 -2.2,-1.1 4.2,-0.4 0.1,-0.5 -6,0.5 0.1,-1.4 -1.9,-0.4 0.6,-0.7 2.3,0.8 2,-1.4 1,0.9 1.8,-0.3 1,1.2 0.7,-2.2 0.5,1.5 z m 2.5,16 -0.2,0.2 0.1,-0.2 0.1,0 0,0 z",KN:"m 216.43,184.69 -0.5,-0.3 0.1,-0.1 0.2,0.2 z",BH:"m 432.93,166.69 0.3,0.1 -0.1,0.8 -0.2,-0.4 z",TO:"m 1.43,258.89 -0.1,0.1 -0.7,-0.3 0.4,-0.1 z",FI:"m 375.83,86.59 -0.1,0.3 -0.6,0.1 0.3,-0.2 z m -0.8,0.1 0.1,-0.1 -0.2,0.4 -0.3,-0.2 z m 0.3,-0.5 -0.6,0.5 -0.9,-0.5 0.9,-0.3 z m 2.3,0.1 0,0.2 0.7,-0.1 -0.8,0.3 z m 1.6,0.7 0.1,-0.6 0.7,0.2 -0.6,0.7 z m -2.2,-1.7 0.1,0.3 -0.1,0.3 0,-0.4 z m 0,-8.1 0.2,0.3 -0.3,0.2 -0.2,-0.3 z m 6.9,-5.4 -0.5,0.3 -0.1,-0.2 0.2,-0.1 z m -5.9,13.9 -0.3,-0.1 -0.8,-4.4 0.5,-3.7 1.7,-0.3 4.6,-4.7 0.9,0.1 0.2,-2.2 -2.3,-0.9 -1,-2 0.7,-1.2 -1.1,-2.2 0.4,-1.6 -5.7,-3.5 2,-0.8 1.4,1.9 2.9,-0.4 1.8,0.9 1.4,-1.1 0.8,-2.7 3.6,-1.3 2.8,2 -0.8,1.5 -1,1.7 0.5,1 2.5,1.8 -1.7,2.7 1.5,2.3 -0.6,3.6 1.9,3 -1.1,0.8 3,2.5 -0.6,1.2 -3.9,3.8 -2.7,2 -7.7,1.6 -2.6,-0.9 0.1,-0.1 -0.3,0 0,0 -0.8,-0.2 0.2,0.1 -0.1,0.2 -0.3,-0.3 z",ID:"m 593.33,228.59 1,0 -1.1,2.3 -0.1,-1.6 -1.9,-1.3 z m -51.2,-5.5 -1.9,0.6 -1.4,-1.8 0.5,-1.1 1.1,2.5 z m 19.2,10.6 2.9,-0.2 0,0.7 -3.9,0.9 -2.2,-0.5 1,-1.2 z m 20.3,-20.3 -0.2,1.9 1.6,2 -1.7,-0.4 -0.5,3.4 -1.2,-2 1.1,-0.1 -0.5,-2.7 z m -7.9,22.2 0.5,0.3 0.3,-0.6 0.3,-0.1 0.6,-0.3 0.1,0.4 0.2,0.6 -1.1,1.2 -1.9,0.5 z m -11.7,-25.7 -0.4,0.3 0,-0.4 z m 44.2,12.8 0,8.2 0,4.2 -1.8,-1.9 -4.6,0.6 0.7,-1.5 1.6,-0.6 -2,-3.9 -3.5,-1.5 -1.5,-0.1 -3,-1.8 -1.4,1.2 -1.3,-2.7 3.4,-0.6 -2.5,-0.1 -3.5,-1.9 -1.1,-2.3 1.9,1.3 2.8,-0.8 2.4,0.6 0.3,2.8 1.6,2.2 2.5,-1.5 -0.2,-1.7 3.2,-0.3 3.9,1.7 z m -39.3,14.7 -2.9,-1.4 1.4,-0.4 1,-2 4,0.6 1.3,-0.8 5.4,-0.4 -3.3,1.1 -0.5,-0.5 -3.9,1.1 -3.5,-0.1 1.7,2.2 z m -23.2,-4.7 -3.5,-0.8 -2,-1.2 1.1,-1.7 4.4,0.7 0.5,0.9 3.6,0.4 0.9,-1 2.2,0.9 6,-0.1 0,3.8 -3.8,-1 -1.1,0.3 -3.7,-0.5 -2.6,-0.9 z m 37.9,-9.1 -2.7,1.5 -1.4,-0.9 -0.1,-1.9 0.3,1.4 1.9,0.5 1.7,-0.9 3,-0.2 2,0.6 0.4,1.4 z m -10.2,5 -1.6,-0.4 1.8,-1.9 -2.7,0.3 0.2,-1.1 -2.3,-1.5 -0.2,4.3 -1.8,-0.3 0.5,-2 -1.6,-3.2 1.1,-1.3 1.3,-5.1 1.7,-1.2 1.3,0.5 4.4,0.5 2.3,-1.8 -1.2,2.5 -8,0.1 -0.6,1.2 1.3,2.2 1.9,-1.7 3.3,0.3 -0.2,2.1 -1.1,-1.2 -2.2,1.5 1.8,2.4 1,2.3 z m -10,-18.7 -0.4,1.6 1.4,1.9 -0.5,0.8 2.2,1.6 -2.4,0.6 -0.6,2.4 -1.6,1.7 0,1.4 -1.2,2.7 -2.6,1.1 -0.7,-1.5 -2.3,-0.4 -2.4,0.7 -0.1,-1.5 -2.8,0.5 -0.6,-3.6 -0.9,0.3 -1.2,-4 1.5,-2.4 1.7,2.3 4.7,-1.3 2.9,0.2 1.8,-3 0.8,-2.6 z m -37,-0.1 2.9,1.9 2.3,2.5 1.3,-0.5 4,3.6 -0.7,1.9 1.9,0.5 0.7,2.6 1.7,0 0.8,1.7 -0.4,4.5 -2.1,0.5 -6,-5.1 -1.5,-2 -1,-2.6 -1.8,-2 -1.8,0.5 1.6,3.3 -0.7,-0.1 -1.1,-3.2 1.5,-1.2 -1.1,-2.5 -2.3,-0.2 1.2,2 -0.5,0.8 -1,-2.9 -1.4,-0.5 1.7,0.3 0.5,-1.3 -4.1,-3.7 -0.3,-1.9 2.2,1.1 2,0 z",MU:"m 446.83,256.49 -0.1,0.8 -0.6,0 0.3,-0.9 z",SE:"m 371.43,89.89 0,0 0.1,-0.3 0.2,-0.1 z m 7.4,-19.2 0,-0.4 0.3,0.2 0,0.2 z m 3.7,-1.2 -4.4,0.9 -1.3,2.7 0.8,0.7 -1.5,1.7 -3.4,2.1 -2.3,2.1 -1.4,3.2 0.4,1.9 1.2,0.4 2.2,2.5 -1.2,1.7 -3.3,1.5 -0.6,2 0.6,2.7 0.7,-1.2 1.9,0.2 1.3,-1.8 -0.1,1.9 -3.1,0 -1.2,2.7 -3.4,0.3 -1,2 -2.3,0 -1.2,-4.1 -1.5,-2.9 0.2,0 0.2,-0.3 -0.5,0.1 0,0.2 -0.5,-1.1 0.4,-1.8 0.8,-2.5 1.2,-0.7 -0.5,-2.5 1.2,-1.1 -1.3,-1.1 0.3,-1.6 -0.7,-3 1.4,-2 2.4,-0.2 -0.6,-1.8 1.7,-2.3 0,-2.5 3.6,-3 -0.5,-1.2 2.2,-2.2 1.1,0.4 0.5,-1.8 3.5,0.6 1.3,-2.3 5.7,3.5 -0.4,1.6 1.1,2.2 -0.7,1.2 z m -23.7,22.4 -0.6,0.2 0.1,0.3 0.6,-0.2 z",TT:"m 219.73,197.09 -0.2,1.3 -0.9,-0.3 -0.4,-0.8 z",MY:"m 528.33,207.39 0,0.4 -0.2,-0.1 0,-0.3 z m 33.7,2.5 -0.4,-0.1 0.1,0 -0.3,0.1 -3.3,-0.5 -0.8,2.6 -1.8,3 -2.9,-0.2 -4.7,1.3 -1.7,-2.3 2.6,1 0.6,-1.6 0.2,0 0,-0.3 0,-0.2 3,-0.9 1.9,-2.8 1.2,1.1 0.7,-1.6 0.1,-0.1 0,0.2 0.6,1 -0.4,-1.2 1.9,-2.3 2.2,-1 3.8,2.8 -2.1,0.6 0.8,1 -1.4,0.3 z m -34,-4.4 1.8,0.4 0.1,1.2 1.8,-1.2 2.6,2.7 0,3.6 1.6,3 -1.7,-0.4 -4,-2.5 -1.1,-1.9 z",PA:"m 187.13,203.99 -1.2,-2.6 -2,-0.7 -1.7,1.7 0.9,1.2 -3.4,0.4 0.1,-1.8 -2.2,0.3 -0.3,-0.6 0,-0.1 0,0 0,0 0,0 0.9,-2.3 0.9,1.2 2,0.3 2.7,-1.6 2.3,0.4 2,1.4 0.4,1.4 z",PW:"m 593.83,203.79 0,-0.2 0.1,-0.3 0.2,0 z",TV:"m 679.43,233.99 0,0 0,-0.1 0,0.1 z",MH:"m 663.83,204.19 0.3,0.1 0.1,0 -0.1,0 z",CL:"m 195.93,330.49 2.3,1.1 -1.4,0.9 -1.8,-1.9 z m -3.3,-14 1,2.1 0.1,3.2 -2.2,-0.8 1.3,-0.9 -1.3,-1 0.1,-1.9 z m 2.9,-12.8 -0.4,2.3 -2,0.7 1.1,-1.6 0.3,-2.5 z m 9.4,24.9 0,5.6 -0.2,0 0.2,0.1 -0.1,0.2 -2.5,-0.3 -1.1,1.1 -1.4,-2.5 1.6,-1.8 0.2,2 2.6,0.3 -2.1,-0.9 -0.6,-2.8 1.9,-1.5 z m -3.4,-75.6 0.8,-0.1 0.9,-1.5 1,2.8 1,1 -0.6,2 1.1,1.7 0.6,3 1.3,0 -0.3,2.4 -2.3,1.6 0.5,4.3 -1,0.5 -1.6,2.6 -1.8,6.6 1.6,3.8 -1.2,3.9 0,1.9 -1.2,1 -0.3,2.6 0.6,2.2 -1,0.5 -1.1,4.1 0.4,3.1 -0.8,2.1 1,2.1 -0.8,2 1.4,1.3 -1.1,4.6 -1.2,1.7 0.5,1 -2.5,3 0.8,3 1.6,-0.3 -0.2,2.3 1,1.1 3.7,0.1 2.9,0.9 -1.3,-0.4 -3,1.4 -0.6,2.7 -4.2,-1.4 0.5,-1.1 -2.2,-0.3 -0.6,-1.5 1.4,0.3 -0.3,-2.5 -2.4,-1.2 1.6,-0.9 -0.3,-4.5 -0.6,-2.2 0.9,-2.3 -2.2,-0.3 1.8,-2.9 0.9,1.4 1.5,-1.7 -0.3,-1.1 -2,-0.1 1.1,-2.4 0.5,2.3 2.1,-6.3 -0.9,-1.3 -1.5,0.6 -0.4,-1.8 1.3,-3.3 -0.8,-3.9 0.9,-1.3 1.1,-3.4 0.8,-1 1.6,-5.9 -0.5,-4.5 0.7,-0.6 -0.5,-2.1 1.2,-2.7 0.9,-4.6 -0.3,-4.6 1,-3.3 z m 6.1,81.7 1.3,0.8 -4,-0.3 3,2 -1.4,0 -2,-1.9 -1.9,0.6 -0.2,-1 4.7,-0.3 0.3,0 z",TH:"m 532.13,194.49 0.1,0.1 0.2,0.3 -0.3,0 z m -0.4,11.4 -1.8,1.2 -0.1,-1.2 -1.8,-0.4 -1.6,-2.3 -2.1,-1.7 1,-3.5 1.7,-2.8 -0.9,-3.7 -1.7,-2.1 1.1,-2.6 -2.7,-4.6 1.2,-2.6 0.9,0.3 3,-1.3 0.7,1.6 1.5,0 -0.2,4 1.8,-1.5 1,0.8 1.5,-1.2 1.2,0.2 1.6,1.9 -0.2,1.6 1.7,1.6 -0.8,2.7 -3,-0.2 -2.5,1.7 1.1,3.7 -2.1,-2 -1.6,0.2 0,-1.7 -1.8,0.1 0,2.4 -1.4,3 -0.1,2.7 1.2,-0.2 1.1,4.1 2.1,0.6 z",GD:"m 218.33,194.79 -0.2,0 0,-0.3 0.2,-0.1 z",EE:"m 379.63,90.99 0.8,0.6 -1.6,0.6 -0.7,-1 z m 1.4,-0.1 -0.3,0.2 -0.3,-0.2 0.2,-0.2 z m -0.3,-1.2 0.3,0 0,0.2 -0.4,0 z m -0.9,0.1 0.6,0.4 -1,0.5 -0.9,-0.7 z m 9.5,0 -1.4,0.6 1.3,2.2 -0.2,0.5 -0.4,0.8 -1.6,0 -2.3,-1.5 -1.9,0.6 -1.5,-2 -0.1,-1.8 4.8,-1.2 3.9,0.4 0.2,0.2 0.1,0.2 -0.1,0 -0.2,0.1 0,0 0.1,0 0,0 0.1,0 -0.1,0 -0.2,0 -0.2,0.4 z",AG:"m 218.03,184.89 0.2,0.2 -0.3,0 -0.1,-0.2 z",TW:"m 565.23,172.19 1,0 1.9,-3.1 1.6,-0.1 -1,3.9 -1.1,2.5 z",BB:"m 222.33,192.79 -0.2,-0.1 0.1,-0.4 0.3,0.3 z",IT:"m 359.93,141.89 6.3,-0.8 -0.8,1.2 -0.2,2.4 -1.2,-0.3 z m -5.6,-7.3 0.8,1.5 -0.5,3.1 -2.2,0.4 0.1,-3 -0.5,-1.3 z m -3.7,-6 -1.7,-3.1 0.8,-1.9 2,-0.8 1.5,0.4 2.2,-0.7 0.9,-1.2 3.3,-0.5 0.4,0.9 2.5,0.4 -0.6,0.6 0.6,1.7 -0.9,-0.5 -2.1,1.1 0.5,2.6 2.3,1.6 0.9,2.2 2.1,1.5 1.7,0 -0.2,1 4,1.9 0.9,1.2 -2.8,-0.9 -1,1.9 1.2,0.6 -2.1,3.3 0.3,-1.9 -1.1,-2.9 -3.7,-2.6 -1.2,0 -3.6,-3 -2.1,-3.4 -2.5,-1 z m 9.5,4.4 0,0 0,0 0,0 z m 0,-4.6 0.1,-0.2 -0.1,0 -0.1,0.1 z",MT:"m 363.63,146.09 0.5,0.2 0,0.3 -0.3,-0.1 z",VU:"m 656.83,245.19 1.4,1.2 0.7,3.8 -1.7,-0.8 -1.6,-2.6 z",SG:"m 535.13,214.99 0.3,0.2 -0.3,0.2 -0.4,-0.1 z",CY:"m 400.93,148.29 0,0 0,0 z m 0.5,-0.1 0.2,0.2 -0.4,0 -0.2,-0.2 0.2,0 0.2,0 z m -0.5,0.1 0,0 0.1,0.1 0,0 z m -0.1,0.1 -0.2,0.3 -1.1,0.4 -0.4,-0.1 -0.1,0.1 -0.9,-0.9 0.6,-0.3 0.1,0.1 0,-0.1 0.1,0 0,0 0.1,0 0,0 0,0 0,0 1.3,0.1 0.5,0.3 z",LK:"m 489.33,199.29 1.6,0.6 2,3.4 -0.1,1.9 -2.2,1.3 -1,-0.4 -0.6,-3.7 0.8,-2.7 z",KM:"m 419.53,240.59 -0.5,-0.4 0.1,-0.7 0.3,0 z",FJ:"m 675.43,250.99 2.2,0.1 0,-1 3.1,-1.2 -3.2,2.4 0.9,0.5 -0.4,2.4 -0.7,-1.3 -1.5,-0.3 z",RU:"m 621.23,124.99 -2.1,0.7 -1.5,1.4 -2.9,1.4 1.3,-1.6 4.8,-2.3 z m -189,-65.8 -2.9,0.8 -0.5,-1.8 1.8,-0.8 1.7,0.8 z m 17.7,-4.7 2.2,1.5 -1.8,0.7 -1.9,-1.3 z m 22.6,-10.7 1,0.4 -3.4,0.7 0.1,-1.3 z m 80.8,-3.8 -1.1,1 -2.5,-0.9 1,-0.8 z m -107.6,-23.8 -2.8,0.4 0.6,-1 4.7,-0.6 0.7,2.5 z m -4.8,-1.3 -0.5,1.2 -3.3,0.2 0.5,-1.1 2.8,0.6 z m 2.9,-2.7 4.8,0.2 -3.3,1.7 -2.1,0.2 -3.5,-0.8 z m 16.4,-0.5 1.4,1.2 -4.5,1.1 -1.1,-0.7 2.9,-0.6 z m -13.1,-2.3 1,1 -1.4,1.6 -3.5,-0.2 z m -34.3,120.1 -1.9,-1.7 -4.6,-2.5 1.8,-0.4 0.6,-2.6 2.8,-1.3 -2.1,-0.3 1.2,-1.8 1.8,0.1 -0.1,-2.3 0.8,-1.2 -1.8,-1.5 -3.4,-1.4 -3.4,0.2 -1.1,-2.2 -1.7,-0.1 0.5,-1.3 -1.2,-1.5 -3.9,0.6 -1,-2.3 2.8,-1.1 -1.8,-1 -1.7,-4.8 -5.2,-1.4 -1,-1.9 -0.6,-1.9 0.4,-0.8 0.2,-0.5 0.4,-1.3 -0.3,-1.5 0.3,-0.5 0.2,-0.3 0.2,-0.1 0,0 -0.1,0 0,0 0,0 0.1,0 0.2,-0.1 -0.1,-0.2 -0.2,-0.2 0.2,-0.9 3.3,-1 -3.9,-1.1 2.7,-2 3.9,-3.8 0.6,-1.2 -3,-2.5 1.1,-0.8 -1.9,-3 0.6,-3.6 -1.5,-2.3 1.7,-2.7 -2.5,-1.8 -0.5,-1 1,-1.7 1.9,-1.1 1.7,-1.5 2.3,-0.6 2.1,0.8 -2.1,0.6 7.5,1.3 9.8,5 0.6,1.5 -1.8,2.6 -2.1,0.9 -2.7,0.1 -8.5,-2 -2.4,-1.3 5.2,4.5 -0.9,1.1 0.9,1.6 1.5,-1 2.4,0 4.9,1.9 1.7,-0.8 -1.2,-2.5 2.9,-1.4 2.4,-2.3 3.1,2.9 0.6,-2.6 -1.3,-1.6 0.8,-3.5 -1.8,-1.2 5,0.5 1.5,2 -2.6,0.4 -0.8,1.3 1.7,1.4 3.7,-0.3 0.5,-2.1 1.5,-0.3 4.5,-2.5 4.4,-1.4 1,1.9 1.4,0.5 2.5,-1.6 2.5,0.4 3,-1.5 1.5,2.2 2.4,-2.6 -1.5,-1.6 1.2,-0.9 6.5,1 2.9,1.6 3,0.9 2,1.6 1.6,-2 -1.2,-0.1 -0.9,-1.8 -2.3,-0.3 1,-3.9 -1.7,0.1 0.9,-2.1 3,-1.9 0.9,-3.1 1.2,-0.7 3.8,-0.1 2.4,0.7 0.1,1.6 -2,2.6 1.6,1.5 -0.4,2.9 0.2,4.6 2.1,1.4 -1,2.6 -1.1,0.4 -1.9,3.1 -2.3,1 3.3,0.3 2.7,-1.8 2.4,-2.8 -0.6,-3.4 3.7,-1 1.8,1.6 -0.4,2.5 1.9,-1.6 -0.8,-2.1 -4.2,-1.3 -3.3,0.2 -0.5,-1.8 1.6,-2.7 -2.5,-3.2 0.9,-1.4 2.7,-1 -0.4,-2.9 1.8,-2.4 2.1,0.3 -2.3,2.7 0.4,1.8 -1,3 4.9,0.9 0.9,-0.4 -3.7,-1 -0.6,-1.3 1.8,-0.5 1.2,0.8 0.6,-1.7 2.4,-2.9 0.5,2.6 4.5,2.5 2.9,-0.1 -1.9,1.5 1.1,1 0.7,2.4 1.1,-0.5 -1.2,-2.7 0.9,-1.4 -2.8,-2.3 -2.8,-1 -0.7,-2.4 0.4,-1.4 12.5,-1.1 -0.5,-1.1 -2.8,-2.2 3.1,0.5 -0.5,-1.3 2.1,-0.2 4.1,-2.2 6.9,-1.1 -1.2,-0.7 3.2,-0.1 2.3,-0.9 -0.9,-1.5 1.6,-1.3 0.5,2.6 -1.1,0.8 1.2,1.1 2.6,-0.5 2,-2.1 3.8,-0.1 0.6,-2.2 4,-2.3 2.8,-0.2 2.2,0.6 -1.3,1.5 4.3,1.2 -2,1.5 2.8,-0.1 0.1,-0.8 6.2,0 2.6,0.5 0.2,1.6 1.4,0 0.6,2.5 -2.1,-1.1 2,2.3 -7,3.6 -3.6,2.6 -1.8,0.1 -1.5,1.5 2.6,0.1 6.1,-1.9 -2.5,-0.1 0.8,-1.1 4.5,1.2 1.5,-0.7 0.6,1.4 3.7,-0.8 5.9,0.5 -0.2,1.1 3.6,1.1 5.2,0.4 1.1,-1.3 -0.5,-1.2 2.5,-1.3 0.3,0.7 3.2,1.1 1.2,-0.5 4.6,2 -1,3.4 -2,-1.3 3.6,4.6 2.2,1.4 1.2,-0.5 1.9,-3.5 2.2,1.6 1.6,0.2 2.8,-0.9 2,0.3 3.3,-0.3 2.5,0.6 -1.6,-2.5 0.6,-1.2 3.9,-1 7.4,0.8 2.9,0.9 -2,0.4 0.5,1.3 2,-1.8 4.6,0.6 0.9,0.9 -2,0.7 4.7,1.4 1.4,1.5 2.8,0.1 4.3,-0.8 5,0.4 2.2,1.1 0.8,1.5 -0.8,1.2 2.7,1.5 5.6,-1.1 1.6,0.7 4,0.2 2.5,-1.8 2.3,0.5 -0.5,1 -2.1,-0.4 0.5,1.6 2.4,1.5 2.6,-0.9 -0.7,-3.6 9.4,0.9 3.5,0.8 7.3,2.9 0.3,0.7 6.5,2.9 1.6,3.7 0.8,-1.4 4.4,0 3.9,2.7 -1.6,1.6 -3.1,0.3 -0.9,2.6 0.8,0.9 -2.2,0.3 -2.6,-1.6 -2.2,-0.6 -0.1,-1.2 -2,-0.7 -3,0.3 -2.2,-2.1 0.8,1.8 -0.8,1.5 -4,1.5 -3.5,-0.6 3.1,2 0.5,-0.5 2.6,5 -1,1.3 -2,-0.8 -2.6,0.2 -6.2,2.7 -2.8,2.1 -2.7,1.2 -0.4,1.4 -2.2,-1.8 -4.4,0.8 -1.6,1.3 0.6,-1.8 -3.1,2 -2.2,-0.8 -0.9,1.6 1.2,1.7 1.6,0.1 -2.2,1.2 -0.8,-1.5 -2.1,2.5 2.6,1 -1.1,2.6 1.2,1.6 -2.4,0.1 -0.7,1.4 0.7,2 -4,1.8 -0.8,2.4 -1.9,1 -1.7,3.4 -3.8,3.5 -1,-0.1 2.9,-1.9 -1.2,-5 -1.1,-6.2 0.9,-4 2.8,-2.9 2.9,-1.7 1.7,-2 3.8,-3 0.1,-0.6 4,-2.7 0.2,-2.7 2.1,-0.4 -1.2,-0.9 -2.5,0.5 -0.6,2.1 -5.4,3.6 -0.7,-1 1.1,-3 -5.5,0.5 -4.9,4.1 -1.6,2.5 2.1,0.9 -3.5,-0.2 -3.8,1.1 -1.2,-1.8 -2.2,-0.8 -1.6,1.5 -9.3,-0.5 -2.5,0.6 -3.2,2.3 -0.8,1.5 -3.5,2.4 -2.1,2.4 -4.5,3.2 2.5,0.8 0.3,-1 2.7,-0.1 -1.5,2.6 1.1,1.2 1.6,-1.9 2,0 3.2,3 -1.9,6.7 0.2,2.4 -0.7,2.7 -1.8,1.7 -2.2,3.7 -4.3,4.4 -1.4,2.1 -3.8,1.9 -2.6,-1.5 -2.1,2.4 -0.1,-0.3 -0.2,-0.3 0.9,-0.7 0.5,-2.8 -0.6,-1.9 2,-0.9 0.7,1.7 0.9,-1.3 2,-2.8 0.5,-2.4 1.2,-1.1 -0.7,-1.7 -3.7,1.7 -2.7,0.1 -0.4,-1.6 -2.8,-2.7 -2.5,-0.3 -4.5,-8.8 -4.7,-1.5 -4.7,0.8 -1.5,1.3 1.4,1.7 -1.3,1.1 -1.8,3.3 0.1,0.9 -2.8,1.2 -2,-0.7 -2.5,-0.2 -2.1,-1 -2.4,1.7 -4.4,1.2 -4.2,-0.5 -1.2,-1.5 -5,-1.4 -3.1,0.9 -2.7,-1.2 -0.2,-1.8 -6.3,-2.1 -2.1,2.9 1,1.2 -1.9,2 -5.2,-0.7 -0.7,-1.4 -3.6,-0.7 -8.7,4.2 -0.6,0.1 -0.3,0.1 -1.4,-1.3 -2.6,0.1 -3.5,-3.6 -3.8,0.7 -1.4,-1.4 -1.4,1.2 -4,-6.3 -2.6,-1.8 0.3,-1.3 -4.7,2.3 -1.4,-1 -4.5,-0.4 -0.6,-3.1 -4.9,0.2 -0.2,0.7 -5.7,1.6 -8.1,1.2 0.5,1.6 1.6,0.4 -2.7,1.1 0.7,0.9 -1.7,1.2 2.6,1.1 -0.2,1.7 -2.7,-0.2 -0.4,0.8 -2.2,-1.2 -4,-0.1 -1.7,1.3 -2.2,-0.8 -2.2,-1.7 -5.3,-0.3 -3.6,2.7 -0.5,1.9 -1.7,-1.6 -1.2,1.6 0.2,1.5 -1,2 1.2,1.4 1.8,0.1 2.2,3.5 -3,1.5 -1.8,2.5 1.7,2.1 -0.3,1.7 2.2,2.7 -1.6,1.5 -2.5,-1.6 -3.1,-1.9 -1.7,0.4 -2.1,-1.4 z m 271.5,-79 1.5,0.9 -0.9,0.7 -4,0.2 -2.3,0.6 0.2,-1.5 2.6,-1.2 z m -78.8,-8.9 2.7,0.1 2.6,1.4 -0.4,1.3 -5.1,-1.1 z m -92.9,-23.7 -1.9,-1.1 5,0.6 -2.1,1.1 z m -86.5,-4.2 2.6,-0.3 -4.2,1.7 -1.9,-0.9 z m 25.7,-0.9 2.6,-0.7 1.1,1.5 -2.3,1.7 -2.6,-0.1 -0.9,-1 z m -77.7,89.4 1.2,-0.6 -1.5,0.6 0,0 0.6,-1.2 1.9,-1 0.2,0 -0.9,0.9 1.4,-0.8 3,1 -0.1,1.4 -0.2,0 z m 144,-85.5 -1.4,0.2 -1,0.2 -4.2,-1.3 2.4,-1 0.5,-2.2 5.2,-1.3 4.2,2.6 -1.4,0.3 0,1.8 -3.6,0.6 4.3,-0.3 1.5,1.3 1.6,-0.8 1.4,1.6 -1,3.7 -3.2,0.1 -1.8,-0.8 -3.4,-0.2 -2.4,-2.2 z m 92.4,98.5 -1.3,3.3 1.6,3.6 -1.8,-0.2 -0.7,1.7 -0.5,-1.7 0.7,-3.3 -0.4,-2.1 0.5,-5.8 -1.1,-1.5 0.2,-4.2 2,-0.8 -0.5,-1.6 1.4,3 0.3,4.2 1.6,5.7 z m -166.2,-71 -2,3.4 1.4,3.7 2.9,1.9 -0.9,0.8 -3.3,-0.9 -0.5,0.7 -3.6,-1.1 0.6,-1.2 -1.3,-0.6 0.2,1.2 -2.9,-1.9 -0.1,-1.3 1.8,-0.5 1.4,-3.7 3.5,-1.2 z m 173.7,-7.9 2.4,-0.4 1.4,0.6 3.3,0.6 -0.5,0.9 -4.6,0.3 -4.1,-1.7 0.7,-1.3 z m -11.1,-3.4 2.3,1.3 2.7,0.1 2.7,1.3 -2.6,1.9 -2.9,-1.4 0.3,1.1 2,0.6 -2.6,0.4 -1,-0.6 -5.4,1.3 -2.1,-0.8 -2,-1.9 -1.6,-0.4 -1.1,0.3 0.4,-1.9 2.6,1 0.8,-1.4 2.8,-1 4,2.4 z m -141.2,-3.3 2.3,0.6 0.3,1.2 -3.5,1.9 -11,3 -4.3,3.4 -1.8,-0.5 0.1,1.4 -2.8,3.5 -3.4,-0.7 -1.5,0.5 -1.1,-1.7 2.2,-0.8 1.4,-2.5 2.9,-2.9 2.2,-0.7 1,-1.2 4.5,-0.8 0,-0.7 2.5,0.3 3.2,-0.5 z m 63.7,-7.4 0.3,-1.4 2.4,-1.3 1.6,0.5 -0.4,1.2 1.7,-0.5 2.4,1.3 2,2.5 -1.7,-0.9 -2.9,0.9 -4.7,0.3 -2.3,0.9 -1.5,-0.3 z m -103.8,-6.5 5.7,-1.5 -1.2,-0.6 2.6,-1.1 2.6,1.5 -3.8,0.9 0.9,2.2 -1.3,-0.7 z",VA:"m 360.13,132.99 0,0 0,0 0,0 z",SM:"m 360.13,128.39 -0.1,-0.1 0.1,-0.1 0.1,0 z",KZ:"m 451.63,123.39 -2.1,0.7 0.6,1.3 -1.4,-0.8 0.4,-0.3 -0.6,0.2 -5.1,1.3 0.1,8.5 -0.9,0.1 -2.6,-2.4 -1.3,0.5 0,0 0,0 0,0 -0.8,0.3 0,0 0,0 0,0 -1.2,0.5 0.5,-2.2 -1.5,-0.3 -3.1,-4.2 2.1,-1.6 2.1,-0.2 1.1,-1.4 0,-2.1 -1.8,0.1 -1.8,-0.7 -3.8,1.9 -2.2,-3.5 -1.8,-0.1 -1.2,-1.4 1,-2 -0.2,-1.5 1.2,-1.6 1.7,1.6 0.5,-1.9 3.6,-2.7 5.3,0.3 2.2,1.7 2.2,0.8 1.7,-1.3 4,0.1 2.2,1.2 0.4,-0.8 2.7,0.2 0.2,-1.7 -2.6,-1.1 1.7,-1.2 -0.7,-0.9 2.7,-1.1 -1.6,-0.4 -0.5,-1.6 8.1,-1.2 5.7,-1.6 0.2,-0.7 4.9,-0.2 0.6,3.1 4.5,0.4 1.4,1 4.7,-2.3 -0.3,1.3 2.6,1.8 4,6.3 1.4,-1.2 1.4,1.4 3.8,-0.7 3.5,3.6 2.6,-0.1 1.4,1.3 -3,1.7 -0.5,3.3 -1.5,0.5 -3.3,-0.9 -1.4,4 -4.2,1.2 1.4,4.4 -1.2,2.2 -3.4,-1.6 -6.2,0.1 -1.9,-1 -1.3,2 -3.2,-1 -1.7,1.4 -3.6,2 -0.9,1.7 -1.3,-1.3 -2.3,0 -0.4,-1.8 -0.9,-0.1 -0.5,-2 -1.6,-1.9 -5.6,0.5 -1.9,-2.1 -1.8,-1.1 -0.7,-2 1.3,-0.5 z m 0.3,0 0.1,0 0,0.1 1.5,-0.7 z m -19.5,2.7 -0.4,-0.2 0.1,-0.3 0.6,0 z",AZ:"m 422.53,134.89 -0.1,0.1 0,-0.1 0.1,0 z m 0.4,0.2 -0.1,0 0,-0.1 0,0 z m 0.5,0.8 0,-0.1 0.1,0 -0.1,0.1 z m -1.3,2.2 -0.1,-0.1 1.9,0.3 0.7,1.5 -1.3,-0.3 z m 3.1,-5.1 2.5,1.6 1.6,-1.5 1.9,2.8 -1.3,4.9 -1.7,-0.9 -0.1,-2 -2.8,1.9 -1.6,-2.6 0.6,-0.4 -1.9,-2.4 2.9,0.5 z",TJ:"m 471.53,135.09 0,0.1 -0.1,-0.2 0,0 z m 0,2.5 0.1,0.1 -0.2,0.1 -0.2,-0.2 z m 5.8,0.9 0.3,2 1.8,0.1 0.3,2.8 -3.1,-0.5 -3.2,1.7 0,-2.6 -2,-1 -0.9,1.8 -1.6,0.9 -2.9,-0.2 1.1,-2.3 -0.4,-1.6 -1.5,-0.6 2.1,-0.7 1.9,-2.8 2,-0.5 0.9,1.8 -1.9,0 -1.2,1.6 4.1,-0.2 1.5,0.9 z",LS:"m 390.23,273.89 0.9,-0.3 1.5,1.6 -2.6,2.8 -2,-2.2 z",UZ:"m 473.73,137.49 -0.2,0 0,-0.1 0.2,-0.1 z m -1.2,-0.3 0.1,0.3 -0.3,0.1 -0.2,-0.5 z m -22.4,-11.8 -0.5,1 1.4,1.2 0.3,-1.5 1.8,1.1 1.9,2.1 5.6,-0.5 1.6,1.9 0.5,2 0.9,0.1 0.4,1.8 2.3,0 1.3,1.3 0.9,-1.7 3.6,-2 -1.5,1.5 2.4,1 0.6,-0.7 2.7,1.5 -2.8,1.5 -1.4,-0.2 -0.9,-1.8 -2,0.5 -1.9,2.8 -2.1,0.7 1.5,0.6 0.4,1.6 -1.1,2.3 -1,0 -1.4,-0.3 0.1,-1.5 -1.8,-0.5 -6.1,-3.9 -0.9,-2.3 -3.6,-0.9 -0.4,-2.1 -2.5,-1.1 -1.8,1.5 -0.4,-0.4 -0.7,0.9 -0.1,1.5 -1.9,-0.1 -0.1,-8.5 5.1,-1.3 -0.6,2.6 0.8,-2.5 z m 21.4,9.7 -0.1,-0.1 0,0 0.1,0.2 z",MA:"m 325.92969,146.28906 -1,0.30078 -1.69922,3.80078 -3.30078,1.59961 -1.40039,1.5 -1.09961,2.5 0.5,2.09961 -1.90039,2.90039 -1.69922,1.40039 -2.80078,0.79883 L 311.125,164 h 8.54883 l 0.0566,-0.21094 v -2.09961 l 1.90039,-1.5 3.69922,-0.5 4,-2.29883 v -1.90039 l 2.19922,-1.09961 2.40039,0.0996 0.40039,-0.90039 -1.19922,-1.5 -0.20117,-3.19922 -0.90039,-0.80078 -1.19922,-0.0996 -0.0996,-0.30078 h -0.0996 v -0.0996 l -2.70117,0.40039 -1.79883,-1.5 -0.10156,-0.0996 z",CO:"m 185.43,214.99 0.2,-1.4 1.6,-1 1.4,-2.2 -0.4,-1.1 0,-4 -1.1,-1.3 1.4,-1.4 -0.4,-1.4 0.9,0.3 2.5,-1.8 0.2,-2.1 2.7,-1.5 1.6,0.1 3.4,-2.2 0.3,1.1 -1.2,0.4 -1.8,2.4 -0.2,2.1 1.2,1.8 0.5,2.5 3.8,0.2 1.3,1.6 3.8,-0.1 -0.8,3.1 1.1,2.2 -1,1 1.2,0.9 0.6,2.2 -0.9,-1.6 -1.5,0.7 -3.3,0 -0.4,3.6 1.2,2.4 -1,5.3 -1.5,-0.8 1.4,-2.1 -1.9,-1 -2.6,0.5 -1.6,-0.4 -0.8,-1.8 -3.2,-2.2 -1.9,-1.1 -2.2,-0.4 z",TL:"m 573.73,235.59 0.4,-0.2 0.4,-0.1 -0.3,0.6 z m 1.7,-0.7 0.5,-0.7 3.5,-0.6 -1,1.2 -2.7,1.1 -0.2,-0.6 z",TZ:"m 403.23,239.89 0,-0.2 -0.1,-0.1 0,-0.1 -0.3,-0.1 0,-0.1 0,0 0,-0.1 -0.5,-2.5 -0.4,-0.4 -0.2,-0.2 0,0 -0.2,-0.2 0,0 0,0 -0.2,0.1 -0.1,0.3 -1,-0.2 -0.9,-0.4 -1.8,-0.6 -1.6,-1 -2.3,-5.1 -0.5,-2.8 2.2,-2.3 -0.5,-1.6 0.5,-1.5 -0.7,-1 0.7,-0.1 1.8,0 0,0.1 0.1,-0.1 0,0 0.2,2.7 2.5,0.1 1.6,-2.7 6.9,3.8 0.2,1.1 2.7,2 1.3,1.1 -1.1,0.9 0.5,1.3 -0.4,4.4 2.1,3.4 -5.7,2.4 z",AR:"m 204.93,334.29 0.1,0.2 -0.2,0 z m 26.8,-66.8 1.4,0.1 0.1,3.1 -3.7,2.2 -3.5,4.1 -1.2,3.6 0,1.2 -0.7,3.9 2.8,2.5 -0.5,0.9 1.4,2.2 -1.8,2.8 -2.8,1.2 -3.5,0.7 -2.3,-0.2 -0.5,4.4 -2.8,0.7 -2.1,-1.1 -0.3,2.9 0.9,1.1 1.6,-0.8 0.3,1.5 -1.6,-0.5 0,1 -1.7,1.6 -0.5,3.2 -1.2,0 -2.1,1.4 -0.6,1.3 1.6,2.1 1.6,0.1 0,2.4 -3.1,2.4 -0.6,2.4 -1.9,0.8 -0.6,1.7 1.4,3.5 -2.9,-0.9 -3.7,-0.1 -1,-1.1 0.2,-2.3 -1.6,0.3 -0.8,-3 2.5,-3 -0.5,-1 1.2,-1.7 1.1,-4.6 -1.4,-1.3 0.8,-2 -1,-2.1 0.8,-2.1 -0.4,-3.1 1.1,-4.1 1,-0.5 -0.6,-2.2 0.3,-2.6 1.2,-1 0,-1.9 1.2,-3.9 -1.6,-3.8 1.8,-6.6 1.6,-2.6 1,-0.5 -0.5,-4.3 2.3,-1.6 0.3,-2.4 1.9,-2 3.1,0.8 0.5,1.3 0.8,-1.7 2.4,0.5 3.2,3.1 1.8,0.4 4.8,2.9 -2,3.9 5.4,0.2 1.9,-1.6 z m -26.8,66.7 0,-5.6 0.3,1.7 2.2,2 2.8,1.6 2.4,0.6 -3.7,0.4 -1.3,-0.2 -0.5,-0.1 z",SA:"m 429.03,161.99 0.9,1.9 2.4,1.9 0,1.9 1.3,2 0.3,0.4 0.4,-0.1 0.2,0.6 0.5,0.1 1.9,2.7 5,0.4 0.9,1.5 -1.3,3.9 -5.7,2 -5.5,0.8 -1.8,0.9 -1.4,2 -4.4,-0.6 -3.8,0.2 -0.7,1.9 -3,-4.6 -0.5,-1.6 -2.5,-1.9 -1.1,-1.7 0,-2.5 -1.2,-2.4 -1.8,-1 -0.5,-1.9 -3.9,-5.8 -1.2,-0.2 0.7,-2.5 2.1,0.3 3.7,-2.7 -2,-2.1 4.2,-1.3 2.5,0.4 3.1,1.8 5,3.9 3.6,0.2 1.7,0.2 z",PK:"m 479.03,143.89 2.7,1.2 1.6,1.8 0.5,1.2 -2.4,1.3 -2.8,-0.6 -1.1,0.9 0.5,2.5 2.4,2.2 -1.5,0.9 0.1,1.3 -2.2,2.5 -0.9,1.8 -2,2.3 -2.7,-0.2 -1.9,2.5 3,4.3 -2.1,1.1 -2.1,-0.2 -1.3,0.8 -1.6,-0.4 -1.9,-2.8 -5.4,0.5 -3.7,0 0.5,-2.1 2.4,-0.8 -0.7,-3.3 -1.6,-0.7 -2,-2.7 3.1,1 3.1,0 4,-0.9 0.3,-2.3 3.4,-1.9 2.3,-0.2 0.4,-2.5 1.5,-0.5 -0.6,-1.5 2,-0.1 1.1,-2.4 -0.9,-1.9 2.7,-1.7 z",YE:"m 435.83,181.19 1.4,3.3 0.7,1.3 -1.6,2 -5.1,1.7 -1.7,1.4 -1.3,0 -2.5,1.2 -1.7,0.1 -3.6,1.5 -0.9,-0.5 -1.4,-5.3 0.1,-1.5 0.7,-1.9 3.8,-0.2 4.4,0.6 1.4,-2 1.8,-0.9 z",AE:"m 444.03,167.89 0.2,0.2 0,1.1 -1.1,0.2 -1.2,4.4 -5,-0.4 -1.9,-2.7 4.9,0.2 3.7,-3.9 0.2,0.8 z m 0,0.8 0.2,-0.1 -0.3,0 0,0.2 z",KE:"m 411.33,226.69 -2.7,-2 -0.2,-1.1 -6.9,-3.8 0.3,-1.6 -0.4,-0.9 1.8,-2.7 -0.1,-1.5 -1.8,-3.4 2.8,-1.5 1,0.8 1.7,0.3 2.4,1.6 2.8,0.4 2.3,-1.7 2.2,0.6 -1.8,2.2 0,7 1.1,1.6 -2.6,2 z",PE:"m 192.13,217.99 3.2,2.2 0.8,1.8 1.6,0.4 2.6,-0.5 1.9,1 -1.4,2.1 1.5,0.8 -1.5,-0.1 -4.1,1.8 -0.4,2.4 -1.7,2.2 3.5,4.8 1.9,-0.2 1.3,-0.9 -0.3,3 2.1,-0.1 1.7,3 -0.8,2.2 0.4,1 -0.9,2.6 -1.3,0.6 1.8,0.8 0.1,0 0.1,0 -0.2,0.5 0.1,0.1 -1.2,1.5 0.3,0.4 -0.9,1.5 -0.8,0.1 -2.1,-2 -7.1,-3.8 -2.1,-2.5 0.1,-1.4 -2.7,-4 -2.5,-5.9 -1.9,-2.7 -2.2,-1.4 -0.3,-3.5 1.8,-1.6 -0.4,1.3 2.8,1.8 1.4,-3.1 3.2,-1.5 2.1,-2 z",DO:"m 198.63,182.19 0,0 -0.1,-0.1 0,0 -0.1,-0.1 0.6,-0.3 -0.1,-1.9 1.4,-0.5 2.1,0.6 0.6,1.1 2.4,0.9 -1.1,0.4 -3.4,0 -1.4,1.6 -0.6,-0.8 0.1,-0.6 z",HT:"m 198.63,182.19 0,0 -0.1,-0.1 0,0 z m 0.3,-2.4 0.1,1.9 -0.6,0.3 0.1,0.2 0.1,0 0.4,0.3 -0.1,0.6 -3,-0.4 -1.1,0.4 -0.7,-1.3 3,0.5 -0.1,-2 -1.3,-0.7 z",PG:"m 606.23,235.09 0,-4.2 0,-8.2 5.8,2.3 1,0 2.4,2 -0.1,1.2 3.3,0.9 0.8,1.4 -1.8,0.1 0.5,1.4 1.8,1.1 2.1,2.8 3.3,0.2 -0.5,1.8 -5.2,-0.7 -1.7,-1.4 -1.9,-2.6 -4.5,-1 -0.7,2.7 -1.4,0.7 z m 17.2,-12.6 -0.6,-1.7 1.1,1.5 3.5,1.6 2.1,2 -0.5,1.1 -1.2,-2.4 z m -0.6,7.3 -3,-1.1 5.6,-0.6 1.2,-0.9 -0.2,-1.5 1.7,0.3 -0.5,2 -3.2,1.7 z",AO:"m 359.73,228.69 0,-0.5 -0.4,-0.9 1.4,-1.2 0.6,0.5 -1.2,0.8 z m 21.3,23 -4.9,0.7 -3.9,-0.5 -0.6,-0.7 -8.6,0 -1.5,-0.9 -2.7,0.6 0,-2.8 1.4,-4.6 2.2,-2.3 0.2,-3 -1.4,-3.1 0.7,-1.4 -2.1,-4.3 1.7,-0.5 6.6,0.1 0.7,2.7 1.2,1.5 3.3,-0.2 0.4,-1.9 4.3,0.5 0,4.1 0.7,1 0.2,2.6 3.3,-0.8 0,4.1 -3.8,0 0,6.2 z",KH:"m 542.13,189.59 0,4.6 -3.4,2.5 -2.4,1.2 -1.6,-0.2 -1.4,-2.2 -1.1,-3.7 2.5,-1.7 3,0.2 3.1,0.1 z",VN:"m 536.33,197.89 2.4,-1.2 3.4,-2.5 0,-4.6 0.3,-1.1 -2.2,-3.4 -3.4,-3.5 -1.7,-1 2.1,-1.5 -1.7,-1.8 -1.8,0.2 -0.3,-1.4 -1.6,-1.7 0.7,-0.7 2.8,0.5 2.6,-1.7 2.8,1.2 -0.4,0.8 2.7,1.8 -2,1.1 -1.7,1.8 -0.8,2 1.9,3 4.1,4.1 1.4,4.8 -0.9,3 -3.3,1.9 -1.1,-0.3 -0.4,1.9 -3.3,1.4 0,-2.7 z",MZ:"m 403.03,243.59 -0.3,-2.5 0.5,-1.2 4.8,0.3 5.7,-2.4 0.8,8.3 -1.8,3.2 -5.4,2.8 -4.2,4 -0.5,1.1 1.6,3.3 -0.7,5 -2.6,1 -2.4,1.8 0.8,1.8 -1.1,0 -0.4,0 -0.2,-1.2 -0.2,-0.6 0.1,-3.1 -1.3,-4.1 2.1,-2.2 1.2,-2.5 -0.5,-1.1 0.5,-2.2 -0.1,-3.3 -4.9,-2 -0.4,-1.3 5.7,-1.9 0.9,1.1 1.3,-0.4 -0.2,2.9 1.7,1.3 1.3,-1 0.1,-2.7 z",CR:"m 176.13,196.89 0.4,0.8 1.7,1.8 -0.9,2.3 0,0 -0.3,-0.5 -5.1,-3.3 0.3,-1.4 2.6,0.2 z m 1.5,5.6 -0.3,-0.6 0,-0.1 0,0 z",BJ:"m 343.23,195.39 0.4,2.1 -2,3 -0.1,5.1 -1.6,0.2 -0.5,0.1 -0.1,-5.4 -1.3,-3.7 1,-0.9 1.9,-0.9 0.8,-0.9 z",NG:"m 341.53,205.59 0.1,-5.1 2,-3 -0.4,-2.1 1,-3.4 2.6,-0.8 2.8,1.7 1.7,-0.7 3.4,1 1,-0.8 2.5,-0.2 2,0.6 2.1,-1.3 0.9,1.3 1.2,1.7 -4.7,7.4 -1.8,3.6 -1.4,-1.3 -3.3,2.5 -0.5,1.9 -4.6,1 -1.1,-0.7 -2.3,-3.2 z",IR:"m 422.03,143.59 -1,-1.8 -0.5,-3.1 1.6,-0.6 1.2,1.4 1.3,0.3 0.5,-0.1 0.2,0.1 2.8,-1.9 0.1,2 1.7,0.9 0.2,1.5 2.3,0.8 1.7,1.4 1.6,0.4 4,-0.6 -0.2,-1.1 2.9,-1.6 3.4,-0.4 0.3,0.6 2.8,0.6 2.9,2.4 1.6,0.1 0.2,2.1 -1.4,5.5 0.5,3.3 1.7,0.2 0.2,1.1 -1.8,2.1 2,2.7 1.6,0.7 0.7,3.3 -2.4,0.8 -0.5,2.1 -3.2,-0.3 -5,-0.9 -0.5,-2.2 -1.3,-0.7 -3,1.5 -6.5,-3 -2.6,-4.7 -2.1,-0.4 -0.8,0.9 -1.6,-2.2 0.3,-1.6 -0.9,-1.3 -2.1,-1.2 -1.7,-2.2 1.8,-3.9 -2,-0.4 z",SV:"m 168.13,192.09 -1.8,0.3 -2.5,-0.9 -0.1,-0.2 1.5,-1.1 3.2,1.1 z",SL:"m 314.33,204.59 -2.8,-1.3 -0.7,-2.8 1.5,-1.5 2.4,-0.3 1.9,2.9 -0.6,1.4 z",GW:"m 307.53,196.79 -1.7,-0.5 -1.6,-2.1 3,-0.7 2.8,0 0,1.9 -1.9,0.4 z",HR:"m 371.73,131.79 -1.3,-0.9 -0.3,-0.2 0.4,0.2 1.1,0.6 0,0.1 z m -9.4,-7.2 3.3,0.1 0.6,-1.8 1.7,-0.7 1.6,1.3 3,0.1 0.2,1.8 0,0.7 -4,-1 -2.2,0.3 0.8,2.2 2.6,3 -1.7,-0.4 -3.5,-2.5 0,-2.2 -1.7,0.7 z",BZ:"m 165.63,183.49 0.5,-0.1 1.1,-1.2 0.2,3 -1.4,2.1 -0.6,0 z",ZA:"m 397.83,270.09 0.4,0 1.1,0 -1,3.5 -2.3,2.1 -1.5,2.7 -2.9,3 -3.4,2.7 -4.3,1.4 -4.4,-0.4 -1.3,0.7 -4.3,0.9 -2.2,-2 -1.3,-2.1 0.9,-0.4 -0.2,-2 -1.7,-2.9 -1.6,-3.6 1.2,-1.2 0.6,1.4 3.3,0.5 1.6,-1.1 0,-7.5 1.7,2.8 -0.3,1.6 1.9,-0.1 2,-1.8 0.6,-1.4 3.4,1.1 1.5,-0.4 0.5,-1.8 1.9,-0.9 0.3,-1.3 2.3,-2 2.2,-0.9 1.9,0.3 1.8,0.1 1.3,4.1 -0.1,3.1 -1,-0.5 -1.1,1.4 0.6,1.6 z m -7.6,3.8 -2.2,1.9 2,2.2 2.6,-2.8 -1.5,-1.6 z",CF:"m 380.03,196.89 1.5,2.1 -0.3,2 1.4,0.2 2.2,2.6 2,1.3 0.1,1.1 1.9,1.9 -3.5,-0.6 -5.9,2.3 -3.7,-0.4 -1.7,-1.4 -2.2,1.5 0.1,1.7 -2.2,-0.5 -1.7,0.5 -0.7,2.3 -0.2,-1.1 -1.8,-1.8 -1.5,-4.3 2.1,-2.9 2.5,0 3.5,-1 0.9,-1.8 2.6,-0.3 3.9,-3.5 z",SD:"m 382.63,201.19 -1.4,-0.2 0.3,-2 -1.5,-2.1 -1.2,-3.5 -0.3,-2 0.9,-0.7 1.1,-3 1.7,-0.1 0,-7.4 0,-1 1.9,0 0,-4 12,0 10.8,0 0.8,2.4 0.4,4.2 2.1,1.4 -3.1,1.8 -1.1,3.8 0.2,1.7 -0.8,3 -0.8,0.1 -1.6,3.7 -0.5,-0.3 -1,2.7 -1.7,-2.6 0.1,-2.7 -2.2,0.4 0.6,1.9 -2.2,2.4 -2.4,-0.9 -2.2,1.8 -4.4,-0.4 -1.4,-1.7 -1.4,0.2 z",CD:"m 392.23,224.09 -0.2,3.3 0.8,3.1 2,2.9 -3.2,0.5 -1.1,1.2 0.4,0.6 0.3,0.8 -0.6,3.1 1.3,1.8 1.4,-0.4 0,2.5 -1.1,0 -3.9,-3.6 -0.9,0.8 -2.6,-0.7 -0.1,-0.9 -1.9,0.4 -0.6,-1 -3.3,0.8 -0.2,-2.6 -0.7,-1 0,-4.1 -4.3,-0.5 -0.4,1.9 -3.3,0.2 -1.2,-1.5 -0.7,-2.7 -6.6,-0.1 -1.4,0.4 -0.4,-0.6 0.4,-1.3 1.2,-0.8 2.5,-0.7 0.9,1 2.6,-2.8 0.1,-2.3 2.9,-3 0.6,-5.1 1,-2.5 -0.1,-1.7 2.2,-1.5 1.7,1.4 3.7,0.4 5.9,-2.3 3.5,0.6 1.8,1.5 2.7,-0.5 2,2 -0.2,2 1,0.5 -1.4,1.3 -0.1,0.5 -1,0.8 -0.5,1.7 -0.7,0.8 0.6,0 -0.1,0.8 0,0.9 -0.4,0.3 -0.3,0.3 -0.5,0.5 -0.1,1 0,0.3 0.2,0.1 0.4,0.7 z",KW:"m 429.03,161.99 -1.9,-1 -1.7,-0.2 1.1,-1.8 1.6,-0.1 0.3,1.4 z",DE:"m 353.93,119.39 0,0 0,0 z m -1,-18.4 0.3,0 1.1,0.3 3.9,2.3 2,-1.5 2.2,-0.3 0.7,1.4 0.4,0.4 -0.1,0 0.1,0.1 -0.3,-0.3 0.4,0.8 -0.3,2.2 1,0.7 0.3,4.4 -4.4,1.2 -0.2,1.6 2.7,2.4 -2,1.6 0.5,1.5 -1.6,-0.5 -2.3,0.7 -2.4,-0.3 -1.3,-0.7 0.3,0.4 -1.4,0.2 -1.7,0 1.2,-3.4 -3.6,-1.2 0.3,-0.9 -0.7,-0.8 0.5,-0.4 -0.7,-1.2 0.7,-2.7 1.2,-1 0.4,-2.6 0.2,-1.3 2.4,0.5 0.8,-0.9 z",BE:"m 347.83,111.69 0.7,1.2 -0.5,0.4 -0.8,0.6 0.2,0.9 -3.2,-1.1 -3.1,-2.8 1.2,-0.6 0.4,-0.1 0.9,0.4 0.8,-0.4 0.1,0.1 -0.1,-0.1 1.5,-0.3 z",IE:"m 322.43,100.59 -1.8,1.6 1.7,0.9 2,0 0.5,3 -0.7,2 -2.3,0.3 -2.2,1.3 -2.1,0.3 -1.2,-1.2 2.9,-3.5 -2.1,-0.3 0.3,-2.5 2.4,0.2 0.6,-2.4 z",KP:"m 586.53,132.09 -2,1.7 0.1,1.6 -4.2,2.5 -0.1,1.3 1.7,1.2 -2.3,0.7 -0.9,1 -2.1,-0.4 -0.4,0.8 -1.1,-1.9 1.3,-1.8 -2.1,-1.7 3.1,-1.8 1.2,-1.8 2.9,0.7 -0.2,-1.4 3.2,-1.1 0.3,-1.2 1.3,1 0.2,0.3 z",KR:"m 578.83,142.09 0.9,-1 2.3,-0.7 1.9,2.9 0.2,3.9 -1.6,1.7 -1,-0.4 -1.1,1.1 -2.2,-0.4 z",GY:"m 221.43,201.49 1.7,1 3.7,3.7 -0.1,1.1 -1.6,2.5 3,4.3 -1.2,-0.2 -3.2,1.6 -1.8,-1.3 -0.5,-1.6 0.9,-2.3 -0.9,-2.2 -1.4,-0.2 -1.2,-1.4 0.3,-1.2 1.7,-1.1 -0.4,-1.3 z",HN:"m 167.43,187.59 4.4,-0.5 3.1,0.3 2.2,1.6 -3.2,0.4 -1.8,1.6 -1.9,0.4 -1.1,1.5 -0.4,-0.5 -0.6,-0.3 0.3,-0.8 -3.2,-1.1 0.4,-1.3 z",MM:"m 512.93,177.09 0.7,-0.5 -0.1,-1.3 1.2,-0.8 0.2,-3.3 1.5,0.3 1.8,-3.8 0,-1.5 3.2,-1.8 1.2,-1.8 0.4,-0.6 2.2,1.9 0,3.5 -1.9,1.7 -0.1,2.4 1.8,-0.4 0.6,1.8 1.2,0.2 -0.7,1.8 1.5,0.2 0.5,1.3 1.9,-0.3 -0.9,0.5 -1.2,2 -3,1.3 -0.9,-0.3 -1.2,2.6 2.7,4.6 -1.1,2.6 1.7,2.1 0.9,3.7 -1.7,2.8 -0.3,-5.5 -1.5,-3.2 -0.3,-2.8 -0.8,-1.4 -3.4,2.5 -2.4,-0.6 0.8,-2.9 -1.2,-3.7 -1.8,-1.2 z",GA:"m 355.03,215.89 3,0 0,-2.3 0,-0.2 3.7,0.3 -0.1,1.7 2.4,0.6 -1.2,2.2 1.2,0.7 -0.7,3.6 -3.2,-1.1 -1.7,0.8 0.5,2.6 -1.3,0.5 -3.6,-4 -1.1,-2.4 1.1,-0.3 0.1,-1.9 z",GQ:"m 358.03,213.59 0,2.3 -3,0 -0.8,-0.4 0.8,-2.2 0.4,0.3 z",NI:"m 172.23,196.59 -3.7,-3.4 0.6,-0.3 1.1,-1.5 1.9,-0.4 1.8,-1.6 3.2,-0.4 -1.4,7 0.4,0.9 -1.3,-0.1 z",LV:"m 388.63,93.89 0.6,1.9 1,1.9 -1.1,0.9 -1.9,0.4 -3.3,-2.1 -0.8,0.5 -4.5,-0.5 -2,1 0,-2.1 1.3,-2 1.7,-0.5 2,2.1 1.4,-0.7 -0.2,-1.7 1.9,-0.6 2.3,1.5 z",UG:"m 397.23,219.69 0,-0.1 0,0.1 z m -4.3,0.7 0,-0.9 0.1,-0.8 0.5,-0.6 -0.4,-0.2 0.5,-1.7 1,-0.8 1.8,-1.3 -0.3,-0.5 -1,-0.5 0.2,-2 5.1,-0.5 0.9,-0.9 1.8,3.4 0.1,1.5 -1.8,2.7 -2.7,0.2 -1.6,2.2 -1.8,0 -0.7,0.1 -1,0.8 z",MW:"m 403.13,239.59 0,-0.1 0,0 z m -0.3,-0.3 0,0 0,-0.1 0,0.1 z m -0.9,-3 -0.2,-0.2 0,0 z m -0.4,-0.4 0,0 0,0 z m -2.2,-0.2 0.9,0.4 1,0.2 0.8,3.8 0,3.2 1,0.3 1.9,2.2 -0.1,2.7 -1.3,1 -1.7,-1.3 0.2,-2.9 -1.3,0.4 -0.9,-1.1 -0.7,-0.6 1,-2.3 -0.2,-3.2 0.8,-0.5 z",AM:"m 425.33,139.79 -0.2,-0.1 -0.5,0.1 -0.7,-1.5 -1.9,-0.3 -2.1,-1 -0.5,-2.2 1.5,-0.3 1.5,-0.1 1.9,2.4 -0.6,0.4 z m -2.8,-4.9 0,0 -0.1,0 0,0.1 z m 0.4,0.2 -0.1,-0.1 0,0 0,0.1 z m 0.5,0.8 0,0 0.1,-0.1 -0.1,0 z",SX:"m 419.13,195.79 1.9,2 2.9,-0.8 1.3,0.4 1.8,-1 3,-0.1 0,3.4 -1.9,2.8 -1.9,0 -5.6,-1.9 -2.7,-3.1 0.6,-0.7 z",TM:"m 445.53,132.89 1.5,0.6 -0.4,-1.1 1.8,-1.5 2.5,1.1 0.4,2.1 3.6,0.9 0.9,2.3 6.1,3.9 1.8,0.5 -0.1,1.5 -1.4,-0.5 -1.9,1.1 -0.6,1.8 -4.2,2.4 -1.9,-1 -0.2,-2.1 -1.6,-0.1 -2.9,-2.4 -2.8,-0.6 -0.3,-0.6 -3.4,0.4 -2.9,1.6 0.1,-3.5 -0.8,-2.3 -1.6,-0.2 0.4,-2.1 1.5,0.8 1.9,-1.1 -1.5,-2.2 -0.8,-0.1 0,0 1.3,-0.5 2.6,2.4 0.9,-0.1 1.9,0.1 z m -7.6,-0.1 0.2,-0.3 0.6,0 0,0 -0.8,0.3 0,0 z m 0,0 -0.5,1.3 -0.7,-0.8 1.2,-0.5 0,0 z",ZM:"m 390.93,235.69 1.2,-1.4 -0.5,-0.4 3.2,-0.5 0.9,1.1 0.2,-0.4 1.6,1 1.8,0.6 1.4,2.3 -0.8,0.5 0.2,3.2 -1,2.3 0.7,0.6 -5.7,1.9 0.4,1.3 -3,0.8 -0.2,0.9 -1.2,0.6 -1.1,0.6 -1,1.6 -0.6,0.2 -2.8,-0.5 -2,-0.6 -1.6,0.3 -2.6,-2.9 0,-6.2 3.8,0 0,-4.1 0.6,1 1.9,-0.4 0.1,0.9 2.6,0.7 0.9,-0.8 3.9,3.6 1.1,0 0,-2.5 -1.4,0.4 -1.3,-1.8 0.6,-3.1 z",NC:"m 401.23,148.19 -0.3,0 -0.1,0 -0.6,-0.3 -1.2,0 0,0 0,0 0,0 -0.1,0 0,0 3.6,-1.1 -1.1,1.4 z m -2.5,-0.3 0.1,0 -0.1,0.1 z",MR:"m 319.73,164.49 6,3.8 1.3,0.9 -3.3,0 2,18.9 -10,0.1 -1.9,-0.2 -1,1.5 -4,-3.7 -3.8,0.4 -0.4,1.2 1,-4.2 -1,-2.8 0.7,-1.6 -1.7,-1.1 0.2,-1.1 7.6,0 0,-3.4 1.9,-0.9 0,-5.1 6.3,0 z",DZ:"m 327.03,169.19 -1.3,-0.9 -6,-3.8 0,-0.7 0,-2.1 1.9,-1.5 3.7,-0.5 4,-2.3 0,-1.9 2.2,-1.1 2.4,0.1 0.4,-0.9 -1.2,-1.5 -0.2,-3.2 -0.9,-0.8 6.3,-3 3.6,-0.7 3.5,-0.2 0.9,0.5 4.1,-0.9 2.3,0.3 -0.4,1.1 -0.3,3.9 -1.4,1.6 1.6,2.9 1.4,1 0.9,3.8 0.6,2.3 0,5.4 -0.8,0.8 1.2,2.6 2.9,1.1 0.8,1.6 -8.6,5.3 -3.2,2.8 -3,0.6 -2.2,0 0.2,-1.3 -2.5,-0.8 -1.4,-1.8 z",LT:"m 377.03,100.09 -0.2,-1.2 -0.2,-1 2,-1 4.5,0.5 0.8,-0.5 3.3,2.1 0.3,0.9 -1.7,1 -0.8,1.7 -2,1.1 -1.8,-0.1 0,-0.6 -1.3,-0.5 0.1,-1.4 z m -0.7,-0.1 0.3,-0.6 -0.1,0.6 z",ET:"m 416.33,196.19 -0.2,0.2 0.2,0.2 0.3,0.3 1.9,-0.1 -0.6,0.7 2.7,3.1 5.6,1.9 1.9,0 -5.8,5.9 -1.8,-0.1 -4,1.9 -2.2,-0.6 -2.3,1.7 -2.8,-0.4 -2.4,-1.6 -1.7,-0.3 -2.3,-3.9 -2,-1.9 -1.2,-0.3 0.3,-1.3 1.4,0.1 0.2,-2 1,-2.7 0.5,0.3 1.6,-3.7 0.8,-0.1 0.8,-3 2.6,-1.2 5.7,1.5 2.9,3.1 -1.2,1.8 z",ER:"m 417.43,193.89 -2.9,-3.1 -5.7,-1.5 -2.6,1.2 -0.2,-1.7 1.1,-3.8 3.1,-1.8 2.1,5.6 2.8,0.9 3.7,3.8 -0.8,0.6 z",GH:"m 338.53,206.19 -6.2,2.6 -2,-0.7 0,-0.1 0.3,0.1 0.2,-0.1 -0.7,-3.3 1.4,-2.6 -0.4,-2.4 -0.1,-2.9 5,-0.3 1,1.8 0.3,6.4 z",SI:"m 362.33,124.59 0,-0.1 0.2,-0.1 -0.6,-1.7 0.6,-0.6 1.6,0.4 3,-1.2 0.3,0 0.5,0.9 -1.7,0.7 -0.6,1.8 z",GT:"m 166.03,187.29 0.6,0.3 0.8,0 -1.8,1.3 -0.4,1.3 -1.5,1.1 0.1,0.2 -2.4,-0.4 -1.7,-1.2 0.9,-2.9 2.6,-0.6 -2,-1.8 0.9,-1.1 3.5,0 -0.2,3.8 z",BA:"m 370.13,130.69 -0.2,-0.1 0,0 -2.6,-3 -0.8,-2.2 2.2,-0.3 4,1 0.7,-0.1 -0.4,3.2 -1.4,1.3 0,1 -1.1,-0.6 z",JO:"m 404.13,156.59 0.2,-0.2 -0.2,-0.1 -0.1,0 0.1,-0.2 0.2,0 0.1,-0.9 0,-1.8 0.3,-0.3 2,1 3.8,-2.3 0.6,1.9 0.1,0.8 -4.2,1.3 2,2.1 -3.7,2.7 -2.1,-0.3 0.1,-0.4 -0.1,-0.1 0.4,-1.8 z", -SY:"m 410.53,151.79 -3.8,2.3 -2,-1 0.3,-0.4 -0.1,-1 1.5,-1.7 -1.3,-0.9 -0.1,-1.7 0,-1.1 1.4,-2 3.1,-0.1 2.9,0.3 4.7,-1.3 0.3,0.5 -1.9,1.3 -0.3,3.8 -1,1 z",MC:"m 350.53,128.69 0,0.1 -0.1,0 0.1,-0.1 z",AL:"m 376.43,135.29 0,0 0,-0.1 z m -3,-2.8 0,-0.3 0,-0.2 0.6,-0.8 0.7,0.3 0.8,0.8 0.2,0.7 -0.3,0.8 0.4,1 0,0.4 0.2,0 0.2,0 0.2,0 -0.1,0.1 0.1,0 0,0.1 -0.1,0.1 0.1,0 0,0.1 0.1,0.1 0,0.1 0,-0.1 -1.2,2 -0.7,0.3 -1.4,-2.2 0.2,-2.7 -0.1,-0.3 z m 0,-0.4 0,0 -0.1,0 z",UY:"m 234.53,282.19 -0.9,1 0.2,0.9 0,0.2 0.3,0.2 -0.8,1.4 -2.2,1.2 -2.3,0 -3.3,-1 -1,-1.2 0.3,-3.1 0,-1.2 1.2,-3.6 1.5,-0.2 1.5,2.1 0.8,-0.5 z",CNM:"m 401.43,148.19 0,0 0,0 -0.2,0 0,0 z m -2.7,-0.3 0,0 0,0.1 0.1,-0.1 0,0 0,0.1 z m 0.2,0 0,0 0,0 0.1,0 0,0 z m 1.9,0.3 0,0.1 0,0 -0.5,-0.3 -1.3,-0.1 0,0 1.2,0 z",MN:"m 561.33,119.09 0.7,-0.2 -0.3,-0.3 1.5,0 2.6,2.6 -0.4,0.8 -2.7,-0.3 -3.2,1 -1.8,2 -2.1,0.2 -1.8,1.5 -3.1,-0.8 -1.1,1.5 1,1.7 -4.7,2.9 -5.2,0.4 -3,1.2 -2.8,0 -3.3,-1 -0.7,-0.7 -10.1,-0.5 -1.9,-3.7 -3.6,-1.5 -5,-0.6 0.3,-3.3 -1.4,-2.6 -2.4,-0.8 -2.1,-1.5 -0.3,-1.4 8.7,-4.2 3.6,0.7 0.7,1.4 5.2,0.7 1.9,-2 -1,-1.2 2.1,-2.9 6.3,2.1 0.2,1.8 2.7,1.2 3.1,-0.9 5,1.4 1.2,1.5 4.2,0.5 4.4,-1.2 2.4,-1.7 2.1,1 2.5,0.2 -2.3,4.1 0.7,1.1 z",RW:"m 391.83,222.89 -0.2,-0.1 0,-0.3 0.9,-0.9 -0.3,-0.6 0.3,-0.3 0.4,-0.3 0.7,0.2 1,-0.8 0.7,1 -0.5,1.5 -1.3,0.5 z",SO:"m 416.53,210.19 4,-1.9 1.8,0.1 5.8,-5.9 1.9,-2.8 0,-3.4 4.5,-1.1 -0.9,4.5 -5.5,9.6 -3.7,3.8 -4.9,3.5 -3.7,4.4 -1.1,-1.6 0,-7 z",BO:"m 204.03,248.89 -0.1,-0.3 0.3,0.3 -0.1,0 z m -0.8,2.5 -0.3,-0.4 1.2,-1.5 0.9,-0.4 -1.5,-1.6 0.9,-2.6 -0.4,-1 0.8,-2.2 -1.7,-3 2.4,0 3.2,-2 2.3,-0.5 0.1,2.9 1.9,2.5 2.5,0.4 2.4,1.7 2.6,0.5 0.6,4.8 3.2,0.1 0.2,1.8 1.6,1.8 -1.2,3.9 -1.8,-1.7 -5.1,0.7 -0.9,1.8 -0.8,3.4 -2.4,-0.5 -0.8,1.7 -0.5,-1.3 -3.1,-0.8 -1.9,2 -1.3,0 -0.6,-3 -1.1,-1.7 0.6,-2 -1,-1 z",CM:"m 361.73,213.69 -3.7,-0.3 0,0.2 -2.6,0 -0.4,-0.3 -0.3,-2.9 -2,-1.8 0.5,-1.9 3.3,-2.5 1.4,1.3 1.8,-3.6 4.7,-7.4 -1.2,-1.7 0.5,-0.1 -0.1,0.4 0.4,-0.1 1.3,2.7 -0.2,1.5 1.2,1.5 -2.9,0 -0.4,0.7 2.3,2.2 0.6,1.8 -2.1,2.9 1.5,4.3 1.8,1.8 0.2,1.1 -0.1,1 -3,-0.9 z m 2.1,-21 0,0.1 0,-0.1 z",CG:"m 361.73,213.69 2.5,-0.1 3,0.9 0.1,-1 0.7,-2.3 1.7,-0.5 2.2,0.5 -1,2.5 -0.6,5.1 -2.9,3 -0.1,2.3 -2.6,2.8 -0.9,-1 -2.5,0.7 -0.6,-0.5 -1.4,1.2 -0.4,-0.8 -1.3,-1.2 1.3,-0.5 -0.5,-2.6 1.7,-0.8 3.2,1.1 0.7,-3.6 -1.2,-0.7 1.2,-2.2 -2.4,-0.6 z",EH:"M 319.73047,163.78906 319.67383,164 H 311.125 l -0.89453,1.78906 -1.70117,1.10156 -0.69922,2.89844 -1.40039,1.40039 -2.69922,5.20117 -0.20117,1.09961 0.10156,0.19922 0.19922,-1.09961 h 7.59961 v -3.40039 l 1.90039,-0.90039 v -5.09961 h 6.30078 l 0.0996,-2.69922 z",RS:"m 373.03,129.19 0.4,-3.2 -0.7,0.1 0,-0.7 -0.2,-1.8 1.2,-0.6 1.3,0.1 2.4,2.3 -0.2,0.9 2.5,1.3 -0.6,1 1.1,1.6 -1.1,1.8 -0.8,0 -0.7,0.2 0.3,-1 -1.9,-1.4 -0.8,1 -1.4,-0.8 z",ME:"m 373.03,129.19 0.8,0.8 1.4,0.8 -0.6,0.3 0.1,0.4 -0.7,-0.3 -0.6,0.8 0,0.1 -0.1,0 -0.4,0 0.5,0.4 -0.1,0.3 0.1,0.3 -1.2,-1 -0.5,-0.3 -0.1,-0.2 0,-0.1 0,-1 z",TG:"m 338.03,196.79 1.3,3.7 0.1,5.4 -0.4,0.1 -0.5,0.2 -1.2,-1.5 -0.3,-6.4 -1,-1.8 1.2,0.3 z",LA:"m 542.13,189.59 -1.3,0.8 -3.1,-0.1 0.8,-2.7 -1.7,-1.6 0.2,-1.6 -1.6,-1.9 -1.2,-0.2 -1.5,1.2 -1,-0.8 -1.8,1.5 0.2,-4 -1.5,0 -0.7,-1.6 1.2,-2 0.9,-0.5 1,0.9 -0.4,-2.3 1.2,-0.3 1.6,1.7 0.3,1.4 1.8,-0.2 1.7,1.8 -2.1,1.5 1.7,1 3.4,3.5 2.2,3.4 z",AF:"m 479.73,143.39 -1,0.3 0.3,0.2 -3.8,0.4 -2.7,1.7 0.9,1.9 -1.1,2.4 -2,0.1 0.6,1.5 -1.5,0.5 -0.4,2.5 -2.3,0.2 -3.4,1.9 -0.3,2.3 -4,0.9 -3.1,0 -3.1,-1 1.8,-2.1 -0.2,-1.1 -1.7,-0.2 -0.5,-3.3 1.4,-5.5 1.9,1 4.2,-2.4 0.6,-1.8 1.9,-1.1 1.4,0.5 1.4,0.3 1,0 2.9,0.2 1.6,-0.9 0.9,-1.8 2,1 0,2.6 3.2,-1.7 z",UA:"m 378.73,117.59 0.3,-0.7 0.4,-1 0.2,-1.1 2.8,-2.5 -0.9,-2.5 1.5,-0.9 2.6,-0.1 2.9,0.8 3.9,0.6 2.3,-0.5 0.8,-1.3 1.6,-0.1 3.9,-0.6 1.2,1.5 -0.5,1.3 1.7,0.1 1.1,2.2 3.4,-0.2 3.4,1.4 1.8,1.5 -0.8,1.2 0.1,2.3 -1.8,-0.1 -1.2,1.8 -4.4,1.1 -2.1,1.2 1.5,2.5 -3.1,1.7 -2.1,-2.9 1.7,-0.7 -3.9,-0.7 1.2,-0.6 -2.3,-0.4 -2.6,2.4 -0.2,1 -1.7,-0.1 -1.1,-0.5 1.4,-2.4 2.2,0.2 -1.9,-2.8 0.3,-0.8 -2.9,-1.4 -2.2,0.4 -2.6,0.9 -4.5,-0.1 -0.5,-0.4 z m 15.3,4.9 0.5,0.7 0.2,-0.2 -0.6,-0.6 z m 7.4,0.7 1.8,1 -0.3,-0.9 -1.2,-0.6 z",SK:"m 379.43,115.89 -0.4,1 -0.3,0.7 -3.2,-0.3 -1.1,0.9 -4,1 -1.3,-0.6 -0.6,-0.9 0.2,-0.6 2.2,-1.2 1.4,-1.1 5.8,0.4 z",JK:"m 485.23,147.19 -1.4,0.9 -0.5,-1.2 1.1,0.4 z",BG:"m 391.03,128.69 -1.7,3.1 0.6,1 -1.8,-0.2 -1.4,0.8 -2.1,1.1 -1.4,-0.8 -3,0.6 0.1,-1 -1.2,-1.3 1.1,-1.8 -1.1,-1.6 0.6,-1 1.2,0.8 3.9,0.5 3.2,-1.2 z",QA:"m 433.63,169.69 -0.2,-1.5 1.6,-0.8 -0.7,2.6 -0.4,0.1 z",LI:"m 354.53,120.39 0.2,0.3 -0.1,0.2 -0.2,-0.1 z",AT:"m 354.63,120.89 0.1,-0.2 -0.2,-0.3 0.3,-0.4 -0.2,-0.2 0.2,0 0.1,-0.1 2.4,0.3 2.3,-0.7 1.6,0.5 -0.5,-1.5 2,-1.6 1.7,0.4 0.5,-0.9 3.8,0.9 -0.2,0.6 0.6,0.9 -1.1,0.6 -0.9,2.1 -3,1.2 -1.6,-0.4 -2.5,-0.4 -0.4,-0.9 -3.3,0.5 -0.7,0.1 z",SZ:"m 397.43,268.29 0.2,0.6 0.2,1.2 -1.9,0.7 -0.6,-1.6 1.1,-1.4 z",HU:"m 378.73,117.59 0.9,0.7 0.5,0.4 -1.7,1.1 -1.6,2.9 -1.8,0.4 -1.3,-0.1 -1.2,0.6 -3,-0.1 -1.6,-1.3 -0.5,-0.9 -0.3,0 0.9,-2.1 1.1,-0.6 1.3,0.6 4,-1 1.1,-0.9 z",RO:"m 379.73,127.59 -2.5,-1.3 0.2,-0.9 -2.4,-2.3 1.8,-0.4 1.6,-2.9 1.7,-1.1 4.5,0.1 2.6,-0.9 0.8,0.3 2.4,3.7 -0.1,2.8 1.1,0.5 1.7,0.1 -2,2.1 -0.1,1.3 -3,-1 -3.2,1.2 -3.9,-0.5 z",NE:"m 343.23,195.39 -1.5,-1.3 -0.8,0.9 -0.4,-1.3 -2.3,-0.9 -1.5,-3.6 2.1,-0.7 4.2,-0.2 1.3,-2 0.1,-5.4 3,-0.6 3.2,-2.8 8.6,-5.3 2.9,0.7 1.4,1.1 1.5,-0.8 0.3,3.1 1.6,2.2 -0.5,0.9 -0.5,5.9 -3.9,4.9 0.3,1.3 -2.1,1.3 -2,-0.6 -2.5,0.2 -1,0.8 -3.4,-1 -1.7,0.7 -2.8,-1.7 -2.6,0.8 z",LU:"m 348.43,114.99 -0.7,0 -0.3,-0.2 -0.2,-0.9 0.8,-0.6 0.7,0.8 z",AD:"m 339.03,131.39 0.6,-0.1 -0.1,0.3 -0.3,0.2 z",CI:"m 331.13,199.69 0.4,2.4 -1.4,2.6 0.7,3.3 -5.7,0.2 -3.3,1.3 0.1,-2.8 -2.1,-1.3 0.2,-2 1.2,-3.6 -0.2,-1.4 3.3,-0.2 1.4,-0.3 1.6,1.4 2.8,-0.5 z m -0.8,8.4 -0.3,-0.1 0.3,0 z",LR:"m 320.03,203.39 -0.2,2 2.1,1.3 -0.1,2.8 -3.3,-1.5 -4.2,-3.4 1.7,-1.6 0.6,-1.4 1.5,0.3 0.7,2.2 z",BN:"m 556.53,208.59 0.2,-0.1 0,-0.1 0.4,1.2 z m -2,0.4 1.1,-0.2 0.8,-0.3 -0.7,1.6 z",IQ:"m 429.23,158.99 -0.8,-0.2 -0.3,0.1 -1.6,0.1 -1.1,1.8 -3.6,-0.2 -5,-3.9 -3.1,-1.8 -2.5,-0.4 -0.1,-0.8 -0.6,-1.9 3.7,-2 1,-1 0.3,-3.8 1.9,-1.3 0.7,-0.5 3.9,0.4 1,2.6 2,0.4 -1.8,3.9 1.7,2.2 2.1,1.2 0.9,1.3 -0.3,1.6 z",GE:"m 422.43,134.39 -1.5,0.1 -1.5,0.3 -1.2,-1.1 -2.4,0.2 -0.1,-2.6 -2.9,-1.8 5.5,0.6 2.1,1.4 1.7,-0.4 3.1,1.9 0.1,1.9 z",GM:"m 304.23,192.79 -0.1,-0.6 0.5,-0.4 3.2,-0.4 -1.8,1.2 z",CH:"m 353.93,119.39 0,0 0,0 0,0 0.6,0.4 0.1,0 0.2,0.2 -0.3,0.4 -0.1,0.4 0.2,0.1 1,0.5 0.7,-0.1 -0.9,1.2 -2.2,0.7 -1.5,-0.4 -2,0.8 -0.5,-0.5 0.1,-0.7 -0.3,-0.3 -0.5,0.4 -0.3,0.2 -0.2,-0.7 2.8,-2.4 1.7,0 z",TD:"m 364.03,192.99 0.6,-0.2 -0.8,-0.1 0,0 -0.2,-0.1 0.1,0.1 -0.5,0.1 -0.9,-1.3 -0.3,-1.3 3.9,-4.9 0.5,-5.9 0.5,-0.9 -1.6,-2.2 -0.3,-3.1 1.9,-0.9 15.3,7.9 0,7.4 -1.7,0.1 -1.1,3 -0.9,0.7 0.3,2 1.2,3.5 -0.7,-0.1 -3.9,3.5 -2.6,0.3 -0.9,1.8 -3.5,1 -2.5,0 -0.6,-1.8 -2.3,-2.2 0.4,-0.7 2.9,0 -1.2,-1.5 0.2,-1.5 z",KV:"m 375.73,132.99 -0.2,-0.7 -0.8,-0.8 -0.1,-0.4 0.6,-0.3 0.8,-1 1.9,1.4 -0.3,1 -0.9,0.1 z",LB:"m 403.53,152.39 0.9,-1.7 0.7,-1.6 1.3,0.9 -1.5,1.7 -0.7,0.7 z",DJ:"m 418.53,196.79 -1.9,0.1 -0.3,-0.3 0.2,-0.2 -0.2,-0.2 -0.1,-0.5 1.2,-1.8 0.6,0.2 0.8,-0.6 0.5,1.4 -0.2,0.9 z",BI:"m 393.13,226.19 -0.6,-1 -0.3,-1.1 0,-0.5 -0.4,-0.7 1.7,-0.1 1.3,-0.5 0.5,1.6 z",SR:"m 231.73,213.29 -2.6,-0.3 -1,1.1 -3,-4.3 1.6,-2.5 0.5,-1 5.6,0.4 -0.2,0.9 -0.6,0.8 0.9,2.8 z",IL:"m 401.83,156.19 1.2,-2.1 0.5,-1.7 0.7,0 0.7,-0.7 0.1,1 -0.3,0.4 -0.3,0.3 0,1.8 -0.4,0.5 0.1,0.4 -0.1,0.2 0.1,0 -0.1,0.2 0.1,0.1 -0.5,1.4 -0.4,1.8 -0.1,0.2 0,0 -0.1,-0.5 z",ML:"m 325.73,197.89 -1.4,0.3 -3.3,0.2 -0.8,-2.3 -1.5,-2.2 -2.9,1.1 -1.3,-0.9 -1.4,-2.6 -0.3,-2 1,-1.5 1.9,0.2 10,-0.1 -2,-18.9 3.3,0 11.5,7.8 1.4,1.8 2.5,0.8 -0.2,1.3 2.2,0 -0.1,5.4 -1.3,2 -4.2,0.2 -2.1,0.7 -1.8,-0.3 -2.7,1.8 -1.4,0.2 -1.3,1.7 -1,-0.5 -1,2.4 -1.1,0.4 z",SN:"m 304.23,194.19 -0.1,-0.9 0.1,-0.5 1.8,-0.2 1.8,-1.2 -3.2,0.4 -1.1,-2.6 1.1,-1.8 0.4,-1.2 3.8,-0.4 4,3.7 0.3,2 1.4,2.6 -1.9,0.1 -2.6,-0.7 -2.8,0 z",GN:"m 314.53,194.09 1.3,0.9 2.9,-1.1 1.5,2.2 0.8,2.3 0.2,1.4 -1.2,3.6 -1.2,0.7 -0.7,-2.2 -1.5,-0.3 -1.9,-2.9 -2.4,0.3 -1.5,1.5 -1,-1.5 -2.3,-2.2 0.6,-1 1.9,-0.4 0,-1.9 2.6,0.7 z",ZW:"m 384.63,251.99 2.8,0.5 0.6,-0.2 2.1,-2.2 0,0 1.2,-0.6 0.2,-0.9 3,-0.8 4.9,2 0.1,3.3 -0.5,2.2 0.5,1.1 -1.2,2.5 -2.1,2.2 -1.8,-0.1 -1.9,-0.3 -2.6,-1.2 -0.6,-2.2 -3,-2 z",PL:"m 373.83,102.19 -0.4,0.5 0.7,-0.5 5.6,0.3 0.2,0 1.3,0.5 0,0.6 0.8,3.3 -1.4,0.9 0.9,2 0.9,2.5 -2.8,2.5 -0.2,1.1 -1.3,-0.7 -5.8,-0.4 -0.5,-0.9 -4.1,-1.7 -3.1,-0.7 -0.3,-4.4 -1,-0.7 0.3,-2.2 0.7,-0.4 -0.8,-0.1 -0.1,-0.1 0.1,0 3.7,-1 0.8,-0.7 3.3,-0.7 0.6,1.1 1.9,-0.1 z",MK:"m 376.43,135.29 0,0 0,0.1 z m 2.7,-3.3 1.2,1.3 -0.1,1 -2,0.5 -1.5,0.6 -0.3,-0.4 0,0.3 0,-0.1 0,0 -0.2,0 -0.2,0 0.1,-0.4 -0.3,0 -0.4,-1 0.3,-0.8 1,-0.7 0.9,-0.1 0.7,-0.2 z",PY:"m 232.43,264.39 -0.3,0.8 -0.4,2 0.1,0.2 -0.1,0.1 -0.3,2.2 -1.9,1.6 -5.4,-0.2 2,-3.9 -4.8,-2.9 -1.8,-0.4 -3.2,-3.1 0.8,-3.4 0.9,-1.8 5.1,-0.7 1.8,1.7 0.7,1.6 -0.3,2.2 3,0.1 1.5,1.1 0.4,2.6 z",BY:"m 381.53,109.79 -0.9,-2 1.4,-0.9 -0.8,-3.3 1.8,0.1 2,-1.1 0.8,-1.7 1.7,-1 -0.3,-0.9 1.9,-0.4 1.1,-0.9 5.2,1.4 1.7,4.8 1.8,1 -2.8,1.1 1,2.3 -1.6,0.1 -0.8,1.3 -2.3,0.5 -3.9,-0.6 -2.9,-0.8 -2.6,0.1 z",CZ:"m 372.33,114.79 -1.4,1.1 -2.2,1.2 -3.8,-0.9 -0.5,0.9 -1.7,-0.4 -2.7,-2.4 0.2,-1.6 4.4,-1.2 3.1,0.7 4.1,1.7 z",BF:"m 338.03,196.79 -0.8,0 -1.2,-0.3 -5,0.3 0.1,2.9 -1,-0.9 -2.8,0.5 -1.6,-1.4 0.7,-3 1.1,-0.4 1,-2.4 1,0.5 1.3,-1.7 1.4,-0.2 2.7,-1.8 1.8,0.3 1.5,3.6 2.3,0.9 0.4,1.3 -1.9,0.9 z",NA:"m 381.03,251.69 1.6,-0.3 2,0.6 -3.2,1.3 -0.5,-0.9 -4.5,0.6 0.1,7.2 -2,0.1 0,5.5 0,7.5 -1.6,1.1 -3.3,-0.5 -0.6,-1.4 -1.2,1.2 -2.2,-2.6 -1.4,-5.6 -0.4,-4.6 -1.9,-2.9 -1.6,-3.5 -1,-1.1 -0.5,-2.5 2.7,-0.6 1.5,0.9 8.6,0 0.6,0.7 3.9,0.5 z",LY:"m 365.03,173.19 -1.5,0.8 -1.4,-1.1 -2.9,-0.7 -0.8,-1.6 -2.9,-1.1 -1.2,-2.6 0.8,-0.8 0,-5.4 -0.6,-2.3 1.4,-1.4 -0.3,-1.1 2.8,-2.2 -0.1,-1.5 1.6,0.8 1.9,-0.2 3.5,1.1 1.7,2.3 2.5,0.4 3.3,1.8 1.3,-0.5 0.3,-2.7 1.2,-1.7 2.1,-0.8 2.8,0.7 0,0.6 3.6,0.8 0.3,0.6 -0.9,3.1 0.6,2.1 0,14.6 0,4 -1.9,0 0,1 -15.3,-7.9 z",TN:"m 358.33,152.19 0.1,1.5 -2.8,2.2 0.3,1.1 -1.4,1.4 -0.9,-3.8 -1.4,-1 -1.6,-2.9 1.4,-1.6 0.3,-3.9 0.4,-1.1 2.2,-0.9 2.7,4.6 -1.9,2 0.4,1.3 1.4,-0.2 z",BT:"m 506.53,164.49 2.5,-2.2 2.7,1.3 0.9,1.7 -4.4,0.4 z",MD:"m 390.33,124.69 0.1,-2.8 -2.4,-3.7 -0.8,-0.3 2.2,-0.4 2.9,1.4 -0.3,0.8 1.9,2.8 -2.2,-0.2 z",SS:"m 401.33,209.69 -0.9,0.9 -5.1,0.5 -2,-2 -2.7,0.5 -1.8,-1.5 -1.9,-1.9 -0.1,-1.1 -2,-1.3 -2.2,-2.6 1.7,-3.1 1.4,-0.2 1.4,1.7 4.4,0.4 2.2,-1.8 2.4,0.9 2.2,-2.4 -0.6,-1.9 2.2,-0.4 -0.1,2.7 1.7,2.6 -0.2,2 -1.4,-0.1 -0.3,1.3 1.2,0.3 2,1.9 2.3,3.9 -1,-0.8 z",BW:"m 384.63,251.99 1.7,3.3 3,2 0.6,2.2 2.6,1.2 -2.2,0.9 -2.3,2 -0.3,1.3 -1.9,0.9 -0.5,1.8 -1.5,0.4 -3.4,-1.1 -0.6,1.4 -2,1.8 -1.9,0.1 0.3,-1.6 -1.7,-2.8 0,-5.5 2,-0.1 -0.1,-7.2 4.5,-0.6 0.5,0.9 z",BS:"m 191.33,169.99 -1.3,-1.4 0,0 0,0 0.5,0.3 0.8,1.1 z m 0,0 0.8,0.9 0.5,2.1 4.4,1.5 -4,-1 -2.2,-1.6 1.1,-1.1 -0.6,-0.8 z m -1.3,-1.4 -1.6,-1.2 -1.4,1.5 0.7,2.9 -1.3,-1.9 0.1,-1.1 1.9,-1.9 1.6,1.7 0,0 z",NZ:"m 661.13,313.49 -2.7,-0.1 -0.2,1.4 -0.8,-2.2 -1.8,0.1 -0.6,-1 0.9,-1.6 2.7,-2.6 2.6,-1.1 2.7,-2.2 1.9,-3.9 1.2,-0.9 0.7,1.8 1.4,-0.9 0.7,2.2 -3.4,4.3 -2.1,1.3 -1.3,3.3 z m 12.3,-12.7 -1.6,1.1 -1.2,-0.7 1.2,-2.3 -2.8,-2 1.6,-1.3 0.4,-2.3 -0.9,-2.5 -2.4,-3.1 1.5,-0.5 2.4,2.7 1.4,1.1 0.2,2 2.8,0.7 2.2,-0.5 -1.4,3 -0.9,-0.1 z",CU:"m 188.73,178.29 -3,-0.4 -1.1,-1.8 -2.4,-1 -2.6,-0.2 -0.1,-1 -1.7,-0.1 -3.3,1.9 0.2,-1.2 2.2,-1.3 2.3,-0.4 3.8,0.3 1.6,1.4 0.9,-0.3 0.8,0 3.4,2.7 3.5,1.1 0.9,1.1 -6.6,0.5 z",EC:"m 182.53,224.19 1,-1.4 -2.1,-0.6 0,-2.4 1.6,-2.1 -0.1,-1.3 2.5,-1.4 2.6,1.5 2.2,0.4 1.9,1.1 -0.5,2.7 -2.1,2 -3.2,1.5 -1.4,3.1 -2.8,-1.8 z",AU:"m 617.53,306.39 -1.6,0 -1.5,-2.2 -1.1,-3.5 0,-1.4 -1.2,-0.9 4.1,2.5 3.8,-1.3 0.1,2.7 -0.5,3.3 -0.9,-0.8 z m -1.4,-54.7 0.6,2.8 5.1,2.8 0.9,3.5 2.3,0.9 0.2,1.8 1.9,1.1 1.4,2.1 1.4,-0.3 -0.6,1.6 1,3.3 0.1,3 -2.1,7.5 -1.4,0.9 -3.1,6.5 -0.4,3.5 -3.2,0.7 -3.5,2 -2.9,-0.5 0.1,-1.3 -2.8,2.1 -2.2,-1.1 -3.3,-0.7 -1.8,-1.9 -0.3,-2.6 -1.1,-1 -4.4,1.1 1.2,-1 -0.6,-1.5 2,-3.8 -1.2,0 -3.4,3.9 -0.9,-2.3 -1.7,-1.5 -0.3,-1.5 -3.7,-0.9 -2.1,-1.2 -4.1,0.5 -3.2,1.2 -2.1,-0.1 -4,2 -1.1,1.6 -6.8,0 -3,2.1 -2.4,0.4 -2.3,-0.5 -1.9,-1.6 1.3,-1.7 0.1,-3.5 -1.4,-3 0,-1.6 -1.5,-2.8 -0.3,-1.6 -2.1,-3.2 1.1,-0.5 1.1,1.9 0.1,-1.4 -1.3,-2.5 0.4,-3.9 4.3,-3.1 3.5,-0.8 6.2,-2 2.6,-2.9 -0.3,-1.8 1.5,-1.3 1.1,1.8 0.1,-2.6 1.6,0.3 0,-2.1 1.3,-1.2 2.9,-0.8 0.6,-1 2.4,1.9 2.8,0.8 -0.6,-1.3 3.1,-4.8 -1.8,-0.3 0.7,-1.1 2,0.1 0,2 2.4,-0.3 -0.2,-2.2 1.1,1.3 3.7,1.1 2.7,-0.9 0.8,1 -1.9,2.8 -0.9,2.2 2.1,1.6 4.7,2.3 1.9,1.6 1.6,-0.5 1.6,-4.6 -0.1,-5 0.7,-0.9 0.3,-3.6 0.9,1.1 1.8,5.8 0.8,1.5 1,-0.7 1.7,1.5 0.1,2.7 z",VE:"m 199.73,195.09 -1.1,0.5 0.6,1.7 -1,1.7 1.2,1.5 0.9,-1.3 -1.1,-2.1 2.8,-1.2 2.4,0 1.8,1.9 3.2,-0.4 2.9,1.1 1.6,-1 2.3,-0.3 0.9,1.4 2.8,1.3 -0.2,0.9 1.7,0.7 -1,1.4 0.4,1.3 -1.7,1.1 -0.3,1.2 1.2,1.4 -1.6,1.8 -5.9,0.5 1.2,2.9 1.3,0.1 -1.5,1.6 -2.7,1.7 -2.6,-1.1 -0.6,-2.2 -1.2,-0.9 1,-1 -1.1,-2.2 0.8,-3.1 -3.8,0.1 -1.3,-1.6 -3.8,-0.2 -0.5,-2.5 -1.2,-1.8 0.2,-2.1 1.8,-2.4 z",SB:"m 644.23,236.59 -1.9,-0.1 0,-2.4 -2.9,-1.9 -1.4,0.8 1.2,1.3 -2.6,-1.1 0.1,-1.7 3.3,0.7 2.3,1.4 0.5,1.4 1.7,-0.8 z",MG:"m 431.73,249.49 -4.3,14.5 -1,2.3 -3.7,1.2 -2.1,-1.2 -0.5,-3.1 -1.1,-2.4 0.6,-1.9 1.8,-2.6 -1,-5 1,-2.5 2.2,-0.4 3.6,-1.7 1.4,-3.3 0.9,0.1 1.1,-2.9 1.3,2.1 1,4.7 -1.6,0.2 z",IS:"m 290.23,72.39 4.3,-0.5 -0.3,-1.1 -2.3,-0.6 -2.6,0.2 1.5,-0.8 0.6,-1.4 1.9,0.4 -0.2,-1.2 2.4,1.5 -0.4,1.4 1.1,0.6 1.6,-2.4 3.4,-0.2 1.4,0.7 2.1,-0.7 -0.1,-1 3.6,1.4 -0.3,1 2,0.7 0.5,1.4 -2,2.1 -6.1,2.1 -1.9,1 -2.8,-0.5 -1.9,-1 -2.9,0.1 1.9,-1.7 -1.4,-1.3 z",EG:"m 403.13,159.99 -1.2,3.6 -2,-1.7 -1.4,-2.9 0.2,2.1 1.9,2.4 0.8,2.4 2.9,5.4 0.3,2.1 2.3,1.8 -10.8,0 -12,0 0,-14.6 -0.6,-2.1 0.9,-3.1 4.2,0.7 3.3,1.1 2.5,-1.4 2.3,0.1 1,0.8 4.1,-0.5 1.2,3.3 z",KG:"m 477.33,138.49 -2.7,0.6 -1.5,-0.9 -4.1,0.2 1.2,-1.6 1.9,0 1.4,0.2 2.8,-1.5 -2.7,-1.5 -0.6,0.7 -2.4,-1 1.5,-1.5 1.7,-1.4 3.2,1 1.3,-2 1.9,1 6.2,-0.1 3.4,1.6 -3.5,1.9 -0.5,0.7 -2.5,0.3 -2.1,1.4 -0.3,-0.7 -3,1.3 z m -5.8,-0.9 -0.3,0 0.2,0.2 0.2,-0.1 z m 2.2,-0.1 0,-0.2 -0.2,0.1 0,0.1 z m -1.2,-0.3 -0.4,-0.1 0.2,0.5 0.3,-0.1 z",NP:"m 505.03,163.39 0.1,2.3 -1.6,0.7 -2.9,-0.4 -2.4,-1.6 -3.5,-0.3 -5.2,-2.8 0.6,-1.9 1.3,-0.9 2,-0.3 2.8,2.4 1.1,-0.1 1.9,1.9 1.7,0.9 1.1,-0.4 z"}}}}),b}); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/LICENSE.txt b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/LICENSE.txt deleted file mode 100644 index 919fe6a..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/LICENSE.txt +++ /dev/null @@ -1,37 +0,0 @@ -Copyright jQuery Foundation and other contributors -https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery-mousewheel - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -All files located in the node_modules and external directories are -externally maintained libraries used by this software which have their -own licenses; we recommend you read them, as their terms may differ from -the terms above. diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/jquery.mousewheel.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/jquery.mousewheel.js deleted file mode 100644 index 3eadb7e..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-mousewheel/jquery.mousewheel.js +++ /dev/null @@ -1,221 +0,0 @@ -/*! - * jQuery Mousewheel 3.1.13 - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - */ - -(function (factory) { - if ( typeof define === 'function' && define.amd ) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS style for Browserify - module.exports = factory; - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], - toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? - ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], - slice = Array.prototype.slice, - nullLowestDeltaTimeout, lowestDelta; - - if ( $.event.fixHooks ) { - for ( var i = toFix.length; i; ) { - $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; - } - } - - var special = $.event.special.mousewheel = { - version: '3.1.12', - - setup: function() { - if ( this.addEventListener ) { - for ( var i = toBind.length; i; ) { - this.addEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = handler; - } - // Store the line height and page height for this particular element - $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); - $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); - }, - - teardown: function() { - if ( this.removeEventListener ) { - for ( var i = toBind.length; i; ) { - this.removeEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = null; - } - // Clean up the data we added to the element - $.removeData(this, 'mousewheel-line-height'); - $.removeData(this, 'mousewheel-page-height'); - }, - - getLineHeight: function(elem) { - var $elem = $(elem), - $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); - if (!$parent.length) { - $parent = $('body'); - } - return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; - }, - - getPageHeight: function(elem) { - return $(elem).height(); - }, - - settings: { - adjustOldDeltas: true, // see shouldAdjustOldDeltas() below - normalizeOffset: true // calls getBoundingClientRect for each event - } - }; - - $.fn.extend({ - mousewheel: function(fn) { - return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); - }, - - unmousewheel: function(fn) { - return this.unbind('mousewheel', fn); - } - }); - - - function handler(event) { - var orgEvent = event || window.event, - args = slice.call(arguments, 1), - delta = 0, - deltaX = 0, - deltaY = 0, - absDelta = 0, - offsetX = 0, - offsetY = 0; - event = $.event.fix(orgEvent); - event.type = 'mousewheel'; - - // Old school scrollwheel delta - if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } - if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } - if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } - if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } - - // Firefox < 17 horizontal scrolling related to DOMMouseScroll event - if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { - deltaX = deltaY * -1; - deltaY = 0; - } - - // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy - delta = deltaY === 0 ? deltaX : deltaY; - - // New school wheel delta (wheel event) - if ( 'deltaY' in orgEvent ) { - deltaY = orgEvent.deltaY * -1; - delta = deltaY; - } - if ( 'deltaX' in orgEvent ) { - deltaX = orgEvent.deltaX; - if ( deltaY === 0 ) { delta = deltaX * -1; } - } - - // No change actually happened, no reason to go any further - if ( deltaY === 0 && deltaX === 0 ) { return; } - - // Need to convert lines and pages to pixels if we aren't already in pixels - // There are three delta modes: - // * deltaMode 0 is by pixels, nothing to do - // * deltaMode 1 is by lines - // * deltaMode 2 is by pages - if ( orgEvent.deltaMode === 1 ) { - var lineHeight = $.data(this, 'mousewheel-line-height'); - delta *= lineHeight; - deltaY *= lineHeight; - deltaX *= lineHeight; - } else if ( orgEvent.deltaMode === 2 ) { - var pageHeight = $.data(this, 'mousewheel-page-height'); - delta *= pageHeight; - deltaY *= pageHeight; - deltaX *= pageHeight; - } - - // Store lowest absolute delta to normalize the delta values - absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); - - if ( !lowestDelta || absDelta < lowestDelta ) { - lowestDelta = absDelta; - - // Adjust older deltas if necessary - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { - lowestDelta /= 40; - } - } - - // Adjust older deltas if necessary - if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { - // Divide all the things by 40! - delta /= 40; - deltaX /= 40; - deltaY /= 40; - } - - // Get a whole, normalized value for the deltas - delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); - deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); - deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); - - // Normalise offsetX and offsetY properties - if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { - var boundingRect = this.getBoundingClientRect(); - offsetX = event.clientX - boundingRect.left; - offsetY = event.clientY - boundingRect.top; - } - - // Add information to the event object - event.deltaX = deltaX; - event.deltaY = deltaY; - event.deltaFactor = lowestDelta; - event.offsetX = offsetX; - event.offsetY = offsetY; - // Go ahead and set deltaMode to 0 since we converted to pixels - // Although this is a little odd since we overwrite the deltaX/Y - // properties with normalized deltas. - event.deltaMode = 0; - - // Add event and delta to the front of the arguments - args.unshift(event, delta, deltaX, deltaY); - - // Clearout lowestDelta after sometime to better - // handle multiple device types that give different - // a different lowestDelta - // Ex: trackpad = 3 and mouse wheel = 120 - if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } - nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); - - return ($.event.dispatch || $.event.handle).apply(this, args); - } - - function nullLowestDelta() { - lowestDelta = null; - } - - function shouldAdjustOldDeltas(orgEvent, absDelta) { - // If this is an older event and the delta is divisable by 120, - // then we are assuming that the browser is treating this as an - // older mouse wheel event and that we should divide the deltas - // by 40 to try and get a more usable deltaFactor. - // Side note, this actually impacts the reported scroll distance - // in older browsers and can cause scrolling to be slower than native. - // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. - return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; - } - -})); diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.js deleted file mode 100644 index 168cc6d..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.js +++ /dev/null @@ -1,1512 +0,0 @@ -/*! - * jQuery Validation Plugin v1.19.1 - * - * https://jqueryvalidation.org/ - * - * Copyright (c) 2019 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery", "./jquery.validate"], factory ); - } else if (typeof module === "object" && module.exports) { - module.exports = factory( require( "jquery" ) ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -( function() { - - function stripHtml( value ) { - - // Remove html tags and space chars - return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " ) - - // Remove punctuation - .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" ); - } - - $.validator.addMethod( "maxWords", function( value, element, params ) { - return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params; - }, $.validator.format( "Please enter {0} words or less." ) ); - - $.validator.addMethod( "minWords", function( value, element, params ) { - return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params; - }, $.validator.format( "Please enter at least {0} words." ) ); - - $.validator.addMethod( "rangeWords", function( value, element, params ) { - var valueStripped = stripHtml( value ), - regex = /\b\w+\b/g; - return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ]; - }, $.validator.format( "Please enter between {0} and {1} words." ) ); - -}() ); - -/** - * This is used in the United States to process payments, deposits, - * or transfers using the Automated Clearing House (ACH) or Fedwire - * systems. A very common use case would be to validate a form for - * an ACH bill payment. - */ -$.validator.addMethod( "abaRoutingNumber", function( value ) { - var checksum = 0; - var tokens = value.split( "" ); - var length = tokens.length; - - // Length Check - if ( length !== 9 ) { - return false; - } - - // Calc the checksum - // https://en.wikipedia.org/wiki/ABA_routing_transit_number - for ( var i = 0; i < length; i += 3 ) { - checksum += parseInt( tokens[ i ], 10 ) * 3 + - parseInt( tokens[ i + 1 ], 10 ) * 7 + - parseInt( tokens[ i + 2 ], 10 ); - } - - // If not zero and divisible by 10 then valid - if ( checksum !== 0 && checksum % 10 === 0 ) { - return true; - } - - return false; -}, "Please enter a valid routing number." ); - -// Accept a value from a file input based on a required mimetype -$.validator.addMethod( "accept", function( value, element, param ) { - - // Split mime on commas in case we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*", - optionalValue = this.optional( element ), - i, file, regex; - - // Element is optional - if ( optionalValue ) { - return optionalValue; - } - - if ( $( element ).attr( "type" ) === "file" ) { - - // Escape string to be used in the regex - // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - // Escape also "/*" as "/.*" as a wildcard - typeParam = typeParam - .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" ) - .replace( /,/g, "|" ) - .replace( /\/\*/g, "/.*" ); - - // Check if the element has a FileList before checking each file - if ( element.files && element.files.length ) { - regex = new RegExp( ".?(" + typeParam + ")$", "i" ); - for ( i = 0; i < element.files.length; i++ ) { - file = element.files[ i ]; - - // Grab the mimetype from the loaded file, verify it matches - if ( !file.type.match( regex ) ) { - return false; - } - } - } - } - - // Either return true because we've validated each file, or because the - // browser does not support element.files and the FileList feature - return true; -}, $.validator.format( "Please enter a value with a valid mimetype." ) ); - -$.validator.addMethod( "alphanumeric", function( value, element ) { - return this.optional( element ) || /^\w+$/i.test( value ); -}, "Letters, numbers, and underscores only please" ); - -/* - * Dutch bank account numbers (not 'giro' numbers) have 9 digits - * and pass the '11 check'. - * We accept the notation with spaces, as that is common. - * acceptable: 123456789 or 12 34 56 789 - */ -$.validator.addMethod( "bankaccountNL", function( value, element ) { - if ( this.optional( element ) ) { - return true; - } - if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) { - return false; - } - - // Now '11 check' - var account = value.replace( / /g, "" ), // Remove spaces - sum = 0, - len = account.length, - pos, factor, digit; - for ( pos = 0; pos < len; pos++ ) { - factor = len - pos; - digit = account.substring( pos, pos + 1 ); - sum = sum + factor * digit; - } - return sum % 11 === 0; -}, "Please specify a valid bank account number" ); - -$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) { - return this.optional( element ) || - ( $.validator.methods.bankaccountNL.call( this, value, element ) ) || - ( $.validator.methods.giroaccountNL.call( this, value, element ) ); -}, "Please specify a valid bank or giro account number" ); - -/** - * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. - * - * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) - * - * Validation is case-insensitive. Please make sure to normalize input yourself. - * - * BIC definition in detail: - * - First 4 characters - bank code (only letters) - * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) - * - Next 2 characters - location code (letters and digits) - * a. shall not start with '0' or '1' - * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing) - * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) - */ -$.validator.addMethod( "bic", function( value, element ) { - return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() ); -}, "Please specify a valid BIC code" ); - -/* - * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities - * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal - * - * Spanish CIF structure: - * - * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ] - * - * Where: - * - * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW] - * P: 2 characters. Province. - * N: 5 characters. Secuencial Number within the province. - * C: 1 character. Control Digit: [0-9A-J]. - * - * [ T ]: Kind of Organizations. Possible values: - * - * A. Corporations - * B. LLCs - * C. General partnerships - * D. Companies limited partnerships - * E. Communities of goods - * F. Cooperative Societies - * G. Associations - * H. Communities of homeowners in horizontal property regime - * J. Civil Societies - * K. Old format - * L. Old format - * M. Old format - * N. Nonresident entities - * P. Local authorities - * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions - * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008) - * S. Organs of State Administration and regions - * V. Agrarian Transformation - * W. Permanent establishments of non-resident in Spain - * - * [ C ]: Control Digit. It can be a number or a letter depending on T value: - * [ T ] --> [ C ] - * ------ ---------- - * A Number - * B Number - * E Number - * H Number - * K Letter - * P Letter - * Q Letter - * S Letter - * - */ -$.validator.addMethod( "cifES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi ); - var letter = value.substring( 0, 1 ), // [ T ] - number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ] - control = value.substring( 8, 9 ), // [ C ] - all_sum = 0, - even_sum = 0, - odd_sum = 0, - i, n, - control_digit, - control_letter; - - function isOdd( n ) { - return n % 2 === 0; - } - - // Quick format test - if ( value.length !== 9 || !cifRegEx.test( value ) ) { - return false; - } - - for ( i = 0; i < number.length; i++ ) { - n = parseInt( number[ i ], 10 ); - - // Odd positions - if ( isOdd( i ) ) { - - // Odd positions are multiplied first. - n *= 2; - - // If the multiplication is bigger than 10 we need to adjust - odd_sum += n < 10 ? n : n - 9; - - // Even positions - // Just sum them - } else { - even_sum += n; - } - } - - all_sum = even_sum + odd_sum; - control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString(); - control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit; - control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString(); - - // Control must be a digit - if ( letter.match( /[ABEH]/ ) ) { - return control === control_digit; - - // Control must be a letter - } else if ( letter.match( /[KPQS]/ ) ) { - return control === control_letter; - } - - // Can be either - return control === control_digit || control === control_letter; - -}, "Please specify a valid CIF number." ); - -/* - * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number. - * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. - */ -$.validator.addMethod( "cnhBR", function( value ) { - - // Removing special characters from value - value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); - - // Checking value to have 11 digits only - if ( value.length !== 11 ) { - return false; - } - - var sum = 0, dsc = 0, firstChar, - firstCN, secondCN, i, j, v; - - firstChar = value.charAt( 0 ); - - if ( new Array( 12 ).join( firstChar ) === value ) { - return false; - } - - // Step 1 - using first Check Number: - for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) { - sum += +( value.charAt( i ) * j ); - } - - firstCN = sum % 11; - if ( firstCN >= 10 ) { - firstCN = 0; - dsc = 2; - } - - sum = 0; - for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) { - sum += +( value.charAt( i ) * j ); - } - - secondCN = sum % 11; - if ( secondCN >= 10 ) { - secondCN = 0; - } else { - secondCN = secondCN - dsc; - } - - return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) ); - -}, "Please specify a valid CNH number" ); - -/* - * Brazillian value number (Cadastrado de Pessoas Juridica). - * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation. - */ -$.validator.addMethod( "cnpjBR", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - // Removing no number - value = value.replace( /[^\d]+/g, "" ); - - // Checking value to have 14 digits only - if ( value.length !== 14 ) { - return false; - } - - // Elimina values invalidos conhecidos - if ( value === "00000000000000" || - value === "11111111111111" || - value === "22222222222222" || - value === "33333333333333" || - value === "44444444444444" || - value === "55555555555555" || - value === "66666666666666" || - value === "77777777777777" || - value === "88888888888888" || - value === "99999999999999" ) { - return false; - } - - // Valida DVs - var tamanho = ( value.length - 2 ); - var numeros = value.substring( 0, tamanho ); - var digitos = value.substring( tamanho ); - var soma = 0; - var pos = tamanho - 7; - - for ( var i = tamanho; i >= 1; i-- ) { - soma += numeros.charAt( tamanho - i ) * pos--; - if ( pos < 2 ) { - pos = 9; - } - } - - var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; - - if ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) { - return false; - } - - tamanho = tamanho + 1; - numeros = value.substring( 0, tamanho ); - soma = 0; - pos = tamanho - 7; - - for ( var il = tamanho; il >= 1; il-- ) { - soma += numeros.charAt( tamanho - il ) * pos--; - if ( pos < 2 ) { - pos = 9; - } - } - - resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; - - if ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) { - return false; - } - - return true; - -}, "Please specify a CNPJ value number" ); - -/* - * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. - * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. - */ -$.validator.addMethod( "cpfBR", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - // Removing special characters from value - value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); - - // Checking value to have 11 digits only - if ( value.length !== 11 ) { - return false; - } - - var sum = 0, - firstCN, secondCN, checkResult, i; - - firstCN = parseInt( value.substring( 9, 10 ), 10 ); - secondCN = parseInt( value.substring( 10, 11 ), 10 ); - - checkResult = function( sum, cn ) { - var result = ( sum * 10 ) % 11; - if ( ( result === 10 ) || ( result === 11 ) ) { - result = 0; - } - return ( result === cn ); - }; - - // Checking for dump data - if ( value === "" || - value === "00000000000" || - value === "11111111111" || - value === "22222222222" || - value === "33333333333" || - value === "44444444444" || - value === "55555555555" || - value === "66666666666" || - value === "77777777777" || - value === "88888888888" || - value === "99999999999" - ) { - return false; - } - - // Step 1 - using first Check Number: - for ( i = 1; i <= 9; i++ ) { - sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i ); - } - - // If first Check Number (CN) is valid, move to Step 2 - using second Check Number: - if ( checkResult( sum, firstCN ) ) { - sum = 0; - for ( i = 1; i <= 10; i++ ) { - sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i ); - } - return checkResult( sum, secondCN ); - } - return false; - -}, "Please specify a valid CPF number" ); - -// https://jqueryvalidation.org/creditcard-method/ -// based on https://en.wikipedia.org/wiki/Luhn_algorithm -$.validator.addMethod( "creditcard", function( value, element ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - - // Accept only spaces, digits and dashes - if ( /[^0-9 \-]+/.test( value ) ) { - return false; - } - - var nCheck = 0, - nDigit = 0, - bEven = false, - n, cDigit; - - value = value.replace( /\D/g, "" ); - - // Basing min and max length on - // https://dev.ean.com/general-info/valid-card-types/ - if ( value.length < 13 || value.length > 19 ) { - return false; - } - - for ( n = value.length - 1; n >= 0; n-- ) { - cDigit = value.charAt( n ); - nDigit = parseInt( cDigit, 10 ); - if ( bEven ) { - if ( ( nDigit *= 2 ) > 9 ) { - nDigit -= 9; - } - } - - nCheck += nDigit; - bEven = !bEven; - } - - return ( nCheck % 10 ) === 0; -}, "Please enter a valid credit card number." ); - -/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator - * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 - * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) - */ -$.validator.addMethod( "creditcardtypes", function( value, element, param ) { - if ( /[^0-9\-]+/.test( value ) ) { - return false; - } - - value = value.replace( /\D/g, "" ); - - var validTypes = 0x0000; - - if ( param.mastercard ) { - validTypes |= 0x0001; - } - if ( param.visa ) { - validTypes |= 0x0002; - } - if ( param.amex ) { - validTypes |= 0x0004; - } - if ( param.dinersclub ) { - validTypes |= 0x0008; - } - if ( param.enroute ) { - validTypes |= 0x0010; - } - if ( param.discover ) { - validTypes |= 0x0020; - } - if ( param.jcb ) { - validTypes |= 0x0040; - } - if ( param.unknown ) { - validTypes |= 0x0080; - } - if ( param.all ) { - validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; - } - if ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard - return value.length === 16; - } - if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa - return value.length === 16; - } - if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex - return value.length === 15; - } - if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub - return value.length === 14; - } - if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute - return value.length === 15; - } - if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover - return value.length === 16; - } - if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb - return value.length === 16; - } - if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb - return value.length === 15; - } - if ( validTypes & 0x0080 ) { // Unknown - return true; - } - return false; -}, "Please enter a valid credit card number." ); - -/** - * Validates currencies with any given symbols by @jameslouiz - * Symbols can be optional or required. Symbols required by default - * - * Usage examples: - * currency: ["£", false] - Use false for soft currency validation - * currency: ["$", false] - * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc - * - * - * - * Soft symbol checking - * currencyInput: { - * currency: ["$", false] - * } - * - * Strict symbol checking (default) - * currencyInput: { - * currency: "$" - * //OR - * currency: ["$", true] - * } - * - * Multiple Symbols - * currencyInput: { - * currency: "$,£,¢" - * } - */ -$.validator.addMethod( "currency", function( value, element, param ) { - var isParamString = typeof param === "string", - symbol = isParamString ? param : param[ 0 ], - soft = isParamString ? true : param[ 1 ], - regex; - - symbol = symbol.replace( /,/g, "" ); - symbol = soft ? symbol + "]" : symbol + "]?"; - regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$"; - regex = new RegExp( regex ); - return this.optional( element ) || regex.test( value ); - -}, "Please specify a valid currency" ); - -$.validator.addMethod( "dateFA", function( value, element ) { - return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value ); -}, $.validator.messages.date ); - -/** - * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. - * - * @example $.validator.methods.date("01/01/1900") - * @result true - * - * @example $.validator.methods.date("01/13/1990") - * @result false - * - * @example $.validator.methods.date("01.01.1900") - * @result false - * - * @example - * @desc Declares an optional input element whose value must be a valid date. - * - * @name $.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "dateITA", function( value, element ) { - var check = false, - re = /^\d{1,2}\/\d{1,2}\/\d{4}$/, - adata, gg, mm, aaaa, xdata; - if ( re.test( value ) ) { - adata = value.split( "/" ); - gg = parseInt( adata[ 0 ], 10 ); - mm = parseInt( adata[ 1 ], 10 ); - aaaa = parseInt( adata[ 2 ], 10 ); - xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) ); - if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) { - check = true; - } else { - check = false; - } - } else { - check = false; - } - return this.optional( element ) || check; -}, $.validator.messages.date ); - -$.validator.addMethod( "dateNL", function( value, element ) { - return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value ); -}, $.validator.messages.date ); - -// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept -$.validator.addMethod( "extension", function( value, element, param ) { - param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif"; - return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) ); -}, $.validator.format( "Please enter a value with a valid extension." ) ); - -/** - * Dutch giro account numbers (not bank numbers) have max 7 digits - */ -$.validator.addMethod( "giroaccountNL", function( value, element ) { - return this.optional( element ) || /^[0-9]{1,7}$/.test( value ); -}, "Please specify a valid giro account number" ); - -$.validator.addMethod( "greaterThan", function( value, element, param ) { - var target = $( param ); - - if ( this.settings.onfocusout && target.not( ".validate-greaterThan-blur" ).length ) { - target.addClass( "validate-greaterThan-blur" ).on( "blur.validate-greaterThan", function() { - $( element ).valid(); - } ); - } - - return value > target.val(); -}, "Please enter a greater value." ); - -$.validator.addMethod( "greaterThanEqual", function( value, element, param ) { - var target = $( param ); - - if ( this.settings.onfocusout && target.not( ".validate-greaterThanEqual-blur" ).length ) { - target.addClass( "validate-greaterThanEqual-blur" ).on( "blur.validate-greaterThanEqual", function() { - $( element ).valid(); - } ); - } - - return value >= target.val(); -}, "Please enter a greater value." ); - -/** - * IBAN is the international bank account number. - * It has a country - specific format, that is checked here too - * - * Validation is case-insensitive. Please make sure to normalize input yourself. - */ -$.validator.addMethod( "iban", function( value, element ) { - - // Some quick simple tests to prevent needless work - if ( this.optional( element ) ) { - return true; - } - - // Remove spaces and to upper case - var iban = value.replace( / /g, "" ).toUpperCase(), - ibancheckdigits = "", - leadingZeroes = true, - cRest = "", - cOperator = "", - countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p; - - // Check for IBAN code length. - // It contains: - // country code ISO 3166-1 - two letters, - // two check digits, - // Basic Bank Account Number (BBAN) - up to 30 chars - var minimalIBANlength = 5; - if ( iban.length < minimalIBANlength ) { - return false; - } - - // Check the country code and find the country specific format - countrycode = iban.substring( 0, 2 ); - bbancountrypatterns = { - "AL": "\\d{8}[\\dA-Z]{16}", - "AD": "\\d{8}[\\dA-Z]{12}", - "AT": "\\d{16}", - "AZ": "[\\dA-Z]{4}\\d{20}", - "BE": "\\d{12}", - "BH": "[A-Z]{4}[\\dA-Z]{14}", - "BA": "\\d{16}", - "BR": "\\d{23}[A-Z][\\dA-Z]", - "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}", - "CR": "\\d{17}", - "HR": "\\d{17}", - "CY": "\\d{8}[\\dA-Z]{16}", - "CZ": "\\d{20}", - "DK": "\\d{14}", - "DO": "[A-Z]{4}\\d{20}", - "EE": "\\d{16}", - "FO": "\\d{14}", - "FI": "\\d{14}", - "FR": "\\d{10}[\\dA-Z]{11}\\d{2}", - "GE": "[\\dA-Z]{2}\\d{16}", - "DE": "\\d{18}", - "GI": "[A-Z]{4}[\\dA-Z]{15}", - "GR": "\\d{7}[\\dA-Z]{16}", - "GL": "\\d{14}", - "GT": "[\\dA-Z]{4}[\\dA-Z]{20}", - "HU": "\\d{24}", - "IS": "\\d{22}", - "IE": "[\\dA-Z]{4}\\d{14}", - "IL": "\\d{19}", - "IT": "[A-Z]\\d{10}[\\dA-Z]{12}", - "KZ": "\\d{3}[\\dA-Z]{13}", - "KW": "[A-Z]{4}[\\dA-Z]{22}", - "LV": "[A-Z]{4}[\\dA-Z]{13}", - "LB": "\\d{4}[\\dA-Z]{20}", - "LI": "\\d{5}[\\dA-Z]{12}", - "LT": "\\d{16}", - "LU": "\\d{3}[\\dA-Z]{13}", - "MK": "\\d{3}[\\dA-Z]{10}\\d{2}", - "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}", - "MR": "\\d{23}", - "MU": "[A-Z]{4}\\d{19}[A-Z]{3}", - "MC": "\\d{10}[\\dA-Z]{11}\\d{2}", - "MD": "[\\dA-Z]{2}\\d{18}", - "ME": "\\d{18}", - "NL": "[A-Z]{4}\\d{10}", - "NO": "\\d{11}", - "PK": "[\\dA-Z]{4}\\d{16}", - "PS": "[\\dA-Z]{4}\\d{21}", - "PL": "\\d{24}", - "PT": "\\d{21}", - "RO": "[A-Z]{4}[\\dA-Z]{16}", - "SM": "[A-Z]\\d{10}[\\dA-Z]{12}", - "SA": "\\d{2}[\\dA-Z]{18}", - "RS": "\\d{18}", - "SK": "\\d{20}", - "SI": "\\d{15}", - "ES": "\\d{20}", - "SE": "\\d{20}", - "CH": "\\d{5}[\\dA-Z]{12}", - "TN": "\\d{20}", - "TR": "\\d{5}[\\dA-Z]{17}", - "AE": "\\d{3}\\d{16}", - "GB": "[A-Z]{4}\\d{14}", - "VG": "[\\dA-Z]{4}\\d{16}" - }; - - bbanpattern = bbancountrypatterns[ countrycode ]; - - // As new countries will start using IBAN in the - // future, we only check if the countrycode is known. - // This prevents false negatives, while almost all - // false positives introduced by this, will be caught - // by the checksum validation below anyway. - // Strict checking should return FALSE for unknown - // countries. - if ( typeof bbanpattern !== "undefined" ) { - ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" ); - if ( !( ibanregexp.test( iban ) ) ) { - return false; // Invalid country specific format - } - } - - // Now check the checksum, first convert to digits - ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 ); - for ( i = 0; i < ibancheck.length; i++ ) { - charAt = ibancheck.charAt( i ); - if ( charAt !== "0" ) { - leadingZeroes = false; - } - if ( !leadingZeroes ) { - ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt ); - } - } - - // Calculate the result of: ibancheckdigits % 97 - for ( p = 0; p < ibancheckdigits.length; p++ ) { - cChar = ibancheckdigits.charAt( p ); - cOperator = "" + cRest + "" + cChar; - cRest = cOperator % 97; - } - return cRest === 1; -}, "Please specify a valid IBAN" ); - -$.validator.addMethod( "integer", function( value, element ) { - return this.optional( element ) || /^-?\d+$/.test( value ); -}, "A positive or negative non-decimal number please" ); - -$.validator.addMethod( "ipv4", function( value, element ) { - return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value ); -}, "Please enter a valid IP v4 address." ); - -$.validator.addMethod( "ipv6", function( value, element ) { - return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value ); -}, "Please enter a valid IP v6 address." ); - -$.validator.addMethod( "lessThan", function( value, element, param ) { - var target = $( param ); - - if ( this.settings.onfocusout && target.not( ".validate-lessThan-blur" ).length ) { - target.addClass( "validate-lessThan-blur" ).on( "blur.validate-lessThan", function() { - $( element ).valid(); - } ); - } - - return value < target.val(); -}, "Please enter a lesser value." ); - -$.validator.addMethod( "lessThanEqual", function( value, element, param ) { - var target = $( param ); - - if ( this.settings.onfocusout && target.not( ".validate-lessThanEqual-blur" ).length ) { - target.addClass( "validate-lessThanEqual-blur" ).on( "blur.validate-lessThanEqual", function() { - $( element ).valid(); - } ); - } - - return value <= target.val(); -}, "Please enter a lesser value." ); - -$.validator.addMethod( "lettersonly", function( value, element ) { - return this.optional( element ) || /^[a-z]+$/i.test( value ); -}, "Letters only please" ); - -$.validator.addMethod( "letterswithbasicpunc", function( value, element ) { - return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value ); -}, "Letters or punctuation only please" ); - -// Limit the number of files in a FileList. -$.validator.addMethod( "maxfiles", function( value, element, param ) { - if ( this.optional( element ) ) { - return true; - } - - if ( $( element ).attr( "type" ) === "file" ) { - if ( element.files && element.files.length > param ) { - return false; - } - } - - return true; -}, $.validator.format( "Please select no more than {0} files." ) ); - -// Limit the size of each individual file in a FileList. -$.validator.addMethod( "maxsize", function( value, element, param ) { - if ( this.optional( element ) ) { - return true; - } - - if ( $( element ).attr( "type" ) === "file" ) { - if ( element.files && element.files.length ) { - for ( var i = 0; i < element.files.length; i++ ) { - if ( element.files[ i ].size > param ) { - return false; - } - } - } - } - - return true; -}, $.validator.format( "File size must not exceed {0} bytes each." ) ); - -// Limit the size of all files in a FileList. -$.validator.addMethod( "maxsizetotal", function( value, element, param ) { - if ( this.optional( element ) ) { - return true; - } - - if ( $( element ).attr( "type" ) === "file" ) { - if ( element.files && element.files.length ) { - var totalSize = 0; - - for ( var i = 0; i < element.files.length; i++ ) { - totalSize += element.files[ i ].size; - if ( totalSize > param ) { - return false; - } - } - } - } - - return true; -}, $.validator.format( "Total size of all files must not exceed {0} bytes." ) ); - - -$.validator.addMethod( "mobileNL", function( value, element ) { - return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); -}, "Please specify a valid mobile number" ); - -$.validator.addMethod( "mobileRU", function( phone_number, element ) { - var ruPhone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || ruPhone_number.length > 9 && /^((\+7|7|8)+([0-9]){10})$/.test( ruPhone_number ); -}, "Please specify a valid mobile number" ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod( "mobileUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ ); -}, "Please specify a valid mobile number" ); - -$.validator.addMethod( "netmask", function( value, element ) { - return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value ); -}, "Please enter a valid netmask." ); - -/* - * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish - * authorities to any foreigner. - * - * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal - * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to - * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter. - */ -$.validator.addMethod( "nieES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi ); - var validChars = "TRWAGMYFPDXBNJZSQVHLCKET", - letter = value.substr( value.length - 1 ).toUpperCase(), - number; - - value = value.toString().toUpperCase(); - - // Quick format test - if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) { - return false; - } - - // X means same number - // Y means number + 10000000 - // Z means number + 20000000 - value = value.replace( /^[X]/, "0" ) - .replace( /^[Y]/, "1" ) - .replace( /^[Z]/, "2" ); - - number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 ); - - return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter; - -}, "Please specify a valid NIE number." ); - -/* - * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals - */ -$.validator.addMethod( "nifES", function( value, element ) { - "use strict"; - - if ( this.optional( element ) ) { - return true; - } - - value = value.toUpperCase(); - - // Basic format test - if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { - return false; - } - - // Test NIF - if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { - return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); - } - - // Test specials NIF (starts with K, L or M) - if ( /^[KLM]{1}/.test( value ) ) { - return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) ); - } - - return false; - -}, "Please specify a valid NIF number." ); - -/* - * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies - */ -$.validator.addMethod( "nipPL", function( value ) { - "use strict"; - - value = value.replace( /[^0-9]/g, "" ); - - if ( value.length !== 10 ) { - return false; - } - - var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ]; - var intSum = 0; - for ( var i = 0; i < 9; i++ ) { - intSum += arrSteps[ i ] * value[ i ]; - } - var int2 = intSum % 11; - var intControlNr = ( int2 === 10 ) ? 0 : int2; - - return ( intControlNr === parseInt( value[ 9 ], 10 ) ); -}, "Please specify a valid NIP number." ); - -/** - * Created for project jquery-validation. - * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a - * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers - * that are being used for validation. - * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça - * @author Cleiton da Silva Mendonça - * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça - * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça - */ -$.validator.addMethod( "nisBR", function( value ) { - var number; - var cn; - var sum = 0; - var dv; - var count; - var multiplier; - - // Removing special characters from value - value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" ); - - // Checking value to have 11 digits only - if ( value.length !== 11 ) { - return false; - } - - //Get check number of value - cn = parseInt( value.substring( 10, 11 ), 10 ); - - //Get number with 10 digits of the value - number = parseInt( value.substring( 0, 10 ), 10 ); - - for ( count = 2; count < 12; count++ ) { - multiplier = count; - if ( count === 10 ) { - multiplier = 2; - } - if ( count === 11 ) { - multiplier = 3; - } - sum += ( ( number % 10 ) * multiplier ); - number = parseInt( number / 10, 10 ); - } - dv = ( sum % 11 ); - - if ( dv > 1 ) { - dv = ( 11 - dv ); - } else { - dv = 0; - } - - if ( cn === dv ) { - return true; - } else { - return false; - } -}, "Please specify a valid NIS/PIS number" ); - -$.validator.addMethod( "notEqualTo", function( value, element, param ) { - return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param ); -}, "Please enter a different value, values must not be the same." ); - -$.validator.addMethod( "nowhitespace", function( value, element ) { - return this.optional( element ) || /^\S+$/i.test( value ); -}, "No white space please" ); - -/** -* Return true if the field value matches the given format RegExp -* -* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) -* @result true -* -* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) -* @result false -* -* @name $.validator.methods.pattern -* @type Boolean -* @cat Plugins/Validate/Methods -*/ -$.validator.addMethod( "pattern", function( value, element, param ) { - if ( this.optional( element ) ) { - return true; - } - if ( typeof param === "string" ) { - param = new RegExp( "^(?:" + param + ")$" ); - } - return param.test( value ); -}, "Invalid format." ); - -/** - * Dutch phone numbers have 10 digits (or 11 and start with +31). - */ -$.validator.addMethod( "phoneNL", function( value, element ) { - return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value ); -}, "Please specify a valid phone number." ); - -/** - * Polish telephone numbers have 9 digits. - * - * Mobile phone numbers starts with following digits: - * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88. - * - * Fixed-line numbers starts with area codes: - * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33, - * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61, - * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84, - * 85, 86, 87, 89, 91, 94, 95. - * - * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39. - * - * Excludes intelligent networks (premium rate, shared cost, free phone numbers). - * - * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en - */ -$.validator.addMethod( "phonePL", function( phone_number, element ) { - phone_number = phone_number.replace( /\s+/g, "" ); - var regexp = /^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/; - return this.optional( element ) || regexp.test( phone_number ); -}, "Please specify a valid phone number" ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ - -// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers -$.validator.addMethod( "phonesUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ ); -}, "Please specify a valid uk phone number" ); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod( "phoneUK", function( phone_number, element ) { - phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ ); -}, "Please specify a valid phone number" ); - -/** - * Matches US phone number format - * - * where the area code may not start with 1 and the prefix may not start with 1 - * allows '-' or ' ' as a separator and allows parens around area code - * some people may want to put a '1' in front of their number - * - * 1(212)-999-2345 or - * 212 999 2344 or - * 212-999-0983 - * - * but not - * 111-123-5434 - * and not - * 212 123 4567 - */ -$.validator.addMethod( "phoneUS", function( phone_number, element ) { - phone_number = phone_number.replace( /\s+/g, "" ); - return this.optional( element ) || phone_number.length > 9 && - phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/ ); -}, "Please specify a valid phone number" ); - -/* -* Valida CEPs do brasileiros: -* -* Formatos aceitos: -* 99999-999 -* 99.999-999 -* 99999999 -*/ -$.validator.addMethod( "postalcodeBR", function( cep_value, element ) { - return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); -}, "Informe um CEP válido." ); - -/** - * Matches a valid Canadian Postal Code - * - * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) - * @result true - * - * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) - * @result false - * - * @name jQuery.validator.methods.postalCodeCA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "postalCodeCA", function( value, element ) { - return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value ); -}, "Please specify a valid postal code" ); - -/* Matches Italian postcode (CAP) */ -$.validator.addMethod( "postalcodeIT", function( value, element ) { - return this.optional( element ) || /^\d{5}$/.test( value ); -}, "Please specify a valid postal code" ); - -$.validator.addMethod( "postalcodeNL", function( value, element ) { - return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value ); -}, "Please specify a valid postal code" ); - -// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) -$.validator.addMethod( "postcodeUK", function( value, element ) { - return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value ); -}, "Please specify a valid UK postcode" ); - -/* - * Lets you say "at least X inputs that match selector Y must be filled." - * - * The end result is that neither of these inputs: - * - * - * - * - * ...will validate unless at least one of them is filled. - * - * partnumber: {require_from_group: [1,".productinfo"]}, - * description: {require_from_group: [1,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - */ -$.validator.addMethod( "require_from_group", function( value, element, options ) { - var $fields = $( options[ 1 ], element.form ), - $fieldsFirst = $fields.eq( 0 ), - validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ), - isValid = $fields.filter( function() { - return validator.elementValue( this ); - } ).length >= options[ 0 ]; - - // Store the cloned validator for future validation - $fieldsFirst.data( "valid_req_grp", validator ); - - // If element isn't being validated, run each require_from_group field's validation rules - if ( !$( element ).data( "being_validated" ) ) { - $fields.data( "being_validated", true ); - $fields.each( function() { - validator.element( this ); - } ); - $fields.data( "being_validated", false ); - } - return isValid; -}, $.validator.format( "Please fill at least {0} of these fields." ) ); - -/* - * Lets you say "either at least X inputs that match selector Y must be filled, - * OR they must all be skipped (left blank)." - * - * The end result, is that none of these inputs: - * - * - * - * - * - * ...will validate unless either at least two of them are filled, - * OR none of them are. - * - * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, - * description: {skip_or_fill_minimum: [2,".productinfo"]}, - * color: {skip_or_fill_minimum: [2,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - * - */ -$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) { - var $fields = $( options[ 1 ], element.form ), - $fieldsFirst = $fields.eq( 0 ), - validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ), - numberFilled = $fields.filter( function() { - return validator.elementValue( this ); - } ).length, - isValid = numberFilled === 0 || numberFilled >= options[ 0 ]; - - // Store the cloned validator for future validation - $fieldsFirst.data( "valid_skip", validator ); - - // If element isn't being validated, run each skip_or_fill_minimum field's validation rules - if ( !$( element ).data( "being_validated" ) ) { - $fields.data( "being_validated", true ); - $fields.each( function() { - validator.element( this ); - } ); - $fields.data( "being_validated", false ); - } - return isValid; -}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) ); - -/* Validates US States and/or Territories by @jdforsythe - * Can be case insensitive or require capitalization - default is case insensitive - * Can include US Territories or not - default does not - * Can include US Military postal abbreviations (AA, AE, AP) - default does not - * - * Note: "States" always includes DC (District of Colombia) - * - * Usage examples: - * - * This is the default - case insensitive, no territories, no military zones - * stateInput: { - * caseSensitive: false, - * includeTerritories: false, - * includeMilitary: false - * } - * - * Only allow capital letters, no territories, no military zones - * stateInput: { - * caseSensitive: false - * } - * - * Case insensitive, include territories but not military zones - * stateInput: { - * includeTerritories: true - * } - * - * Only allow capital letters, include territories and military zones - * stateInput: { - * caseSensitive: true, - * includeTerritories: true, - * includeMilitary: true - * } - * - */ -$.validator.addMethod( "stateUS", function( value, element, options ) { - var isDefault = typeof options === "undefined", - caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive, - includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories, - includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary, - regex; - - if ( !includeTerritories && !includeMilitary ) { - regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; - } else if ( includeTerritories && includeMilitary ) { - regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; - } else if ( includeTerritories ) { - regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; - } else { - regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; - } - - regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" ); - return this.optional( element ) || regex.test( value ); -}, "Please specify a valid state" ); - -// TODO check if value starts with <, otherwise don't try stripping anything -$.validator.addMethod( "strippedminlength", function( value, element, param ) { - return $( value ).text().length >= param; -}, $.validator.format( "Please enter at least {0} characters" ) ); - -$.validator.addMethod( "time", function( value, element ) { - return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value ); -}, "Please enter a valid time, between 00:00 and 23:59" ); - -$.validator.addMethod( "time12h", function( value, element ) { - return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value ); -}, "Please enter a valid time in 12-hour am/pm format" ); - -// Same as url, but TLD is optional -$.validator.addMethod( "url2", function( value, element ) { - return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value ); -}, $.validator.messages.url ); - -/** - * Return true, if the value is a valid vehicle identification number (VIN). - * - * Works with all kind of text inputs. - * - * @example - * @desc Declares a required input element whose value must be a valid vehicle identification number. - * - * @name $.validator.methods.vinUS - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "vinUS", function( v ) { - if ( v.length !== 17 ) { - return false; - } - - var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ], - VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ], - FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ], - rs = 0, - i, n, d, f, cd, cdv; - - for ( i = 0; i < 17; i++ ) { - f = FL[ i ]; - d = v.slice( i, i + 1 ); - if ( i === 8 ) { - cdv = d; - } - if ( !isNaN( d ) ) { - d *= f; - } else { - for ( n = 0; n < LL.length; n++ ) { - if ( d.toUpperCase() === LL[ n ] ) { - d = VL[ n ]; - d *= f; - if ( isNaN( cdv ) && n === 8 ) { - cdv = LL[ n ]; - } - break; - } - } - } - rs += d; - } - cd = rs % 11; - if ( cd === 10 ) { - cd = "X"; - } - if ( cd === cdv ) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid." ); - -$.validator.addMethod( "zipcodeUS", function( value, element ) { - return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value ); -}, "The specified US ZIP Code is invalid" ); - -$.validator.addMethod( "ziprange", function( value, element ) { - return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value ); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" ); -return $; -})); \ No newline at end of file diff --git a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.min.js b/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.min.js deleted file mode 100644 index ae53b96..0000000 --- a/src/resources/wwwroot/lib/AdminLTE/plugins/jquery-validation/additional-methods.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery Validation Plugin - v1.19.1 - 6/15/2019 - * https://jqueryvalidation.org/ - * Copyright (c) 2019 Jörn Zaefferer; Licensed MIT */ -!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("abaRoutingNumber",function(a){var b=0,c=a.split(""),d=c.length;if(9!==d)return!1;for(var e=0;e9?"0":f,g="JABCDEFGHI".substr(f,1).toString(),i.match(/[ABEH]/)?k===f:i.match(/[KPQS]/)?k===g:k===f||k===g},"Please specify a valid CIF number."),a.validator.addMethod("cnhBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f,g,h=0,i=0;if(b=a.charAt(0),new Array(12).join(b)===a)return!1;for(e=0,f=9,g=0;e<9;++e,--f)h+=+(a.charAt(e)*f);for(c=h%11,c>=10&&(c=0,i=2),h=0,e=0,f=1,g=0;e<9;++e,++f)h+=+(a.charAt(e)*f);return d=h%11,d>=10?d=0:d-=i,String(c).concat(d)===a.substr(-2)},"Please specify a valid CNH number"),a.validator.addMethod("cnpjBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/[^\d]+/g,""),14!==a.length)return!1;if("00000000000000"===a||"11111111111111"===a||"22222222222222"===a||"33333333333333"===a||"44444444444444"===a||"55555555555555"===a||"66666666666666"===a||"77777777777777"===a||"88888888888888"===a||"99999999999999"===a)return!1;for(var c=a.length-2,d=a.substring(0,c),e=a.substring(c),f=0,g=c-7,h=c;h>=1;h--)f+=d.charAt(c-h)*g--,g<2&&(g=9);var i=f%11<2?0:11-f%11;if(i!==parseInt(e.charAt(0),10))return!1;c+=1,d=a.substring(0,c),f=0,g=c-7;for(var j=c;j>=1;j--)f+=d.charAt(c-j)*g--,g<2&&(g=9);return i=f%11<2?0:11-f%11,i===parseInt(e.charAt(1),10)},"Please specify a CNPJ value number"),a.validator.addMethod("cpfBR",function(a,b){"use strict";if(this.optional(b))return!0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var c,d,e,f,g=0;if(c=parseInt(a.substring(9,10),10),d=parseInt(a.substring(10,11),10),e=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(f=1;f<=9;f++)g+=parseInt(a.substring(f-1,f),10)*(11-f);if(e(g,c)){for(g=0,f=1;f<=10;f++)g+=parseInt(a.substring(f-1,f),10)*(12-f);return e(g,d)}return!1},"Please specify a valid CPF number"),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&(/^(5[12345])/.test(a)||/^(2[234567])/.test(a))?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency"),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number"),a.validator.addMethod("greaterThan",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThan-blur").length&&e.addClass("validate-greaterThan-blur").on("blur.validate-greaterThan",function(){a(c).valid()}),b>e.val()},"Please enter a greater value."),a.validator.addMethod("greaterThanEqual",function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-greaterThanEqual-blur").length&&e.addClass("validate-greaterThanEqual-blur").on("blur.validate-greaterThanEqual",function(){a(c).valid()}),b>=e.val()},"Please enter a greater value."),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="",q=5;if(l.lengthd)},a.validator.format("Please select no more than {0} files.")),a.validator.addMethod("maxsize",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0;ed)return!1;return!0},a.validator.format("File size must not exceed {0} bytes each.")),a.validator.addMethod("maxsizetotal",function(b,c,d){if(this.optional(c))return!0;if("file"===a(c).attr("type")&&c.files&&c.files.length)for(var e=0,f=0;fd)return!1;return!0},a.validator.format("Total size of all files must not exceed {0} bytes.")),a.validator.addMethod("mobileNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid mobile number"),a.validator.addMethod("mobileRU",function(a,b){var c=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||c.length>9&&/^((\+7|7|8)+([0-9]){10})$/.test(c)},"Please specify a valid mobile number"),a.validator.addMethod("mobileUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),a.validator.addMethod("netmask",function(a,b){return this.optional(b)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(a)},"Please enter a valid netmask."),a.validator.addMethod("nieES",function(a,b){"use strict";if(this.optional(b))return!0;var c,d=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),e="TRWAGMYFPDXBNJZSQVHLCKET",f=a.substr(a.length-1).toUpperCase();return a=a.toString().toUpperCase(),!(a.length>10||a.length<9||!d.test(a))&&(a=a.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2"),c=9===a.length?a.substr(0,8):a.substr(0,9),e.charAt(parseInt(c,10)%23)===f)},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a,b){"use strict";return!!this.optional(b)||(a=a.toUpperCase(),!!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,1)%23)))},"Please specify a valid NIF number."),a.validator.addMethod("nipPL",function(a){"use strict";if(a=a.replace(/[^0-9]/g,""),10!==a.length)return!1;for(var b=[6,5,7,2,3,4,5,6,7],c=0,d=0;d<9;d++)c+=b[d]*a[d];var e=c%11,f=10===e?0:e;return f===parseInt(a[9],10)},"Please specify a valid NIP number."),a.validator.addMethod("nisBR",function(a){var b,c,d,e,f,g=0;if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;for(c=parseInt(a.substring(10,11),10),b=parseInt(a.substring(0,10),10),e=2;e<12;e++)f=e,10===e&&(f=2),11===e&&(f=3),g+=b%10*f,b=parseInt(b/10,10);return d=g%11,d=d>1?11-d:0,c===d},"Please specify a valid NIS/PIS number"),a.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),a.validator.addMethod("pattern",function(a,b,c){return!!this.optional(b)||("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonePL",function(a,b){a=a.replace(/\s+/g,"");var c=/^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/;return this.optional(b)||c.test(a)},"Please specify a valid phone number"),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number"),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode"),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=!e&&"undefined"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&"undefined"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&"undefined"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state"),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59"),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format"),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c